Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- using ToJ;
- public class SpriteMaskHelper : MonoBehaviour
- {
- static readonly string SHADER_ALPHA_MASK_SPRITE = "Alpha Masked/Sprites Alpha Masked - World Coords";
- static readonly string SHADER_VAR_USEALPHACHANNEL = "_UseAlphaChannel";
- static readonly string SHADER_VAR_ALPHATEX = "_AlphaTex";
- [SerializeField, Tooltip("Set a specific mask, or leave empty to find mask automatically")] Mask m_mask = null;
- static Shader s_alphaMaskShader = null;
- /// Sets up the sprite to be masked, and moves it under the sprite object
- public void AddSprite(SpriteRenderer sprite)
- {
- if ( m_mask == null )
- m_mask = GetComponentInChildren<Mask>();
- if ( m_mask == null || sprite == null)
- return;
- if ( s_alphaMaskShader == null )
- s_alphaMaskShader = Shader.Find(SHADER_ALPHA_MASK_SPRITE);
- sprite.material.shader = s_alphaMaskShader;
- m_mask.SetMaskBoolValueInMaterial(SHADER_VAR_USEALPHACHANNEL,true,sprite.material);
- m_mask.SetMaskMappingAxisInMaterial(Mask.MappingAxis.Z,sprite.material);
- sprite.material.SetTexture(SHADER_VAR_ALPHATEX, m_mask.GetComponent<MeshRenderer>().materials[0].mainTexture);
- sprite.transform.SetParent( m_mask.transform.parent, true);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement