A game about forced loneliness, made by TACStudios
at master 640 lines 28 kB view raw
1using System; 2using Unity.Collections; 3using UnityEditor.AssetImporters; 4using UnityEngine; 5 6namespace UnityEditor.U2D.Common 7{ 8 internal interface ITextureSettings 9 { 10 void FillTextureGenerationSettings(ref TextureGenerationSettings settings); 11 } 12 13 14 [Serializable] 15 internal class TextureSettings : ITextureSettings 16 { 17 [SerializeField] 18 bool m_ColorTexture; 19 [SerializeField] 20 bool m_Readable; 21 [SerializeField] 22 TextureImporterNPOTScale m_NPOTScale; 23 [SerializeField] 24 FilterMode m_FilterMode; 25 [SerializeField] 26 int m_Aniso; 27 [SerializeField] 28 bool m_EnablePostProcessor; 29 [SerializeField] 30 SecondarySpriteTexture[] m_SecondaryTextures; 31 [SerializeField] 32 TextureImporterSwizzle m_SwizzleR = TextureImporterSwizzle.R; 33 [SerializeField] 34 TextureImporterSwizzle m_SwizzleG = TextureImporterSwizzle.G; 35 [SerializeField] 36 TextureImporterSwizzle m_SwizzleB = TextureImporterSwizzle.B; 37 [SerializeField] 38 TextureImporterSwizzle m_SwizzleA = TextureImporterSwizzle.A; 39 40 public TextureSettings() 41 { 42 colorTexture = true; 43 readable = false; 44 npotScale = TextureImporterNPOTScale.None; 45 filterMode = FilterMode.Bilinear; 46 aniso = 1; 47 } 48 49 public TextureSettings(string assetPath, bool enablePostProcessor, bool colorTexture, bool readable, TextureImporterNPOTScale npotScale, FilterMode filterMode, int aniso, bool sourceContainsAlpha, bool sourceWasHDR) 50 { 51 this.assetPath = assetPath; 52 this.enablePostProcessor = enablePostProcessor; 53 this.colorTexture = colorTexture; 54 this.readable = readable; 55 this.npotScale = npotScale; 56 this.filterMode = filterMode; 57 this.aniso = aniso; 58 this.containsAlpha = sourceContainsAlpha; 59 this.hdr = sourceWasHDR; 60 } 61 62 public bool colorTexture { get { return m_ColorTexture; } set { m_ColorTexture = value; } } //sRGBTexture 63 public bool readable { get { return m_Readable; } set { m_Readable = value; } } 64 public TextureImporterNPOTScale npotScale { get { return m_NPOTScale; } set { m_NPOTScale = value; } } 65 public FilterMode filterMode { get { return m_FilterMode; } set { m_FilterMode = value; } } 66 public int aniso 67 { 68 get { return m_Aniso; } 69 set { m_Aniso = value; } 70 } 71 public bool enablePostProcessor 72 { 73 get { return m_EnablePostProcessor; } 74 set { m_EnablePostProcessor = value; } 75 } 76 77 public string assetPath { get; set; } 78 public bool containsAlpha { get; set; } 79 public bool hdr { get; set; } 80 public TextureImporterSwizzle swizzleR { get { return m_SwizzleR; } set { m_SwizzleR = value; } } 81 public TextureImporterSwizzle swizzleG { get { return m_SwizzleG; } set { m_SwizzleG = value; } } 82 public TextureImporterSwizzle swizzleB { get { return m_SwizzleB; } set { m_SwizzleB = value; } } 83 public TextureImporterSwizzle swizzleA { get { return m_SwizzleA; } set { m_SwizzleA = value; } } 84 public SecondarySpriteTexture[] secondaryTextures { get { return m_SecondaryTextures;} set { m_SecondaryTextures = value; } } 85 86 void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) 87 { 88 settings.textureImporterSettings.sRGBTexture = colorTexture; 89 settings.textureImporterSettings.readable = readable; 90 settings.textureImporterSettings.npotScale = npotScale; 91 settings.textureImporterSettings.filterMode = filterMode; 92 settings.textureImporterSettings.aniso = aniso; 93 settings.assetPath = assetPath; 94 settings.enablePostProcessor = enablePostProcessor; 95 settings.sourceTextureInformation.containsAlpha = containsAlpha; 96 settings.sourceTextureInformation.hdr = hdr; 97 settings.secondarySpriteTextures = secondaryTextures; 98 settings.textureImporterSettings.swizzleR = m_SwizzleR; 99 settings.textureImporterSettings.swizzleG = m_SwizzleG; 100 settings.textureImporterSettings.swizzleB = m_SwizzleB; 101 settings.textureImporterSettings.swizzleA = m_SwizzleA; 102 } 103 } 104 105 [Serializable] 106 internal class TextureSpriteSettings : ITextureSettings 107 { 108 [SerializeField] 109 string m_PackingTag; 110 public string packingTag 111 { 112 get { return m_PackingTag; } 113 set { m_PackingTag = value; } 114 } 115 116 [SerializeField] 117 float m_PixelsPerUnit; 118 public float pixelsPerUnit 119 { 120 get { return m_PixelsPerUnit; } 121 set { m_PixelsPerUnit = value; } 122 } 123 124 [SerializeField] 125 SpriteMeshType m_MeshType; 126 public SpriteMeshType meshType 127 { 128 get { return m_MeshType; } 129 set { m_MeshType = value; } 130 } 131 132 [SerializeField] 133 uint m_ExtrudeEdges; 134 public uint extrudeEdges 135 { 136 get { return m_ExtrudeEdges; } 137 set { m_ExtrudeEdges = value; } 138 } 139 140 public bool qualifyForPacking { get; set; } 141 public SpriteImportData[] spriteSheetData { get; set; } 142 143 public TextureSpriteSettings() 144 { 145 packingTag = ""; 146 pixelsPerUnit = 100; 147 meshType = SpriteMeshType.Tight; 148 extrudeEdges = 1; 149 } 150 151 public TextureSpriteSettings(string packingTag, int pixelsPerUnit, SpriteMeshType meshType, uint extrudeEdges, bool qualifyForPacking, SpriteImportData[] spriteSheetData = null) 152 { 153 this.packingTag = packingTag; 154 this.pixelsPerUnit = pixelsPerUnit; 155 this.meshType = meshType; 156 this.extrudeEdges = extrudeEdges; 157 this.qualifyForPacking = qualifyForPacking; 158 this.spriteSheetData = spriteSheetData; 159 } 160 161 void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) 162 { 163 settings.textureImporterSettings.spritePixelsPerUnit = pixelsPerUnit; 164 settings.textureImporterSettings.spriteMeshType = meshType; 165 settings.textureImporterSettings.spriteExtrude = extrudeEdges; 166 settings.spritePackingTag = packingTag; 167 settings.qualifyForSpritePacking = qualifyForPacking; 168 settings.spriteImportData = spriteSheetData; 169 } 170 } 171 172 [Serializable] 173 internal class TextureWrapSettings : ITextureSettings 174 { 175 [SerializeField] 176 TextureWrapMode m_WrapMode; 177 [SerializeField] 178 TextureWrapMode m_WrapModeU; 179 [SerializeField] 180 TextureWrapMode m_WrapModeV; 181 [SerializeField] 182 TextureWrapMode m_WrapModeW; 183 184 public TextureWrapSettings() 185 { 186 wrapMode = wrapModeU = wrapModeV = wrapModeW = TextureWrapMode.Repeat; 187 } 188 189 public TextureWrapSettings(TextureWrapMode wrapMpde, TextureWrapMode wrapModeU, TextureWrapMode wrapModeV, TextureWrapMode wrapModeW) 190 { 191 this.wrapMode = wrapMode; 192 this.wrapModeU = wrapModeU; 193 this.wrapModeV = wrapModeV; 194 this.wrapModeW = wrapModeW; 195 } 196 197 public TextureWrapMode wrapMode { get { return m_WrapMode; } set { m_WrapMode = value; } } 198 public TextureWrapMode wrapModeU { get { return m_WrapModeU; } set { m_WrapModeU = value; } } 199 public TextureWrapMode wrapModeV { get { return m_WrapModeV; } set { m_WrapModeV = value; } } 200 public TextureWrapMode wrapModeW { get { return m_WrapModeW; } set { m_WrapModeW = value; } } 201 202 void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) 203 { 204 settings.textureImporterSettings.wrapMode = wrapMode; 205 settings.textureImporterSettings.wrapModeU = wrapModeU; 206 settings.textureImporterSettings.wrapModeV = wrapModeV; 207 settings.textureImporterSettings.wrapModeW = wrapModeW; 208 } 209 } 210 211 [Serializable] 212 internal class TextureAlphaSettings : ITextureSettings 213 { 214 [SerializeField] 215 float m_AlphaTolerance; 216 public float alphaTolerance 217 { 218 get { return m_AlphaTolerance; } 219 set { m_AlphaTolerance = value; } 220 } 221 222 [SerializeField] 223 TextureImporterAlphaSource m_AlphaSource; 224 public TextureImporterAlphaSource alphaSource 225 { 226 get { return m_AlphaSource; } 227 set { m_AlphaSource = value; } 228 } 229 230 public TextureAlphaSettings() 231 { 232 alphaTolerance = 0.5f; 233 alphaSource = TextureImporterAlphaSource.FromInput; 234 } 235 236 public TextureAlphaSettings(TextureImporterAlphaSource alphaSource, float alphaTolerance) 237 { 238 this.alphaTolerance = alphaTolerance; 239 this.alphaSource = alphaSource; 240 } 241 242 void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) 243 { 244 settings.textureImporterSettings.alphaIsTransparency = alphaSource != TextureImporterAlphaSource.None; 245 settings.textureImporterSettings.alphaSource = alphaSource; 246 settings.textureImporterSettings.alphaTestReferenceValue = alphaTolerance; 247 } 248 } 249 250 [Serializable] 251 internal class TextureMipmapSettings : ITextureSettings 252 { 253 [SerializeField] 254 TextureImporterMipFilter m_Filter; 255 public TextureImporterMipFilter filter 256 { 257 get { return m_Filter; } 258 set { m_Filter = value; } 259 } 260 261 [SerializeField] 262 bool m_BorderMipmap; 263 public bool borderMipmap 264 { 265 get { return m_BorderMipmap; } 266 set { m_BorderMipmap = value; } 267 } 268 269 [SerializeField] 270 bool m_Fadeout; 271 public bool fadeout 272 { 273 get { return m_Fadeout; } 274 set { m_Fadeout = value; } 275 } 276 277 [SerializeField] 278 bool m_PreserveCoverage; 279 public bool preserveCoverage 280 { 281 get { return m_PreserveCoverage; } 282 set { m_PreserveCoverage = value; } 283 } 284 285 [SerializeField] 286 int m_FadeDistanceStart; 287 public int fadeDistanceStart 288 { 289 get { return m_FadeDistanceStart; } 290 set { m_FadeDistanceStart = value; } 291 } 292 293 [SerializeField] 294 int m_FadeDistanceEnd; 295 public int fadeDistanceEnd 296 { 297 get { return m_FadeDistanceEnd; } 298 set { m_FadeDistanceEnd = value; } 299 } 300 301 [SerializeField] 302 bool m_StreamingMipmaps; 303 public bool streamingMipmaps 304 { 305 get { return m_StreamingMipmaps; } 306 set { m_StreamingMipmaps = value; } 307 } 308 309 [SerializeField] 310 int m_StreamingMipmapsPriority; 311 public int streamingMipmapsPriority 312 { 313 get { return m_StreamingMipmapsPriority; } 314 set { m_StreamingMipmapsPriority = value; } 315 } 316 317 public TextureMipmapSettings() 318 { 319 filter = TextureImporterMipFilter.BoxFilter; 320 borderMipmap = false; 321 fadeout = false; 322 preserveCoverage = false; 323 fadeDistanceStart = 1; 324 fadeDistanceEnd = 3; 325 } 326 327 public TextureMipmapSettings(TextureImporterMipFilter filter, bool borderMipmap, bool fadeout, bool preserveCoverage, int fadeDistanceStart, int fadeDistanceEnd, bool streamingMipmaps, int streamingMipmapsPriority) 328 { 329 this.filter = filter; 330 this.borderMipmap = borderMipmap; 331 this.fadeout = fadeout; 332 this.preserveCoverage = preserveCoverage; 333 this.fadeDistanceStart = fadeDistanceStart; 334 this.fadeDistanceEnd = fadeDistanceEnd; 335 this.streamingMipmaps = streamingMipmaps; 336 this.streamingMipmapsPriority = streamingMipmapsPriority; 337 } 338 339 void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) 340 { 341 settings.textureImporterSettings.mipmapEnabled = true; 342 settings.textureImporterSettings.mipmapFilter = filter; 343 settings.textureImporterSettings.borderMipmap = borderMipmap; 344 settings.textureImporterSettings.fadeOut = fadeout; 345 settings.textureImporterSettings.mipmapFadeDistanceStart = fadeDistanceStart; 346 settings.textureImporterSettings.mipmapFadeDistanceEnd = fadeDistanceEnd; 347 settings.textureImporterSettings.mipMapsPreserveCoverage = preserveCoverage; 348 settings.textureImporterSettings.streamingMipmaps = streamingMipmaps; 349 settings.textureImporterSettings.streamingMipmapsPriority = streamingMipmapsPriority; 350 } 351 } 352 353 [Serializable] 354 internal class TextureNormalSettings : ITextureSettings 355 { 356 [SerializeField] 357 TextureImporterNormalFilter m_Filter; 358 public TextureImporterNormalFilter filter 359 { 360 get { return m_Filter; } 361 set { m_Filter = value; } 362 } 363 364 [SerializeField] 365 bool m_GenerateFromGrayScale; 366 public bool generateFromGrayScale 367 { 368 get { return m_GenerateFromGrayScale; } 369 set { m_GenerateFromGrayScale = value; } 370 } 371 372 [SerializeField] 373 float m_Bumpiness; 374 public float bumpiness 375 { 376 get { return m_Bumpiness; } 377 set { m_Bumpiness = value; } 378 } 379 380 public TextureNormalSettings() 381 { 382 filter = TextureImporterNormalFilter.Standard; 383 generateFromGrayScale = false; 384 bumpiness = 0.25f; 385 } 386 387 public TextureNormalSettings(TextureImporterNormalFilter filter, bool generateFromGrayScale, float bumpiness) 388 { 389 this.filter = filter; 390 this.generateFromGrayScale = generateFromGrayScale; 391 this.bumpiness = bumpiness; 392 } 393 394 void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) 395 { 396 settings.textureImporterSettings.normalMapFilter = filter; 397 settings.textureImporterSettings.convertToNormalMap = generateFromGrayScale; 398 settings.textureImporterSettings.heightmapScale = bumpiness; 399 } 400 } 401 402 // If this is provided, textureType will be cubemap 403 [Serializable] 404 internal class TextureCubemapSettings : ITextureSettings 405 { 406 [SerializeField] 407 TextureImporterCubemapConvolution m_Convolution; 408 public TextureImporterCubemapConvolution convolution 409 { 410 get { return m_Convolution; } 411 set { m_Convolution = value; } 412 } 413 414 [SerializeField] 415 TextureImporterGenerateCubemap m_Mode; 416 public TextureImporterGenerateCubemap mode 417 { 418 get { return m_Mode; } 419 set { m_Mode = value; } 420 } 421 422 [SerializeField] 423 bool m_Seamless; 424 public bool seamless 425 { 426 get { return m_Seamless; } 427 set { m_Seamless = value; } 428 } 429 public TextureCubemapSettings() 430 { 431 convolution = TextureImporterCubemapConvolution.None; 432 mode = TextureImporterGenerateCubemap.AutoCubemap; 433 seamless = false; 434 } 435 436 public TextureCubemapSettings(TextureImporterCubemapConvolution convolution, TextureImporterGenerateCubemap mode, bool seamless) 437 { 438 this.convolution = convolution; 439 this.mode = mode; 440 this.seamless = seamless; 441 } 442 443 void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) 444 { 445 settings.textureImporterSettings.textureShape = TextureImporterShape.TextureCube; 446 settings.textureImporterSettings.cubemapConvolution = convolution; 447 settings.textureImporterSettings.generateCubemap = mode; 448 settings.textureImporterSettings.seamlessCubemap = seamless; 449 } 450 } 451 452 internal static class TextureGeneratorHelper 453 { 454 public static TextureGenerationOutput GenerateTextureSprite(NativeArray<Color32> buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, 455 TextureSpriteSettings spriteSettings, TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureWrapSettings wrapSettings = null) 456 { 457 if (alphaSettings == null) 458 alphaSettings = new TextureAlphaSettings(TextureImporterAlphaSource.FromInput, 0.5f); 459 if (wrapSettings == null) 460 wrapSettings = new TextureWrapSettings(TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp); 461 462 return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Sprite, platformSettings, settings, spriteSettings, alphaSettings, mipmapSettings, wrapSettings); 463 } 464 465 public static TextureGenerationOutput GenerateLightmap(NativeArray<Color32> buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, 466 TextureMipmapSettings mipmapSettings = null, TextureWrapSettings wrapSettings = null) 467 { 468 settings.colorTexture = true; 469 return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Lightmap, platformSettings, settings, mipmapSettings, wrapSettings); 470 } 471 472 public static TextureGenerationOutput GenerateCookie(NativeArray<Color32> buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, 473 TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureCubemapSettings cubemapSettings = null, TextureWrapSettings wrapSettings = null) 474 { 475 return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Cookie, platformSettings, settings, alphaSettings, mipmapSettings, cubemapSettings, wrapSettings); 476 } 477 478 public static TextureGenerationOutput GenerateNormalMap(NativeArray<Color32> buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, 479 TextureNormalSettings normalSettings, TextureMipmapSettings mipmapSettings = null, TextureCubemapSettings cubemapSettings = null, TextureWrapSettings wrapSettings = null) 480 { 481 settings.colorTexture = false; 482 return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.NormalMap, platformSettings, settings, normalSettings, mipmapSettings, cubemapSettings, wrapSettings); 483 } 484 485 public static TextureGenerationOutput GenerateTextureGUI(NativeArray<Color32> buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, 486 TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureWrapSettings wrapSettings = null) 487 { 488 settings.colorTexture = false; 489 if (wrapSettings == null) 490 wrapSettings = new TextureWrapSettings(TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp); 491 return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.GUI, platformSettings, settings, alphaSettings, mipmapSettings, wrapSettings); 492 } 493 494 public static TextureGenerationOutput GenerateTextureSingleChannel(NativeArray<Color32> buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, 495 TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureCubemapSettings cubemapSettings = null, TextureWrapSettings wrapSettings = null) 496 { 497 settings.colorTexture = false; 498 return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.SingleChannel, platformSettings, settings, alphaSettings, mipmapSettings, cubemapSettings, wrapSettings); 499 } 500 501 public static TextureGenerationOutput GenerateTextureCursor(NativeArray<Color32> buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, 502 TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureWrapSettings wrapSettings = null) 503 { 504 if (alphaSettings == null) 505 alphaSettings = new TextureAlphaSettings(TextureImporterAlphaSource.FromInput, 0.5f); 506 if (wrapSettings == null) 507 wrapSettings = new TextureWrapSettings(TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp); 508 509 return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Cursor, platformSettings, settings, alphaSettings, mipmapSettings, wrapSettings); 510 } 511 512 public static TextureGenerationOutput GenerateTextureDefault(NativeArray<Color32> buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, 513 TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureCubemapSettings cubemapSettings = null, TextureWrapSettings wrapSettings = null) 514 { 515 if (mipmapSettings == null) 516 mipmapSettings = new TextureMipmapSettings(TextureImporterMipFilter.BoxFilter, false, false, false, 1, 3, false, 0); 517 518 return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Default, platformSettings, settings, alphaSettings, mipmapSettings, cubemapSettings, wrapSettings); 519 } 520 521 static TextureGenerationOutput GenerateTexture(NativeArray<Color32> imageBuffer, int imageBufferWidth, int imageBufferHeight, TextureImporterType type, TextureImporterPlatformSettings platformSettings, params ITextureSettings[] otherSettings) 522 { 523 var textureGenerationSettings = new TextureGenerationSettings(); 524 textureGenerationSettings.platformSettings = platformSettings; 525 526 textureGenerationSettings.sourceTextureInformation = new SourceTextureInformation(); 527 textureGenerationSettings.sourceTextureInformation.height = imageBufferHeight; 528 textureGenerationSettings.sourceTextureInformation.width = imageBufferWidth; 529 530 textureGenerationSettings.textureImporterSettings = new TextureImporterSettings(); 531 textureGenerationSettings.textureImporterSettings.textureType = type; 532 textureGenerationSettings.textureImporterSettings.textureShape = TextureImporterShape.Texture2D; 533 534 textureGenerationSettings.textureImporterSettings.alphaIsTransparency = false; 535 textureGenerationSettings.textureImporterSettings.convertToNormalMap = false; 536 textureGenerationSettings.textureImporterSettings.mipmapEnabled = false; 537 textureGenerationSettings.textureImporterSettings.sRGBTexture = true; 538 textureGenerationSettings.textureImporterSettings.readable = false; 539 textureGenerationSettings.textureImporterSettings.fadeOut = false; 540 textureGenerationSettings.textureImporterSettings.wrapMode = TextureWrapMode.Repeat; 541 textureGenerationSettings.textureImporterSettings.wrapModeU = TextureWrapMode.Repeat; 542 textureGenerationSettings.textureImporterSettings.wrapModeV = TextureWrapMode.Repeat; 543 textureGenerationSettings.textureImporterSettings.wrapModeW = TextureWrapMode.Repeat; 544 textureGenerationSettings.textureImporterSettings.swizzleR = TextureImporterSwizzle.R; 545 textureGenerationSettings.textureImporterSettings.swizzleG = TextureImporterSwizzle.G; 546 textureGenerationSettings.textureImporterSettings.swizzleB = TextureImporterSwizzle.B; 547 textureGenerationSettings.textureImporterSettings.swizzleA = TextureImporterSwizzle.A; 548 549 550 foreach (var otherSetting in otherSettings) 551 { 552 if (otherSetting != null) 553 otherSetting.FillTextureGenerationSettings(ref textureGenerationSettings); 554 } 555 return TextureGenerator.GenerateTexture(textureGenerationSettings, imageBuffer); 556 } 557 558 static public TextureSettings ExtractTextureSettings(this TextureImporterSettings tis) 559 { 560 var ts = new TextureSettings(); 561 ts.colorTexture = tis.sRGBTexture; 562 ts.readable = tis.readable; 563 ts.npotScale = tis.npotScale; 564 ts.filterMode = tis.filterMode; 565 ts.aniso = tis.aniso; 566 ts.swizzleR = tis.swizzleR; 567 ts.swizzleG = tis.swizzleG; 568 ts.swizzleB = tis.swizzleB; 569 ts.swizzleA = tis.swizzleA; 570 return ts; 571 } 572 573 static public TextureSpriteSettings ExtractTextureSpriteSettings(this TextureImporterSettings tis) 574 { 575 var ts = new TextureSpriteSettings(); 576 ts.pixelsPerUnit = tis.spritePixelsPerUnit; 577 ts.meshType = tis.spriteMeshType; 578 ts.extrudeEdges = tis.spriteExtrude; 579 return ts; 580 } 581 582 static public TextureWrapSettings ExtractTextureWrapSettings(this TextureImporterSettings tis) 583 { 584 var ts = new TextureWrapSettings(); 585 ts.wrapMode = tis.wrapMode; 586 ts.wrapModeU = tis.wrapModeU; 587 ts.wrapModeV = tis.wrapModeV; 588 ts.wrapModeW = tis.wrapModeW; 589 return ts; 590 } 591 592 static public TextureAlphaSettings ExtractTextureAlphaSettings(this TextureImporterSettings settings) 593 { 594 if (settings.alphaIsTransparency == false) 595 return null; 596 597 var ts = new TextureAlphaSettings(); 598 ts.alphaSource = settings.alphaSource; 599 ts.alphaTolerance = settings.alphaTestReferenceValue; 600 return ts; 601 } 602 603 static public TextureMipmapSettings ExtractTextureMipmapSettings(this TextureImporterSettings settings) 604 { 605 if (!settings.mipmapEnabled) 606 return null; 607 608 var ts = new TextureMipmapSettings(); 609 ts.filter = settings.mipmapFilter; 610 ts.borderMipmap = settings.borderMipmap; 611 ts.fadeout = settings.fadeOut; 612 ts.fadeDistanceStart = settings.mipmapFadeDistanceStart; 613 ts.fadeDistanceEnd = settings.mipmapFadeDistanceEnd; 614 ts.preserveCoverage = settings.mipMapsPreserveCoverage; 615 ts.streamingMipmaps = settings.streamingMipmaps; 616 ts.streamingMipmapsPriority = settings.streamingMipmapsPriority; 617 return ts; 618 } 619 620 static public TextureNormalSettings ExtractTextureNormalSettings(this TextureImporterSettings settings) 621 { 622 var ts = new TextureNormalSettings(); 623 ts.filter = settings.normalMapFilter; 624 ts.generateFromGrayScale = settings.convertToNormalMap; 625 ts.bumpiness = settings.heightmapScale; 626 return ts; 627 } 628 629 static public TextureCubemapSettings ExtractTextureCubemapSettings(this TextureImporterSettings settings) 630 { 631 if (settings.textureShape != TextureImporterShape.TextureCube) 632 return null; 633 var ts = new TextureCubemapSettings(); 634 ts.convolution = settings.cubemapConvolution; 635 ts.mode = settings.generateCubemap; 636 ts.seamless = settings.seamlessCubemap; 637 return ts; 638 } 639 } 640}