diff --git a/Editor/Constraints/Icons/LerpAimConstraintIcon.png b/Editor/Constraints/Icons/LerpAimConstraintIcon.png new file mode 100644 index 0000000..a28aae0 Binary files /dev/null and b/Editor/Constraints/Icons/LerpAimConstraintIcon.png differ diff --git a/Editor/Constraints/Icons/LerpAimConstraintIcon.png.meta b/Editor/Constraints/Icons/LerpAimConstraintIcon.png.meta new file mode 100644 index 0000000..2f973e7 --- /dev/null +++ b/Editor/Constraints/Icons/LerpAimConstraintIcon.png.meta @@ -0,0 +1,89 @@ +fileFormatVersion: 2 +guid: 07da6f60b8c84789bc7ee4602f68d356 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 256 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + 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: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Constraints/Icons/LerpLookAtConstraintIcon.png b/Editor/Constraints/Icons/LerpLookAtConstraintIcon.png new file mode 100644 index 0000000..1e2bcfa Binary files /dev/null and b/Editor/Constraints/Icons/LerpLookAtConstraintIcon.png differ diff --git a/Editor/Constraints/Icons/LerpLookAtConstraintIcon.png.meta b/Editor/Constraints/Icons/LerpLookAtConstraintIcon.png.meta new file mode 100644 index 0000000..a907e05 --- /dev/null +++ b/Editor/Constraints/Icons/LerpLookAtConstraintIcon.png.meta @@ -0,0 +1,89 @@ +fileFormatVersion: 2 +guid: 0c84e46fbbf5438d8099a052a0afc864 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 256 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + 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: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Constraints/Icons/LerpParentConstraintIcon.png b/Editor/Constraints/Icons/LerpParentConstraintIcon.png new file mode 100644 index 0000000..b96e8a9 Binary files /dev/null and b/Editor/Constraints/Icons/LerpParentConstraintIcon.png differ diff --git a/Editor/Constraints/Icons/LerpParentConstraintIcon.png.meta b/Editor/Constraints/Icons/LerpParentConstraintIcon.png.meta new file mode 100644 index 0000000..51e2295 --- /dev/null +++ b/Editor/Constraints/Icons/LerpParentConstraintIcon.png.meta @@ -0,0 +1,89 @@ +fileFormatVersion: 2 +guid: 07856e0ad4ad45cea23acd5143fd834a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 256 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + 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: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Constraints/Icons/LerpPositionConstraintIcon.png b/Editor/Constraints/Icons/LerpPositionConstraintIcon.png new file mode 100644 index 0000000..23cd98a Binary files /dev/null and b/Editor/Constraints/Icons/LerpPositionConstraintIcon.png differ diff --git a/Editor/Constraints/Icons/LerpPositionConstraintIcon.png.meta b/Editor/Constraints/Icons/LerpPositionConstraintIcon.png.meta new file mode 100644 index 0000000..c8ee3bc --- /dev/null +++ b/Editor/Constraints/Icons/LerpPositionConstraintIcon.png.meta @@ -0,0 +1,89 @@ +fileFormatVersion: 2 +guid: 9f06836401f24edab7eb10cfa8cc366c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 256 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + 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: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Constraints/Icons/LerpRotationConstraintIcon.png b/Editor/Constraints/Icons/LerpRotationConstraintIcon.png new file mode 100644 index 0000000..258f9bd Binary files /dev/null and b/Editor/Constraints/Icons/LerpRotationConstraintIcon.png differ diff --git a/Editor/Constraints/Icons/LerpRotationConstraintIcon.png.meta b/Editor/Constraints/Icons/LerpRotationConstraintIcon.png.meta new file mode 100644 index 0000000..9b1d08b --- /dev/null +++ b/Editor/Constraints/Icons/LerpRotationConstraintIcon.png.meta @@ -0,0 +1,89 @@ +fileFormatVersion: 2 +guid: cb343fa7887e4c33841ba7c34114ba1b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 256 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + 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: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Constraints/Icons/LerpScaleConstraintIcon.png b/Editor/Constraints/Icons/LerpScaleConstraintIcon.png new file mode 100644 index 0000000..9771cfe Binary files /dev/null and b/Editor/Constraints/Icons/LerpScaleConstraintIcon.png differ diff --git a/Editor/Constraints/Icons/LerpScaleConstraintIcon.png.meta b/Editor/Constraints/Icons/LerpScaleConstraintIcon.png.meta new file mode 100644 index 0000000..88598bb --- /dev/null +++ b/Editor/Constraints/Icons/LerpScaleConstraintIcon.png.meta @@ -0,0 +1,89 @@ +fileFormatVersion: 2 +guid: 6e8f1bdf638d4772bde06d7d0eeb8af3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 256 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + 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: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Constraints/LerpConstraintIconInstaller.cs b/Editor/Constraints/LerpConstraintIconInstaller.cs index 6bcf4ae..e18cd14 100644 --- a/Editor/Constraints/LerpConstraintIconInstaller.cs +++ b/Editor/Constraints/LerpConstraintIconInstaller.cs @@ -9,7 +9,17 @@ namespace Streamingle.Utils.LerpConstraintsEditor [InitializeOnLoad] internal static class LerpConstraintIconInstaller { - private const string IconName = "LerpConstraintIcon"; + private const string IconDirectory = "Packages/com.streamingle.utilities/Editor/Constraints/Icons"; + + private static readonly IconDefinition[] IconDefinitions = + { + new IconDefinition(typeof(LerpAimConstraint), "LerpAimConstraintIcon"), + new IconDefinition(typeof(LerpLookAtConstraint), "LerpLookAtConstraintIcon"), + new IconDefinition(typeof(LerpParentConstraint), "LerpParentConstraintIcon"), + new IconDefinition(typeof(LerpPositionConstraint), "LerpPositionConstraintIcon"), + new IconDefinition(typeof(LerpRotationConstraint), "LerpRotationConstraintIcon"), + new IconDefinition(typeof(LerpScaleConstraint), "LerpScaleConstraintIcon") + }; static LerpConstraintIconInstaller() { @@ -18,36 +28,42 @@ namespace Streamingle.Utils.LerpConstraintsEditor private static void ApplyIcons() { - Texture2D icon = AssetDatabase - .FindAssets($"{IconName} t:Texture2D") - .Select(AssetDatabase.GUIDToAssetPath) - .Select(AssetDatabase.LoadAssetAtPath) - .FirstOrDefault(texture => texture != null); + string[] scriptGuids = AssetDatabase.FindAssets( + "t:MonoScript", + new[] { "Packages/com.streamingle.utilities/Runtime/Constraints" }); - if (icon == null) + foreach (IconDefinition definition in IconDefinitions) { - return; - } + Texture2D icon = AssetDatabase.LoadAssetAtPath( + $"{IconDirectory}/{definition.IconName}.png"); + if (icon == null) + { + continue; + } - Type[] constraintTypes = - { - typeof(LerpAimConstraint), - typeof(LerpLookAtConstraint), - typeof(LerpParentConstraint), - typeof(LerpPositionConstraint), - typeof(LerpRotationConstraint), - typeof(LerpScaleConstraint) - }; + MonoScript script = scriptGuids + .Select(AssetDatabase.GUIDToAssetPath) + .Select(AssetDatabase.LoadAssetAtPath) + .FirstOrDefault(candidate => candidate != null && candidate.GetClass() == definition.ConstraintType); - string[] scriptGuids = AssetDatabase.FindAssets("t:MonoScript", new[] { "Packages/com.streamingle.utilities/Runtime/Constraints" }); - foreach (string scriptGuid in scriptGuids) - { - MonoScript script = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(scriptGuid)); - if (script != null && constraintTypes.Contains(script.GetClass())) + if (script != null) { EditorGUIUtility.SetIconForObject(script, icon); } } } + + private readonly struct IconDefinition + { + public IconDefinition(Type constraintType, string iconName) + { + ConstraintType = constraintType; + IconName = iconName; + } + + public Type ConstraintType { get; } + + public string IconName { get; } + } } } diff --git a/package.json b/package.json index e63e5f9..e9a1084 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.streamingle.utilities", "displayName": "Streamingle Utilities", - "version": "0.1.21", + "version": "0.1.22", "unity": "6000.0", "description": "Reusable Streamingle runtime components and Unity editor utilities.", "keywords": [