Exemplo n.º 1
0
    public static Material GetSharedFor(SpriteGlow 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);
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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);
    }