Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public static class ShaderInterface {
- public enum ShaderMask {
- Head = 0,
- Body = 1,
- Legs = 2,
- Foot = 3
- }
- private static string[] maskName =
- {
- "_HeadTex",
- "_BodyTex",
- "_LegsTex",
- "_FootTex"
- };
- private static string[] maskToggleName =
- {
- "_HeadShow",
- "_BodyShow",
- "_LegsShow",
- "_FootShow"
- };
- private static Dictionary<GameObject, Material> gos = new Dictionary<GameObject, Material>();
- private static Dictionary<SpriteRenderer, Material> spr = new Dictionary<SpriteRenderer, Material>();
- public static void SetMask(Material material, Texture2D texture, ShaderMask smask) {
- string mask = maskName[(int) smask];
- if (material != null) {
- material.SetTexture(mask, texture);
- SetToggleMask(material, true, smask);
- }
- else {
- SetToggleMask(material, false, smask);
- }
- }
- public static void SetMask(SpriteRenderer renderer, Texture2D texture, ShaderMask smask) {
- Material material;
- if (spr.ContainsKey(renderer)) {
- material = spr[renderer];
- }
- else {
- material = renderer.material;
- spr.Add(renderer, material);
- }
- SetMask(material, texture, smask);
- }
- public static void SetTexture(GameObject go, Texture2D texture, ShaderMask smask) {
- Material material;
- if (gos.ContainsKey(go)) {
- material = gos[go];
- }
- else {
- material = go.GetComponent<SpriteRenderer>().material;
- gos.Add(go, material);
- }
- SetMask(material, texture, smask);
- }
- public static void SetToggleMask(Material material, bool state, ShaderMask smask) {
- string mask = maskToggleName[(int) smask];
- material.SetFloat(mask, state ? 1f : 0f);
- }
- public static void SetToggleMask(SpriteRenderer renderer, bool state, ShaderMask smask) {
- Material material;
- if (spr.ContainsKey(renderer)) {
- material = spr[renderer];
- }
- else {
- material = renderer.material;
- spr.Add(renderer, material);
- }
- SetToggleMask(material, state, smask);
- }
- public static void SetToggleMask(GameObject go, bool state, ShaderMask smask) {
- Material material;
- if (gos.ContainsKey(go)) {
- material = gos[go];
- }
- else {
- material = go.GetComponent<SpriteRenderer>().material;
- gos.Add(go, material);
- }
- SetToggleMask(material, state, smask);
- }
- public static void ClearCache() {
- gos.Clear();
- spr.Clear();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement