private static SpriteGlowMaterial CreateSharedFor(SpriteGlowEffect spriteGlow) { var material = new SpriteGlowMaterial(spriteGlow.Renderer.sprite.texture, spriteGlow.DrawOutside, spriteGlow.EnableInstancing); material.hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor | HideFlags.NotEditable; sharedMaterials.Add(material); return(material); }
private void SetMaterialProperties() { if (!Renderer) { return; } Renderer.material = new Material(SpriteGlowMaterial.GetSharedFor(this)); Renderer.material.SetFloat(isOutlineEnabledId, isActiveAndEnabled ? 1 : 0); Renderer.material.SetColor(outlineColorId, GlowColor * GlowBrightness); Renderer.material.SetFloat(outlineSizeId, OutlineWidth); Renderer.material.SetFloat(alphaThresholdId, AlphaThreshold); }
public static Material GetSharedFor(SpriteGlowEffect spriteGlow) { var material = sharedMaterials.Find(m => m.SpriteTexture == spriteGlow.Renderer.sprite.texture && m.DrawOutside == spriteGlow.DrawOutside && m.InstancingEnabled == spriteGlow.EnableInstancing); if (!material) { material = new SpriteGlowMaterial(spriteGlow.Renderer.sprite.texture, spriteGlow.DrawOutside, spriteGlow.EnableInstancing); material.hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor | HideFlags.NotEditable; sharedMaterials.Add(material); } return(material); }
public static Material GetSharedFor (SpriteGlowEffect spriteGlow) { for (int i = 0; i < sharedMaterials.Count; i++) { if (sharedMaterials[i].SpriteTexture == spriteGlow.Renderer.sprite.texture && sharedMaterials[i].DrawOutside == spriteGlow.DrawOutside && sharedMaterials[i].InstancingEnabled == spriteGlow.EnableInstancing) return sharedMaterials[i]; } var material = new SpriteGlowMaterial(spriteGlow.Renderer.sprite.texture, spriteGlow.DrawOutside, spriteGlow.EnableInstancing); material.hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor | HideFlags.NotEditable; sharedMaterials.Add(material); return material; }
private void SetMaterialProperties() { if (!spriteRenderer) { return; } spriteRenderer.sharedMaterial = SpriteGlowMaterial.GetSharedFor(this); if (materialProperties == null) { materialProperties = new MaterialPropertyBlock(); } materialProperties.SetFloat(isOutlineEnabledId, isActiveAndEnabled ? 1 : 0); materialProperties.SetColor(outlineColorId, GlowColor * GlowBrightness); materialProperties.SetFloat(outlineSizeId, OutlineWidth); materialProperties.SetFloat(alphaThresholdId, AlphaThreshold); spriteRenderer.SetPropertyBlock(materialProperties); }
private void SetMaterialProperties() { if (!Renderer) { return; } Renderer.sharedMaterial = SpriteGlowMaterial.GetSharedFor(this); if (materialProperties == null) // Initializing it at `Awake` or `OnEnable` causes nullref in editor in some cases. { materialProperties = new MaterialPropertyBlock(); } materialProperties.SetFloat(isOutlineEnabledId, isActiveAndEnabled ? 1 : 0); materialProperties.SetColor(outlineColorId, GlowColor * GlowBrightness); materialProperties.SetFloat(outlineSizeId, OutlineWidth); materialProperties.SetFloat(alphaThresholdId, AlphaThreshold); Renderer.SetPropertyBlock(materialProperties); }
private static bool IsSharedFor(SpriteGlowMaterial material, SpriteGlowEffect spriteGlow) { return(material.SpriteTexture == spriteGlow.Renderer.sprite.texture && material.DrawOutside == spriteGlow.DrawOutside && material.InstancingEnabled == spriteGlow.EnableInstancing); }