Restructured files and folders.
9
Assets/MA_ToolBox/MA_TextureAtlasserPro/Atlasses.meta
Normal file
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 02a5a3da7e4e5dc4fb18fcef745fc000
|
||||
folderAsset: yes
|
||||
timeCreated: 1519504430
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1 @@
|
||||
The created atlasses wil go here.
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 720d130b97942404a8521a9f534e01a3
|
||||
timeCreated: 1522673504
|
||||
licenseType: Free
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Assets/MA_ToolBox/MA_TextureAtlasserPro/Exports.meta
Normal file
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d57dd3d8bdc81434eb81f89cfbbd4dce
|
||||
folderAsset: yes
|
||||
timeCreated: 1519503997
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1 @@
|
||||
The exported assets will be saved in this folder.
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6fbeeec15b89634488a9e823027e41e5
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Assets/MA_ToolBox/MA_TextureAtlasserPro/Icons.meta
Normal file
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9c7a2224cc47fce489a08fb2b34f797c
|
||||
folderAsset: yes
|
||||
timeCreated: 1519492248
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 1006 B |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 60e555e14fc6a6345a5ee996a49886cb
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/MA_ToolBox/MA_TextureAtlasserPro/Icons/createQuadIcon.png
Normal file
After Width: | Height: | Size: 278 B |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 08efa850d9174c947b67855c7813bc63
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/MA_ToolBox/MA_TextureAtlasserPro/Icons/dragHandleIcon.png
Normal file
After Width: | Height: | Size: 164 B |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 27381d6123e7e5b4eb9d79829b15c2ef
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 2.9 KiB |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e7a93919b4509be4aa9f6bd0bb61c1e7
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/MA_ToolBox/MA_TextureAtlasserPro/Icons/editIcon.png
Normal file
After Width: | Height: | Size: 301 B |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05827eed0f3107e4c840c206ceccd7ee
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 1006 B |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 25f247791349617498d1ab94bc82ed23
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/MA_ToolBox/MA_TextureAtlasserPro/Icons/loadAtlasIcon.png
Normal file
After Width: | Height: | Size: 878 B |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f3720ab6077d734780437442e00cd64
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/MA_ToolBox/MA_TextureAtlasserPro/Icons/removeQuadIcon.png
Normal file
After Width: | Height: | Size: 204 B |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d4c871fedd726904ca8aee58ef52f7a3
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 846 B |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 750fec6ea06f5504ba56751ecdf9de11
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,86 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ed3341c780c2894488f04a7203770b9
|
||||
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: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
21
Assets/MA_ToolBox/MA_TextureAtlasserPro/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Max Kruf
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
7
Assets/MA_ToolBox/MA_TextureAtlasserPro/LICENSE.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: daea7b193e8882449a5b12b2b7ac1e2a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
21
Assets/MA_ToolBox/MA_TextureAtlasserPro/README.md
Normal file
@ -0,0 +1,21 @@
|
||||
# MA_TextureAtlasser
|
||||
Texture atlas creator for Unity
|
||||
|
||||
[]()
|
||||
|
||||
You can combine textures and/or remap the UV’s for the 3D models.
|
||||
By having full control over the size and position of the textures that are being placed in the atlas you will never stand for surprises when exporting. This will cost some more time than auto-generating your texture atlases but you know whats going on and which models/textures are getting priority. The tool can also be used to make 2D sprite sheets.
|
||||
|
||||
- Combine textures/sprites.
|
||||
- Automatically adjusts the UV's of the assigned meshes to match the new texture atlas.
|
||||
- Exports meshes as OBJ.
|
||||
- Exports texture atlas as PNG.
|
||||
- Exports texture atlas as a (sliced) sprite sheet.
|
||||
|
||||
[Example video](https://youtu.be/PBRKlopkZP0)
|
||||
|
||||
Download the UnityPackage here: https://github.com/maxartz15/MA_TextureAtlasser/releases
|
||||
|
||||
[]()
|
||||
|
||||
For more information: https://maxartz15.com/ma-textureatlasser/
|
7
Assets/MA_ToolBox/MA_TextureAtlasserPro/README.md.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b27eb5167882915458c9b7ce07b6e712
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Assets/MA_ToolBox/MA_TextureAtlasserPro/Scripts.meta
Normal file
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92654d379bc273e4a96514e5306df9e8
|
||||
folderAsset: yes
|
||||
timeCreated: 1519389476
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e50a55aa9cc7b30439e7923a3078b9f7
|
||||
folderAsset: yes
|
||||
timeCreated: 1519391732
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,106 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Editor;
|
||||
using MA_Editor.Grid;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
[System.Serializable]
|
||||
public class MA_TextureAtlasserProAtlas : ScriptableObject
|
||||
{
|
||||
//Editor
|
||||
public List<MA_TextureAtlasserProQuad> textureQuads;
|
||||
public MA_TextureAtlasserProQuad selectedTextureQuad;
|
||||
private Rect editorWorkRect;
|
||||
public bool showTextures = false;
|
||||
public MA_TextureAtlasserProExportSettings exportSettings;
|
||||
|
||||
//Data
|
||||
public Vector2 textureAtlasSize;
|
||||
public List<MA_TextureGroupRegistration> textureGroupRegistration;
|
||||
|
||||
public void CreateAtlas(string name, Vector2 size)
|
||||
{
|
||||
this.name = name;
|
||||
textureAtlasSize = size;
|
||||
}
|
||||
|
||||
public void UpdateTextureQuads(Event e, Rect editorViewRect, Vector2 zoomCoordsOrigin, bool useEvents)
|
||||
{
|
||||
textureAtlasSize.x = Mathf.Clamp(textureAtlasSize.x, 128, 8192);
|
||||
textureAtlasSize.y = Mathf.Clamp(textureAtlasSize.y, 128, 8192);
|
||||
|
||||
editorWorkRect = new Rect(Vector2.zero - zoomCoordsOrigin, textureAtlasSize);
|
||||
|
||||
GUI.backgroundColor = new Color(0, 0, 0, 0.1f);
|
||||
GUI.Box(editorWorkRect, "");
|
||||
GUI.Box(new Rect(editorWorkRect.x, editorWorkRect.y - 25, editorWorkRect.width, 20), this.name);
|
||||
GUI.backgroundColor = Color.white;
|
||||
|
||||
MA_Editor.Grid.Grid.DrawZoomableGrid(editorWorkRect, 64, new Color(0, 0, 0, 0.1f), zoomCoordsOrigin);
|
||||
|
||||
if(textureQuads != null)
|
||||
{
|
||||
foreach (MA_TextureAtlasserProQuad ts in textureQuads)
|
||||
{
|
||||
ts.UpdateTextureQuad(e, editorViewRect, editorWorkRect, zoomCoordsOrigin, useEvents, showTextures);
|
||||
}
|
||||
}
|
||||
|
||||
if(useEvents)
|
||||
ProcessEvents(e, zoomCoordsOrigin, useEvents);
|
||||
|
||||
EditorUtility.SetDirty(this);
|
||||
}
|
||||
|
||||
private void ProcessEvents(Event e, Vector2 zoomCoordsOrigin, bool useEvents)
|
||||
{
|
||||
if(e.button == 0)
|
||||
{
|
||||
if(e.type == EventType.MouseDown)
|
||||
{
|
||||
DeselectQuad();
|
||||
|
||||
if(textureQuads != null)
|
||||
{
|
||||
foreach(MA_TextureAtlasserProQuad quad in textureQuads)
|
||||
{
|
||||
if(new Rect((int)quad.guiRect.x - zoomCoordsOrigin.x, (int)quad.guiRect.y - zoomCoordsOrigin.y, quad.guiRect.width, quad.guiRect.height).Contains(e.mousePosition))
|
||||
{
|
||||
SelectQuad(quad);
|
||||
e.Use();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SelectQuad(MA_TextureAtlasserProQuad quad)
|
||||
{
|
||||
if(selectedTextureQuad)
|
||||
{
|
||||
DeselectQuad();
|
||||
}
|
||||
|
||||
quad.isSelected = true;
|
||||
selectedTextureQuad = quad;
|
||||
}
|
||||
|
||||
private void DeselectQuad()
|
||||
{
|
||||
if(textureQuads != null)
|
||||
{
|
||||
foreach(MA_TextureAtlasserProQuad quad in textureQuads)
|
||||
{
|
||||
quad.isSelected = false;
|
||||
}
|
||||
selectedTextureQuad = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 892d1a7aeb4cc284dbf62e69e125db52
|
||||
timeCreated: 1519392859
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,63 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using MA_Texture;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
[System.Serializable]
|
||||
public class MA_TextureAtlasserProExportSettings : ScriptableObject
|
||||
{
|
||||
[HideInInspector]
|
||||
public bool canModify = true;
|
||||
|
||||
public ModelExportSettings modelExportSettings = new ModelExportSettings();
|
||||
public TextureExportSettings textureExportSettings = new TextureExportSettings();
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class ModelExportSettings
|
||||
{
|
||||
[Header("Model settings:")]
|
||||
public ModelFormat modelFormat = ModelFormat.Obj;
|
||||
public bool replaceModel = false;
|
||||
public bool uvFlipY = true;
|
||||
public int uvChannel = 0;
|
||||
public bool uvWrap = true;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class TextureExportSettings
|
||||
{
|
||||
[Header("Texture settings:")]
|
||||
public TextureFormat textureFormat = TextureFormat.Png;
|
||||
public TextureType textureType = TextureType.Default;
|
||||
public MA_TextureUtils.TextureScaleMode textureScaleMode = MA_TextureUtils.TextureScaleMode.Bilinear;
|
||||
}
|
||||
|
||||
public enum ExportPreset
|
||||
{
|
||||
Custom,
|
||||
Default,
|
||||
Sprites,
|
||||
ReplaceObjMeshes
|
||||
}
|
||||
|
||||
public enum ModelFormat
|
||||
{
|
||||
None,
|
||||
Obj
|
||||
}
|
||||
|
||||
public enum TextureFormat
|
||||
{
|
||||
None,
|
||||
Png
|
||||
}
|
||||
|
||||
public enum TextureType
|
||||
{
|
||||
Default,
|
||||
Sprite,
|
||||
SpriteSliced
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f8eb652100ecb804dae35d0cca727164
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,170 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Editor;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
[System.Serializable]
|
||||
public class MA_TextureAtlasserProQuad : ScriptableObject
|
||||
{
|
||||
//Editor
|
||||
public bool isSelected = false; //Is this thing selected
|
||||
public Rect rect; //The internal rect
|
||||
public Rect guiRect; //The visual clamped and snapped rect
|
||||
public bool debugMode = false; //Are we debugging, for showing some other things (like handles)
|
||||
|
||||
private bool isDragging = false; //Are we editing the pos or size
|
||||
private bool isDraggingRectHeigt = false;
|
||||
public Rect dragRectHeight;
|
||||
private bool isDraggingRectWidth = false;
|
||||
public Rect dragRectWidth;
|
||||
private bool isDraggingRectPos = false;
|
||||
public Rect dragRectPos;
|
||||
|
||||
//Data
|
||||
public List<MA_TextureGroup> textureGroups;
|
||||
public List<Mesh> meshes;
|
||||
|
||||
public void UpdateTextureQuad(Event e, Rect editorViewRect, Rect editorWorkRect, Vector2 zoomCoordsOrigin, bool useEvents, bool showTexture)
|
||||
{
|
||||
if(isSelected)
|
||||
{
|
||||
GUI.backgroundColor = new Color(0.05f, 0.05f, 0.05f, 0.75f);
|
||||
}
|
||||
else
|
||||
{
|
||||
GUI.backgroundColor = new Color(1, 1, 1, 0.5f);
|
||||
}
|
||||
|
||||
//Clamp and snap the guiRect
|
||||
guiRect = new Rect(Mathf.RoundToInt(rect.x / 32) * 32, Mathf.RoundToInt(rect.y / 32) * 32, Mathf.RoundToInt(rect.width / 32) * 32, Mathf.RoundToInt(rect.height / 32) * 32);
|
||||
|
||||
//Draw the quad background
|
||||
if(showTexture && textureGroups != null && textureGroups.Count > 0 && textureGroups[0].texture != null)
|
||||
GUI.DrawTexture(new Rect(guiRect.x - zoomCoordsOrigin.x, guiRect.y - zoomCoordsOrigin.y, guiRect.width, guiRect.height), textureGroups[0].texture, ScaleMode.StretchToFill);
|
||||
else
|
||||
GUI.Box(new Rect(guiRect.x - zoomCoordsOrigin.x, guiRect.y - zoomCoordsOrigin.y, guiRect.width, guiRect.height), "");
|
||||
|
||||
GUILayout.BeginArea(new Rect(guiRect.x - zoomCoordsOrigin.x, guiRect.y - zoomCoordsOrigin.y, guiRect.width, guiRect.height));
|
||||
|
||||
GUILayout.BeginHorizontal();
|
||||
GUILayout.FlexibleSpace();
|
||||
var tempColor = GUI.backgroundColor;
|
||||
GUI.backgroundColor = new Color(1, 1, 1, 0.7f);
|
||||
GUILayout.Label(" " + this.name + " ", GUI.skin.box);
|
||||
GUI.backgroundColor = tempColor;
|
||||
GUILayout.FlexibleSpace();
|
||||
GUILayout.EndHorizontal();
|
||||
|
||||
if(isSelected)
|
||||
{
|
||||
dragRectPos = new Rect(guiRect.width / 2 + guiRect.x - zoomCoordsOrigin.x - 16, guiRect.height / 2 + guiRect.y - zoomCoordsOrigin.y - 16, 32, 32);
|
||||
dragRectWidth = new Rect(guiRect.width + guiRect.x - zoomCoordsOrigin.x - 16, guiRect.height / 2 + guiRect.y - zoomCoordsOrigin.y - 32, 16, 64);
|
||||
dragRectHeight = new Rect(guiRect.width / 2 + guiRect.x - zoomCoordsOrigin.x - 32, guiRect.height + guiRect.y - zoomCoordsOrigin.y - 16, 64, 16);
|
||||
|
||||
if(debugMode)
|
||||
{
|
||||
GUI.Box(new Rect(dragRectPos.x - guiRect.x + zoomCoordsOrigin.x, dragRectPos.y - guiRect.y + zoomCoordsOrigin.y, dragRectPos.width, dragRectPos.height), "");
|
||||
GUI.Box(new Rect(dragRectWidth.x - guiRect.x + zoomCoordsOrigin.x, dragRectWidth.y - guiRect.y + zoomCoordsOrigin.y, dragRectWidth.width, dragRectWidth.height), "");
|
||||
GUI.Box(new Rect(dragRectHeight.x - guiRect.x + zoomCoordsOrigin.x, dragRectHeight.y - guiRect.y + zoomCoordsOrigin.y, dragRectHeight.width, dragRectHeight.height), "");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
GUI.backgroundColor = Color.white;
|
||||
GUILayout.EndArea();
|
||||
|
||||
if(useEvents)
|
||||
ProcessEvents(e, editorViewRect, editorWorkRect, zoomCoordsOrigin);
|
||||
|
||||
EditorUtility.SetDirty(this);
|
||||
}
|
||||
|
||||
void ProcessEvents(Event e, Rect editorViewRect, Rect editorWorkRect, Vector2 zoomCoordsOrigin)
|
||||
{
|
||||
if(isSelected)
|
||||
{
|
||||
//Right mouse
|
||||
if(e.button == 0)
|
||||
{
|
||||
//Mouse drag
|
||||
if(e.type == EventType.MouseDrag)
|
||||
{
|
||||
if(dragRectPos.Contains(e.mousePosition) && isDragging == false)
|
||||
{
|
||||
//Debug.Log("P");
|
||||
isDragging = true;
|
||||
isDraggingRectPos = true;
|
||||
}
|
||||
if(dragRectWidth.Contains(e.mousePosition) && isDragging == false)
|
||||
{
|
||||
//Debug.Log("W");
|
||||
isDragging = true;
|
||||
isDraggingRectWidth = true;
|
||||
}
|
||||
if(dragRectHeight.Contains(e.mousePosition) && isDragging == false)
|
||||
{
|
||||
//Debug.Log("W");
|
||||
isDragging = true;
|
||||
isDraggingRectHeigt = true;
|
||||
}
|
||||
|
||||
if(isDraggingRectPos)
|
||||
{
|
||||
rect.x += e.delta.x;
|
||||
rect.y += e.delta.y;
|
||||
}
|
||||
if(isDraggingRectWidth)
|
||||
{
|
||||
rect.width += e.delta.x;
|
||||
}
|
||||
if(isDraggingRectHeigt)
|
||||
{
|
||||
rect.height += e.delta.y;
|
||||
}
|
||||
|
||||
//Clamp rect with min/max values to stay inside the workrect
|
||||
rect.width = Mathf.Clamp(rect.width, 64, editorWorkRect.width);
|
||||
rect.height = Mathf.Clamp(rect.height, 64, editorWorkRect.height);
|
||||
rect.x = Mathf.Clamp(rect.x, 0, editorWorkRect.width - rect.width);
|
||||
rect.y = Mathf.Clamp(rect.y, 0, editorWorkRect.height - rect.height);
|
||||
|
||||
if(isDragging)
|
||||
e.Use();
|
||||
}
|
||||
}
|
||||
//Deselect on mouse up
|
||||
if(e.type == EventType.MouseUp)
|
||||
{
|
||||
StopDragging();
|
||||
}
|
||||
}
|
||||
//Stop if we are not selected
|
||||
else if(!isSelected && isDragging)
|
||||
{
|
||||
StopDragging();
|
||||
}
|
||||
}
|
||||
|
||||
private void StopDragging()
|
||||
{
|
||||
//Debug.Log("StopDragging");
|
||||
isDragging = false;
|
||||
isDraggingRectPos = false;
|
||||
isDraggingRectWidth = false;
|
||||
isDraggingRectHeigt = false;
|
||||
}
|
||||
|
||||
public void SetDebugMode(bool isDebugging)
|
||||
{
|
||||
debugMode = isDebugging;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 16ad07a78750c7644b710e19e1a23d4a
|
||||
timeCreated: 1519392859
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,40 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Editor;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
[System.Serializable]
|
||||
public class MA_TextureAtlasserProSettings : ScriptableObject
|
||||
{
|
||||
[Header("Hotkeys:")]
|
||||
public bool useHotkeys = false;
|
||||
public EventModifiers modifierKey = EventModifiers.Alt;
|
||||
public KeyCode addQuadHotKey = KeyCode.Q;
|
||||
public KeyCode removeQuadHotKey = KeyCode.R;
|
||||
public KeyCode duplicateHotKey = KeyCode.D;
|
||||
public KeyCode zoomInHotKey = KeyCode.Equals;
|
||||
public KeyCode zoomOutHotKey = KeyCode.Minus;
|
||||
|
||||
[Header("Duplication:")]
|
||||
public bool copySelectedQuadData = true;
|
||||
public string duplicatedQuadNamePrefix = "new ";
|
||||
|
||||
[Header("Selection")]
|
||||
public bool autoFocus = true;
|
||||
|
||||
public bool GetHotKey(Event e, KeyCode shortKey)
|
||||
{
|
||||
if (e.type == EventType.KeyDown && e.modifiers == modifierKey && e.keyCode == shortKey)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 73f5e66553c13034e9b894ef2cc31b66
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,21 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
[System.Serializable]
|
||||
public class MA_TextureGroup
|
||||
{
|
||||
public string name;
|
||||
public Texture texture = null;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class MA_TextureGroupRegistration
|
||||
{
|
||||
public string name;
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad995f47c542a7f4d9148cd7d5c9cfda
|
||||
timeCreated: 1520097393
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1a34d83791d6c9241a9051b316c58169
|
||||
folderAsset: yes
|
||||
timeCreated: 1519389484
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4dc196a605811ff4593b2c3d6eab83df
|
||||
folderAsset: yes
|
||||
timeCreated: 1519393169
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,37 @@
|
||||
#if UNITY_EDITOR
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public static class MA_TextureAtlasserProIcons
|
||||
{
|
||||
private const string LOADICONPATH = "Assets/MA_ToolBox/MA_TextureAtlasserPro/Icons/";
|
||||
|
||||
public static GUIContent createAtlasIcon;
|
||||
public static GUIContent loadAtlasIcon;
|
||||
public static GUIContent exportAtlasIcon;
|
||||
public static GUIContent createQuadIcon;
|
||||
public static GUIContent removeQuadIcon;
|
||||
public static GUIContent duplicateQuadIcon;
|
||||
public static GUIContent showTexturesOnIcon;
|
||||
public static GUIContent showTexturesOffIcon;
|
||||
public static GUIContent dragHandleIcon;
|
||||
public static GUIContent editIcon;
|
||||
|
||||
public static void LoadIcons()
|
||||
{
|
||||
createAtlasIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "createAtlasIcon" + ".png"));
|
||||
loadAtlasIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "loadAtlasIcon" + ".png"));
|
||||
exportAtlasIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "exportAtlasIcon" + ".png"));
|
||||
createQuadIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "createQuadIcon" + ".png"));
|
||||
removeQuadIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "removeQuadIcon" + ".png"));
|
||||
duplicateQuadIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "duplicateQuadIcon" + ".png"));
|
||||
showTexturesOnIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "showTexturesOnIcon" + ".png"));
|
||||
showTexturesOffIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "showTexturesOffIcon" + ".png"));
|
||||
dragHandleIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "dragHandleIcon" + ".png"));
|
||||
editIcon = new GUIContent("", (Texture)EditorGUIUtility.Load(LOADICONPATH + "editIcon" + ".png"));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 64b4bb2ec0d18b142b6a5aa0c8dfb5c1
|
||||
timeCreated: 1521838249
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,528 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Mesh;
|
||||
using MA_Texture;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
|
||||
|
||||
public static class MA_TextureAtlasserProUtils
|
||||
{
|
||||
public const string SETTINGSASSETPATH = "Assets/MA_ToolBox/MA_TextureAtlasserPro/Settings/";
|
||||
public const string EXPORTSETTINGSASSETPATH = "Assets/MA_ToolBox/MA_TextureAtlasserPro/Settings/ExportSettings/";
|
||||
public const string SAVEASSETPATH = "Assets/MA_ToolBox/MA_TextureAtlasserPro/Atlasses/";
|
||||
public const string LOADASSETPATH = "Assets/MA_ToolBox/MA_TextureAtlasserPro/Atlasses/";
|
||||
public const string EXPORTASSETPATH = "Assets/MA_ToolBox/MA_TextureAtlasserPro/Exports/";
|
||||
public const float VIEWOFFSET = 20;
|
||||
public const string DEFAULTTEXTUREGROUPNAME = "Albedo";
|
||||
|
||||
public static MA_TextureAtlasserProSettings CreateSettings()
|
||||
{
|
||||
MA_TextureAtlasserProSettings _settings = ScriptableObject.CreateInstance<MA_TextureAtlasserProSettings>();
|
||||
|
||||
if(_settings != null)
|
||||
{
|
||||
AssetDatabase.CreateAsset(_settings, SETTINGSASSETPATH + "MA_TextureAtlasserProSettings.asset");
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
return _settings;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static MA_TextureAtlasserProSettings LoadSettings()
|
||||
{
|
||||
MA_TextureAtlasserProSettings _settings = AssetDatabase.LoadAssetAtPath(SETTINGSASSETPATH + "MA_TextureAtlasserProSettings.asset", typeof(MA_TextureAtlasserProSettings)) as MA_TextureAtlasserProSettings;
|
||||
|
||||
if (_settings == null)
|
||||
{
|
||||
_settings = CreateSettings();
|
||||
}
|
||||
|
||||
return _settings;
|
||||
}
|
||||
|
||||
public static MA_TextureAtlasserProExportSettings CreateExportSettings(string name, bool canModify = true)
|
||||
{
|
||||
MA_TextureAtlasserProExportSettings _settings = ScriptableObject.CreateInstance<MA_TextureAtlasserProExportSettings>();
|
||||
_settings.canModify = canModify;
|
||||
|
||||
if (_settings != null)
|
||||
{
|
||||
AssetDatabase.CreateAsset(_settings, EXPORTSETTINGSASSETPATH + name + ".asset");
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
return _settings;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static MA_TextureAtlasserProExportSettings LoadExportSettings()
|
||||
{
|
||||
string name = "MA_DefaultExportSettings";
|
||||
MA_TextureAtlasserProExportSettings _settings = AssetDatabase.LoadAssetAtPath(EXPORTSETTINGSASSETPATH + name + ".asset", typeof(MA_TextureAtlasserProExportSettings)) as MA_TextureAtlasserProExportSettings;
|
||||
|
||||
if (_settings == null)
|
||||
{
|
||||
_settings = CreateExportSettings(name, false);
|
||||
}
|
||||
|
||||
return _settings;
|
||||
}
|
||||
|
||||
public static MA_TextureAtlasserProAtlas CreateTextureAtlas(string name, Vector2 size)
|
||||
{
|
||||
MA_TextureAtlasserProAtlas _atlas = ScriptableObject.CreateInstance<MA_TextureAtlasserProAtlas>();
|
||||
|
||||
if(_atlas != null)
|
||||
{
|
||||
_atlas.CreateAtlas(name, size);
|
||||
MA_CheckTextureAtlas(_atlas);
|
||||
|
||||
AssetDatabase.CreateAsset(_atlas, SAVEASSETPATH + name + ".asset");
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
return _atlas;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static MA_TextureAtlasserProAtlas LoadTextureAtlas()
|
||||
{
|
||||
MA_TextureAtlasserProAtlas _atlas = null;
|
||||
string absPath = EditorUtility.OpenFilePanel("Select Texture Atlas", LOADASSETPATH, "");
|
||||
|
||||
if(absPath.StartsWith(Application.dataPath))
|
||||
{
|
||||
string relPath = absPath.Substring(Application.dataPath.Length - "Assets".Length);
|
||||
_atlas = AssetDatabase.LoadAssetAtPath(relPath, typeof(MA_TextureAtlasserProAtlas)) as MA_TextureAtlasserProAtlas;
|
||||
|
||||
MA_CheckTextureAtlas(_atlas);
|
||||
|
||||
if(_atlas)
|
||||
{
|
||||
EditorPrefs.SetString("AtlasPath", null);
|
||||
}
|
||||
}
|
||||
|
||||
if(_atlas != null)
|
||||
{
|
||||
if(_atlas.selectedTextureQuad != null)
|
||||
{
|
||||
_atlas.selectedTextureQuad.isSelected = false;
|
||||
}
|
||||
_atlas.selectedTextureQuad = null;
|
||||
}
|
||||
|
||||
return _atlas;
|
||||
}
|
||||
|
||||
public static void MA_CheckTextureAtlas(MA_TextureAtlasserProAtlas atlas)
|
||||
{
|
||||
if(atlas.textureGroupRegistration == null)
|
||||
{
|
||||
atlas.textureGroupRegistration = new List<MA_TextureGroupRegistration>();
|
||||
|
||||
MA_TextureGroupRegistration groupRegistration = new MA_TextureGroupRegistration
|
||||
{
|
||||
name = DEFAULTTEXTUREGROUPNAME
|
||||
};
|
||||
|
||||
atlas.textureGroupRegistration.Add(groupRegistration);
|
||||
}
|
||||
|
||||
if(atlas.textureQuads == null)
|
||||
{
|
||||
atlas.textureQuads = new List<MA_TextureAtlasserProQuad>();
|
||||
}
|
||||
else
|
||||
{
|
||||
bool _sameCount = true;
|
||||
foreach (MA_TextureAtlasserProQuad q in atlas.textureQuads)
|
||||
{
|
||||
if(q.textureGroups.Count != atlas.textureGroupRegistration.Count)
|
||||
{
|
||||
_sameCount = false;
|
||||
Debug.LogWarning("TextureAtlasser: " + q.name + " doesn't have the right amount of texture groups!");
|
||||
}
|
||||
}
|
||||
|
||||
if(_sameCount)
|
||||
{
|
||||
foreach (MA_TextureAtlasserProQuad q in atlas.textureQuads)
|
||||
{
|
||||
for (int i = 0; i < atlas.textureQuads.Count; i++)
|
||||
{
|
||||
for (int j = 0; j < atlas.textureGroupRegistration.Count; j++)
|
||||
{
|
||||
if(atlas.textureQuads[i].textureGroups[j].name != atlas.textureGroupRegistration[j].name)
|
||||
{
|
||||
Debug.LogWarning("TextureAtlasser: " + q.name + " doesn't have the right texture group name!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(atlas.exportSettings == null)
|
||||
{
|
||||
atlas.exportSettings = LoadExportSettings();
|
||||
}
|
||||
}
|
||||
|
||||
public static MA_TextureAtlasserProQuad CreateTextureQuad(MA_TextureAtlasserProAtlas atlas, string name, Rect rect, bool focus = true)
|
||||
{
|
||||
if(atlas != null)
|
||||
{
|
||||
//Create new list if we haven't one already
|
||||
if(atlas.textureQuads == null)
|
||||
{
|
||||
atlas.textureQuads = new List<MA_TextureAtlasserProQuad>();
|
||||
}
|
||||
|
||||
//Create new quad
|
||||
MA_TextureAtlasserProQuad _quad = ScriptableObject.CreateInstance<MA_TextureAtlasserProQuad>();
|
||||
|
||||
//Add quad to asset
|
||||
if(_quad != null)
|
||||
{
|
||||
//Set quad settings
|
||||
_quad.name = name;
|
||||
_quad.rect = rect;
|
||||
|
||||
SetTextureGroups(atlas, _quad);
|
||||
|
||||
atlas.textureQuads.Add(_quad);
|
||||
|
||||
AssetDatabase.AddObjectToAsset(_quad, atlas);
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
if(focus)
|
||||
{
|
||||
atlas.selectedTextureQuad = atlas.textureQuads[atlas.textureQuads.Count - 1];
|
||||
}
|
||||
|
||||
return _quad;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("CreateTextureQuad Failed: _TextureQuad");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("CreateTextureQuad Failed: textureAtlas");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void RemoveTextureQuad(MA_TextureAtlasserProAtlas atlas, bool focus = true)
|
||||
{
|
||||
if(atlas != null && atlas.selectedTextureQuad != null)
|
||||
{
|
||||
int _index = atlas.textureQuads.IndexOf(atlas.selectedTextureQuad);
|
||||
|
||||
atlas.textureQuads.RemoveAt(_index);
|
||||
Object.DestroyImmediate(atlas.selectedTextureQuad, true);
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
if (focus && atlas.textureQuads.Count > 0)
|
||||
{
|
||||
_index = Mathf.Clamp(_index, 0, atlas.textureQuads.Count - 1);
|
||||
atlas.selectedTextureQuad = atlas.textureQuads[_index];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void DuplicateTextureQuad(MA_TextureAtlasserProAtlas atlas, bool focus = true, bool copyData = false, string namePrefix = "new ")
|
||||
{
|
||||
if(atlas != null && atlas.selectedTextureQuad != null)
|
||||
{
|
||||
MA_TextureAtlasserProQuad q = CreateTextureQuad(atlas, namePrefix + atlas.selectedTextureQuad.name, atlas.selectedTextureQuad.rect, false);
|
||||
|
||||
if (copyData)
|
||||
{
|
||||
q.meshes = new List<Mesh>();
|
||||
for (int i = 0; i < atlas.selectedTextureQuad.meshes.Count; i++)
|
||||
{
|
||||
q.meshes.Add(atlas.selectedTextureQuad.meshes[i]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < atlas.selectedTextureQuad.textureGroups.Count; i++)
|
||||
{
|
||||
q.textureGroups[i].texture = atlas.selectedTextureQuad.textureGroups[i].texture;
|
||||
}
|
||||
}
|
||||
|
||||
if(focus)
|
||||
{
|
||||
atlas.selectedTextureQuad = q;
|
||||
}
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetTextureGroups(MA_TextureAtlasserProAtlas atlas, MA_TextureAtlasserProQuad quad)
|
||||
{
|
||||
if(quad.textureGroups == null)
|
||||
{
|
||||
quad.textureGroups = new List<MA_TextureGroup>();
|
||||
}
|
||||
|
||||
//Add texture groups
|
||||
foreach (MA_TextureGroupRegistration tgr in atlas.textureGroupRegistration)
|
||||
{
|
||||
MA_TextureGroup textureGroup = new MA_TextureGroup
|
||||
{
|
||||
name = tgr.name
|
||||
};
|
||||
quad.textureGroups.Add(textureGroup);
|
||||
}
|
||||
}
|
||||
|
||||
public static void CreateTextureGroup(MA_TextureAtlasserProAtlas atlas, string name)
|
||||
{
|
||||
MA_TextureGroupRegistration _textureGroupRegistration = new MA_TextureGroupRegistration
|
||||
{
|
||||
name = name
|
||||
};
|
||||
atlas.textureGroupRegistration.Add(_textureGroupRegistration);
|
||||
|
||||
foreach (MA_TextureAtlasserProQuad q in atlas.textureQuads)
|
||||
{
|
||||
MA_TextureGroup _textureGroup = new MA_TextureGroup
|
||||
{
|
||||
name = name
|
||||
};
|
||||
q.textureGroups.Add(_textureGroup);
|
||||
}
|
||||
}
|
||||
|
||||
public static void RemoveTextureGroup(MA_TextureAtlasserProAtlas atlas, int index)
|
||||
{
|
||||
atlas.textureGroupRegistration.RemoveAt(index);
|
||||
|
||||
foreach (MA_TextureAtlasserProQuad q in atlas.textureQuads)
|
||||
{
|
||||
q.textureGroups.RemoveAt(index);
|
||||
}
|
||||
}
|
||||
|
||||
public static void CloseWindow(MA_TextureAtlasserProWindow curWindow)
|
||||
{
|
||||
if(curWindow == null)
|
||||
{
|
||||
Debug.LogError("Closing window Failed: curWindow == null");
|
||||
}
|
||||
curWindow.Close();
|
||||
}
|
||||
|
||||
public static bool IsPowerOfTwo(int value)
|
||||
{
|
||||
//While x is even and > 1
|
||||
while (((value % 2) == 0) && value > 1)
|
||||
{
|
||||
value /= 2;
|
||||
}
|
||||
|
||||
return (value == 1);
|
||||
}
|
||||
|
||||
#region Export
|
||||
public static void ExportAtlasModels(MA_TextureAtlasserProAtlas atlas, ModelExportSettings modelExportSettings, string savePath = EXPORTASSETPATH)
|
||||
{
|
||||
switch(modelExportSettings.modelFormat)
|
||||
{
|
||||
case ModelFormat.None:
|
||||
break;
|
||||
case ModelFormat.Obj:
|
||||
ExportAtlasObj(atlas, modelExportSettings, savePath);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void ExportAtlasObj(MA_TextureAtlasserProAtlas atlas, ModelExportSettings modelExportSettings, string savePath = EXPORTASSETPATH)
|
||||
{
|
||||
if (atlas == null || atlas.textureQuads == null)
|
||||
return;
|
||||
|
||||
if(modelExportSettings.replaceModel)
|
||||
{
|
||||
var quads = atlas.textureQuads;
|
||||
|
||||
for (var index = 0; index < quads.Count; index++)
|
||||
{
|
||||
var quad = quads[index];
|
||||
if (quad.meshes == null)
|
||||
continue;
|
||||
|
||||
var meshes = quad.meshes;
|
||||
for (var meshIndex = 0; meshIndex < quad.meshes.Count; meshIndex++)
|
||||
{
|
||||
if (meshes[meshIndex] == null)
|
||||
continue;
|
||||
|
||||
MA_MeshUtils.MA_UVReMap(meshes[meshIndex], atlas.textureAtlasSize, quad.guiRect, modelExportSettings.uvChannel, modelExportSettings.uvFlipY, modelExportSettings.uvWrap);
|
||||
EditorUtility.SetDirty(meshes[meshIndex]);
|
||||
}
|
||||
}
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (MA_TextureAtlasserProQuad quad in atlas.textureQuads)
|
||||
{
|
||||
//Export Mesh
|
||||
if (quad.meshes != null)
|
||||
{
|
||||
for (int m = 0; m < quad.meshes.Count; m++)
|
||||
{
|
||||
if (quad.meshes[m] != null)
|
||||
{
|
||||
//Create new mesh
|
||||
Mesh newMesh = new Mesh();
|
||||
//Duplicate it from the current one
|
||||
newMesh = MA_MeshUtils.MA_DuplicateMesh(quad.meshes[m]);
|
||||
//Remap UV's
|
||||
newMesh = MA_MeshUtils.MA_UVReMap(newMesh, atlas.textureAtlasSize, quad.guiRect, modelExportSettings.uvChannel, modelExportSettings.uvFlipY, modelExportSettings.uvWrap);
|
||||
//Save it
|
||||
string modelName = string.IsNullOrEmpty(quad.name) ? "" : quad.name + "-";
|
||||
modelName += quad.meshes[m].name;
|
||||
int n = m + 1;
|
||||
modelName += "_" + n.ToString("#000");
|
||||
|
||||
MA_MeshUtils.MeshToFile(newMesh, modelName, savePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ExportAtlasTextures(MA_TextureAtlasserProAtlas atlas, TextureExportSettings textureExportSettings, string savePath = EXPORTASSETPATH)
|
||||
{
|
||||
switch (textureExportSettings.textureFormat)
|
||||
{
|
||||
case TextureFormat.None:
|
||||
break;
|
||||
case TextureFormat.Png:
|
||||
ExportAtlasPNG(atlas, textureExportSettings, savePath);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void ExportAtlasPNG(MA_TextureAtlasserProAtlas atlas, TextureExportSettings textureExportSettings, string savePath = EXPORTASSETPATH)
|
||||
{
|
||||
if (atlas == null || atlas.textureQuads == null || atlas.textureGroupRegistration == null)
|
||||
return;
|
||||
|
||||
//Foreach texture group
|
||||
for (int i = 0; i < atlas.textureGroupRegistration.Count; i++)
|
||||
{
|
||||
//Create new Texture Atlas
|
||||
Texture2D newTexture = new Texture2D((int)atlas.textureAtlasSize.x, (int)atlas.textureAtlasSize.y)
|
||||
{
|
||||
name = atlas.name + "_" + atlas.textureGroupRegistration[i].name
|
||||
};
|
||||
|
||||
foreach (MA_TextureAtlasserProQuad q in atlas.textureQuads)
|
||||
{
|
||||
if (q.textureGroups != null && q.textureGroups[i].texture != null)
|
||||
{
|
||||
//Create new texture part
|
||||
Texture2D newTexturePart = (Texture2D)MA_TextureUtils.ConvertToReadableTexture(q.textureGroups[i].texture);
|
||||
//Scale it
|
||||
newTexturePart = newTexturePart.MA_Scale2D((int)q.guiRect.width, (int)q.guiRect.height, textureExportSettings.textureScaleMode);
|
||||
//Add it
|
||||
newTexture = newTexture.MA_Combine2D(newTexturePart, (int)q.guiRect.x, (int)q.guiRect.y);
|
||||
}
|
||||
}
|
||||
|
||||
//Save it
|
||||
newTexture.MA_Save2D(newTexture.name, savePath);
|
||||
|
||||
TextureImporter textureImporter = (TextureImporter)AssetImporter.GetAtPath(savePath + newTexture.name + ".png");
|
||||
textureImporter.textureType = TextureImporterType.Default;
|
||||
textureImporter.SaveAndReimport();
|
||||
}
|
||||
|
||||
SetAtlasPNGSpriteSettings(atlas, textureExportSettings, savePath);
|
||||
|
||||
//Refresh
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
private static void SetAtlasPNGSpriteSettings(MA_TextureAtlasserProAtlas atlas, TextureExportSettings textureExportSettings, string savePath = EXPORTASSETPATH)
|
||||
{
|
||||
//Foreach texture group
|
||||
for (int i = 0; i < atlas.textureGroupRegistration.Count; i++)
|
||||
{
|
||||
//Convert
|
||||
string textureName = atlas.name + "_" + atlas.textureGroupRegistration[i].name + ".png";
|
||||
TextureImporter textureImporter = (TextureImporter)AssetImporter.GetAtPath(savePath + textureName);
|
||||
textureImporter.textureType = TextureImporterType.Sprite;
|
||||
textureImporter.alphaIsTransparency = true;
|
||||
|
||||
//Slice sprites.
|
||||
if (textureExportSettings.textureType == TextureType.SpriteSliced)
|
||||
{
|
||||
textureImporter.spriteImportMode = SpriteImportMode.None; //Reset it to update?
|
||||
textureImporter.spriteImportMode = SpriteImportMode.Multiple;
|
||||
List<SpriteMetaData> spriteMetaData = new List<SpriteMetaData>();
|
||||
|
||||
foreach (MA_TextureAtlasserProQuad q in atlas.textureQuads)
|
||||
{
|
||||
if (q.textureGroups != null && q.textureGroups[i].texture != null)
|
||||
{
|
||||
//Create new SpriteMetaData.
|
||||
SpriteMetaData smd = new SpriteMetaData
|
||||
{
|
||||
name = q.name,
|
||||
rect = new Rect(q.guiRect.x, atlas.textureAtlasSize.y - q.guiRect.y - q.guiRect.height, q.guiRect.width, q.guiRect.height)
|
||||
};
|
||||
|
||||
spriteMetaData.Add(smd);
|
||||
}
|
||||
}
|
||||
|
||||
textureImporter.spritesheet = spriteMetaData.ToArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
textureImporter.spriteImportMode = SpriteImportMode.Single;
|
||||
}
|
||||
|
||||
textureImporter.SaveAndReimport();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 69c76c8a2967c4745a76f5bf5b494f7a
|
||||
timeCreated: 1519393169
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 39bd4da4fed5aaf41858e1e23240cfca
|
||||
folderAsset: yes
|
||||
timeCreated: 1519389501
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,80 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Editor;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public class MA_TextureAtlasserProDebugView : MA_TextureAtlasserProViewBase
|
||||
{
|
||||
private bool isEditing = false;
|
||||
|
||||
public MA_TextureAtlasserProDebugView(MA_TextureAtlasserProWindow currentEditorWindow, string title) : base(currentEditorWindow, title)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void UpdateView(Event e, Rect editorViewRect)
|
||||
{
|
||||
//Update base derived class
|
||||
base.UpdateView(e, editorViewRect);
|
||||
|
||||
//Draw inspector
|
||||
if(isLoaded)
|
||||
{
|
||||
GUILayout.BeginArea(editorViewRect, EditorStyles.helpBox);
|
||||
GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
|
||||
|
||||
//GUILayout.Label(curWindow.workView.Zoom.ToString("F2"));
|
||||
if(GUILayout.Button(curWindow.workView.Zoom.ToString("F2"), EditorStyles.label))
|
||||
{
|
||||
curWindow.workView.ResetWindow();
|
||||
}
|
||||
|
||||
if (curWindow.textureAtlas != null)
|
||||
{
|
||||
GUILayout.FlexibleSpace();
|
||||
//GUILayout.Label(curWindow.textureAtlas.textureAtlasSize.ToString());
|
||||
if(!isEditing)
|
||||
{
|
||||
if(GUILayout.Button(curWindow.textureAtlas.textureAtlasSize.ToString("F0"), EditorStyles.label))
|
||||
{
|
||||
isEditing = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
curWindow.textureAtlas.textureAtlasSize = EditorGUILayout.Vector2Field("", curWindow.textureAtlas.textureAtlasSize, GUILayout.Width(110));
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.EndHorizontal();
|
||||
GUILayout.EndArea();
|
||||
}
|
||||
|
||||
ProcessEvents(e, editorViewRect);
|
||||
}
|
||||
|
||||
protected override void ProcessEvents(Event e, Rect editorViewRect)
|
||||
{
|
||||
base.ProcessEvents(e, editorViewRect);
|
||||
|
||||
if(isEditing)
|
||||
{
|
||||
if(e.type == EventType.KeyDown && e.keyCode == KeyCode.Return)
|
||||
{
|
||||
isEditing = false;
|
||||
return;
|
||||
}
|
||||
if(e.type == EventType.MouseDown && !isMouseInEditorViewRect)
|
||||
{
|
||||
isEditing = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b40a2786b518d6e41bfca3c464c9630e
|
||||
timeCreated: 1519763882
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,147 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Editor;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public class MA_TextureAtlasserProInspectorView : MA_TextureAtlasserProViewBase
|
||||
{
|
||||
private MA_TextureAtlasserProQuad lastSelectedQuad;
|
||||
|
||||
private bool isEditing = false;
|
||||
|
||||
private GUIStyle labelStyle = new GUIStyle(GUI.skin.label);
|
||||
|
||||
public MA_TextureAtlasserProInspectorView(MA_TextureAtlasserProWindow currentEditorWindow, string title) : base(currentEditorWindow, title)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void UpdateView(Event e, Rect editorViewRect)
|
||||
{
|
||||
//Update base derived class
|
||||
base.UpdateView(e, editorViewRect);
|
||||
|
||||
if(isLoaded)
|
||||
{
|
||||
//Draw inspector
|
||||
if(curWindow.textureAtlas != null && curWindow.textureAtlas.selectedTextureQuad != null)
|
||||
{
|
||||
//Deselect GUI elements when we are focusing on a new quad
|
||||
if(lastSelectedQuad != curWindow.textureAtlas.selectedTextureQuad)
|
||||
{
|
||||
lastSelectedQuad = curWindow.textureAtlas.selectedTextureQuad;
|
||||
GUI.FocusControl(null);
|
||||
}
|
||||
|
||||
GUILayout.BeginArea(editorViewRect, EditorStyles.helpBox);
|
||||
GUILayout.BeginVertical(GUILayout.ExpandWidth(true));
|
||||
|
||||
GUILayout.Label("Quad Name");
|
||||
curWindow.textureAtlas.selectedTextureQuad.name = EditorGUILayout.TextField(curWindow.textureAtlas.selectedTextureQuad.name);
|
||||
|
||||
GUILayout.Space(MA_TextureAtlasserProUtils.VIEWOFFSET / 2);
|
||||
|
||||
//Textures
|
||||
GUILayout.BeginHorizontal();
|
||||
GUILayout.Label("Textures", GUILayout.ExpandWidth(true));
|
||||
if(GUILayout.Button(MA_TextureAtlasserProIcons.editIcon, EditorStyles.miniButton, GUILayout.Width(36), GUILayout.Height(15)))
|
||||
{
|
||||
isEditing = !isEditing;
|
||||
}
|
||||
GUILayout.EndHorizontal();
|
||||
if(curWindow.textureAtlas.textureGroupRegistration == null || curWindow.textureAtlas.textureGroupRegistration.Count == 0)
|
||||
{
|
||||
if(GUILayout.Button("+", EditorStyles.miniButton, GUILayout.ExpandWidth(true)))
|
||||
{
|
||||
MA_TextureAtlasserProUtils.CreateTextureGroup(curWindow.textureAtlas, "New TextureGroup");
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < curWindow.textureAtlas.textureGroupRegistration.Count; i++)
|
||||
{
|
||||
if(isEditing)
|
||||
{
|
||||
curWindow.textureAtlas.textureGroupRegistration[i].name = curWindow.textureAtlas.selectedTextureQuad.textureGroups[i].name = EditorGUILayout.TextField(curWindow.textureAtlas.textureGroupRegistration[i].name);
|
||||
}
|
||||
else
|
||||
{
|
||||
GUILayout.Label(curWindow.textureAtlas.textureGroupRegistration[i].name);
|
||||
}
|
||||
GUILayout.BeginHorizontal();
|
||||
curWindow.textureAtlas.selectedTextureQuad.textureGroups[i].texture = (Texture)EditorGUILayout.ObjectField(curWindow.textureAtlas.selectedTextureQuad.textureGroups[i].texture, typeof(Texture), false);
|
||||
if(isEditing && GUILayout.Button("-", EditorStyles.miniButtonLeft, GUILayout.ExpandWidth(false)))
|
||||
{
|
||||
MA_TextureAtlasserProUtils.RemoveTextureGroup(curWindow.textureAtlas, i);
|
||||
}
|
||||
if(isEditing && GUILayout.Button("+", EditorStyles.miniButtonRight, GUILayout.ExpandWidth(false)))
|
||||
{
|
||||
MA_TextureAtlasserProUtils.CreateTextureGroup(curWindow.textureAtlas, "New TextureGroup");
|
||||
}
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
GUILayout.Space(MA_TextureAtlasserProUtils.VIEWOFFSET / 2);
|
||||
|
||||
//Meshes
|
||||
GUILayout.Label("Meshes");
|
||||
if(curWindow.textureAtlas.selectedTextureQuad.meshes != null)
|
||||
{
|
||||
if(curWindow.textureAtlas.selectedTextureQuad.meshes.Count == 0)
|
||||
{
|
||||
if(GUILayout.Button("+", EditorStyles.miniButton, GUILayout.ExpandWidth(true)))
|
||||
{
|
||||
curWindow.textureAtlas.selectedTextureQuad.meshes.Add(null);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < curWindow.textureAtlas.selectedTextureQuad.meshes.Count; i++)
|
||||
{
|
||||
GUILayout.BeginHorizontal();
|
||||
curWindow.textureAtlas.selectedTextureQuad.meshes[i] = (Mesh)EditorGUILayout.ObjectField(curWindow.textureAtlas.selectedTextureQuad.meshes[i], typeof(Mesh), false);
|
||||
if(GUILayout.Button("-", EditorStyles.miniButtonLeft, GUILayout.ExpandWidth(false)))
|
||||
{
|
||||
curWindow.textureAtlas.selectedTextureQuad.meshes.RemoveAt(i);
|
||||
}
|
||||
if(GUILayout.Button("+", EditorStyles.miniButtonRight, GUILayout.ExpandWidth(false)))
|
||||
{
|
||||
curWindow.textureAtlas.selectedTextureQuad.meshes.Insert(i, null);
|
||||
}
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
curWindow.textureAtlas.selectedTextureQuad.meshes = new List<Mesh>();
|
||||
}
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
if(!MA_TextureAtlasserProUtils.IsPowerOfTwo((int)curWindow.textureAtlas.selectedTextureQuad.guiRect.width) || !MA_TextureAtlasserProUtils.IsPowerOfTwo((int)curWindow.textureAtlas.selectedTextureQuad.guiRect.height))
|
||||
{
|
||||
labelStyle.normal.textColor = Color.red;
|
||||
}
|
||||
else
|
||||
{
|
||||
labelStyle.normal.textColor = Color.black;
|
||||
}
|
||||
|
||||
GUILayout.Label("x " + curWindow.textureAtlas.selectedTextureQuad.guiRect.x.ToString() + ", y " + curWindow.textureAtlas.selectedTextureQuad.guiRect.y.ToString());
|
||||
GUILayout.Label("w " + curWindow.textureAtlas.selectedTextureQuad.guiRect.width.ToString() + ", h " + curWindow.textureAtlas.selectedTextureQuad.guiRect.height.ToString(), labelStyle);
|
||||
|
||||
GUILayout.EndVertical();
|
||||
GUILayout.EndArea();
|
||||
}
|
||||
}
|
||||
|
||||
if(curWindow.textureAtlas != null && curWindow.textureAtlas.selectedTextureQuad != null)
|
||||
ProcessEvents(e, editorViewRect);
|
||||
}
|
||||
|
||||
protected override void ProcessEvents(Event e, Rect editorViewRect)
|
||||
{
|
||||
base.ProcessEvents(e, editorViewRect);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f17051e9a63503f4da7866616d67a6a2
|
||||
timeCreated: 1519505909
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,83 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Editor;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public class MA_TextureAtlasserProMenuView : MA_TextureAtlasserProViewBase
|
||||
{
|
||||
public MA_TextureAtlasserProMenuView(MA_TextureAtlasserProWindow currentEditorWindow, string title) : base(currentEditorWindow, title)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void UpdateView(Event e, Rect editorViewRect)
|
||||
{
|
||||
//Update base derived class
|
||||
base.UpdateView(e, editorViewRect);
|
||||
|
||||
//Draw Menu
|
||||
if(isLoaded)
|
||||
{
|
||||
GUILayout.BeginArea(editorViewRect, EditorStyles.helpBox);
|
||||
GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
|
||||
|
||||
if(GUILayout.Button(MA_TextureAtlasserProIcons.createAtlasIcon, GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)))
|
||||
{
|
||||
MA_TextureAtlasserProCreateWindow.InitEditorWindow(curWindow);
|
||||
}
|
||||
if(GUILayout.Button(MA_TextureAtlasserProIcons.loadAtlasIcon, GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)))
|
||||
{
|
||||
curWindow.textureAtlas = MA_TextureAtlasserProUtils.LoadTextureAtlas();
|
||||
}
|
||||
|
||||
if(curWindow.textureAtlas != null)
|
||||
{
|
||||
if(GUILayout.Button(MA_TextureAtlasserProIcons.exportAtlasIcon, GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)))
|
||||
{
|
||||
MA_TextureAtlasserProExportWindow.InitEditorWindow(curWindow);
|
||||
//MA_TextureAtlasserProUtils.ExportAtlas(curWindow.textureAtlas);
|
||||
}
|
||||
GUILayout.Space(MA_TextureAtlasserProUtils.VIEWOFFSET);
|
||||
if(curWindow.textureAtlas.showTextures && GUILayout.Button(MA_TextureAtlasserProIcons.showTexturesOnIcon, GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)))
|
||||
{
|
||||
curWindow.textureAtlas.showTextures = false;
|
||||
}
|
||||
else if(!curWindow.textureAtlas.showTextures && GUILayout.Button(MA_TextureAtlasserProIcons.showTexturesOffIcon, GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)))
|
||||
{
|
||||
curWindow.textureAtlas.showTextures = true;
|
||||
}
|
||||
GUILayout.Space(MA_TextureAtlasserProUtils.VIEWOFFSET);
|
||||
if(GUILayout.Button(MA_TextureAtlasserProIcons.createQuadIcon, GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)))
|
||||
{
|
||||
MA_TextureAtlasserProUtils.CreateTextureQuad(curWindow.textureAtlas, "new Quad", new Rect(0, 0, 128, 128), curWindow.settings.autoFocus);
|
||||
}
|
||||
if(curWindow.textureAtlas.selectedTextureQuad != null && GUILayout.Button(MA_TextureAtlasserProIcons.removeQuadIcon, GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)))
|
||||
{
|
||||
if(curWindow.textureAtlas.selectedTextureQuad != null)
|
||||
MA_TextureAtlasserProUtils.RemoveTextureQuad(curWindow.textureAtlas, curWindow.settings.autoFocus);
|
||||
}
|
||||
if (curWindow.textureAtlas.selectedTextureQuad != null && GUILayout.Button(MA_TextureAtlasserProIcons.duplicateQuadIcon, GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)))
|
||||
{
|
||||
if (curWindow.textureAtlas.selectedTextureQuad != null)
|
||||
MA_TextureAtlasserProUtils.DuplicateTextureQuad(curWindow.textureAtlas, curWindow.settings.autoFocus, curWindow.settings.copySelectedQuadData, curWindow.settings.duplicatedQuadNamePrefix);
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.EndHorizontal();
|
||||
GUILayout.EndArea();
|
||||
}
|
||||
|
||||
ProcessEvents(e, editorViewRect);
|
||||
}
|
||||
|
||||
protected override void ProcessEvents(Event e, Rect editorViewRect)
|
||||
{
|
||||
base.ProcessEvents(e, editorViewRect);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bed32b77d058ea141ac98ceac0159297
|
||||
timeCreated: 1519392331
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,57 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public class MA_TextureAtlasserProViewBase
|
||||
{
|
||||
public MA_TextureAtlasserProWindow curWindow;
|
||||
public string viewTitle;
|
||||
public bool isMouseInEditorViewRect = false;
|
||||
public static bool editorIsLoaded = false;
|
||||
public bool isLoaded = false;
|
||||
|
||||
public MA_TextureAtlasserProViewBase(MA_TextureAtlasserProWindow currentEditorWindow, string title)
|
||||
{
|
||||
curWindow = currentEditorWindow;
|
||||
viewTitle = title;
|
||||
}
|
||||
|
||||
[UnityEditor.Callbacks.DidReloadScripts]
|
||||
static void OnReload()
|
||||
{
|
||||
//Make sure that when the compiler is finished and reloads the scripts, we are waiting for the next Event.
|
||||
editorIsLoaded = false;
|
||||
}
|
||||
|
||||
public virtual void UpdateView(Event e, Rect editorViewRect)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected virtual void ProcessEvents(Event e, Rect editorViewRect)
|
||||
{
|
||||
if(e.type == EventType.Repaint)
|
||||
{
|
||||
if(!isLoaded && editorIsLoaded)
|
||||
isLoaded = true;
|
||||
|
||||
if(!editorIsLoaded)
|
||||
editorIsLoaded = true;
|
||||
}
|
||||
|
||||
if(editorViewRect.Contains(e.mousePosition))
|
||||
{
|
||||
isMouseInEditorViewRect = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
isMouseInEditorViewRect = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ad6305c01639b64f8defe0ce7d26067
|
||||
timeCreated: 1518210556
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,163 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using MA_Editor;
|
||||
using MA_Editor.GUILayoutZoom;
|
||||
using MA_Editor.RectUtils;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public class MA_TextureAtlasserProWorkView : MA_TextureAtlasserProViewBase
|
||||
{
|
||||
public MA_TextureAtlasserProWorkView(MA_TextureAtlasserProWindow currentEditorWindow, string title) : base(currentEditorWindow, title)
|
||||
{
|
||||
zoomCoordsOrigin = new Vector2(-(curWindow.position.width / 2) + (curWindow.position.width / 3), -(curWindow.position.height / 2) + (curWindow.position.height / 3));
|
||||
}
|
||||
|
||||
private const float kZoomMin = 0.05f;
|
||||
private const float kZoomMax = 2.0f;
|
||||
private Rect zoomArea;
|
||||
private float zoom = 1.0f;
|
||||
public float Zoom { get { return zoom; } set { zoom = Mathf.Clamp(value, kZoomMin, kZoomMax); } }
|
||||
private Vector2 zoomCoordsOrigin = Vector2.zero;
|
||||
|
||||
public override void UpdateView(Event e, Rect editorViewRect)
|
||||
{
|
||||
//Update base derived class
|
||||
base.UpdateView(e, editorViewRect);
|
||||
|
||||
zoomArea = editorViewRect;
|
||||
|
||||
bool useEvents;
|
||||
if(curWindow.menuView.isMouseInEditorViewRect || curWindow.inspectorView.isMouseInEditorViewRect || curWindow.debugView.isMouseInEditorViewRect)
|
||||
useEvents = false;
|
||||
else
|
||||
useEvents = true;
|
||||
|
||||
//Draw Work
|
||||
if(isLoaded)
|
||||
{
|
||||
//Start zoom area
|
||||
GUILayoutZoom.BeginArea(zoom, zoomArea);
|
||||
|
||||
//Draw quads
|
||||
if(curWindow.textureAtlas != null)
|
||||
{
|
||||
curWindow.textureAtlas.UpdateTextureQuads(e, editorViewRect, zoomCoordsOrigin, useEvents);
|
||||
DrawQuadGUI();
|
||||
}
|
||||
|
||||
//End zoom area
|
||||
GUILayoutZoom.EndArea();
|
||||
}
|
||||
|
||||
if(useEvents)
|
||||
ProcessEvents(e, editorViewRect);
|
||||
}
|
||||
|
||||
protected override void ProcessEvents(Event e, Rect editorViewRect)
|
||||
{
|
||||
base.ProcessEvents(e, editorViewRect);
|
||||
|
||||
// Allow adjusting the zoom with the mouse wheel as well. In this case, use the mouse coordinates
|
||||
// as the zoom center instead of the top left corner of the zoom area. This is achieved by
|
||||
// maintaining an origin that is used as offset when drawing any GUI elements in the zoom area.
|
||||
if (e.type == EventType.ScrollWheel)
|
||||
{
|
||||
Vector2 screenCoordsMousePos = e.mousePosition;
|
||||
Vector2 delta = e.delta;
|
||||
Vector2 zoomCoordsMousePos = ConvertScreenCoordsToZoomCoords(screenCoordsMousePos);
|
||||
float zoomDelta = -delta.y / 100.0f;
|
||||
float oldZoom = zoom;
|
||||
zoom += zoomDelta;
|
||||
zoom = Mathf.Clamp(zoom, kZoomMin, kZoomMax);
|
||||
if(zoom < 1.025f && zoom > 0.995f)
|
||||
{
|
||||
zoom = 1;
|
||||
}
|
||||
zoomCoordsOrigin += (zoomCoordsMousePos - zoomCoordsOrigin) - (oldZoom / zoom) * (zoomCoordsMousePos - zoomCoordsOrigin);
|
||||
|
||||
e.Use();
|
||||
}
|
||||
|
||||
// Allow moving the zoom area's origin by dragging by dragging with the left mouse button with Alt pressed.
|
||||
if (e.type == EventType.MouseDrag && (e.button == 2 || (e.button == 0 && e.modifiers == EventModifiers.Alt)))
|
||||
{
|
||||
Vector2 delta = Event.current.delta;
|
||||
delta /= zoom;
|
||||
zoomCoordsOrigin -= delta;
|
||||
|
||||
e.Use();
|
||||
}
|
||||
|
||||
//Hotkeys.
|
||||
if (curWindow.settings.useHotkeys)
|
||||
{
|
||||
if(curWindow.textureAtlas != null)
|
||||
{
|
||||
if (curWindow.settings.GetHotKey(e, curWindow.settings.addQuadHotKey))
|
||||
{
|
||||
MA_TextureAtlasserProUtils.CreateTextureQuad(curWindow.textureAtlas, "new Quad", new Rect(0, 0, 128, 128), curWindow.settings.autoFocus);
|
||||
e.Use();
|
||||
}
|
||||
|
||||
if(curWindow.settings.GetHotKey(e, curWindow.settings.zoomInHotKey))
|
||||
{
|
||||
Zoom += 0.25f;
|
||||
e.Use();
|
||||
}
|
||||
if(curWindow.settings.GetHotKey(e, curWindow.settings.zoomOutHotKey))
|
||||
{
|
||||
Zoom -= 0.25f;
|
||||
e.Use();
|
||||
}
|
||||
|
||||
if (curWindow.textureAtlas.selectedTextureQuad != null)
|
||||
{
|
||||
if (curWindow.settings.GetHotKey(e, curWindow.settings.removeQuadHotKey))
|
||||
{
|
||||
MA_TextureAtlasserProUtils.RemoveTextureQuad(curWindow.textureAtlas, curWindow.settings.autoFocus);
|
||||
e.Use();
|
||||
}
|
||||
|
||||
if (curWindow.settings.GetHotKey(e, curWindow.settings.duplicateHotKey))
|
||||
{
|
||||
MA_TextureAtlasserProUtils.DuplicateTextureQuad(curWindow.textureAtlas, curWindow.settings.autoFocus, curWindow.settings.copySelectedQuadData, curWindow.settings.duplicatedQuadNamePrefix);
|
||||
e.Use();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Vector2 ConvertScreenCoordsToZoomCoords(Vector2 screenCoords)
|
||||
{
|
||||
return (screenCoords - zoomArea.TopLeft()) / zoom + zoomCoordsOrigin;
|
||||
}
|
||||
|
||||
//Draw quad GUI ontop of quad with custom GUIContent.
|
||||
private void DrawQuadGUI()
|
||||
{
|
||||
if(curWindow.textureAtlas.textureQuads != null)
|
||||
{
|
||||
foreach (MA_TextureAtlasserProQuad q in curWindow.textureAtlas.textureQuads)
|
||||
{
|
||||
if(q.isSelected)
|
||||
{
|
||||
GUI.Button(new Rect(q.dragRectPos.x, q.dragRectPos.y, q.dragRectPos.width, q.dragRectPos.height), MA_TextureAtlasserProIcons.dragHandleIcon);
|
||||
GUI.Button(new Rect(q.dragRectWidth.x, q.dragRectWidth.y, q.dragRectWidth.width, q.dragRectWidth.height), MA_TextureAtlasserProIcons.dragHandleIcon);
|
||||
GUI.Button(new Rect(q.dragRectHeight.x, q.dragRectHeight.y, q.dragRectHeight.width, q.dragRectHeight.height), MA_TextureAtlasserProIcons.dragHandleIcon);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetWindow()
|
||||
{
|
||||
zoom = 1;
|
||||
zoomCoordsOrigin = new Vector2(-(curWindow.position.width / 2) + (curWindow.position.width / 3), -(curWindow.position.height / 2) + (curWindow.position.height / 3));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6385799201fcbf246a8076f7fb2f4664
|
||||
timeCreated: 1519389695
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0bf15f61e8c967348960f91d78ef05ac
|
||||
folderAsset: yes
|
||||
timeCreated: 1519389493
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,88 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Editor;
|
||||
using MA_Texture;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public class MA_TextureAtlasserProCreateExportWindow : EditorWindow
|
||||
{
|
||||
private const int windowHeight = 97;
|
||||
private const int windowWidth = 320;
|
||||
|
||||
//Editor
|
||||
private static MA_TextureAtlasserProCreateExportWindow thisWindow;
|
||||
public static MA_TextureAtlasserProWindow curWindow;
|
||||
|
||||
//Data
|
||||
string settingsName = "Settings name";
|
||||
bool nameError = true;
|
||||
|
||||
[MenuItem("MA_ToolKit/MA_TextureAtlasserPro/New Export Settings")]
|
||||
public static void Init()
|
||||
{
|
||||
InitWindow(null);
|
||||
}
|
||||
|
||||
public static void InitWindow(MA_TextureAtlasserProWindow currentEditorWindow)
|
||||
{
|
||||
curWindow = currentEditorWindow;
|
||||
|
||||
GetCurrentWindow();
|
||||
|
||||
thisWindow.minSize = new Vector2(windowWidth, windowHeight);
|
||||
thisWindow.maxSize = new Vector2(windowWidth, windowHeight);
|
||||
thisWindow.titleContent.text = "MA_CreateExportSettings";
|
||||
|
||||
thisWindow.Show();
|
||||
}
|
||||
|
||||
private static void GetCurrentWindow()
|
||||
{
|
||||
thisWindow = (MA_TextureAtlasserProCreateExportWindow)EditorWindow.GetWindow<MA_TextureAtlasserProCreateExportWindow>();
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
GUILayout.BeginArea(new Rect(MA_TextureAtlasserProUtils.VIEWOFFSET, MA_TextureAtlasserProUtils.VIEWOFFSET, position.width - (MA_TextureAtlasserProUtils.VIEWOFFSET * 2), position.height - (MA_TextureAtlasserProUtils.VIEWOFFSET * 2)));
|
||||
GUILayout.BeginVertical();
|
||||
|
||||
//Input options
|
||||
settingsName = EditorGUILayout.TextField("Settings name", settingsName, GUILayout.ExpandWidth(true));
|
||||
if (settingsName == "Settings name" || string.IsNullOrEmpty(settingsName))
|
||||
{
|
||||
nameError = true;
|
||||
GUI.backgroundColor = Color.red;
|
||||
GUILayout.Box("Error: Enter a valid settings name!", EditorStyles.helpBox);
|
||||
GUI.backgroundColor = Color.white;
|
||||
}
|
||||
else
|
||||
{
|
||||
nameError = false;
|
||||
}
|
||||
|
||||
//Create
|
||||
if (!nameError)
|
||||
{
|
||||
if (GUILayout.Button("Create!", GUILayout.ExpandWidth(true), GUILayout.Height(37)))
|
||||
{
|
||||
MA_TextureAtlasserProExportSettings exportSettings = MA_TextureAtlasserProUtils.CreateExportSettings(settingsName, true);
|
||||
|
||||
if (curWindow != null && curWindow.textureAtlas != null)
|
||||
{
|
||||
curWindow.textureAtlas.exportSettings = exportSettings;
|
||||
}
|
||||
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.EndVertical();
|
||||
GUILayout.EndArea();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 00058117c24864541a3f85fc4f18f89e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,172 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Editor;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public class MA_TextureAtlasserProCreateWindow : EditorWindow
|
||||
{
|
||||
//Editor
|
||||
private static MA_TextureAtlasserProCreateWindow thisWindow;
|
||||
public static MA_TextureAtlasserProWindow curWindow;
|
||||
|
||||
private bool linkedAtlasSize = true;
|
||||
private bool nameError = true;
|
||||
private bool sizeError = true;
|
||||
|
||||
//Data
|
||||
private string textureAtlasName = "Atlas name";
|
||||
private Vector2 textureAtlasSize = new Vector2(512, 512);
|
||||
private MA_TextureAtlasserProAtlas textureAtlas;
|
||||
private static bool isLoaded = false;
|
||||
|
||||
[MenuItem("MA_ToolKit/MA_TextureAtlasserPro/New Atlas")]
|
||||
private static void Init()
|
||||
{
|
||||
GetCurrentWindow();
|
||||
|
||||
thisWindow.minSize = new Vector2(500,160);
|
||||
thisWindow.maxSize = new Vector2(500,160);
|
||||
|
||||
thisWindow.titleContent.text = "MA_CreateTextureAtlas";
|
||||
|
||||
thisWindow.Show();
|
||||
}
|
||||
|
||||
public static void InitEditorWindow(MA_TextureAtlasserProWindow currentEditorWindow)
|
||||
{
|
||||
curWindow = currentEditorWindow;
|
||||
|
||||
GetCurrentWindow();
|
||||
|
||||
thisWindow.minSize = new Vector2(500,160);
|
||||
thisWindow.maxSize = new Vector2(500,160);
|
||||
|
||||
thisWindow.titleContent.text = "MA_CreateTextureAtlas";
|
||||
|
||||
thisWindow.Show();
|
||||
}
|
||||
|
||||
private static void GetCurrentWindow()
|
||||
{
|
||||
thisWindow = (MA_TextureAtlasserProCreateWindow)EditorWindow.GetWindow<MA_TextureAtlasserProCreateWindow>();
|
||||
}
|
||||
|
||||
private void CloseWindow()
|
||||
{
|
||||
if(thisWindow == null)
|
||||
{
|
||||
GetCurrentWindow();
|
||||
thisWindow.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
thisWindow.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private Event ProcessEvents()
|
||||
{
|
||||
Event e = Event.current;
|
||||
|
||||
return e;
|
||||
}
|
||||
|
||||
[UnityEditor.Callbacks.DidReloadScripts]
|
||||
static void OnReload()
|
||||
{
|
||||
//Make sure that when the compiler is finished and reloads the scripts, we are waiting for the next Event.
|
||||
isLoaded = false;
|
||||
}
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
if(thisWindow == null)
|
||||
{
|
||||
GetCurrentWindow();
|
||||
return;
|
||||
}
|
||||
|
||||
//Get current event
|
||||
Event e = ProcessEvents();
|
||||
|
||||
if(isLoaded)
|
||||
{
|
||||
GUILayout.BeginArea(new Rect(MA_TextureAtlasserProUtils.VIEWOFFSET, MA_TextureAtlasserProUtils.VIEWOFFSET, position.width - (MA_TextureAtlasserProUtils.VIEWOFFSET * 2), position.height - (MA_TextureAtlasserProUtils.VIEWOFFSET * 2)));
|
||||
GUILayout.BeginVertical();
|
||||
|
||||
//Input options
|
||||
textureAtlasName = EditorGUILayout.TextField("Atlas name", textureAtlasName, GUILayout.ExpandWidth(true));
|
||||
if(textureAtlasName == "Atlas name" || string.IsNullOrEmpty(textureAtlasName))
|
||||
{
|
||||
nameError = true;
|
||||
GUI.backgroundColor = Color.red;
|
||||
GUILayout.Box("Error: Enter a valid atlas name!", EditorStyles.helpBox);
|
||||
GUI.backgroundColor = Color.white;
|
||||
}
|
||||
else
|
||||
{
|
||||
nameError = false;
|
||||
}
|
||||
|
||||
textureAtlasSize.x = EditorGUILayout.IntField("Atlas width", (int)textureAtlasSize.x, GUILayout.ExpandWidth(true));
|
||||
if(linkedAtlasSize)
|
||||
{
|
||||
linkedAtlasSize = EditorGUILayout.Toggle("link height", linkedAtlasSize, GUILayout.ExpandWidth(true));
|
||||
textureAtlasSize.y = textureAtlasSize.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
textureAtlasSize.y = EditorGUILayout.IntField("Atlas height", (int)textureAtlasSize.y, GUILayout.ExpandWidth(true));
|
||||
}
|
||||
if(!Mathf.IsPowerOfTwo((int)textureAtlasSize.x) || !Mathf.IsPowerOfTwo((int)textureAtlasSize.y))
|
||||
{
|
||||
GUI.backgroundColor = Color.yellow;
|
||||
GUILayout.Box("Warning: Atlas size value isn't a power of two!", EditorStyles.helpBox);
|
||||
GUI.backgroundColor = Color.white;
|
||||
}
|
||||
if(textureAtlasSize.x < 64 || textureAtlasSize.y < 64)
|
||||
{
|
||||
sizeError = true;
|
||||
GUI.backgroundColor = Color.red;
|
||||
GUILayout.Box("Error: The minimum atlas size is 64!", EditorStyles.helpBox);
|
||||
GUI.backgroundColor = Color.white;
|
||||
}
|
||||
else
|
||||
{
|
||||
sizeError = false;
|
||||
}
|
||||
|
||||
//Create
|
||||
if(!nameError && !sizeError)
|
||||
{
|
||||
if(GUILayout.Button("Create Atlas", GUILayout.ExpandWidth(true), GUILayout.Height(37)))
|
||||
{
|
||||
textureAtlas = MA_TextureAtlasserProUtils.CreateTextureAtlas(textureAtlasName, textureAtlasSize);
|
||||
|
||||
if(curWindow != null)
|
||||
{
|
||||
curWindow.textureAtlas = textureAtlas;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("No editor window found");
|
||||
}
|
||||
|
||||
CloseWindow();
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.EndVertical();
|
||||
GUILayout.EndArea();
|
||||
}
|
||||
|
||||
if(e.type == EventType.Repaint)
|
||||
isLoaded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fadd3a216ba8658458040ed46c0d032e
|
||||
timeCreated: 1519504375
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,199 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using MA_Editor;
|
||||
using MA_Texture;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public class MA_TextureAtlasserProExportWindow : EditorWindow
|
||||
{
|
||||
private const int windowHeight = 300;
|
||||
private const int windowWidth = 320;
|
||||
|
||||
//Editor
|
||||
private static MA_TextureAtlasserProExportWindow thisWindow;
|
||||
public static MA_TextureAtlasserProWindow curWindow;
|
||||
|
||||
//Data
|
||||
private static bool isLoaded = false; //Make sure we wait a frame at the start to setup and don't draw.
|
||||
|
||||
[MenuItem("MA_ToolKit/MA_TextureAtlasserPro/Export Atlas")]
|
||||
private static void Init()
|
||||
{
|
||||
GetCurrentWindow();
|
||||
|
||||
thisWindow.minSize = new Vector2(windowWidth, windowHeight);
|
||||
thisWindow.titleContent.text = "MA_ExportTextureAtlas";
|
||||
|
||||
thisWindow.Show();
|
||||
}
|
||||
|
||||
public static void InitEditorWindow(MA_TextureAtlasserProWindow currentEditorWindow)
|
||||
{
|
||||
curWindow = currentEditorWindow;
|
||||
|
||||
GetCurrentWindow();
|
||||
|
||||
thisWindow.minSize = new Vector2(windowWidth, windowHeight);
|
||||
thisWindow.titleContent.text = "MA_ExportTextureAtlas";
|
||||
|
||||
thisWindow.Show();
|
||||
}
|
||||
|
||||
private static void GetCurrentWindow()
|
||||
{
|
||||
thisWindow = (MA_TextureAtlasserProExportWindow)EditorWindow.GetWindow<MA_TextureAtlasserProExportWindow>();
|
||||
}
|
||||
|
||||
private void CloseWindow()
|
||||
{
|
||||
if(thisWindow == null)
|
||||
{
|
||||
GetCurrentWindow();
|
||||
thisWindow.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
thisWindow.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private Event ProcessEvents()
|
||||
{
|
||||
Event e = Event.current;
|
||||
|
||||
return e;
|
||||
}
|
||||
|
||||
[UnityEditor.Callbacks.DidReloadScripts]
|
||||
private static void OnReload()
|
||||
{
|
||||
//Make sure that when the compiler is finished and reloads the scripts, we are waiting for the next Event.
|
||||
isLoaded = false;
|
||||
}
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
if(thisWindow == null)
|
||||
{
|
||||
GetCurrentWindow();
|
||||
return;
|
||||
}
|
||||
|
||||
//Get current event
|
||||
Event e = ProcessEvents();
|
||||
|
||||
if(isLoaded)
|
||||
{
|
||||
GUILayout.BeginArea(new Rect(MA_TextureAtlasserProUtils.VIEWOFFSET, MA_TextureAtlasserProUtils.VIEWOFFSET, position.width - (MA_TextureAtlasserProUtils.VIEWOFFSET * 2), position.height - (MA_TextureAtlasserProUtils.VIEWOFFSET * 2)));
|
||||
GUILayout.BeginVertical();
|
||||
|
||||
|
||||
if(curWindow != null && curWindow.textureAtlas != null)
|
||||
{
|
||||
//Export
|
||||
GUILayout.BeginVertical();
|
||||
DrawExportMenu();
|
||||
|
||||
curWindow.textureAtlas.exportSettings = (MA_TextureAtlasserProExportSettings)EditorGUILayout.ObjectField(curWindow.textureAtlas.exportSettings, typeof(MA_TextureAtlasserProExportSettings), false);
|
||||
|
||||
if(curWindow.textureAtlas.exportSettings != null)
|
||||
{
|
||||
DrawExportAdvancedOptions();
|
||||
}
|
||||
|
||||
GUILayout.EndVertical();
|
||||
}
|
||||
else if(curWindow == null)
|
||||
{
|
||||
GUI.backgroundColor = Color.red;
|
||||
GUILayout.Box("Error: Link with the Texture Atlas Editor lost!", EditorStyles.helpBox);
|
||||
if(GUILayout.Button("Link Atlas Editor", GUILayout.ExpandWidth(true), GUILayout.Height(37)))
|
||||
{
|
||||
curWindow = (MA_TextureAtlasserProWindow)EditorWindow.GetWindow<MA_TextureAtlasserProWindow>();
|
||||
}
|
||||
GUI.backgroundColor = Color.white;
|
||||
}
|
||||
else if(curWindow.textureAtlas == null)
|
||||
{
|
||||
GUI.backgroundColor = Color.red;
|
||||
GUILayout.Box("Error: No Texture Atlas found make sure to open one!", EditorStyles.helpBox);
|
||||
GUI.backgroundColor = Color.white;
|
||||
}
|
||||
|
||||
GUILayout.EndVertical();
|
||||
GUILayout.EndArea();
|
||||
}
|
||||
|
||||
if(e.type == EventType.Repaint)
|
||||
isLoaded = true;
|
||||
}
|
||||
|
||||
private void DrawExportMenu()
|
||||
{
|
||||
GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.Height(44));
|
||||
|
||||
if (GUILayout.Button(MA_TextureAtlasserProIcons.createAtlasIcon, GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)))
|
||||
{
|
||||
MA_TextureAtlasserProCreateExportWindow.InitWindow(curWindow);
|
||||
}
|
||||
|
||||
bool wasEnabled = GUI.enabled;
|
||||
|
||||
if (curWindow.textureAtlas.exportSettings != null)
|
||||
{
|
||||
GUI.enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
GUI.enabled = false;
|
||||
}
|
||||
|
||||
if (GUILayout.Button("Export", GUILayout.ExpandWidth(true), GUILayout.Height(37)))
|
||||
{
|
||||
MA_TextureAtlasserProUtils.ExportAtlasModels(curWindow.textureAtlas, curWindow.textureAtlas.exportSettings.modelExportSettings);
|
||||
MA_TextureAtlasserProUtils.ExportAtlasTextures(curWindow.textureAtlas, curWindow.textureAtlas.exportSettings.textureExportSettings);
|
||||
}
|
||||
|
||||
GUI.enabled = wasEnabled;
|
||||
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
private void DrawExportAdvancedOptions()
|
||||
{
|
||||
bool wasEnabled = GUI.enabled;
|
||||
|
||||
if (curWindow.textureAtlas.exportSettings.canModify)
|
||||
{
|
||||
GUI.enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
GUI.enabled = false;
|
||||
}
|
||||
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
|
||||
GUILayout.Label("Models:", EditorStyles.miniBoldLabel);
|
||||
curWindow.textureAtlas.exportSettings.modelExportSettings.modelFormat = (ModelFormat)EditorGUILayout.EnumPopup("ModelFormat:", curWindow.textureAtlas.exportSettings.modelExportSettings.modelFormat);
|
||||
curWindow.textureAtlas.exportSettings.modelExportSettings.replaceModel = EditorGUILayout.Toggle("ReplaceModels:", curWindow.textureAtlas.exportSettings.modelExportSettings.replaceModel);
|
||||
curWindow.textureAtlas.exportSettings.modelExportSettings.uvFlipY = EditorGUILayout.Toggle("UV FlipY:", curWindow.textureAtlas.exportSettings.modelExportSettings.uvFlipY);
|
||||
curWindow.textureAtlas.exportSettings.modelExportSettings.uvChannel = EditorGUILayout.IntField("UV Channel:", curWindow.textureAtlas.exportSettings.modelExportSettings.uvChannel);
|
||||
curWindow.textureAtlas.exportSettings.modelExportSettings.uvWrap = EditorGUILayout.Toggle("UV Wrap:", curWindow.textureAtlas.exportSettings.modelExportSettings.uvWrap);
|
||||
|
||||
GUILayout.Label("Textures:", EditorStyles.miniBoldLabel);
|
||||
curWindow.textureAtlas.exportSettings.textureExportSettings.textureFormat = (TextureFormat)EditorGUILayout.EnumPopup("TextureFormat:", curWindow.textureAtlas.exportSettings.textureExportSettings.textureFormat);
|
||||
curWindow.textureAtlas.exportSettings.textureExportSettings.textureType = (TextureType)EditorGUILayout.EnumPopup("TextureType:", curWindow.textureAtlas.exportSettings.textureExportSettings.textureType);
|
||||
curWindow.textureAtlas.exportSettings.textureExportSettings.textureScaleMode = (MA_TextureUtils.TextureScaleMode)EditorGUILayout.EnumPopup("TextureScaleMode:", curWindow.textureAtlas.exportSettings.textureExportSettings.textureScaleMode);
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
GUI.enabled = wasEnabled;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 142cd2d260a4ef948a2f16b16cd9e00e
|
||||
timeCreated: 1521826727
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,123 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
namespace MA_TextureAtlasserPro
|
||||
{
|
||||
public class MA_TextureAtlasserProWindow : EditorWindow
|
||||
{
|
||||
public static MA_TextureAtlasserProWindow thisWindow;
|
||||
public MA_TextureAtlasserProSettings settings;
|
||||
public MA_TextureAtlasserProAtlas textureAtlas;
|
||||
|
||||
public MA_TextureAtlasserProWorkView workView;
|
||||
public MA_TextureAtlasserProMenuView menuView;
|
||||
public MA_TextureAtlasserProInspectorView inspectorView;
|
||||
public MA_TextureAtlasserProDebugView debugView;
|
||||
|
||||
private static bool isLoaded = false; //Make sure we wait a frame at the start to setup and don't draw.
|
||||
|
||||
[MenuItem("MA_ToolKit/MA_TextureAtlasserPro/Atlas Editor")]
|
||||
private static void Init()
|
||||
{
|
||||
GetCurrentWindow();
|
||||
|
||||
thisWindow.titleContent.text = "MA_TextureAtlasserPro";
|
||||
thisWindow.minSize = new Vector2(375, 360);
|
||||
thisWindow.wantsMouseMove = true;
|
||||
|
||||
thisWindow.Show();
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
//Load the icons
|
||||
MA_TextureAtlasserProIcons.LoadIcons();
|
||||
}
|
||||
|
||||
private static void GetCurrentWindow()
|
||||
{
|
||||
thisWindow = (MA_TextureAtlasserProWindow)EditorWindow.GetWindow<MA_TextureAtlasserProWindow>();
|
||||
}
|
||||
|
||||
private void CloseCurrentWindow()
|
||||
{
|
||||
if(thisWindow == null)
|
||||
{
|
||||
GetCurrentWindow();
|
||||
}
|
||||
thisWindow.Close();
|
||||
}
|
||||
|
||||
private static void CreateViews()
|
||||
{
|
||||
if(thisWindow == null)
|
||||
{
|
||||
GetCurrentWindow();
|
||||
}
|
||||
|
||||
thisWindow.settings = MA_TextureAtlasserProUtils.LoadSettings();
|
||||
thisWindow.workView = new MA_TextureAtlasserProWorkView(thisWindow, "workView");
|
||||
thisWindow.menuView = new MA_TextureAtlasserProMenuView(thisWindow, "menuView");
|
||||
thisWindow.inspectorView = new MA_TextureAtlasserProInspectorView(thisWindow, "inspectorView");
|
||||
thisWindow.debugView = new MA_TextureAtlasserProDebugView(thisWindow, "debugView");
|
||||
}
|
||||
|
||||
private Event ProcessEvents()
|
||||
{
|
||||
Event e = Event.current;
|
||||
|
||||
return e;
|
||||
}
|
||||
|
||||
[UnityEditor.Callbacks.DidReloadScripts]
|
||||
private static void OnReload()
|
||||
{
|
||||
//Make sure that when the compiler is finished and reloads the scripts, we are waiting for the next Event.
|
||||
isLoaded = false;
|
||||
}
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
//Check window
|
||||
if(thisWindow == null)
|
||||
{
|
||||
GetCurrentWindow();
|
||||
return;
|
||||
}
|
||||
|
||||
//Check views
|
||||
if(settings == null || workView == null || menuView == null || inspectorView == null || debugView == null)
|
||||
{
|
||||
CreateViews();
|
||||
return;
|
||||
}
|
||||
|
||||
//Get current event
|
||||
Event e = ProcessEvents();
|
||||
|
||||
//Calculate view rects
|
||||
Rect workViewRect = new Rect(position.width - position.width, position.height - position.height, position.width, position.height);
|
||||
Rect debugViewRect = new Rect(position.width - MA_TextureAtlasserProUtils.VIEWOFFSET - 164, position.height - MA_TextureAtlasserProUtils.VIEWOFFSET - 22, 164, 22);
|
||||
Rect menuViewRect = new Rect(MA_TextureAtlasserProUtils.VIEWOFFSET, MA_TextureAtlasserProUtils.VIEWOFFSET, position.width - (MA_TextureAtlasserProUtils.VIEWOFFSET * 2), 44);
|
||||
Rect inspectorViewRect = new Rect(MA_TextureAtlasserProUtils.VIEWOFFSET, menuViewRect.y + menuViewRect.height + MA_TextureAtlasserProUtils.VIEWOFFSET, 164, position.height - menuViewRect.height - (MA_TextureAtlasserProUtils.VIEWOFFSET * 3));
|
||||
|
||||
//Draw views and windows in the right oder from back to front
|
||||
if(isLoaded)
|
||||
{
|
||||
workView.UpdateView(e, workViewRect);
|
||||
debugView.UpdateView(e, debugViewRect);
|
||||
inspectorView.UpdateView(e, inspectorViewRect);
|
||||
menuView.UpdateView(e, menuViewRect);
|
||||
}
|
||||
|
||||
Repaint();
|
||||
|
||||
if(e.type == EventType.Repaint)
|
||||
isLoaded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 21fee5883ec8a9c4c911f3c40ab47ecf
|
||||
timeCreated: 1519392331
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
Assets/MA_ToolBox/MA_TextureAtlasserPro/Settings.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f8bde1ccdaaf89e4fb4743ccfcff941d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 379a005a9f28e9948b62809c65bbcd1b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1 @@
|
||||
Export settigns are supposed to be here.
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 797d231c0151c5146a0da1482b480f43
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f8eb652100ecb804dae35d0cca727164, type: 3}
|
||||
m_Name: MA_DefaultExportSettings
|
||||
m_EditorClassIdentifier:
|
||||
canModify: 0
|
||||
modelExportSettings:
|
||||
modelFormat: 1
|
||||
replaceModel: 0
|
||||
uvFlipY: 1
|
||||
uvChannel: 0
|
||||
uvWrap: 1
|
||||
textureExportSettings:
|
||||
textureFormat: 1
|
||||
textureType: 0
|
||||
textureScaleMode: 0
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3a4e7ee656413624ea3ac0ab666cc5f7
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f8eb652100ecb804dae35d0cca727164, type: 3}
|
||||
m_Name: MA_DefaultSpriteExportSettings
|
||||
m_EditorClassIdentifier:
|
||||
canModify: 0
|
||||
modelExportSettings:
|
||||
modelFormat: 0
|
||||
replaceModel: 0
|
||||
uvFlipY: 0
|
||||
uvChannel: 0
|
||||
uvWrap: 0
|
||||
textureExportSettings:
|
||||
textureFormat: 1
|
||||
textureType: 2
|
||||
textureScaleMode: 0
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f2a8020dc0b658447b53eec982e136f4
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,24 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 73f5e66553c13034e9b894ef2cc31b66, type: 3}
|
||||
m_Name: MA_TextureAtlasserProSettings
|
||||
m_EditorClassIdentifier:
|
||||
useHotkeys: 0
|
||||
modifierKey: 4
|
||||
addQuadHotKey: 113
|
||||
removeQuadHotKey: 114
|
||||
duplicateHotKey: 100
|
||||
zoomInHotKey: 61
|
||||
zoomOutHotKey: 45
|
||||
copySelectedQuadData: 1
|
||||
duplicatedQuadNamePrefix: 'new '
|
||||
autoFocus: 1
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0be88ac94b5c5a44d96befde176454ac
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1 @@
|
||||
Settigns are supposed to be here.
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1dff191e3795506498c3ba0ec68a9f29
|
||||
timeCreated: 1522673504
|
||||
licenseType: Free
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|