添加插件
@@ -115,7 +115,7 @@ namespace FIMSpace.FEditor
|
||||
|
||||
[MenuItem("Assets/Utilities/Sub-Assets/Destroy Sub Asset", true)]
|
||||
private static bool DestroySubAssetCheck(MenuCommand menuCommand)
|
||||
{ if( Selection.objects.Length == 0 ) return false; return AssetDatabase.IsSubAsset(Selection.objects[0]); }
|
||||
{ return AssetDatabase.IsSubAsset(Selection.objects[0]); }
|
||||
|
||||
[MenuItem("Assets/Utilities/Sub-Assets/Destroy Sub Asset", false)]
|
||||
private static void DestroySubAsset(MenuCommand menuCommand)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 511704c08bd35394ea37e60b93d63513
|
||||
folderAsset: yes
|
||||
timeCreated: 1603290412
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8504e6f0ad3ec1040b6c91b589b00907
|
||||
folderAsset: yes
|
||||
timeCreated: 1532351210
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7df895321e8326c49996143255a443cd
|
||||
folderAsset: yes
|
||||
timeCreated: 1553950449
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,116 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2d136b24af83be649b68f39b1e0ce67d
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1,74 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e4e9af30ed1bf944be42dfa1b3842e3
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 870 B |
@@ -0,0 +1,104 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e8206fdb058138940aeb32c519d84281
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 855 B |
@@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1be512d4fc0d19d4b957fa92fe767f3e
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
externalObjects: {}
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,116 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 73e848e8b105ad4419739438d540ff07
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,116 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a05a4f2884a2af44eaeedea1ea5ca396
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 10dc66ee21c31144882ddd7d2f13ae77
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
externalObjects: {}
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e215648cc15ce04297817f7407c4e7b
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
externalObjects: {}
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,116 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f1f543bbb761e234cbb384a09c3482cc
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 6.5 KiB |
@@ -0,0 +1,116 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7958d01c62579034fa1ffbb911dd6b59
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,76 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2364e2c6718af0c4aaf6d3b166d5bb6e
|
||||
timeCreated: 1600109893
|
||||
licenseType: Store
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,192 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Languages>
|
||||
|
||||
<English>
|
||||
<string name="Main Setup">Main Setup</string>
|
||||
<string name="Tail Chain">Tail Chain</string>
|
||||
<string name="Optimization And More">Optimization & More</string>
|
||||
|
||||
<string name="Setup">Setup</string>
|
||||
<string name="Tweak">Tweak</string>
|
||||
<string name="Features">Features</string>
|
||||
<string name="Shaping">Shaping</string>
|
||||
|
||||
<string name="Tweak Animation">Tweak Animation</string>
|
||||
<string name="Limiting Motion">Limiting Motion</string>
|
||||
<string name="Smoothing Motion">Smoothing Motion</string>
|
||||
<string name="Additional Parameters">Additional Parameters</string>
|
||||
|
||||
<string name="Additional Modules">Additional Modules</string>
|
||||
<string name="Auto Waving">Auto Waving</string>
|
||||
<string name="Collisions">Collisions</string>
|
||||
<string name="Colliders Setup">Colliders Setup</string>
|
||||
|
||||
<string name="Partial Blend">Partial Blend</string>
|
||||
<string name="Inverse Kinematics">Inverse Kinematics (IK)</string>
|
||||
<string name="Deflection">Deflection</string>
|
||||
<string name="Disable when Far">Disable when Far</string>
|
||||
|
||||
<string name="Additional Shaping">Additional Shaping</string>
|
||||
|
||||
<string name="Physical Effectors">Physical Effectors</string>
|
||||
<string name="Wind">Wind Effect</string>
|
||||
</English>
|
||||
|
||||
<Polski>
|
||||
<string name="Main Setup">Konfiguracja</string>
|
||||
<string name="Tail Chain">Łańcuch</string>
|
||||
<string name="Optimization And More">Optymalizacja i Inne</string>
|
||||
|
||||
<string name="Setup">Przygotuj</string>
|
||||
<string name="Tweak">Dostosuj</string>
|
||||
<string name="Features">Dodatki</string>
|
||||
<string name="Shaping">Kształt</string>
|
||||
|
||||
<string name="Tweak Animation">Przystosowanie Animacji</string>
|
||||
<string name="Limiting Motion">Limitowanie</string>
|
||||
<string name="Smoothing Motion">Wygładzanie Ruchu</string>
|
||||
<string name="Additional Parameters">Parametry Dodatkowe</string>
|
||||
|
||||
<string name="Additional Modules">Dodatkowe Moduły</string>
|
||||
<string name="Auto Waving">Machanie</string>
|
||||
<string name="Collisions">Kolizje</string>
|
||||
<string name="Colliders Setup">Konfiguracja Koliderów</string>
|
||||
|
||||
<string name="Partial Blend">Częściowy Wpływ Animatora</string>
|
||||
<string name="Inverse Kinematics">Odwrócona Kinematyka (IK)</string>
|
||||
<string name="Deflection">Odgięcia</string>
|
||||
<string name="Disable when Far">Wyłącz gdy zbyt daleko</string>
|
||||
|
||||
<string name="Additional Shaping">Dodatkowe Kształtowanie</string>
|
||||
|
||||
<string name="Physical Effectors">Efekty Fizyczne</string>
|
||||
<string name="Wind">Efekt Wiatru</string>
|
||||
</Polski>
|
||||
|
||||
<русский>
|
||||
<string name="Main Setup">Основная настройка</string>
|
||||
<string name="Tail Chain">хвост цепи</string>
|
||||
<string name="Optimization And More">Оптимизация и многое другое</string>
|
||||
|
||||
<string name="Setup">Настройка</string>
|
||||
<string name="Tweak">Настройки</string>
|
||||
<string name="Features">Возможности</string>
|
||||
<string name="Shaping">Формирование</string>
|
||||
|
||||
<string name="Tweak Animation">Настроить анимацию</string>
|
||||
<string name="Limiting Motion">Ограничение движения</string>
|
||||
<string name="Smoothing Motion">Сглаживание движения</string>
|
||||
<string name="Additional Parameters">Дополнительные параметры</string>
|
||||
|
||||
<string name="Additional Modules">Дополнительные модули</string>
|
||||
<string name="Auto Waving">Авто Размахивая</string>
|
||||
<string name="Collisions">Столкновения</string>
|
||||
<string name="Colliders Setup">Коллайдеры Настройка</string>
|
||||
|
||||
<string name="Partial Blend">Частичная смесь</string>
|
||||
<string name="Inverse Kinematics">Обратная кинематика (IK)</string>
|
||||
<string name="Deflection">Отражение</string>
|
||||
<string name="Disable when Far">Выключите, когда далеко</string>
|
||||
|
||||
<string name="Additional Shaping">Дополнительные формы</string>
|
||||
|
||||
<string name="Physical Effectors">Физические эффекторы</string>
|
||||
<string name="Wind">Воздействие ветра</string>
|
||||
</русский>
|
||||
|
||||
<中文>
|
||||
<string name="Main Setup">主设置</string>
|
||||
<string name="Tail Chain">尾链</string>
|
||||
<string name="Optimization And More">优化和更多</string>
|
||||
|
||||
<string name="Setup">设置</string>
|
||||
<string name="Tweak">调整</string>
|
||||
<string name="Features">功能</string>
|
||||
<string name="Shaping">形状</string>
|
||||
|
||||
<string name="Tweak Animation">调整动画</string>
|
||||
<string name="Limiting Motion">限制运动</string>
|
||||
<string name="Smoothing Motion">平滑运动</string>
|
||||
<string name="Additional Parameters">附加参数</string>
|
||||
|
||||
<string name="Additional Modules">附加模块</string>
|
||||
<string name="Auto Waving">自动挥动</string>
|
||||
<string name="Collisions">碰撞</string>
|
||||
<string name="Colliders Setup">碰撞器设置</string>
|
||||
|
||||
<string name="Partial Blend">部分混合</string>
|
||||
<string name="Inverse Kinematics">反向运动 (IK)</string>
|
||||
<string name="Deflection">偏转</string>
|
||||
<string name="Disable when Far">远方时关闭</string>
|
||||
|
||||
<string name="Additional Shaping">附加整形</string>
|
||||
|
||||
<string name="Physical Effectors">物理效应器</string>
|
||||
<string name="Wind">风效应</string>
|
||||
</中文>
|
||||
|
||||
|
||||
<日本語>
|
||||
<string name="Main Setup">メインセットアップ</string>
|
||||
<string name="Tail Chain">テールチェーン</string>
|
||||
<string name="Optimization And More">最適化と、モーションを制限するアニメーション</string>
|
||||
|
||||
<string name="Setup">セットアップ</string>
|
||||
<string name="Tweak">微調整</string>
|
||||
<string name="Features">機能</string>
|
||||
<string name="Shaping">シェーピング</string>
|
||||
|
||||
<string name="Tweak Animation">スムージングモーション</string>
|
||||
<string name="Limiting Motion">を制限するアニメーションを</string>
|
||||
<string name="Smoothing Motion">ツイークする追加パラメータ</string>
|
||||
<string name="Additional Parameters">追加のパラメータ</string>
|
||||
|
||||
<string name="Additional Modules">コライダの自動</string>
|
||||
<string name="Auto Waving">ウェーブ</string>
|
||||
<string name="Collisions">コライダ設定</string>
|
||||
<string name="Colliders Setup">コライダ設定</string>
|
||||
|
||||
<string name="Partial Blend">部分ブレンド</string>
|
||||
<string name="Inverse Kinematics">インバースキネマティクス (IK)</string>
|
||||
<string name="Deflection">偏向</string>
|
||||
<string name="Disable when Far">遠く離れたときにオフにする</string>
|
||||
|
||||
<string name="Additional Shaping">追加シェーピング</string>
|
||||
|
||||
<string name="Physical Effectors">フィジカルエフェクター</string>
|
||||
<string name="Wind">風の効果</string>
|
||||
</日本語>
|
||||
|
||||
|
||||
<한국어>
|
||||
<string name="Main Setup">메인 설정</string>
|
||||
<string name="Tail Chain">테일 체인</string>
|
||||
<string name="Optimization And More">최적화 및 더 많은</string>
|
||||
|
||||
<string name="Setup">설정</string>
|
||||
<string name="Tweak">조정</string>
|
||||
<string name="Features">기능</string>
|
||||
<string name="Shaping">모양</string>
|
||||
|
||||
<string name="Tweak Animation">애니메이션 조정</string>
|
||||
<string name="Limiting Motion">모션 제한</string>
|
||||
<string name="Smoothing Motion">스무딩 모션</string>
|
||||
<string name="Additional Parameters">추가 매개 변수</string>
|
||||
|
||||
<string name="Additional Modules">추가 모듈</string>
|
||||
<string name="Auto Waving">자동 흔들기</string>
|
||||
<string name="Collisions">충돌</string>
|
||||
<string name="Colliders Setup">콜라이더 설정</string>
|
||||
|
||||
<string name="Partial Blend">부분 혼합</string>
|
||||
<string name="Inverse Kinematics">역 역학 (IK)</string>
|
||||
<string name="Deflection">편향</string>
|
||||
<string name="Disable when Far">멀리 떨어져 있을 때 끄기</string>
|
||||
|
||||
<string name="Additional Shaping">추가 성형</string>
|
||||
|
||||
<string name="Physical Effectors">물리 효과</string>
|
||||
<string name="Wind">바람 효과</string>
|
||||
</한국어>
|
||||
|
||||
</Languages>
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a7eb67ced331ec24b845911cd4ae82d1
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 780 B |
@@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b86ed89e09bbe5428b182b3ca650663
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
externalObjects: {}
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 790 B |
@@ -0,0 +1,116 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bedb2c7a06ea4464b949cc2c4a4ef4fa
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: 4
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 1
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,779 @@
|
||||
using FIMSpace.FEditor;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FIMSpace.FTail
|
||||
{
|
||||
public partial class FTailAnimator2_Editor
|
||||
{
|
||||
private bool drawHeaderFoldout = false;
|
||||
private void HeaderBoxMain(string title, ref bool drawGizmos, ref bool defaultInspector, Texture2D scrIcon, MonoBehaviour target, int height = 22)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(FGUI_Resources.HeaderBoxStyle);
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
if (GUILayout.Button(new GUIContent(scrIcon), EditorStyles.label, new GUILayoutOption[2] { GUILayout.Width(height - 2), GUILayout.Height(height - 2) }))
|
||||
{
|
||||
MonoScript script = MonoScript.FromMonoBehaviour(target);
|
||||
if (script) EditorGUIUtility.PingObject(script);
|
||||
drawHeaderFoldout = !drawHeaderFoldout;
|
||||
}
|
||||
|
||||
if (GUILayout.Button(title, FGUI_Resources.GetTextStyle(14, true, TextAnchor.MiddleLeft), GUILayout.Height(height)))
|
||||
{
|
||||
MonoScript script = MonoScript.FromMonoBehaviour(target);
|
||||
if (script) EditorGUIUtility.PingObject(script);
|
||||
drawHeaderFoldout = !drawHeaderFoldout;
|
||||
}
|
||||
|
||||
if (EditorGUIUtility.currentViewWidth > 326)
|
||||
// Youtube channel button
|
||||
if (GUILayout.Button(new GUIContent(FGUI_Resources.Tex_Tutorials, "Open FImpossible Creations Channel with tutorial videos in your web browser"), FGUI_Resources.ButtonStyle, new GUILayoutOption[2] { GUILayout.Width(height), GUILayout.Height(height) }))
|
||||
{
|
||||
Application.OpenURL("https://www.youtube.com/c/FImpossibleCreations");
|
||||
}
|
||||
|
||||
if (EditorGUIUtility.currentViewWidth > 292)
|
||||
// Store site button
|
||||
if (GUILayout.Button(new GUIContent(FGUI_Resources.Tex_Website, "Open FImpossible Creations Asset Store Page inside your web browser"), FGUI_Resources.ButtonStyle, new GUILayoutOption[2] { GUILayout.Width(height), GUILayout.Height(height) }))
|
||||
{
|
||||
Application.OpenURL("https://assetstore.unity.com/publishers/37262");
|
||||
}
|
||||
|
||||
// Manual file button
|
||||
if (_manualFile == null) _manualFile = AssetDatabase.LoadAssetAtPath<UnityEngine.Object>(System.IO.Path.GetDirectoryName(AssetDatabase.GetAssetPath(MonoScript.FromMonoBehaviour(target))) + "/Tail Animator - User Manual.pdf");
|
||||
if (_manualFile)
|
||||
if (GUILayout.Button(new GUIContent(FGUI_Resources.Tex_Manual, "Open .PDF user manual file for Tail Animator"), FGUI_Resources.ButtonStyle, new GUILayoutOption[2] { GUILayout.Width(height), GUILayout.Height(height) }))
|
||||
{
|
||||
EditorGUIUtility.PingObject(_manualFile);
|
||||
Application.OpenURL(Application.dataPath + "/" + AssetDatabase.GetAssetPath(_manualFile).Replace("Assets/", ""));
|
||||
}
|
||||
|
||||
FGUI_Inspector.DrawSwitchButton(ref drawGizmos, FGUI_Resources.Tex_GizmosOff, FGUI_Resources.Tex_Gizmos, "Toggle drawing gizmos on character in scene window", height, height, true);
|
||||
FGUI_Inspector.DrawSwitchButton(ref drawHeaderFoldout, FGUI_Resources.Tex_LeftFold, FGUI_Resources.Tex_DownFold, "Toggle to view additional options for foldouts", height, height);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (drawHeaderFoldout)
|
||||
{
|
||||
FGUI_Inspector.DrawUILine(0.07f, 0.1f, 1, 4, 0.99f);
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
choosedLang = (ELangs)EditorGUILayout.EnumPopup(choosedLang, new GUIStyle(EditorStyles.layerMaskField) { fixedHeight = 0 }, new GUILayoutOption[2] { GUILayout.Width(80), GUILayout.Height(22) });
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
PlayerPrefs.SetInt("FimposLang", (int)choosedLang);
|
||||
SetupLangs();
|
||||
}
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
|
||||
bool hierSwitchOn = PlayerPrefs.GetInt("AnimsH", 1) == 1;
|
||||
FGUI_Inspector.DrawSwitchButton(ref hierSwitchOn, FGUI_Resources.Tex_HierSwitch, null, "Switch drawing small icons in hierarchy", height, height, true);
|
||||
PlayerPrefs.SetInt("AnimsH", hierSwitchOn ? 1 : 0);
|
||||
|
||||
|
||||
if (GUILayout.Button(new GUIContent(FGUI_Resources.Tex_Rename, "Change component title to yours (current: '" + Get._editor_Title + "'"), FGUI_Resources.ButtonStyle, new GUILayoutOption[2] { GUILayout.Width(height), GUILayout.Height(height) }))
|
||||
{
|
||||
string filename = EditorUtility.SaveFilePanelInProject("Type your title (no file will be created)", Get._editor_Title, "", "Type your title (no file will be created)");
|
||||
if (!string.IsNullOrEmpty(filename))
|
||||
{
|
||||
filename = System.IO.Path.GetFileNameWithoutExtension(filename);
|
||||
if (!string.IsNullOrEmpty(filename))
|
||||
{ Get._editor_Title = filename; serializedObject.ApplyModifiedProperties(); }
|
||||
}
|
||||
}
|
||||
|
||||
// Old new UI Button
|
||||
//FGUI_Inspector.DrawSwitchButton(ref drawNewInspector, FGUI_Resources.Tex_AB, null, "Switch GUI Style to old / new", height, height, true);
|
||||
//if (!drawNewInspector && drawDefaultInspector) drawDefaultInspector = false;
|
||||
|
||||
// Default inspector switch
|
||||
FGUI_Inspector.DrawSwitchButton(ref defaultInspector, FGUI_Resources.Tex_Default, null, "Toggle inspector view to default inspector.\n\nIf you ever edit source code of Look Animator and add custom variables, you can see them by entering this mode, also sometimes there can be additional/experimental variables to play with.", height, height);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
|
||||
public bool hideSkin = false;
|
||||
void El_DrawOptimizeWithMesh()
|
||||
{
|
||||
// Drawing box informing if spine animator is working by mesh visibility factor
|
||||
if (Get.OptimizeWithMesh)
|
||||
{
|
||||
if (Application.isPlaying)
|
||||
{
|
||||
GUI.color = new Color(1f, 1f, 1f, .5f);
|
||||
EditorGUILayout.BeginHorizontal(EditorStyles.helpBox);
|
||||
|
||||
if (!Get.DisabledByInvisibility())
|
||||
EditorGUILayout.LabelField("Spine Animator Is Active", FGUI_Resources.HeaderStyle);
|
||||
else
|
||||
{
|
||||
GUI.enabled = false;
|
||||
EditorGUILayout.LabelField("Spine Animator Is Inactive", FGUI_Resources.HeaderStyle);
|
||||
GUI.enabled = true;
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
GUI.color = c;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
EditorGUIUtility.labelWidth = 144;
|
||||
EditorGUILayout.PropertyField(sp_OptimizeWithMesh);
|
||||
EditorGUIUtility.labelWidth = 0;
|
||||
|
||||
if (Get.OptimizeWithMesh == null)
|
||||
{
|
||||
if (GUILayout.Button("Find", new GUILayoutOption[1] { GUILayout.Width(44) }))
|
||||
{
|
||||
if (Get.OptimizeWithMesh == null)
|
||||
{
|
||||
Get.OptimizeWithMesh = Get.transform.GetComponent<Renderer>();
|
||||
if (!Get.OptimizeWithMesh) Get.OptimizeWithMesh = Get.transform.GetComponentInChildren<Renderer>();
|
||||
if (!Get.OptimizeWithMesh) if (Get.transform.parent != null) Get.OptimizeWithMesh = Get.transform.parent.GetComponentInChildren<Renderer>();
|
||||
if (!Get.OptimizeWithMesh) if (Get.transform.parent != null) if (Get.transform.parent.parent != null) Get.OptimizeWithMesh = Get.transform.parent.parent.GetComponentInChildren<Renderer>();
|
||||
if (!Get.OptimizeWithMesh) if (Get.transform.parent != null) if (Get.transform.parent.parent != null) if (Get.transform.parent.parent.parent != null) Get.OptimizeWithMesh = Get.transform.parent.parent.parent.GetComponentInChildren<Renderer>();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GUILayout.Button(hideSkin ? "Show" : "Hide", new GUILayoutOption[1] { GUILayout.Width(44) }))
|
||||
{
|
||||
hideSkin = !hideSkin;
|
||||
|
||||
if (hideSkin)
|
||||
for (int i = 0; i < skins.Count; i++) skins[i].shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly;
|
||||
else
|
||||
for (int i = 0; i < skins.Count; i++) skins[i].shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
|
||||
}
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if ( Get.OptimizeWithMesh)
|
||||
{
|
||||
SerializedProperty spc = sp_OptimizeWithMesh.Copy();
|
||||
spc.Next(false);
|
||||
EditorGUILayout.PropertyField(spc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void El_DrawSpringiness()
|
||||
{
|
||||
GUI.color = new Color(1f, 1f, 1f, 0.7f);
|
||||
EditorGUILayout.BeginVertical();
|
||||
|
||||
string balAdd = "";
|
||||
string balTip = "";
|
||||
|
||||
if (!Get.UseCurlingCurve && !Get.UseSpringCurve && !Get.UseSlitheryCurve)
|
||||
if (Get.Curling > 0.3f)
|
||||
{
|
||||
if (Get.Springiness > Mathf.Epsilon)
|
||||
{
|
||||
float treshold = Mathf.Lerp(0.3f, 0.08f, Get.Slithery);
|
||||
|
||||
if (Get.Springiness + treshold < Get.Curling)
|
||||
{
|
||||
balAdd = " ► ";
|
||||
balTip = "Springiness should be set higher to notice bouncy motion";
|
||||
}
|
||||
else
|
||||
if (Get.Springiness - treshold * 0.7f > Get.Curling)
|
||||
{
|
||||
balAdd = " ◄ ";
|
||||
balTip = "Springiness should be set lower to avoid too rapid bounces";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Tooltip texts
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
if (Get.UseSpringCurve)
|
||||
GUILayout.Label(" Tail Start", smallStyle);
|
||||
else
|
||||
GUILayout.Label(new GUIContent(" Balanced" + " " + balAdd, balTip), smallStyle);
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
if (Get.UseSpringCurve)
|
||||
GUILayout.Label("Tail End ", smallStyle);
|
||||
else
|
||||
GUILayout.Label(new GUIContent(balAdd + " " + "Bouncy ", balTip), smallStyle);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (Get.UseSpringCurve)
|
||||
GUILayout.Space(-0f);
|
||||
else
|
||||
GUILayout.Space(-4f);
|
||||
|
||||
//if (Get.Springiness == 0.0f) GUI.color = defaultValC; else
|
||||
GUI.color = c;
|
||||
|
||||
if (Get.UseSpringCurve)
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.PropertyField(sp_SpringCurve, new GUIContent(sp_Springiness.displayName, sp_Springiness.tooltip), GUILayout.MaxHeight(18)); GUILayout.Space(3f);
|
||||
EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseSpringCurve, "Spread springiness speed parameter weight over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++)
|
||||
{
|
||||
lastSelected[i].UseSpringCurve = Get.UseSpringCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
GUILayout.Space(2f);
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal(); EditorGUIUtility.fieldWidth = 38;
|
||||
EditorGUILayout.PropertyField(sp_Springiness); EditorGUIUtility.fieldWidth = 0;
|
||||
EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseSpringCurve, "Spread springiness speed parameter weight over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseSpringCurve = Get.UseSpringCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
|
||||
GUI.color = c;
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
EditorGUILayout.BeginVertical();
|
||||
}
|
||||
|
||||
|
||||
void El_DrawSlippery()
|
||||
{
|
||||
EditorGUILayout.BeginVertical();
|
||||
|
||||
if (Get.UseSlipperyCurve)
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
GUI.color = new Color(1f, 1f, 1f, 0.7f);
|
||||
|
||||
GUILayout.Label(" Tail Start", smallStyle);
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
GUILayout.Label("Tail End ", smallStyle);
|
||||
GUI.color = c;
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.PropertyField(sp_SlipperyCurve, new GUIContent("Collision Slippery", sp_SlipperyCurve.tooltip), GUILayout.MaxHeight(18)); GUILayout.Space(3f);
|
||||
EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseSlipperyCurve, "Spread collision slippery parameter over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseSlipperyCurve = Get.UseSlipperyCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
GUILayout.Space(2f);
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal(); EditorGUIUtility.fieldWidth = 38;
|
||||
EditorGUILayout.PropertyField(sp_CollisionSlippery); EditorGUIUtility.fieldWidth = 0;
|
||||
EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseSlipperyCurve, "Spread collision slippery parameter over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseSlipperyCurve = Get.UseSlipperyCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
//EditorGUILayout.BeginVertical();
|
||||
}
|
||||
|
||||
|
||||
void El_DrawSlithery()
|
||||
{
|
||||
GUI.color = new Color(1f, 1f, 1f, 0.7f);
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
if (Get.UseSlitheryCurve)
|
||||
GUILayout.Label(" Tail Start", smallStyle);
|
||||
else
|
||||
GUILayout.Label(" Stiff", smallStyle);
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
if (Get.UseSlitheryCurve)
|
||||
GUILayout.Label("Tail End ", smallStyle);
|
||||
else
|
||||
GUILayout.Label("Smooth ", smallStyle);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
GUI.color = c;
|
||||
|
||||
if (Get.UseSlitheryCurve)
|
||||
GUILayout.Space(0f);
|
||||
else
|
||||
GUILayout.Space(-3f);
|
||||
|
||||
|
||||
if (Get.UseSlitheryCurve)
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.PropertyField(sp_SlitCurve, new GUIContent(sp_Slithery.displayName, sp_Slithery.tooltip), GUILayout.MaxHeight(18)); GUILayout.Space(3f);
|
||||
EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseSlitheryCurve, "Spread sensitivity speed parameter weight over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseSlitheryCurve = Get.UseSlitheryCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal(); EditorGUIUtility.fieldWidth = 38;
|
||||
EditorGUILayout.PropertyField(sp_Slithery); EditorGUIUtility.fieldWidth = 0;
|
||||
EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseSlitheryCurve, "Spread sensitivity speed parameter weight over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseSlitheryCurve = Get.UseSlitheryCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
GUI.color = c;
|
||||
}
|
||||
|
||||
|
||||
void El_DrawCurling()
|
||||
{
|
||||
|
||||
GUI.color = new Color(1f, 1f, 1f, 0.7f);
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
|
||||
|
||||
string straiAdd = "";
|
||||
string straiTip = "";
|
||||
|
||||
if (!Get.UseCurlingCurve && !Get.UseSpringCurve && !Get.UseSlitheryCurve)
|
||||
if (Get.Springiness > Mathf.Epsilon)
|
||||
{
|
||||
//float treshold = Mathf.Lerp(0.3f, 0.08f, Get.Slithery);
|
||||
|
||||
if (Get.Curling < Get.Springiness)
|
||||
{
|
||||
straiAdd = " ► ";
|
||||
straiTip = "Feel free to boost curling high when you're using springiness";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (Get.UseCurlingCurve)
|
||||
GUILayout.Label(" Tail Start", smallStyle);
|
||||
else
|
||||
GUILayout.Label(new GUIContent(" Straightened " + straiAdd, straiTip), smallStyle);
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
if (Get.UseCurlingCurve)
|
||||
GUILayout.Label("Tail End ", smallStyle);
|
||||
else
|
||||
GUILayout.Label("Tangled ", smallStyle);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
GUI.color = c;
|
||||
|
||||
if (Get.UseCurlingCurve)
|
||||
GUILayout.Space(0f);
|
||||
else
|
||||
GUILayout.Space(-2f);
|
||||
|
||||
|
||||
//if (Get.Curling == 0.5f) GUI.color = defaultValC; else
|
||||
GUI.color = c;
|
||||
|
||||
|
||||
if (Get.UseCurlingCurve)
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.PropertyField(sp_CurlingCurve, new GUIContent(sp_Curling.displayName, sp_Curling.tooltip), GUILayout.MaxHeight(18)); GUILayout.Space(3f);
|
||||
EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseCurlingCurve, "Spread curling over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseCurlingCurve = Get.UseCurlingCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal(); EditorGUIUtility.fieldWidth = 38;
|
||||
EditorGUILayout.PropertyField(sp_Curling); EditorGUIUtility.fieldWidth = 0;
|
||||
EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseCurlingCurve, "Spread curling parameter over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseCurlingCurve = Get.UseCurlingCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
GUI.color = c;
|
||||
}
|
||||
|
||||
|
||||
void El_DrawLimitingAngle()
|
||||
{
|
||||
if (Get.AngleLimit > 180) GUI.color = defaultValC;
|
||||
EditorGUILayout.PropertyField(sp_AngleLimit);
|
||||
GUI.color = c;
|
||||
|
||||
if (Get.AngleLimit < 181)
|
||||
{
|
||||
if (Get.AngleLimitAxis == Vector3.zero) GUI.color = c * new Color(1f, 1f, 1f, 0.6f);
|
||||
EditorGUILayout.PropertyField(sp_AngleLimitAxis);
|
||||
GUI.color = c;
|
||||
|
||||
if (Get.AngleLimitAxis != Vector3.zero)
|
||||
{
|
||||
if (Get.LimitAxisRange.x == Get.LimitAxisRange.y) GUI.color = c * new Color(1f, 1f, 1f, 0.6f);
|
||||
EditorGUILayout.MinMaxSlider(new GUIContent("Range", "If you want limit axes symmetrically leave this parameter unchanged, if you want limit one direction of axis more than reversed, tweak this parameter"),
|
||||
ref Get.LimitAxisRange.x, ref Get.LimitAxisRange.y, -90f, 90f);
|
||||
GUI.color = c;
|
||||
}
|
||||
|
||||
EditorGUILayout.PropertyField(sp_LimitSmoothing);
|
||||
|
||||
GUILayout.Space(5f);
|
||||
}
|
||||
|
||||
GUI.color = c;
|
||||
}
|
||||
|
||||
|
||||
static bool drawInclud = true;
|
||||
void El_DrawSelectiveCollisionBox()
|
||||
{
|
||||
if (Get.IncludedColliders == null) Get.IncludedColliders = new System.Collections.Generic.List<Collider>();
|
||||
Get._editor_IsInspectorViewingIncludedColliders = drawInclud;
|
||||
|
||||
GUILayout.Space(1f);
|
||||
GUI.color = new Color(0.85f, 1f, 0.85f, 1f);
|
||||
EditorGUILayout.BeginHorizontal(FGUI_Resources.HeaderBoxStyleH);
|
||||
string f = FGUI_Resources.GetFoldSimbol(drawInclud); int inclC = Get.IncludedColliders.Count;
|
||||
GUI.color = c;
|
||||
|
||||
GUILayout.Label(new GUIContent(" "), GUILayout.Width(1));
|
||||
string inclColFoldTitle = "";
|
||||
|
||||
if (Get.DynamicWorldCollidersInclusion)
|
||||
{
|
||||
if (Application.isPlaying)
|
||||
inclColFoldTitle = Lang("Collide With") + " (Dynamic" + " : " + inclC + ")";
|
||||
else
|
||||
inclColFoldTitle = "Always Include (" + inclC + ")";
|
||||
}
|
||||
else
|
||||
inclColFoldTitle = Lang("Collide With") + " (" + (inclC == 0 ? "0 !!!" : inclC.ToString()) + ")";
|
||||
|
||||
if (GUILayout.Button(new GUIContent(" " + f + " " + inclColFoldTitle, FGUI_Resources.TexBehaviourIcon), FGUI_Resources.FoldStyle, GUILayout.Height(24))) drawInclud = !drawInclud;
|
||||
|
||||
//if (!Application.isPlaying)
|
||||
// if (Get.DynamicWorldCollidersInclusion) drawInclud = false;
|
||||
|
||||
//bool checkNullIncludColls = true;
|
||||
if (drawInclud)
|
||||
{
|
||||
//if (GUILayout.Button("+", new GUILayoutOption[2] { GUILayout.MaxWidth(24), GUILayout.MaxHeight(22) }))
|
||||
//{
|
||||
// Get.IncludedColliders.Add(null);
|
||||
// //Get._editor_checkInclCollidersForNulls = -10;
|
||||
// //checkNullIncludColls = false;
|
||||
// serializedObject.Update();
|
||||
// serializedObject.ApplyModifiedProperties();
|
||||
//}
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (drawInclud)
|
||||
{
|
||||
FGUI_Inspector.VSpace(-3, -5);
|
||||
GUI.color = new Color(0.6f, .9f, 0.6f, 1f);
|
||||
EditorGUILayout.BeginVertical(FGUI_Resources.BGInBoxStyleH);
|
||||
GUI.color = c;
|
||||
GUILayout.Space(5f);
|
||||
|
||||
|
||||
// Drawing colliders from list
|
||||
if (Get.IncludedColliders.Count == 0)
|
||||
{
|
||||
EditorGUILayout.LabelField("Please add here colliders", FGUI_Resources.HeaderStyle);
|
||||
GUILayout.Space(2f);
|
||||
}
|
||||
else
|
||||
{
|
||||
Get.CheckForColliderDuplicatesAndNulls();
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
for (int i = 0; i < Get.IncludedColliders.Count; i++)
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
if (Get.IncludedColliders[i] != null)
|
||||
{
|
||||
if (!Get.IncludedColliders[i].gameObject.activeInHierarchy) GUI.color = new Color(1f, 1f, 1f, 0.5f);
|
||||
Get.IncludedColliders[i] = (Collider)EditorGUILayout.ObjectField(Get.IncludedColliders[i], typeof(Collider), true);
|
||||
if (!Get.IncludedColliders[i].gameObject.activeInHierarchy) GUI.color = c;
|
||||
}
|
||||
|
||||
if (GUILayout.Button("X", new GUILayoutOption[2] { GUILayout.MaxWidth(22), GUILayout.MaxHeight(16) }))
|
||||
{
|
||||
Get.IncludedColliders.RemoveAt(i);
|
||||
serializedObject.Update();
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
return;
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
Get.CheckForColliderDuplicatesAndNulls();
|
||||
serializedObject.Update();
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.Space(6f);
|
||||
|
||||
// Lock button
|
||||
GUILayout.BeginVertical();
|
||||
if (ActiveEditorTracker.sharedTracker.isLocked) GUI.color = new Color(0.44f, 0.44f, 0.44f, 0.8f); else GUI.color = new Color(0.95f, 0.95f, 0.99f, 0.9f);
|
||||
if (GUILayout.Button(new GUIContent("Lock Inspector for Drag & Drop Colliders", "Drag & drop colliders to 'Included Colliders' List from the hierarchy"), FGUI_Resources.ButtonStyle, GUILayout.Height(18))) ActiveEditorTracker.sharedTracker.isLocked = !ActiveEditorTracker.sharedTracker.isLocked;
|
||||
GUI.color = c;
|
||||
GUILayout.EndVertical();
|
||||
|
||||
// Drag and drop box
|
||||
El_DrawDragAndDropCollidersBox();
|
||||
|
||||
GUILayout.Space(3f);
|
||||
|
||||
if (Get.IncludedColliders.Count > 0)
|
||||
{
|
||||
EditorGUILayout.HelpBox("You can disable collider components on the objects - tail animator will still detect collision. If you deactivate the Game Object with collider - tail animator will not detect collision with it.", MessageType.Info);
|
||||
}
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void El_DrawSelectiveCollisionBox2D()
|
||||
{
|
||||
GUILayout.Space(1f);
|
||||
GUI.color = new Color(0.85f, 1f, 0.85f, 1f);
|
||||
EditorGUILayout.BeginHorizontal(FGUI_Resources.HeaderBoxStyleH);
|
||||
string f = FGUI_Resources.GetFoldSimbol(drawInclud); int inclC = Get.IncludedColliders2D.Count;
|
||||
GUI.color = c;
|
||||
|
||||
GUILayout.Label(new GUIContent(" "), GUILayout.Width(1));
|
||||
string inclColFoldTitle = "";
|
||||
|
||||
inclColFoldTitle = "2D " + Lang("Collide With") + " (" + (inclC == 0 ? "None" : inclC.ToString()) + ")";
|
||||
|
||||
if (GUILayout.Button(new GUIContent(" " + f + " " + inclColFoldTitle, FGUI_Resources.TexBehaviourIcon), FGUI_Resources.FoldStyle, GUILayout.Height(24))) drawInclud = !drawInclud;
|
||||
|
||||
if (drawInclud)
|
||||
if (GUILayout.Button("+", new GUILayoutOption[2] { GUILayout.MaxWidth(24), GUILayout.MaxHeight(22) }))
|
||||
{
|
||||
Get.IncludedColliders2D.Add(null);
|
||||
serializedObject.Update();
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (drawInclud)
|
||||
{
|
||||
FGUI_Inspector.VSpace(-3, -5);
|
||||
GUI.color = new Color(0.6f, .9f, 0.6f, 1f);
|
||||
EditorGUILayout.BeginVertical(FGUI_Resources.BGInBoxStyleH);
|
||||
GUI.color = c;
|
||||
GUILayout.Space(5f);
|
||||
|
||||
EditorGUILayout.HelpBox("2D Collision is supported ONLY FOR CIRCLE, CAPSULE, BOX and POLYGON colliders for now!", MessageType.None);
|
||||
|
||||
// Drawing colliders from list
|
||||
if (Get.IncludedColliders2D.Count == 0)
|
||||
{
|
||||
EditorGUILayout.LabelField("Please add here 2D colliders", FGUI_Resources.HeaderStyle);
|
||||
GUILayout.Space(2f);
|
||||
}
|
||||
else
|
||||
{
|
||||
Get.CheckForColliderDuplicatesAndNulls2D();
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
for (int i = 0; i < Get.IncludedColliders2D.Count; i++)
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
if (Get.IncludedColliders2D[i] != null)
|
||||
{
|
||||
if (!Get.IncludedColliders2D[i].gameObject.activeInHierarchy) GUI.color = new Color(1f, 1f, 1f, 0.5f);
|
||||
Get.IncludedColliders2D[i] = (Collider2D)EditorGUILayout.ObjectField(Get.IncludedColliders2D[i], typeof(Collider2D), true);
|
||||
if (!Get.IncludedColliders2D[i].gameObject.activeInHierarchy) GUI.color = c;
|
||||
}
|
||||
else
|
||||
{
|
||||
Get.IncludedColliders2D[i] = (Collider2D)EditorGUILayout.ObjectField(Get.IncludedColliders2D[i], typeof(Collider2D), true);
|
||||
}
|
||||
|
||||
if (GUILayout.Button("X", new GUILayoutOption[2] { GUILayout.MaxWidth(22), GUILayout.MaxHeight(16) }))
|
||||
{
|
||||
Get.IncludedColliders2D.RemoveAt(i);
|
||||
serializedObject.Update();
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
return;
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
Get.CheckForColliderDuplicatesAndNulls();
|
||||
serializedObject.Update();
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.Space(3f);
|
||||
|
||||
// Lock button
|
||||
GUILayout.BeginVertical();
|
||||
if (ActiveEditorTracker.sharedTracker.isLocked) GUI.color = new Color(0.44f, 0.44f, 0.44f, 0.8f); else GUI.color = new Color(0.95f, 0.95f, 0.99f, 0.9f);
|
||||
if (GUILayout.Button(new GUIContent("Lock Inspector for Drag & Drop Colliders", "Drag & drop colliders to 'Included Colliders' List from the hierarchy"), FGUI_Resources.ButtonStyle, GUILayout.Height(18))) ActiveEditorTracker.sharedTracker.isLocked = !ActiveEditorTracker.sharedTracker.isLocked;
|
||||
GUI.color = c;
|
||||
GUILayout.EndVertical();
|
||||
|
||||
// Drag and drop box
|
||||
El_DrawDragAndDropCollidersBox();
|
||||
|
||||
GUILayout.Space(3f);
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void El_DrawCollidersDynamicInclusion()
|
||||
{
|
||||
if (Get.DynamicWorldCollidersInclusion)
|
||||
{
|
||||
if (!Application.isPlaying)
|
||||
{
|
||||
GUILayout.Space(5f);
|
||||
EditorGUILayout.HelpBox("Using trigger colliders to automatically fill 'Collide With' list", MessageType.Info);
|
||||
GUILayout.Space(3f);
|
||||
|
||||
EditorGUILayout.PropertyField(sp_InclusionRadius);
|
||||
if (Get.CollisionMode == TailAnimator2.ECollisionMode.m_3DCollision) EditorGUILayout.PropertyField(sp_IgnoreMeshColliders);
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.PropertyField(sp_colSameLayer, new GUIContent("Trigger Layer", sp_colSameLayer.tooltip));
|
||||
if (Get.CollidersSameLayer)
|
||||
{
|
||||
EditorGUILayout.LabelField(" ", GUILayout.Width(2));
|
||||
GUI.enabled = false; EditorGUILayout.LayerField(Get.gameObject.layer); GUI.enabled = true; EditorGUIUtility.labelWidth = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.LabelField(" ", GUILayout.Width(2));
|
||||
EditorGUILayout.PropertyField(sp_colCustomLayer, new GUIContent(""));
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
}
|
||||
|
||||
GUILayout.Space(4f);
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
if (Get.CollisionMode == TailAnimator2.ECollisionMode.m_3DCollision)
|
||||
EditorGUILayout.PropertyField(sp_colIgnored, true);
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
}
|
||||
|
||||
void El_DrawDragAndDropCollidersBox()
|
||||
{
|
||||
GUILayout.Space(3);
|
||||
|
||||
var drop = GUILayoutUtility.GetRect(0f, 38f, new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
|
||||
GUI.color = new Color(0.5f, 1f, 0.5f, 0.9f);
|
||||
GUI.Box(drop, "Drag & Drop New Colliders Here", new GUIStyle(EditorStyles.helpBox) { alignment = TextAnchor.MiddleCenter, fixedHeight = 38 });
|
||||
GUI.color = c;
|
||||
var dropEvent = Event.current;
|
||||
|
||||
switch (dropEvent.type)
|
||||
{
|
||||
case EventType.DragUpdated:
|
||||
case EventType.DragPerform:
|
||||
if (!drop.Contains(dropEvent.mousePosition)) break;
|
||||
|
||||
DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
|
||||
|
||||
if (dropEvent.type == EventType.DragPerform)
|
||||
{
|
||||
DragAndDrop.AcceptDrag();
|
||||
|
||||
var tails = GetSelectedTailAnimators();
|
||||
if (tails.Contains(Get) == false) tails.Add(Get);
|
||||
|
||||
foreach (var dragged in DragAndDrop.objectReferences)
|
||||
{
|
||||
GameObject draggedObject = dragged as GameObject;
|
||||
|
||||
if (draggedObject)
|
||||
{
|
||||
|
||||
for (int t = 0; t < tails.Count; t++)
|
||||
{
|
||||
var tail = tails[t];
|
||||
if (tail.CollisionMode == TailAnimator2.ECollisionMode.m_3DCollision)
|
||||
{
|
||||
Collider[] coll = draggedObject.GetComponents<Collider>();
|
||||
for (int ci = 0; ci < coll.Length; ci++)
|
||||
{
|
||||
tail.AddCollider(coll[ci]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Collider2D[] coll = draggedObject.GetComponents<Collider2D>();
|
||||
for (int ci = 0; ci < coll.Length; ci++)
|
||||
{
|
||||
//if (coll[ci] is CharacterController) continue;
|
||||
tail.AddCollider(coll[ci]);
|
||||
}
|
||||
}
|
||||
|
||||
EditorUtility.SetDirty(tail);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Event.current.Use();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bcf1a74f343e94f4d83b39f22572bd73
|
||||
timeCreated: 1532131583
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 25475a529738d084d8d042e096cb2fe1
|
||||
timeCreated: 1532131583
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,156 @@
|
||||
using FIMSpace.FEditor;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FIMSpace.FTail
|
||||
{
|
||||
public partial class FTailAnimator2_Editor
|
||||
{
|
||||
// RESOURCES ----------------------------------------
|
||||
|
||||
public static Texture2D _TexTailAnimIcon { get { if (__texTailAnimIcon != null) return __texTailAnimIcon; __texTailAnimIcon = Resources.Load<Texture2D>("Tail Animator/Tail Animator Icon Small"); return __texTailAnimIcon; } }
|
||||
private static Texture2D __texTailAnimIcon = null;
|
||||
public static Texture2D _TexWavingIcon { get { if (__texWaving != null) return __texWaving; __texWaving = Resources.Load<Texture2D>("Tail Animator/WavingIcon"); return __texWaving; } }
|
||||
private static Texture2D __texWaving = null;
|
||||
public static Texture2D _TexPartialBlendIcon { get { if (__texPartBlendIcon != null) return __texPartBlendIcon; __texPartBlendIcon = Resources.Load<Texture2D>("Tail Animator/PartialBlendIcon"); return __texPartBlendIcon; } }
|
||||
private static Texture2D __texPartBlendIcon = null;
|
||||
public static Texture2D _TexIKIcon { get { if (__texIKIcon != null) return __texIKIcon; __texIKIcon = Resources.Load<Texture2D>("Tail Animator/IKIcon"); return __texIKIcon; } }
|
||||
private static Texture2D __texIKIcon = null;
|
||||
public static Texture2D _TexDeflIcon { get { if (__texDeflIcon != null) return __texDeflIcon; __texDeflIcon = Resources.Load<Texture2D>("Tail Animator/Deflection"); return __texDeflIcon; } }
|
||||
private static Texture2D __texDeflIcon = null;
|
||||
private static Texture curveIcon { get { if (_curveIcon == null) _curveIcon = FGUI_Resources.Tex_Curve; /*EditorGUIUtility.IconContent("AudioLowPassFilter Icon").image;*/ return _curveIcon; } }
|
||||
private static Texture _curveIcon;
|
||||
private static Texture _TexWindIcon { get { if (_windIcon == null) _windIcon = Resources.Load<Texture2D>("Tail Animator/Wind"); return _windIcon; } }
|
||||
private static Texture _windIcon;
|
||||
|
||||
private static UnityEngine.Object _manualFile;
|
||||
|
||||
private static GUIStyle smallStyle { get { if (_smallStyle == null) _smallStyle = new GUIStyle(EditorStyles.miniLabel) { fontStyle = FontStyle.Italic }; return _smallStyle; } }
|
||||
private static GUIStyle _smallStyle;
|
||||
|
||||
// HELPER VARIABLES ----------------------------------------
|
||||
|
||||
private TailAnimator2 Get { get { if (_get == null) _get = target as TailAnimator2; return _get; } }
|
||||
private TailAnimator2 _get;
|
||||
|
||||
private string topWarning = "";
|
||||
private float topWarningAlpha = 0f;
|
||||
|
||||
static bool drawDefaultInspector = false;
|
||||
//private Color limitsC = new Color(1f, 1f, 1f, 0.88f);
|
||||
private Color c;
|
||||
private Color bc;
|
||||
private Color defaultValC = new Color(1f, 1f, 1f, 0.825f);
|
||||
|
||||
|
||||
public List<SkinnedMeshRenderer> skins;
|
||||
SkinnedMeshRenderer largestSkin;
|
||||
Animator animator;
|
||||
Animation animation;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Trying to deep find skinned mesh renderer
|
||||
/// </summary>
|
||||
private void FindComponents()
|
||||
{
|
||||
if (skins == null) skins = new List<SkinnedMeshRenderer>();
|
||||
|
||||
foreach (var t in Get.transform.GetComponentsInChildren<Transform>())
|
||||
{
|
||||
SkinnedMeshRenderer s = t.GetComponent<SkinnedMeshRenderer>(); if (s) skins.Add(s);
|
||||
if (!animator) animator = t.GetComponent<Animator>();
|
||||
if (!animator) if (!animation) animation = t.GetComponent<Animation>();
|
||||
}
|
||||
|
||||
if ((skins != null && largestSkin != null) && (animator != null || animation != null)) return;
|
||||
|
||||
if (Get.transform != Get.transform)
|
||||
{
|
||||
foreach (var t in Get.transform.GetComponentsInChildren<Transform>())
|
||||
{
|
||||
SkinnedMeshRenderer s = t.GetComponent<SkinnedMeshRenderer>(); if (!skins.Contains(s)) if (s) skins.Add(s);
|
||||
if (!animator) animator = t.GetComponent<Animator>();
|
||||
if (!animator) if (!animation) animation = t.GetComponent<Animation>();
|
||||
}
|
||||
}
|
||||
|
||||
// Searching in parent
|
||||
if (skins.Count == 0)
|
||||
{
|
||||
Transform lastParent = Get.transform;
|
||||
|
||||
while (lastParent != null)
|
||||
{
|
||||
if (lastParent.parent == null) break;
|
||||
lastParent = lastParent.parent;
|
||||
}
|
||||
|
||||
foreach (var t in lastParent.GetComponentsInChildren<Transform>())
|
||||
{
|
||||
SkinnedMeshRenderer s = t.GetComponent<SkinnedMeshRenderer>(); if (!skins.Contains(s)) if (s) skins.Add(s);
|
||||
if (!animator) animator = t.GetComponent<Animator>();
|
||||
if (!animator) if (!animation) animation = t.GetComponent<Animation>();
|
||||
}
|
||||
}
|
||||
|
||||
if (skins.Count > 1)
|
||||
{
|
||||
largestSkin = skins[0];
|
||||
for (int i = 1; i < skins.Count; i++)
|
||||
if (skins[i].bones.Length > largestSkin.bones.Length)
|
||||
largestSkin = skins[i];
|
||||
}
|
||||
else
|
||||
if (skins.Count > 0) largestSkin = skins[0];
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Checking if transform is child of choosed root bone parent transform
|
||||
/// </summary>
|
||||
bool IsChildOf(Transform child, Transform rootParent)
|
||||
{
|
||||
Transform tParent = child;
|
||||
while (tParent != null && tParent != rootParent)
|
||||
{
|
||||
tParent = tParent.parent;
|
||||
}
|
||||
|
||||
if (tParent == null) return false; else return true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Checking if transform is child of choosed root bone parent transform
|
||||
/// </summary>
|
||||
Transform GetLastChild(Transform rootParent)
|
||||
{
|
||||
Transform tChild = rootParent;
|
||||
while (tChild.childCount > 0) tChild = tChild.GetChild(0);
|
||||
return tChild;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Getting editor selected objects with tail animators to apply changes to multiple tail animator objects
|
||||
/// </summary>
|
||||
private List<TailAnimator2> GetSelectedTailAnimators()
|
||||
{
|
||||
List<TailAnimator2> anims = new List<TailAnimator2>();
|
||||
|
||||
for (int i = 0; i < Selection.gameObjects.Length; i++)
|
||||
{
|
||||
TailAnimator2 t = Selection.gameObjects[i].GetComponent<TailAnimator2>();
|
||||
if (t) if (!anims.Contains(t)) anims.Add(t);
|
||||
}
|
||||
|
||||
lastSelected = anims;
|
||||
return anims;
|
||||
}
|
||||
List<TailAnimator2> lastSelected;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0e79d23b98435d54d93ae9b83395b629
|
||||
timeCreated: 1532131583
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,85 @@
|
||||
using System.Collections;
|
||||
using System.Xml;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FIMSpace.FTail
|
||||
{
|
||||
public partial class FTailAnimator2_Editor
|
||||
{
|
||||
private TextAsset langFile { get { if (_langFile == null) _langFile = Resources.Load("Tail Animator/TailAnimator_Langs") as TextAsset; return _langFile; } }
|
||||
private TextAsset _langFile;
|
||||
|
||||
/// <summary> Readed langs from file </summary>
|
||||
private Hashtable langTexts;
|
||||
|
||||
public enum ELangs { English, Polski, русский, 中文, 日本語, 한국어 }
|
||||
private static ELangs choosedLang = 0;
|
||||
|
||||
|
||||
// Setup langs ----------------------------------------
|
||||
private void SetupLangs()
|
||||
{
|
||||
// Checking if lang was setted through player prefs
|
||||
choosedLang = (ELangs)PlayerPrefs.GetInt("FimposLang", 0);
|
||||
|
||||
if (langFile == null)
|
||||
{
|
||||
Debug.LogError("No lang file! You moved it from Editor/Resources/Tail Animator/ ???");
|
||||
return;
|
||||
}
|
||||
|
||||
#region Generating lang hashtable
|
||||
|
||||
var xml = new XmlDocument();
|
||||
xml.LoadXml(langFile.text);
|
||||
|
||||
|
||||
langTexts = new Hashtable();
|
||||
var element = xml.DocumentElement[choosedLang.ToString()];
|
||||
if (element != null)
|
||||
{
|
||||
|
||||
var elemEnum = element.GetEnumerator();
|
||||
while (elemEnum.MoveNext())
|
||||
{
|
||||
var xmlItem = (XmlElement)elemEnum.Current;
|
||||
langTexts.Add(xmlItem.GetAttribute("name"), xmlItem.InnerText);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("The specified language does not exist: " + choosedLang.ToString());
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
private string Lang(string title)
|
||||
{
|
||||
if (langTexts == null)
|
||||
{
|
||||
//Debug.Log("No Lang: [" + title + "]");
|
||||
return title;
|
||||
}
|
||||
|
||||
if (!langTexts.ContainsKey(title))
|
||||
{
|
||||
return title;
|
||||
}
|
||||
|
||||
string target = (string)langTexts[title];
|
||||
|
||||
if (string.IsNullOrEmpty(target)) return title;
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
|
||||
private bool LangBig()
|
||||
{
|
||||
if (choosedLang == ELangs.中文 || choosedLang == ELangs.日本語) return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9b613e7438d9e79458f122cd8fa5236b
|
||||
timeCreated: 1532131583
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,39 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FIMSpace.FTail
|
||||
{
|
||||
public partial class FTailAnimator2_Editor
|
||||
{
|
||||
protected virtual void OnSceneGUI()
|
||||
{
|
||||
if (Application.isPlaying) return;
|
||||
if (!Get.DrawGizmos) return;
|
||||
|
||||
if (Get._Editor_Category == TailAnimator2.ETailCategory.Setup)
|
||||
if (Get.BaseTransform)
|
||||
if (!FEngineering.VIsZero(Get.EndBoneJointOffset))
|
||||
{
|
||||
Get.RefreshTransformsList();
|
||||
|
||||
if (Get._TransformsGhostChain.Count > 0)
|
||||
{
|
||||
Undo.RecordObject(Get, "Changing position of tail joint offset");
|
||||
Transform root = Get._TransformsGhostChain[Get._TransformsGhostChain.Count - 1];
|
||||
|
||||
Vector3 off = root.TransformVector(Get.EndBoneJointOffset);
|
||||
Vector3 pos = root.position + off;
|
||||
Vector3 transformed = FEditor_TransformHandles.PositionHandle(pos, Get.BaseTransform.rotation, .3f, true, false);
|
||||
|
||||
if (Vector3.Distance(transformed, pos) > 0.00001f)
|
||||
{
|
||||
Vector3 diff = transformed - pos;
|
||||
Get.EndBoneJointOffset = root.InverseTransformVector(off + diff);
|
||||
SerializedObject obj = new SerializedObject(Get);
|
||||
if (obj != null) { obj.ApplyModifiedProperties(); obj.Update(); }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a05f6e8e06329674a85c95a70ca37780
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,339 @@
|
||||
using FIMSpace.FEditor;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FIMSpace.FTail
|
||||
{
|
||||
public partial class FTailAnimator2_Editor
|
||||
{
|
||||
|
||||
#region GUI Helpers
|
||||
|
||||
int[] setp_includeParent = new int[2] { 0, 1 };
|
||||
GUIContent[] setp_includeParentNames = new GUIContent[2] { new GUIContent("Exclude", "Excluding first bone from tail animator motion - it will be anchor for rest of the bones"), new GUIContent("Include", "Including first bone for tail animator motion - ghost point will be generated to simulate parent of this bone") };
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
private void Tab_DrawSetup()
|
||||
{
|
||||
|
||||
FGUI_Inspector.VSpace(-2, -4);
|
||||
GUILayout.BeginVertical(FGUI_Resources.ViewBoxStyle);
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxBlankStyle);
|
||||
GUILayout.Space(7f);
|
||||
|
||||
Transform startField = Get.StartBone;
|
||||
if (Get.StartBone == null) { startField = Get.transform; GUI.color = new Color(1f, 1f, 1f, 0.7f); }
|
||||
|
||||
|
||||
if (topWarningAlpha > 0f)
|
||||
if (topWarning != "")
|
||||
{
|
||||
GUI.color = new Color(c.r, c.g, c.b, c.a * Mathf.Min(1f, topWarningAlpha));
|
||||
//EditorGUILayout.HelpBox(topWarning, MessageType.Info);
|
||||
if (GUILayout.Button(topWarning, FGUI_Inspector.Style(new Color(0.8f, 0.8f, 0f, 0.1f), 0), GUILayout.ExpandWidth(true))) { topWarningAlpha = 0f; }
|
||||
GUI.color = c;
|
||||
topWarningAlpha -= 0.05f;
|
||||
}
|
||||
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
EditorGUIUtility.labelWidth = 82;
|
||||
|
||||
Transform preStart = Get.StartBone;
|
||||
|
||||
if (Application.isPlaying) GUI.enabled = false;
|
||||
|
||||
try
|
||||
{
|
||||
GUILayout.BeginHorizontal();
|
||||
}
|
||||
catch (System.Exception)
|
||||
{
|
||||
GUILayout.BeginHorizontal();
|
||||
}
|
||||
|
||||
Transform startB = (Transform)EditorGUILayout.ObjectField(new GUIContent(sp_StartBone.displayName), startField, typeof(Transform), true);
|
||||
|
||||
if (startB != preStart)
|
||||
{
|
||||
Get.EndBone = null;
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
if (Application.isPlaying) GUI.enabled = true;
|
||||
|
||||
//bool canInclude = false;
|
||||
//if (startB) if (startB.parent) canInclude = true;
|
||||
|
||||
bool boneInSkin = true; if (skins.Count != 0) { boneInSkin = false; for (int s = 0; s < skins.Count; s++) { if (boneInSkin) break; for (int i = 0; i < skins[s].bones.Length; i++) { if (startB == skins[s].bones[i]) { boneInSkin = true; break; } } } }
|
||||
|
||||
if (!boneInSkin)
|
||||
{
|
||||
GUILayout.Space(4);
|
||||
EditorGUILayout.LabelField(new GUIContent(FGUI_Resources.Tex_Warning, "'Start Bone' was not found in mesh renderer of this object, are you sure you assigned correct 'Start Bone'?"), new GUILayoutOption[] { GUILayout.Height(18), GUILayout.Width(20) });
|
||||
}
|
||||
|
||||
{
|
||||
EditorGUI.BeginChangeCheck();
|
||||
Get.IncludeParent = EditorGUILayout.IntPopup(new GUIContent("", "If start bone should be included in tail motion or just be anchor for rest of the bones"), Get.IncludeParent ? 1 : 0, setp_includeParentNames, setp_includeParent, GUILayout.Width(64)) == 1;
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
GetSelectedTailAnimators();
|
||||
for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].IncludeParent = Get.IncludeParent; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); }
|
||||
}
|
||||
|
||||
//if (Get.IncludeParent)
|
||||
// if (!canInclude)
|
||||
// {
|
||||
// GUILayout.Space(4);
|
||||
// EditorGUILayout.LabelField(new GUIContent(FGUI_Resources.Tex_Info, "Start bone need to have parent in order to be included in chain.\nAfter entering playmode this parameter will be set to 'Excluded'"), new GUILayoutOption[] { GUILayout.Height(18), GUILayout.Width(20) });
|
||||
// }
|
||||
}
|
||||
|
||||
GUILayout.EndHorizontal();
|
||||
|
||||
|
||||
EditorGUIUtility.labelWidth = 0;
|
||||
if (EditorGUI.EndChangeCheck()) { Get.StartBone = startB; serializedObject.ApplyModifiedProperties(); Get.GetGhostChain(); serializedObject.Update(); }
|
||||
|
||||
GUI.color = c;
|
||||
|
||||
GUILayout.Space(4f);
|
||||
GUILayout.EndVertical();
|
||||
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxStyle);
|
||||
Fold_TailChainSetup();
|
||||
|
||||
GUILayout.Space(-5f);
|
||||
|
||||
GUILayout.EndVertical();
|
||||
|
||||
//Fold_DrawCoreAnimatorSetup();
|
||||
Fold_DrawAdditionalSetup();
|
||||
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void Tab_DrawTweaking()
|
||||
{
|
||||
FGUI_Inspector.VSpace(-2, -4);
|
||||
GUILayout.BeginVertical(FGUI_Resources.ViewBoxStyle);
|
||||
|
||||
GUILayout.Space(4);
|
||||
EditorGUIUtility.labelWidth = 160f;
|
||||
EditorGUILayout.BeginVertical(FGUI_Resources.BGInBoxBlankStyle);
|
||||
EditorGUILayout.PropertyField(sp_TailAnimatorAmount); EditorGUIUtility.labelWidth = 0f;
|
||||
EditorGUILayout.EndVertical();
|
||||
GUI.color = c;
|
||||
GUILayout.Space(-1f);
|
||||
|
||||
Fold_TweakingBending();
|
||||
Fold_TweakingLimiting();
|
||||
Fold_TweakingSmoothing();
|
||||
Fold_TweakingAdditional();
|
||||
|
||||
GUILayout.Space(-5f);
|
||||
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
|
||||
|
||||
private void Tab_DrawAdditionalFeatures()
|
||||
{
|
||||
FGUI_Inspector.VSpace(-2, -3);
|
||||
EditorGUILayout.BeginHorizontal(FGUI_Resources.HeaderBoxStyle);
|
||||
|
||||
DrawCategoryButton(TailAnimator2.ETailFeaturesCategory.Main, FGUI_Resources.Tex_Movement, "Main");
|
||||
DrawCategoryButton(TailAnimator2.ETailFeaturesCategory.Collisions, FGUI_Resources.Tex_Collider, "Collisions");
|
||||
DrawCategoryButton(TailAnimator2.ETailFeaturesCategory.IK, _TexIKIcon, "IK");
|
||||
DrawCategoryButton(TailAnimator2.ETailFeaturesCategory.Experimental, _TexDeflIcon, "Experimental");
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
GUILayout.Space(3);
|
||||
|
||||
GUILayout.BeginVertical(FGUI_Resources.ViewBoxStyle);
|
||||
|
||||
if (Get._Editor_FeaturesCategory == TailAnimator2.ETailFeaturesCategory.Main)
|
||||
{
|
||||
// Waving
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxLightStyle); GUILayout.Space(5f);
|
||||
Fold_ModuleWaving();
|
||||
|
||||
GUILayout.Space(3f);
|
||||
GUILayout.EndVertical();
|
||||
|
||||
// Partial Blend
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxLightStyle); GUILayout.Space(2f);
|
||||
Fold_ModulePartialBlend();
|
||||
|
||||
GUILayout.Space(2f);
|
||||
GUILayout.EndVertical();
|
||||
|
||||
// Max Distance
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxStyle); GUILayout.Space(2f);
|
||||
Fold_ModuleMaxDistance();
|
||||
|
||||
GUILayout.Space(2f);
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
else if (Get._Editor_FeaturesCategory == TailAnimator2.ETailFeaturesCategory.Collisions)
|
||||
{
|
||||
// Module Collision
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxStyle); GUILayout.Space(2f);
|
||||
Fold_ModuleCollisions();
|
||||
|
||||
GUILayout.Space(2f);
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
else if (Get._Editor_FeaturesCategory == TailAnimator2.ETailFeaturesCategory.IK)
|
||||
{
|
||||
// IK
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxStyle); GUILayout.Space(2f);
|
||||
Fold_ModuleIK();
|
||||
|
||||
GUILayout.Space(2f);
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
else if (Get._Editor_FeaturesCategory == TailAnimator2.ETailFeaturesCategory.Experimental)
|
||||
{
|
||||
// Deflection Module
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxLightStyle); GUILayout.Space(2f);
|
||||
Fold_ModuleDeflection();
|
||||
|
||||
GUILayout.Space(2f);
|
||||
GUILayout.EndVertical();
|
||||
|
||||
// Physical effectors
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxLightStyle); GUILayout.Space(2f);
|
||||
Fold_ModulePhysEffectors();
|
||||
|
||||
GUILayout.Space(2f);
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
|
||||
GUILayout.Space(-5f);
|
||||
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void Tab_DrawShaping()
|
||||
{
|
||||
FGUI_Inspector.VSpace(-2, -4);
|
||||
GUILayout.BeginVertical(FGUI_Resources.ViewBoxStyle);
|
||||
GUILayout.BeginVertical(FGUI_Resources.BGInBoxBlankStyle);
|
||||
|
||||
GUILayout.Space(2f);
|
||||
EditorGUIUtility.labelWidth = 120;
|
||||
|
||||
if (FEngineering.QIsZero(Get.RotationOffset)) GUI.color = defaultValC; else GUI.color = c;
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
Get.RotationOffset = Quaternion.Euler(EditorGUILayout.Vector3Field(new GUIContent(sp_tailRotOff.displayName, sp_tailRotOff.tooltip), FEngineering.WrapVector(Get.RotationOffset.eulerAngles)));
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
GetSelectedTailAnimators();
|
||||
for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].RotationOffset = Get.RotationOffset; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); }
|
||||
}
|
||||
|
||||
// Curving Tail
|
||||
GUILayout.Space(2f);
|
||||
if (FEngineering.QIsZero(Get.Curving) && !Get.UseCurlingCurve) GUI.color = defaultValC; else GUI.color = c;
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
Get.Curving = Quaternion.Euler(EditorGUILayout.Vector3Field(new GUIContent(sp_curving.displayName, sp_curving.tooltip), FEngineering.WrapVector(Get.Curving.eulerAngles)));
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
GetSelectedTailAnimators();
|
||||
for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].Curving = Get.Curving; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); }
|
||||
}
|
||||
|
||||
if (Get.UseCurvingCurve)
|
||||
{
|
||||
EditorGUILayout.LabelField(new GUIContent("*", "Curving offset value weight for tail segments multiplied by curve"), GUILayout.Width(9));
|
||||
EditorGUILayout.PropertyField(sp_CurvCurve, new GUIContent("", sp_curving.tooltip), GUILayout.MaxWidth(32));
|
||||
}
|
||||
else
|
||||
GUILayout.Space(4f);
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseCurvingCurve, "Spread curving rotation offset weight over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseCurvingCurve = Get.UseCurvingCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
GUILayout.Space(3f);
|
||||
|
||||
// Length Stretch
|
||||
if (Get.LengthMultiplier == 1f && !Get.UseLengthMulCurve) GUI.color = defaultValC; else GUI.color = c;
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
if (!Get.UseLengthMulCurve)
|
||||
{
|
||||
EditorGUILayout.PropertyField(sp_LengthMultiplier);
|
||||
GUILayout.Space(4f); EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseLengthMulCurve, "Spread length multiplier weight over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseLengthMulCurve = Get.UseLengthMulCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.PropertyField(sp_LengthMulCurve, new GUIContent(sp_LengthMultiplier.displayName, sp_LengthMultiplier.tooltip));
|
||||
GUILayout.Space(4f); EditorGUI.BeginChangeCheck();
|
||||
SwitchButton(ref Get.UseLengthMulCurve, "Spread length multiplier weight over tail segments", curveIcon);
|
||||
if (EditorGUI.EndChangeCheck()) { GetSelectedTailAnimators(); for (int i = 0; i < lastSelected.Count; i++) { lastSelected[i].UseLengthMulCurve = Get.UseLengthMulCurve; new SerializedObject(lastSelected[i]).ApplyModifiedProperties(); } }
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
GUILayout.Space(4);
|
||||
if (Get.OverrideKeyframeAnimation > 0f)
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUIUtility.labelWidth = 180;
|
||||
EditorGUILayout.PropertyField(sp_OverrideKeyframeAnimation);
|
||||
EditorGUIUtility.labelWidth = 0;
|
||||
EditorGUILayout.LabelField(new GUIContent(FGUI_Resources.Tex_Info, "You must know what you're doing with this parameter! You making bones being not affected by keyframed animation"), GUILayout.Width(16), GUILayout.Height(16));
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
else
|
||||
{
|
||||
GUI.color = new Color(1f, 1f, 1f, 0.7f);
|
||||
EditorGUIUtility.labelWidth = 210;
|
||||
EditorGUILayout.PropertyField(sp_OverrideKeyframeAnimation, new GUIContent(sp_OverrideKeyframeAnimation.displayName+ " (Off)", sp_OverrideKeyframeAnimation.tooltip));
|
||||
EditorGUIUtility.labelWidth = 0;
|
||||
GUI.color = c;
|
||||
}
|
||||
|
||||
GUILayout.Space(1);
|
||||
|
||||
EditorGUIUtility.labelWidth = 0;
|
||||
GUILayout.EndVertical();
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
|
||||
|
||||
private void SwitchButton(ref bool enable, string tooltip, Texture icon)
|
||||
{
|
||||
EditorGUI.BeginChangeCheck();
|
||||
GUI.color = enable ? new Color(0.9f, 0.9f, 0.9f, 1f) : c;
|
||||
|
||||
if (GUILayout.Button(new GUIContent(icon, tooltip), EditorStyles.miniButtonRight, new GUILayoutOption[2] { GUILayout.Width(20), GUILayout.Height(16) })) enable = !enable;
|
||||
|
||||
GUI.color = c;
|
||||
if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 34cebb73f9f145b4b90276859fe48429
|
||||
timeCreated: 1532131583
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,381 @@
|
||||
using FIMSpace.FEditor;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FIMSpace.FTail
|
||||
{
|
||||
public partial class FTailAnimator2_Editor
|
||||
{
|
||||
Transform startBone { get { return Get.StartBone; } set { Get.StartBone = value; } }
|
||||
|
||||
|
||||
protected SerializedProperty sp_SmoothingStyle;
|
||||
protected SerializedProperty sp_ReactSpeed;
|
||||
protected SerializedProperty sp_RotRelev;
|
||||
protected SerializedProperty sp_MaxStretching;
|
||||
protected SerializedProperty sp_Springiness;
|
||||
protected SerializedProperty sp_SpringinessCurling;
|
||||
protected SerializedProperty sp_Slithery;
|
||||
protected SerializedProperty sp_UpdateRate;
|
||||
protected SerializedProperty sp_StartBone;
|
||||
protected SerializedProperty sp_Sustain;
|
||||
protected SerializedProperty sp_UseWind;
|
||||
protected SerializedProperty sp_WindEffectPower;
|
||||
protected SerializedProperty sp_WindTurbulencePower;
|
||||
protected SerializedProperty sp_WindWorldNoisePower;
|
||||
protected SerializedProperty sp_Boost;
|
||||
|
||||
protected SerializedProperty sp_UpdateAsLast;
|
||||
protected SerializedProperty sp_SyncWithAnimator;
|
||||
protected SerializedProperty sp_DetectZeroKeyframes;
|
||||
protected SerializedProperty sp_StartAfterTPose;
|
||||
protected SerializedProperty sp_EndBoneJointOffset;
|
||||
|
||||
protected SerializedProperty sp_LengthMultiplier;
|
||||
protected SerializedProperty sp_Unify;
|
||||
protected SerializedProperty sp_AnimateRoll;
|
||||
protected SerializedProperty sp_Axis2D;
|
||||
protected SerializedProperty sp_smoothdelta;
|
||||
protected SerializedProperty sp_useCollision;
|
||||
protected SerializedProperty sp_collMode;
|
||||
protected SerializedProperty sp_curving;
|
||||
protected SerializedProperty sp_DynamicWorldCollidersInclusion;
|
||||
protected SerializedProperty sp_gravity;
|
||||
protected SerializedProperty sp_colScale;
|
||||
protected SerializedProperty sp_colScaleMul;
|
||||
protected SerializedProperty sp_colBoxDim;
|
||||
protected SerializedProperty sp_colDiffFact;
|
||||
protected SerializedProperty sp_colWithOther;
|
||||
protected SerializedProperty sp_colIgnored;
|
||||
protected SerializedProperty sp_colIgnored2D;
|
||||
protected SerializedProperty sp_colSameLayer;
|
||||
protected SerializedProperty sp_colCustomLayer;
|
||||
protected SerializedProperty sp_colAddRigs;
|
||||
protected SerializedProperty sp_RootRotationOffset;
|
||||
protected SerializedProperty sp_RootPositionOffset;
|
||||
protected SerializedProperty sp_CollisionSpace;
|
||||
protected SerializedProperty sp_ReflectCollision;
|
||||
protected SerializedProperty sp_DetailedCollision;
|
||||
protected SerializedProperty sp_IncludedColliders;
|
||||
protected SerializedProperty sp_RigidbodyMass;
|
||||
|
||||
protected SerializedProperty sp_AngleLimit;
|
||||
protected SerializedProperty sp_TailAnimatorAmount;
|
||||
protected SerializedProperty sp_AngleLimitAxis;
|
||||
protected SerializedProperty sp_LimitSmoothing;
|
||||
protected SerializedProperty sp_MotionInfluence;
|
||||
protected SerializedProperty sp_CollidersType;
|
||||
protected SerializedProperty sp_OptimizeWithMesh;
|
||||
|
||||
protected SerializedProperty sp_wavType;
|
||||
protected SerializedProperty sp_useWav;
|
||||
protected SerializedProperty sp_cosAd;
|
||||
protected SerializedProperty sp_wavSp;
|
||||
protected SerializedProperty sp_wavRa;
|
||||
protected SerializedProperty sp_wavAx;
|
||||
protected SerializedProperty sp_tailRotOff;
|
||||
protected SerializedProperty sp_altWave;
|
||||
protected SerializedProperty sp_AnimatePhysics;
|
||||
protected SerializedProperty sp_FixedCycle;
|
||||
protected SerializedProperty sp_CollisionSlippery;
|
||||
|
||||
protected SerializedProperty sp_UsePosSpeedCurve;
|
||||
protected SerializedProperty sp_UseRotSpeedCurve;
|
||||
protected SerializedProperty sp_UseSlitCurve;
|
||||
protected SerializedProperty sp_UseCurvingCurve;
|
||||
protected SerializedProperty sp_UseLengthMulCurve;
|
||||
protected SerializedProperty sp_UseGravCurv;
|
||||
protected SerializedProperty sp_PosCurve;
|
||||
protected SerializedProperty sp_RotCurve;
|
||||
protected SerializedProperty sp_SlitCurve;
|
||||
protected SerializedProperty sp_CurvCurve;
|
||||
protected SerializedProperty sp_LengthMulCurve;
|
||||
protected SerializedProperty sp_GravityCurve;
|
||||
protected SerializedProperty sp_InclusionRadius;
|
||||
protected SerializedProperty sp_SpringCurve;
|
||||
protected SerializedProperty sp_UseSpringCurve;
|
||||
protected SerializedProperty sp_SlipperyCurve;
|
||||
protected SerializedProperty sp_UseSlipperyCurve;
|
||||
protected SerializedProperty sp_Curling;
|
||||
protected SerializedProperty sp_CurlingCurve;
|
||||
protected SerializedProperty sp_UseCurlingCurve;
|
||||
protected SerializedProperty sp_IgnoreMeshColliders;
|
||||
protected SerializedProperty sp_CollideWithDisabledColliders;
|
||||
|
||||
protected SerializedProperty sp_BlendCurve;
|
||||
private SerializedProperty sp_DeltaType;
|
||||
|
||||
//private SerializedProperty sp_SimulationSpeed;
|
||||
private SerializedProperty sp_Optim;
|
||||
private SerializedProperty sp_Prewarm;
|
||||
|
||||
|
||||
private SerializedProperty sp_IKTarget;
|
||||
private SerializedProperty sp_IKBlend;
|
||||
private SerializedProperty sp_IKAnimatorBlend;
|
||||
private SerializedProperty sp_IKAutoWeights;
|
||||
private SerializedProperty sp_IKweightCurve;
|
||||
private SerializedProperty sp_IKAutoAngleLimit;
|
||||
private SerializedProperty sp_IKAutoAngleLimits;
|
||||
private SerializedProperty sp_IKReactionQuality;
|
||||
private SerializedProperty sp_IKSmoothing;
|
||||
private SerializedProperty sp_IKBaseReactionWeight;
|
||||
private SerializedProperty sp_IKContinous;
|
||||
private SerializedProperty sp_IKLimitSettings;
|
||||
private SerializedProperty sp_IKMaxStretching;
|
||||
private SerializedProperty sp_UseIK;
|
||||
private SerializedProperty sp_usePartialBlend;
|
||||
private SerializedProperty sp_Detach;
|
||||
|
||||
private SerializedProperty sp_Deflection;
|
||||
private SerializedProperty sp_DeflectionStartAngle;
|
||||
private SerializedProperty sp_DeflectOnlyCollisions;
|
||||
private SerializedProperty sp_DeflectionSmooth;
|
||||
private SerializedProperty sp_DeflectionFalloff;
|
||||
|
||||
private SerializedProperty sp_UseMaxDistance;
|
||||
private SerializedProperty sp_DistanceFrom;
|
||||
private SerializedProperty sp_MaximumDistance;
|
||||
private SerializedProperty sp_MaxOutDistanceFactor;
|
||||
private SerializedProperty sp_DistanceWithoutY;
|
||||
private SerializedProperty sp_DistanceMeasurePoint;
|
||||
private SerializedProperty sp_FadeDuration;
|
||||
private SerializedProperty sp_OverrideKeyframeAnimation;
|
||||
|
||||
|
||||
//private SerializedProperty sp_IKMaxStretching;
|
||||
//private SerializedProperty sp_IKStretchCurve;
|
||||
|
||||
protected virtual void OnEnable()
|
||||
{
|
||||
FGUI_Finders.ResetFinders();
|
||||
|
||||
sp_StartBone = serializedObject.FindProperty("StartBone");
|
||||
sp_SmoothingStyle = serializedObject.FindProperty("SmoothingStyle");
|
||||
sp_ReactSpeed = serializedObject.FindProperty("ReactionSpeed");
|
||||
sp_RotRelev = serializedObject.FindProperty("RotationRelevancy");
|
||||
sp_Sustain = serializedObject.FindProperty("Sustain");
|
||||
sp_MaxStretching = serializedObject.FindProperty("MaxStretching");
|
||||
sp_Springiness = serializedObject.FindProperty("Springiness");
|
||||
sp_SpringinessCurling = serializedObject.FindProperty("SpringyCurling");
|
||||
sp_Slithery = serializedObject.FindProperty("Slithery");
|
||||
sp_UpdateRate = serializedObject.FindProperty("UpdateRate");
|
||||
sp_DeltaType = serializedObject.FindProperty("DeltaType");
|
||||
sp_TailAnimatorAmount = serializedObject.FindProperty("TailAnimatorAmount");
|
||||
sp_DetectZeroKeyframes = serializedObject.FindProperty("DetectZeroKeyframes");
|
||||
sp_UpdateAsLast = serializedObject.FindProperty("UpdateAsLast");
|
||||
sp_SyncWithAnimator = serializedObject.FindProperty("SyncWithAnimator");
|
||||
sp_StartAfterTPose = serializedObject.FindProperty("StartAfterTPose");
|
||||
sp_EndBoneJointOffset = serializedObject.FindProperty("EndBoneJointOffset");
|
||||
sp_Boost = serializedObject.FindProperty("Tangle");
|
||||
sp_collMode = serializedObject.FindProperty("CollisionMode");
|
||||
|
||||
sp_AnimatePhysics = serializedObject.FindProperty("AnimatePhysics");
|
||||
sp_FixedCycle = serializedObject.FindProperty("FixedCycle");
|
||||
sp_LengthMultiplier = serializedObject.FindProperty("LengthMultiplier");
|
||||
sp_smoothdelta = serializedObject.FindProperty("SafeDeltaTime");
|
||||
sp_useCollision = serializedObject.FindProperty("UseCollision");
|
||||
sp_curving = serializedObject.FindProperty("Curving");
|
||||
sp_DynamicWorldCollidersInclusion = serializedObject.FindProperty("DynamicWorldCollidersInclusion");
|
||||
sp_gravity = serializedObject.FindProperty("Gravity");
|
||||
sp_InclusionRadius = serializedObject.FindProperty("InclusionRadius");
|
||||
sp_colScale = serializedObject.FindProperty("CollidersScaleCurve");
|
||||
sp_colScaleMul = serializedObject.FindProperty("CollidersScaleMul");
|
||||
sp_colBoxDim = serializedObject.FindProperty("BoxesDimensionsMul");
|
||||
sp_colDiffFact = serializedObject.FindProperty("CollisionsAutoCurve");
|
||||
sp_colWithOther = serializedObject.FindProperty("CollideWithOtherTails");
|
||||
sp_RigidbodyMass = serializedObject.FindProperty("RigidbodyMass");
|
||||
sp_Detach = serializedObject.FindProperty("DetachChildren");
|
||||
|
||||
|
||||
sp_colIgnored = serializedObject.FindProperty("IgnoredColliders");
|
||||
sp_colIgnored2D = serializedObject.FindProperty("IgnoredColliders2D");
|
||||
sp_Unify = serializedObject.FindProperty("UnifyBendiness");
|
||||
sp_AnimateRoll = serializedObject.FindProperty("AnimateRoll");
|
||||
sp_Axis2D = serializedObject.FindProperty("Axis2D");
|
||||
sp_colSameLayer = serializedObject.FindProperty("CollidersSameLayer");
|
||||
sp_colCustomLayer = serializedObject.FindProperty("CollidersLayer");
|
||||
sp_colAddRigs = serializedObject.FindProperty("CollidersAddRigidbody");
|
||||
sp_RootRotationOffset = serializedObject.FindProperty("RootRotationOffset");
|
||||
sp_RootPositionOffset = serializedObject.FindProperty("RootPositionOffset");
|
||||
sp_CollisionSpace = serializedObject.FindProperty("CollisionSpace");
|
||||
sp_ReflectCollision = serializedObject.FindProperty("ReflectCollision");
|
||||
sp_IncludedColliders = serializedObject.FindProperty("IncludedColliders");
|
||||
sp_DetailedCollision = serializedObject.FindProperty("CheapCollision");
|
||||
sp_IncludedColliders = serializedObject.FindProperty("IncludedColliders");
|
||||
|
||||
sp_AngleLimit = serializedObject.FindProperty("AngleLimit");
|
||||
sp_AngleLimitAxis = serializedObject.FindProperty("AngleLimitAxis");
|
||||
//sp_AngleLimitAxisTo = serializedObject.FindProperty("LimitAxisRange");
|
||||
sp_LimitSmoothing = serializedObject.FindProperty("LimitSmoothing");
|
||||
sp_MotionInfluence = serializedObject.FindProperty("MotionInfluence");
|
||||
sp_CollidersType = serializedObject.FindProperty("CollidersType");
|
||||
sp_OptimizeWithMesh = serializedObject.FindProperty("OptimizeWithMesh");
|
||||
|
||||
sp_altWave = serializedObject.FindProperty("AlternateWave");
|
||||
sp_wavType = serializedObject.FindProperty("WavingType");
|
||||
sp_useWav = serializedObject.FindProperty("UseWaving");
|
||||
sp_cosAd = serializedObject.FindProperty("CosinusAdd");
|
||||
sp_wavSp = serializedObject.FindProperty("WavingSpeed");
|
||||
sp_wavRa = serializedObject.FindProperty("WavingRange");
|
||||
sp_wavAx = serializedObject.FindProperty("WavingAxis");
|
||||
sp_tailRotOff = serializedObject.FindProperty("RotationOffset");
|
||||
sp_BlendCurve = serializedObject.FindProperty("BlendCurve");
|
||||
sp_CollisionSlippery = serializedObject.FindProperty("CollisionSlippery");
|
||||
//sp_BlendChainValue = serializedObject.FindProperty("BlendChainValue");
|
||||
//sp_BlendChainFaloff = serializedObject.FindProperty("BlendChainFaloff");
|
||||
|
||||
sp_UsePosSpeedCurve = serializedObject.FindProperty("UsePosSpeedCurve");
|
||||
sp_UseRotSpeedCurve = serializedObject.FindProperty("UseRotSpeedCurve");
|
||||
sp_UseSlitCurve = serializedObject.FindProperty("UseSlitheryCurve");
|
||||
sp_UseCurvingCurve = serializedObject.FindProperty("UseCurvingCurve");
|
||||
sp_UseLengthMulCurve = serializedObject.FindProperty("UseLengthMulCurve");
|
||||
sp_UseGravCurv = serializedObject.FindProperty("UseGravityCurve");
|
||||
sp_PosCurve = serializedObject.FindProperty("PosCurve");
|
||||
sp_RotCurve = serializedObject.FindProperty("RotCurve");
|
||||
sp_SlitCurve = serializedObject.FindProperty("SlitheryCurve");
|
||||
sp_CurvCurve = serializedObject.FindProperty("CurvCurve");
|
||||
sp_LengthMulCurve = serializedObject.FindProperty("LengthMulCurve");
|
||||
sp_InclusionRadius = serializedObject.FindProperty("InclusionRadius");
|
||||
sp_GravityCurve = serializedObject.FindProperty("GravityCurve");
|
||||
sp_SpringCurve = serializedObject.FindProperty("SpringCurve");
|
||||
sp_UseSpringCurve = serializedObject.FindProperty("UseSpringCurve");
|
||||
sp_UseSlipperyCurve = serializedObject.FindProperty("UseSlipperyCurve");
|
||||
sp_SlipperyCurve = serializedObject.FindProperty("SlipperyCurve");
|
||||
sp_UseCurlingCurve = serializedObject.FindProperty("UseCurlingCurve");
|
||||
sp_IgnoreMeshColliders = serializedObject.FindProperty("IgnoreMeshColliders");
|
||||
sp_CollideWithDisabledColliders = serializedObject.FindProperty("CollideWithDisabledColliders");
|
||||
sp_Curling = serializedObject.FindProperty("Curling");
|
||||
sp_CurlingCurve = serializedObject.FindProperty("CurlingCurve");
|
||||
sp_UseWind = serializedObject.FindProperty("UseWind");
|
||||
sp_WindEffectPower = serializedObject.FindProperty("WindEffectPower");
|
||||
sp_WindTurbulencePower = serializedObject.FindProperty("WindTurbulencePower");
|
||||
sp_WindWorldNoisePower = serializedObject.FindProperty("WindWorldNoisePower");
|
||||
//sp_SimulationSpeed = serializedObject.FindProperty("SimulationSpeed");
|
||||
sp_Optim = serializedObject.FindProperty("InterpolateRate");
|
||||
sp_Prewarm = serializedObject.FindProperty("Prewarm");
|
||||
|
||||
sp_UseIK = serializedObject.FindProperty("UseIK");
|
||||
sp_usePartialBlend = serializedObject.FindProperty("UsePartialBlend");
|
||||
sp_IKTarget = serializedObject.FindProperty("IKTarget");
|
||||
sp_IKAutoWeights = serializedObject.FindProperty("IKAutoWeights");
|
||||
sp_IKweightCurve = serializedObject.FindProperty("IKReactionWeightCurve");
|
||||
sp_IKAutoAngleLimit = serializedObject.FindProperty("IKAutoAngleLimit");
|
||||
sp_IKAutoAngleLimits = serializedObject.FindProperty("IKAutoAngleLimits");
|
||||
sp_IKReactionQuality = serializedObject.FindProperty("IKReactionQuality");
|
||||
sp_IKSmoothing = serializedObject.FindProperty("IKSmoothing");
|
||||
sp_IKMaxStretching = serializedObject.FindProperty("IKStretchToTarget");
|
||||
sp_IKBaseReactionWeight = serializedObject.FindProperty("IKBaseReactionWeight");
|
||||
sp_IKContinous = serializedObject.FindProperty("IKContinousSolve");
|
||||
//sp_IKMaxStretching = serializedObject.FindProperty("IKMaxStretching");
|
||||
//sp_IKStretchCurve = serializedObject.FindProperty("IKStretchCurve");
|
||||
sp_IKLimitSettings = serializedObject.FindProperty("IKLimitSettings");
|
||||
sp_IKBlend = serializedObject.FindProperty("IKBlend");
|
||||
sp_IKAnimatorBlend = serializedObject.FindProperty("IKAnimatorBlend");
|
||||
|
||||
sp_Deflection = serializedObject.FindProperty("Deflection");
|
||||
sp_DeflectionFalloff = serializedObject.FindProperty("DeflectionFalloff");
|
||||
sp_DeflectionSmooth = serializedObject.FindProperty("DeflectionSmooth");
|
||||
sp_DeflectionStartAngle = serializedObject.FindProperty("DeflectionStartAngle");
|
||||
sp_DeflectOnlyCollisions = serializedObject.FindProperty("DeflectOnlyCollisions");
|
||||
|
||||
sp_UseMaxDistance = serializedObject.FindProperty("UseMaxDistance");
|
||||
sp_DistanceFrom = serializedObject.FindProperty("DistanceFrom");
|
||||
sp_MaximumDistance = serializedObject.FindProperty("MaximumDistance");
|
||||
sp_MaxOutDistanceFactor = serializedObject.FindProperty("MaxOutDistanceFactor");
|
||||
sp_DistanceWithoutY = serializedObject.FindProperty("DistanceWithoutY");
|
||||
sp_DistanceMeasurePoint = serializedObject.FindProperty("DistanceMeasurePoint");
|
||||
sp_FadeDuration = serializedObject.FindProperty("FadeDuration");
|
||||
sp_OverrideKeyframeAnimation = serializedObject.FindProperty("OverrideKeyframeAnimation");
|
||||
|
||||
|
||||
FindComponents();
|
||||
Get.CheckForNullsInGhostChain();
|
||||
|
||||
// First assignment
|
||||
if (!startBone)
|
||||
{
|
||||
if (skins.Count != 0)
|
||||
{
|
||||
// If skins found ad this transform is part of any skeleton then this transform will be start bone
|
||||
bool contains = false;
|
||||
|
||||
for (int i = 0; i < skins.Count; i++)
|
||||
{
|
||||
if (contains) break;
|
||||
|
||||
for (int b = 0; b < skins[i].bones.Length; b++)
|
||||
if (skins[i].bones[b] == Get.transform)
|
||||
{ contains = true; break; }
|
||||
}
|
||||
|
||||
if (contains)
|
||||
{
|
||||
startBone = Get.transform;
|
||||
Get.GetGhostChain();
|
||||
}
|
||||
else
|
||||
{
|
||||
// If skins are found, we assigning first bone from it
|
||||
startBone = largestSkin.bones[0];
|
||||
Get.GetGhostChain();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (Get._TransformsGhostChain == null)
|
||||
{
|
||||
Get._TransformsGhostChain = new System.Collections.Generic.List<Transform>();
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
serializedObject.Update();
|
||||
}
|
||||
|
||||
|
||||
if (Get.UseIK || Get.UseWaving)
|
||||
{
|
||||
if (Get.UseWaving) drawWaving = true; else drawWaving = false;
|
||||
}
|
||||
|
||||
if (Get.UnifyBendiness > 0f || Get.Sustain > 0f)
|
||||
drawTweakAdditional = true;
|
||||
|
||||
if (((Get.ReactionSpeed >= 1f || Get.ReactionSpeed >= 0.99f) && !Get.UseRotSpeedCurve) && (Get.RotationRelevancy >= 1f && !Get.UseRotSpeedCurve))
|
||||
drawSmoothing = false;
|
||||
else
|
||||
if (Get.UseRotSpeedCurve || Get.UsePosSpeedCurve) drawSmoothing = true;
|
||||
|
||||
if (Get.UseCollision) drawCollisions = true;
|
||||
|
||||
if (Get.Deflection > Mathf.Epsilon) drawDefl = true;
|
||||
|
||||
if (Get._editor_animatorViewedCounter < 1)
|
||||
{
|
||||
Get._editor_animatorViewedCounter++;
|
||||
|
||||
if (startBone == null)
|
||||
{
|
||||
topWarning = "No skinned bones found - assign 'Start Bone'";
|
||||
topWarningAlpha = 1.5f;
|
||||
}
|
||||
else
|
||||
{
|
||||
topWarning = "Automatically found start bone - please check if it is correct one";
|
||||
topWarningAlpha = 1.85f;
|
||||
}
|
||||
}
|
||||
|
||||
SetupLangs();
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
if (hideSkin) for (int i = 0; i < skins.Count; i++)
|
||||
{
|
||||
skins[i].shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4353b07ef84cbd14faeef2a48497adf6
|
||||
timeCreated: 1532131583
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,148 @@
|
||||
using FIMSpace.FEditor;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FIMSpace.FTail
|
||||
{
|
||||
[CustomEditor(typeof(TailAnimator2))]
|
||||
[CanEditMultipleObjects]
|
||||
public partial class FTailAnimator2_Editor : Editor
|
||||
{
|
||||
[MenuItem("CONTEXT/TailAnimator2/Switch displaying header bar")]
|
||||
private static void HideFImpossibleHeader(MenuCommand menuCommand)
|
||||
{
|
||||
int current = EditorPrefs.GetInt("FTailHeader", 1);
|
||||
if (current == 1) current = 0; else current = 1;
|
||||
EditorPrefs.SetInt("FTailHeader", current);
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
//Undo.RecordObject(target, "Spine Animator Inspector");
|
||||
|
||||
serializedObject.Update();
|
||||
|
||||
TailAnimator2 Get = (TailAnimator2)target;
|
||||
string title = drawDefaultInspector ? " Default Inspector" : (" " + Get._editor_Title);
|
||||
|
||||
if (EditorPrefs.GetInt("FTailHeader", 1) == 1)
|
||||
{
|
||||
HeaderBoxMain(title, ref Get.DrawGizmos, ref drawDefaultInspector, _TexTailAnimIcon, Get, 27);
|
||||
}
|
||||
else
|
||||
GUILayout.Space(4);
|
||||
|
||||
if (drawDefaultInspector)
|
||||
DrawDefaultInspector();
|
||||
else
|
||||
DrawNewGUI();
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
void DrawCategoryButton(TailAnimator2.ETailCategory target, Texture icon, string lang)
|
||||
{
|
||||
if (Get._Editor_Category == target) GUI.backgroundColor = new Color(0.1f, 1f, 0.2f, 1f);
|
||||
|
||||
int height = 28;
|
||||
int lim = 360;
|
||||
if (choosedLang == ELangs.русский) lim = 390;
|
||||
|
||||
if (EditorGUIUtility.currentViewWidth > lim)
|
||||
{
|
||||
if (GUILayout.Button(new GUIContent(" " + Lang(lang), icon), FGUI_Resources.ButtonStyle, GUILayout.Height(height))) Get._Editor_Category = target;
|
||||
}
|
||||
else
|
||||
if (GUILayout.Button(new GUIContent(icon, Lang(lang)), FGUI_Resources.ButtonStyle, GUILayout.Height(height))) Get._Editor_Category = target;
|
||||
|
||||
GUI.backgroundColor = bc;
|
||||
}
|
||||
|
||||
void DrawCategoryButton(TailAnimator2.ETailFeaturesCategory target, Texture icon, string lang)
|
||||
{
|
||||
if (Get._Editor_FeaturesCategory == target) GUI.backgroundColor = new Color(0.1f, 1f, 0.2f, 1f);
|
||||
|
||||
int height = 24;
|
||||
int lim = 360;
|
||||
if (choosedLang == ELangs.русский) lim = 390;
|
||||
|
||||
if (EditorGUIUtility.currentViewWidth > lim)
|
||||
{
|
||||
if (GUILayout.Button(new GUIContent(" " + Lang(lang), icon), FGUI_Resources.ButtonStyle, GUILayout.Height(height))) Get._Editor_FeaturesCategory = target;
|
||||
}
|
||||
else
|
||||
if (GUILayout.Button(new GUIContent(icon, Lang(lang)), FGUI_Resources.ButtonStyle, GUILayout.Height(height))) Get._Editor_FeaturesCategory = target;
|
||||
|
||||
GUI.backgroundColor = bc;
|
||||
}
|
||||
|
||||
|
||||
void DrawNewGUI()
|
||||
{
|
||||
#region Preparations for unity versions and skin
|
||||
|
||||
c = Color.Lerp(GUI.color * new Color(0.8f, 0.8f, 0.8f, 0.7f), GUI.color, Mathf.InverseLerp(0f, 0.15f, Get.TailAnimatorAmount));
|
||||
bc = GUI.backgroundColor;
|
||||
|
||||
RectOffset zeroOff = new RectOffset(0, 0, 0, 0);
|
||||
float substr = .18f; float bgAlpha = 0.08f; if (EditorGUIUtility.isProSkin) { bgAlpha = 0.1f; substr = 0f; }
|
||||
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
int headerHeight = 22;
|
||||
#else
|
||||
int headerHeight = 25;
|
||||
#endif
|
||||
|
||||
Get._editor_IsInspectorViewingColliders = Get._Editor_FeaturesCategory == TailAnimator2.ETailFeaturesCategory.Collisions;
|
||||
Get._editor_IsInspectorViewingIncludedColliders = drawInclud && Get._editor_IsInspectorViewingColliders;
|
||||
|
||||
Get.RefreshTransformsList();
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
GUILayout.Space(2);
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
DrawCategoryButton(TailAnimator2.ETailCategory.Setup, FGUI_Resources.Tex_GearSetup, "Setup");
|
||||
DrawCategoryButton(TailAnimator2.ETailCategory.Tweak, FGUI_Resources.Tex_Sliders, "Tweak");
|
||||
DrawCategoryButton(TailAnimator2.ETailCategory.Features, FGUI_Resources.Tex_Module, "Features");
|
||||
DrawCategoryButton(TailAnimator2.ETailCategory.Shaping, FGUI_Resources.Tex_Repair, "Shaping");
|
||||
EditorGUILayout.EndHorizontal();
|
||||
GUILayout.Space(4);
|
||||
|
||||
switch (Get._Editor_Category)
|
||||
{
|
||||
case TailAnimator2.ETailCategory.Setup:
|
||||
GUILayout.BeginVertical(FGUI_Inspector.Style(zeroOff, zeroOff, new Color(.7f - substr, .7f - substr, 0.7f - substr, bgAlpha), Vector4.one * 3, 3));
|
||||
FGUI_Inspector.HeaderBox(Lang("Main Setup"), true, FGUI_Resources.Tex_GearSetup, headerHeight, headerHeight - 1, LangBig());
|
||||
Tab_DrawSetup();
|
||||
GUILayout.EndVertical();
|
||||
break;
|
||||
|
||||
case TailAnimator2.ETailCategory.Tweak:
|
||||
GUILayout.BeginVertical(FGUI_Inspector.Style(zeroOff, zeroOff, new Color(.3f - substr, .4f - substr, 1f - substr, bgAlpha), Vector4.one * 3, 3));
|
||||
FGUI_Inspector.HeaderBox(Lang("Tweak Animation"), true, FGUI_Resources.Tex_Sliders, headerHeight, headerHeight - 1, LangBig());
|
||||
Tab_DrawTweaking();
|
||||
GUILayout.EndVertical();
|
||||
break;
|
||||
|
||||
case TailAnimator2.ETailCategory.Features:
|
||||
GUILayout.BeginVertical(FGUI_Inspector.Style(zeroOff, zeroOff, new Color(.4f - substr, 1f - substr, .8f - substr, bgAlpha * 0.6f), Vector4.one * 3, 3));
|
||||
//FGUI_Inspector.HeaderBox(Lang("Additional Modules"), true, FGUI_Resources.Tex_Module, headerHeight, headerHeight - 1, LangBig());
|
||||
Tab_DrawAdditionalFeatures();
|
||||
GUILayout.EndVertical();
|
||||
break;
|
||||
|
||||
case TailAnimator2.ETailCategory.Shaping:
|
||||
GUILayout.BeginVertical(FGUI_Inspector.Style(zeroOff, zeroOff, new Color(1f - substr, .55f - substr, .55f - substr, bgAlpha * 0.5f), Vector4.one * 3, 3));
|
||||
FGUI_Inspector.HeaderBox(Lang("Additional Shaping"), true, FGUI_Resources.Tex_Repair, headerHeight, headerHeight - 1, LangBig());
|
||||
Tab_DrawShaping();
|
||||
GUILayout.EndVertical();
|
||||
break;
|
||||
}
|
||||
|
||||
GUILayout.Space(2f);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 96a57e14ee3d2d546828fba97946e597
|
||||
timeCreated: 1532131583
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||