插件添加

This commit is contained in:
SnowShow 2025-04-22 16:05:26 +08:00
parent b4e46ce76f
commit b517b39a7e
3601 changed files with 501506 additions and 0 deletions

View File

@ -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

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 222e9cd58d6e042479c8e6cd12e4c0e8
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -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**

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 48b45c6db1ca5384cb9d87fe8cd5a308
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c34eb799dc1159b47bcdff0f0525c6b4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3c1896b974aa031499b7827a3a765259
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a24eaff3e2f1acd438ffedb999c44d3b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6c4c69fac7648de4289b812343f9cd8f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d7d07da015ebead4c8e09ec7cfdf186a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b18fc904497daa048b0333cadee80021
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3f4ce635d56c2c743ac4e4369d588f3a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0d3b1393a526a344eb5288bcfe2e0b59
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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"
}
}
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ba42dad9f52e9374f9f332e777d31668
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9e13412d4391ff941b8e76f52cfcebaf
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0d231409514a7d14ab7a85e8906b97da
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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
{
/// <summary>
/// Provides instances of <see cref="ArrayPool{T}"/>
/// </summary>
/// <remarks>Is thread safe</remarks>
public class ArrayPoolsProvider
{
private static Dictionary<Type, object> arrayPools = new Dictionary<Type, object>();
private static object lockObject = new object();
/// <summary>
/// Returns an instance of <see cref="ArrayPool{T}"/> if previously created, otherwise creates a new one.
/// </summary>
/// <typeparam name="T"></typeparam>
public static ArrayPool<T> GetPool<T>()
{
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<T>(1_000_000);
}
}
return (ArrayPool<T>)pool;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 63f40aa4b20670544b815cf3f0a5da3a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f1234dcf70b996c4cb133e83886a27fe
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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
{
/// <summary>
/// A struct that helps you use a part of an array.
/// </summary>
/// <remarks>Can be reused if you free it by calling <see cref="ArrayPool{T}.Free(ToolBuddy.Pooling.Collections.SubArray{T})"/></remarks>
/// <typeparam name="T"></typeparam>
#if CURVY_SANITY_CHECKS
public struct SubArray<T>
{
private T[] array;
/// <summary>
/// The array where data is stored in
/// </summary>
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<T>
{
/// <summary>
/// The array where data is stored in
/// </summary>
public readonly T[] Array;
#endif
/// <summary>
/// The number of elements to be used in that array, counted from the start of the array
/// </summary>
public readonly int Count;
/// <summary>
/// Creates an instance that will use all the elements of the given array
/// </summary>
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;
}
/// <summary>
/// Creates an instance that will use the first "count" elements of the given array
/// </summary>
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;
}
/// <summary>
/// Returns a new array that which length is <see cref="Count"/> and contains the elements from <see cref="Array"/>
/// </summary>
public T[] CopyToArray(ArrayPool<T> 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<T> subArray && Equals(subArray);
}
public bool Equals(SubArray<T> obj)
{
return obj.Array == Array && obj.Count == Count;
}
public static bool operator ==(SubArray<T> a, SubArray<T> b)
{
return a.Equals(b);
}
public static bool operator !=(SubArray<T> a, SubArray<T> b)
{
return !(a == b);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 40ccb37f4e1e70b42a936638fd73f551
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,95 @@
// =====================================================================
// Copyright 2013-2022 ToolBuddy
// All rights reserved
//
// http://www.toolbuddy.net
// =====================================================================
using ToolBuddy.Pooling.Pools;
namespace ToolBuddy.Pooling.Collections
{
/// <summary>
/// A class that simulates very minimal features of a List, but using a <see cref="SubArray{T}"/> instead of an <see cref="System.Array"/> as a storage
/// </summary>
/// <seealso cref="SubArray{T}"/>
public struct SubArrayList<T>
{
private readonly ArrayPool<T> typePool;
private SubArray<T> subArray;
/// <summary>
/// The <see cref="System.Array"/> used by the underlying <see cref="SubArray{T}"/> for storage
/// </summary>
public T[] Array => subArray.Array;
/// <summary>
/// The number of elements occupied in the storage
/// </summary>
public int Count { get; private set; }
/// <summary>
/// Creates an instance
/// </summary>
/// <param name="initialCapacity">The initial capacity of the underlying storage</param>
/// <param name="typePool"> A pool that will be used to, if needed, allocate a bigger array if elements </param>
public SubArrayList(int initialCapacity, ArrayPool<T> typePool)
{
this.typePool = typePool;
subArray = typePool.Allocate(initialCapacity, false);
Count = 0;
}
/// <summary>
/// Adds a new element to the array
/// </summary>
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++;
}
/// <summary>
/// Returns a <see cref="SubArray{T}"/> instance that will have <see cref="Array"/> as an array (not a copy of it), and <see cref="Count"/> as its <see cref="SubArray{T}.Count"/>
/// </summary>
/// <returns></returns>
public SubArray<T> ToSubArray()
{
return new SubArray<T>(subArray.Array, Count);
}
public bool Equals(SubArrayList<T> other)
{
return subArray.Equals(other.subArray) && Count == other.Count;
}
public override bool Equals(object obj)
{
return obj is SubArrayList<T> other && Equals(other);
}
public override int GetHashCode()
{
unchecked
{
return (subArray.GetHashCode() * 397) ^ Count;
}
}
public static bool operator ==(SubArrayList<T> a, SubArrayList<T> b)
{
return a.Equals(b);
}
public static bool operator !=(SubArrayList<T> a, SubArrayList<T> b)
{
return !(a == b);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 47f615f5619283e4a9d614fd31165ac8
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 42406537e9ce771468530c79cc69a08c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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
{
/// <summary>
/// A pool of allowing the re-usage of previously allocated and discarded arrays.
/// Helps reducing garbage collection.
/// </summary>
/// <remarks>Is thread safe</remarks>
/// <seealso cref="SubArray{T}"/>
public class ArrayPool<T>
{
private readonly SubArray<T> emptySubArray = new SubArray<T>(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;
/// <summary>
/// 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
/// </summary>
/// <remarks>This is not the maximal number of arrays, but the maximal sum of the arrays' lengths</remarks>
public long ElementsCapacity
{
get => elementsCapacity;
set
{
if (elementsCapacity != value)
lock (this)
{
elementsCapacity = value;
ApplyCapacity(elementsCapacity);
}
}
}
/// <summary>
/// Log in the console each time a new array is allocated in memory
/// </summary>
public bool LogAllocations { get; set; }
/// <summary>
/// Returns data about the pool's usage.
/// </summary>
/// <see cref="ArrayPoolUsageData"/>
public ArrayPoolUsageData UsageData => new ArrayPoolUsageData(elementsCount, arraysCount, elementsCapacity);
/// <summary>
/// Creates a new pool
/// </summary>
/// <param name="elementsCapacity"><see cref="ElementsCapacity"/>
/// </param>
public ArrayPool(long elementsCapacity)
{
if (elementsCapacity < 0)
throw new ArgumentOutOfRangeException(nameof(elementsCapacity), "Must be strictly positive.");
this.elementsCapacity = elementsCapacity;
}
/// <summary>
/// Allocates a new array if none available, or reuses an existing one otherwise
/// </summary>
/// <param name="minimalSize">The array's guaranteed minimal size</param>
/// <param name="clearArray">Whether the returned array's elements will be guaranteed to be set to their default value</param>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public SubArray<T> 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 _);
}
/// <summary>
/// Allocates a new array if none available, or reuses an existing one otherwise
/// </summary>
/// <param name="exactSize">The array's exact size</param>
/// <param name="clearArray">Whether the returned array's elements will be guaranteed to be set to their default value</param>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public SubArray<T> AllocateExactSize(int exactSize, bool clearArray = true)
{
return Allocate(exactSize, true, clearArray, out _);
}
/// <summary>
/// Returns an array to the pool, ready to be reused
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Free(SubArray<T> subArray)
{
Free(subArray.Array);
#if CURVY_SANITY_CHECKS
subArray.IsDisposed = true;
#endif
}
/// <summary>
/// Returns an array to the pool, ready to be reused
/// </summary>
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;
}
}
/// <summary>
/// Resizes the given array
/// </summary>
/// <param name="subArray"> The array to resize</param>
/// <param name="newMinimalSize">The new size</param>
/// <param name="clearNewSpace">When resizing and array to make it bigger, should the newly available space be cleared or not.</param>
public void Resize(ref SubArray<T> 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<T> 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<T>(subArray.Array, newMinimalSize);
isArrayCleared = false;
}
if (clearNewSpace && isArrayCleared == false && newMinimalSize > oldSize)
Array.Clear(subArray.Array, oldSize, newMinimalSize - oldSize);
}
}
/// <summary>
/// Resize an array to a new size and clears it. Similar to calling <see cref="Free(ToolBuddy.Pooling.Collections.SubArray{T})"/> then calling <see cref="Allocate"/>, but done in a more optimized way
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void ResizeAndClear(ref SubArray<T> 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<T> destinationSubArray = Allocate(newMinimalSize, false, true, out _);
Free(subArray);
subArray = destinationSubArray;
}
else
{
subArray = new SubArray<T>(subArray.Array, newMinimalSize);
Array.Clear(subArray.Array, 0, newMinimalSize);
}
}
}
/// <summary>
/// Return a new <see cref="SubArray{T}"/> instance that will use a copy of the given input array
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public SubArray<T> Clone(T[] source)
{
SubArray<T> clone = Allocate(source.Length, false);
Array.Copy(source, 0,
clone.Array, 0, source.Length);
return clone;
}
/// <summary>
/// Return a new <see cref="SubArray{T}"/> instance that will use a copy of the given input array
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public SubArray<T> Clone(SubArray<T> source)
{
SubArray<T> clone = Allocate(source.Count, false);
Array.Copy(source.Array, 0,
clone.Array, 0, source.Count);
return clone;
}
/// <summary>
/// Allocates a new array if none available, or reuses an existing one otherwise
/// </summary>
/// <param name="size">The array's minimal or exact size, depending on <see cref="exactSize"/></param>
/// <param name="exactSize">Whether the <see cref="size"/> parameter should be considered as an exact size or a minimal one</param>
/// <param name="clearArray">Whether the returned array's elements will be guaranteed to be set to their default value</param>
/// <param name="isArrayCleared">Whether the returned array is cleared. This is different from <see cref="clearArray"/> because even if <see cref="clearArray"/> is set to false, a newly created array will have its content cleared by definition</param>
/// <returns></returns>
private SubArray<T> 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<T>(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<T>(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;
}
/// <summary>
/// <see cref="Array.BinarySearch(System.Array,int,int,object)"/>
/// </summary>
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;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 265a80d77815ce84ca4914d0fe04201a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,75 @@
// =====================================================================
// Copyright 2013-2022 ToolBuddy
// All rights reserved
//
// http://www.toolbuddy.net
// =====================================================================
namespace ToolBuddy.Pooling.Pools
{
/// <summary>
/// Data about how full an <see cref="ArrayPool{T}"/> is
/// </summary>
public readonly struct ArrayPoolUsageData
{
/// <summary>
/// The number of elements that the pool will keep, after they have been freed, to be available for future usage.
/// </summary>
/// <remarks>This is not the maximal number of arrays, but the maximal sum of the arrays' lengths</remarks>
public long ElementsCount { get; }
/// <summary>
/// The number of arrays stored in the pool
/// </summary>
public int ArraysCount { get; }
/// <summary>
/// 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
/// </summary>
/// <remarks>This is not the maximal number of arrays, but the maximal sum of the arrays' lengths</remarks>
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}";
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 496538c595f98984291012010b2f1e26
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 307763d67386f3841ba48c5da5f56f52
folderAsset: yes
timeCreated: 1437476977
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: fda4720cf39a5d241b49abde38593b00
folderAsset: yes
timeCreated: 1442473707
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<E01_HeightMetadata>
{
[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
}
}
}
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 90ad9f4a58552ff48aecd9e1464f44a9
timeCreated: 1442473718
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 946aba22c21c03247971e0d4aec7b2c7
folderAsset: yes
DefaultImporter:
userData:

View File

@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: 8965de4a5c3327a4f9ba78f3aa5531ed
DefaultImporter:
userData:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 83178807cbeef8149ae1e2612988ac5d
timeCreated: 1436091375
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: e5f6ca220bf4cd542adf758b55cd6057
DefaultImporter:
userData:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 10ae0c98bf753c04d8c6e2a378e3dabd
timeCreated: 1432539542
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: 4eb3b9721e597834bad1e6baf42d3a6a
DefaultImporter:
userData:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 74b5a9d3a9a9bb54399b79495001fca8
timeCreated: 1432901464
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a8705a7c11af64b489986edef4a07358
timeCreated: 1444156166
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4f06f4a7d7481c841bafde49fad30896
timeCreated: 1438594004
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f20a478aecc1e5c45b30ad1fe79a5378
timeCreated: 1438601336
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f2d7c4a4f6ce11245967f1921eac4572
timeCreated: 1438609635
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7540e462e613248419dc494e8bb46554
timeCreated: 1442657153
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 95b17c526f31be2408b98593522bf0b6
timeCreated: 1433333357
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f64f2e16941ca42428683f89332f6c2c
timeCreated: 1433838612
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d066c0ad1e5e27d4faa7592b507c854f
timeCreated: 1460901411
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c9d0bf66a0b714f4f91521515d2e3ab5
timeCreated: 1439366519
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 04df53ffda142144bbd5b74428b7298e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c8be04e02acdc1745aa0c813f38ab400
timeCreated: 1441928497
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 67522100332a1574999b46e45c6cbd90
timeCreated: 1442776717
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 517cdea3295e0a444b7f8e953430a1ba
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7b6cc4acf7df7244889b69e880b69908
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e54d4512cb8b1194381b9565f8541a19
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 281a044b74b3d4c4abcc08a68931a404
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4909477262300cb4fb6c4a92cb496b34
timeCreated: 1436098989
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c5cf72ca5ff168f48bf33ddedce933b1
timeCreated: 1448048134
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cfb46ea8455e6e94f924c444441ec13e
timeCreated: 1447413833
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8237a7e5f49aa66468cb83d6c8a0982d
timeCreated: 1439470072
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 18aa167d4f1e1ba449563b1afca75ebc
timeCreated: 1425478143
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 17174547927805c469ab20e7f4278ebc
timeCreated: 1432714819
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: ece717abe053b6747a81e33c5e48bf20
folderAsset: yes
DefaultImporter:
userData:

View File

@ -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));
}
}
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 434e0e7bb669a364a94813e14dffb65b
timeCreated: 1433754899
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More