插件添加
This commit is contained in:
parent
b4e46ce76f
commit
b517b39a7e
11
EintooAR/Assets/Plugins/Android/gradleTemplate.properties
Normal file
11
EintooAR/Assets/Plugins/Android/gradleTemplate.properties
Normal 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
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 222e9cd58d6e042479c8e6cd12e4c0e8
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle
Normal file
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle
Normal 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**
|
71
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup
Normal file
71
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup
Normal 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**
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 48b45c6db1ca5384cb9d87fe8cd5a308
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
67
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup2
Normal file
67
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup2
Normal 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**
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c34eb799dc1159b47bcdff0f0525c6b4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
67
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup3
Normal file
67
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup3
Normal 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**
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3c1896b974aa031499b7827a3a765259
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup4
Normal file
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup4
Normal 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**
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a24eaff3e2f1acd438ffedb999c44d3b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup5
Normal file
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup5
Normal 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**
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6c4c69fac7648de4289b812343f9cd8f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup6
Normal file
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup6
Normal 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**
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d7d07da015ebead4c8e09ec7cfdf186a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup7
Normal file
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup7
Normal 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**
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b18fc904497daa048b0333cadee80021
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup8
Normal file
66
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup8
Normal 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**
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3f4ce635d56c2c743ac4e4369d588f3a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
7
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.meta
Normal file
7
EintooAR/Assets/Plugins/Android/mainTemplate.gradle.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0d3b1393a526a344eb5288bcfe2e0b59
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
27
EintooAR/Assets/Plugins/Android/settingsTemplate.gradle
Normal file
27
EintooAR/Assets/Plugins/Android/settingsTemplate.gradle
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ba42dad9f52e9374f9f332e777d31668
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
EintooAR/Assets/Plugins/ToolBuddy/Assets.meta
Normal file
8
EintooAR/Assets/Plugins/ToolBuddy/Assets.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9e13412d4391ff941b8e76f52cfcebaf
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0d231409514a7d14ab7a85e8906b97da
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 63f40aa4b20670544b815cf3f0a5da3a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f1234dcf70b996c4cb133e83886a27fe
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 40ccb37f4e1e70b42a936638fd73f551
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 47f615f5619283e4a9d614fd31165ac8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 42406537e9ce771468530c79cc69a08c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 265a80d77815ce84ca4914d0fe04201a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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}";
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 496538c595f98984291012010b2f1e26
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 307763d67386f3841ba48c5da5f56f52
|
||||
folderAsset: yes
|
||||
timeCreated: 1437476977
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fda4720cf39a5d241b49abde38593b00
|
||||
folderAsset: yes
|
||||
timeCreated: 1442473707
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 90ad9f4a58552ff48aecd9e1464f44a9
|
||||
timeCreated: 1442473718
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 946aba22c21c03247971e0d4aec7b2c7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8965de4a5c3327a4f9ba78f3aa5531ed
|
||||
DefaultImporter:
|
||||
userData:
|
File diff suppressed because it is too large
Load Diff
@ -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
@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e5f6ca220bf4cd542adf758b55cd6057
|
||||
DefaultImporter:
|
||||
userData:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 10ae0c98bf753c04d8c6e2a378e3dabd
|
||||
timeCreated: 1432539542
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4eb3b9721e597834bad1e6baf42d3a6a
|
||||
DefaultImporter:
|
||||
userData:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 74b5a9d3a9a9bb54399b79495001fca8
|
||||
timeCreated: 1432901464
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a8705a7c11af64b489986edef4a07358
|
||||
timeCreated: 1444156166
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -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
@ -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
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f2d7c4a4f6ce11245967f1921eac4572
|
||||
timeCreated: 1438609635
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -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
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 95b17c526f31be2408b98593522bf0b6
|
||||
timeCreated: 1433333357
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f64f2e16941ca42428683f89332f6c2c
|
||||
timeCreated: 1433838612
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -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
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c9d0bf66a0b714f4f91521515d2e3ab5
|
||||
timeCreated: 1439366519
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 04df53ffda142144bbd5b74428b7298e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c8be04e02acdc1745aa0c813f38ab400
|
||||
timeCreated: 1441928497
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 67522100332a1574999b46e45c6cbd90
|
||||
timeCreated: 1442776717
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 517cdea3295e0a444b7f8e953430a1ba
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b6cc4acf7df7244889b69e880b69908
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e54d4512cb8b1194381b9565f8541a19
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 281a044b74b3d4c4abcc08a68931a404
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4909477262300cb4fb6c4a92cb496b34
|
||||
timeCreated: 1436098989
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -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
@ -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
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8237a7e5f49aa66468cb83d6c8a0982d
|
||||
timeCreated: 1439470072
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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: []
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 18aa167d4f1e1ba449563b1afca75ebc
|
||||
timeCreated: 1425478143
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 17174547927805c469ab20e7f4278ebc
|
||||
timeCreated: 1432714819
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ece717abe053b6747a81e33c5e48bf20
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
@ -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
Loading…
x
Reference in New Issue
Block a user