示例#1
0
        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);
        }
示例#2
0
        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;
        }
示例#5
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);
        }
        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);
        }
示例#7
0
 private static bool IsSharedFor(SpriteGlowMaterial material, SpriteGlowEffect spriteGlow)
 {
     return(material.SpriteTexture == spriteGlow.Renderer.sprite.texture &&
            material.DrawOutside == spriteGlow.DrawOutside &&
            material.InstancingEnabled == spriteGlow.EnableInstancing);
 }