Advertisement
KpoKec

ShaderInterface for 4mask

Jun 3rd, 2018
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.85 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public static class ShaderInterface {
  6.  
  7.     public enum ShaderMask {
  8.         Head = 0,
  9.         Body = 1,
  10.         Legs = 2,
  11.         Foot = 3
  12.     }
  13.  
  14.     private static string[] maskName =
  15.     {
  16.         "_HeadTex",
  17.         "_BodyTex",
  18.         "_LegsTex",
  19.         "_FootTex"
  20.     };
  21.     private static string[] maskToggleName =
  22.     {
  23.         "_HeadShow",
  24.         "_BodyShow",
  25.         "_LegsShow",
  26.         "_FootShow"
  27.     };
  28.  
  29.     private static Dictionary<GameObject, Material> gos = new Dictionary<GameObject, Material>();
  30.     private static Dictionary<SpriteRenderer, Material> spr = new Dictionary<SpriteRenderer, Material>();
  31.  
  32.     public static void SetMask(Material material, Texture2D texture, ShaderMask smask) {
  33.         string mask = maskName[(int) smask];
  34.         if (material != null) {
  35.             material.SetTexture(mask, texture);
  36.             SetToggleMask(material, true, smask);
  37.         }
  38.         else {
  39.             SetToggleMask(material, false, smask);
  40.         }
  41.     }
  42.  
  43.     public static void SetMask(SpriteRenderer renderer, Texture2D texture, ShaderMask smask) {
  44.         Material material;
  45.         if (spr.ContainsKey(renderer)) {
  46.             material = spr[renderer];
  47.         }
  48.         else {
  49.             material = renderer.material;
  50.             spr.Add(renderer, material);
  51.         }
  52.         SetMask(material, texture, smask);
  53.     }
  54.  
  55.     public static void SetTexture(GameObject go, Texture2D texture, ShaderMask smask) {
  56.         Material material;
  57.         if (gos.ContainsKey(go)) {
  58.             material = gos[go];
  59.         }
  60.         else {
  61.             material = go.GetComponent<SpriteRenderer>().material;
  62.             gos.Add(go, material);
  63.         }
  64.         SetMask(material, texture, smask);
  65.     }
  66.  
  67.     public static void SetToggleMask(Material material, bool state, ShaderMask smask) {
  68.         string mask = maskToggleName[(int) smask];
  69.         material.SetFloat(mask, state ? 1f : 0f);
  70.     }
  71.  
  72.     public static void SetToggleMask(SpriteRenderer renderer, bool state, ShaderMask smask) {
  73.         Material material;
  74.         if (spr.ContainsKey(renderer)) {
  75.             material = spr[renderer];
  76.         }
  77.         else {
  78.             material = renderer.material;
  79.             spr.Add(renderer, material);
  80.         }
  81.         SetToggleMask(material, state, smask);
  82.     }
  83.  
  84.     public static void SetToggleMask(GameObject go, bool state, ShaderMask smask) {
  85.         Material material;
  86.         if (gos.ContainsKey(go)) {
  87.             material = gos[go];
  88.         }
  89.         else {
  90.             material = go.GetComponent<SpriteRenderer>().material;
  91.             gos.Add(go, material);
  92.         }
  93.         SetToggleMask(material, state, smask);
  94.     }
  95.  
  96.     public static void ClearCache() {
  97.         gos.Clear();
  98.         spr.Clear();
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement