// Token: 0x17000E32 RID: 3634 public Material this[global::UIDrawCall.Clipping clipping] { get { global::UIMaterial.ClippingFlags clippingFlags = (global::UIMaterial.ClippingFlags)(1 << (int)clipping); if ((clippingFlags & this.madeMats) != clippingFlags) { return(this.MakeMaterial(clipping)); } switch (clipping) { case global::UIDrawCall.Clipping.None: return(this.matNone); case global::UIDrawCall.Clipping.HardClip: return(this.matHardClip); case global::UIDrawCall.Clipping.AlphaClip: return(this.matAlphaClip); case global::UIDrawCall.Clipping.SoftClip: return(this.matSoftClip); default: throw new NotImplementedException(); } } }
// Token: 0x06004AFA RID: 19194 RVA: 0x00121EF8 File Offset: 0x001200F8 public static global::UIMaterial Create(Material key, bool manageKeyDestruction, global::UIDrawCall.Clipping useAsClipping) { if (!manageKeyDestruction) { return(global::UIMaterial.Create(key)); } if (!key) { return(null); } global::UIMaterial uimaterial; if (global::UIMaterial.g.keyedMaterials.TryGetValue(key, out uimaterial)) { throw new InvalidOperationException("That material is registered and cannot be used with manageKeyDestruction"); } if (global::UIMaterial.g.generatedMaterials.TryGetValue(key, out uimaterial)) { return(uimaterial); } uimaterial = ScriptableObject.CreateInstance <global::UIMaterial>(); uimaterial.key = key; uimaterial.hashCode = ++global::UIMaterial.g.hashCodeIterator; if (uimaterial.hashCode == 2147483647) { global::UIMaterial.g.hashCodeIterator = int.MinValue; } global::UIMaterial.g.generatedMaterials.Add(key, uimaterial); uimaterial.matFirst = key; switch (useAsClipping) { case global::UIDrawCall.Clipping.None: uimaterial.matNone = key; break; case global::UIDrawCall.Clipping.HardClip: uimaterial.matHardClip = key; break; case global::UIDrawCall.Clipping.AlphaClip: uimaterial.matAlphaClip = key; break; case global::UIDrawCall.Clipping.SoftClip: uimaterial.matSoftClip = key; break; default: throw new NotImplementedException(); } uimaterial.madeMats = (global::UIMaterial.ClippingFlags)(1 << (int)useAsClipping); return(uimaterial); }
// Token: 0x06004B00 RID: 19200 RVA: 0x001220EC File Offset: 0x001202EC private static Shader GetClippingShader(Shader original, global::UIDrawCall.Clipping clipping) { if (!original) { return(null); } string text = original.name; switch (clipping) { case global::UIDrawCall.Clipping.None: { string text2 = text.Replace(" (HardClip)", string.Empty).Replace(" (AlphaClip)", string.Empty).Replace(" (SoftClip)", string.Empty); if (text2 == text) { return(original); } text = text2; break; } case global::UIDrawCall.Clipping.HardClip: if (!global::UIMaterial.ShaderNameDecor(ref text, " (AlphaClip)", " (SoftClip)", " (HardClip)")) { return(original); } break; case global::UIDrawCall.Clipping.AlphaClip: if (!global::UIMaterial.ShaderNameDecor(ref text, " (SoftClip)", " (HardClip)", " (AlphaClip)")) { return(original); } break; case global::UIDrawCall.Clipping.SoftClip: if (!global::UIMaterial.ShaderNameDecor(ref text, " (HardClip)", " (AlphaClip)", " (SoftClip)")) { return(original); } break; default: throw new NotImplementedException(); } Shader shader = Shader.Find(text); if (!shader) { throw new MissingReferenceException("Theres no shader named " + text); } return(shader); }
// Token: 0x06004B10 RID: 19216 RVA: 0x001227FC File Offset: 0x001209FC public void SetPass(int pass) { if (this.madeMats == (global::UIMaterial.ClippingFlags) 0) { this.MakeDefaultMaterial(); } for (global::UIDrawCall.Clipping clipping = global::UIDrawCall.Clipping.None; clipping < (global::UIDrawCall.Clipping) 4; clipping++) { if ((this.madeMats & (global::UIMaterial.ClippingFlags)(1 << (int)clipping)) != (global::UIMaterial.ClippingFlags) 0) { this.FastGet(clipping).SetPass(pass); } } }
// Token: 0x06004B0F RID: 19215 RVA: 0x001227AC File Offset: 0x001209AC public void SetTextureOffset(string property, Vector2 offset) { if (this.madeMats == (global::UIMaterial.ClippingFlags) 0) { this.MakeDefaultMaterial(); } for (global::UIDrawCall.Clipping clipping = global::UIDrawCall.Clipping.None; clipping < (global::UIDrawCall.Clipping) 4; clipping++) { if ((this.madeMats & (global::UIMaterial.ClippingFlags)(1 << (int)clipping)) != (global::UIMaterial.ClippingFlags) 0) { this.FastGet(clipping).SetTextureOffset(property, offset); } } }
// Token: 0x06004B0B RID: 19211 RVA: 0x0012266C File Offset: 0x0012086C public void Set(string property, Color color) { if (this.madeMats == (global::UIMaterial.ClippingFlags) 0) { this.MakeDefaultMaterial(); } for (global::UIDrawCall.Clipping clipping = global::UIDrawCall.Clipping.None; clipping < (global::UIDrawCall.Clipping) 4; clipping++) { if ((this.madeMats & (global::UIMaterial.ClippingFlags)(1 << (int)clipping)) != (global::UIMaterial.ClippingFlags) 0) { this.FastGet(clipping).SetColor(property, color); } } }
// Token: 0x06004B14 RID: 19220 RVA: 0x00122900 File Offset: 0x00120B00 private void OnDestroy() { if (this.madeMats != (global::UIMaterial.ClippingFlags) 0) { for (global::UIDrawCall.Clipping clipping = global::UIDrawCall.Clipping.None; clipping < (global::UIDrawCall.Clipping) 4; clipping++) { if ((this.madeMats & (global::UIMaterial.ClippingFlags)(1 << (int)clipping)) != (global::UIMaterial.ClippingFlags) 0) { Material material = this.FastGet(clipping); global::UIMaterial.g.generatedMaterials.Remove(material); Object.DestroyImmediate(material); } } } global::UIMaterial.g.keyedMaterials.Remove(this.key); this.matNone = (this.matFirst = (this.matHardClip = (this.matSoftClip = (this.matAlphaClip = (this.key = null))))); }
// Token: 0x06004B11 RID: 19217 RVA: 0x0012284C File Offset: 0x00120A4C public void CopyPropertiesFromMaterial(Material material) { if (this.madeMats == (global::UIMaterial.ClippingFlags) 0) { if (material == this.key) { return; } this.MakeDefaultMaterial(); } for (global::UIDrawCall.Clipping clipping = global::UIDrawCall.Clipping.None; clipping < (global::UIDrawCall.Clipping) 4; clipping++) { if ((this.madeMats & (global::UIMaterial.ClippingFlags)(1 << (int)clipping)) != (global::UIMaterial.ClippingFlags) 0) { this.FastGet(clipping).CopyPropertiesFromMaterial(material); } } }
// Token: 0x06004B0A RID: 19210 RVA: 0x001225E8 File Offset: 0x001207E8 public void Set(string property, Vector4 value) { if (this.madeMats == (global::UIMaterial.ClippingFlags) 0) { this.MakeDefaultMaterial(); } Vector4 vector; vector.x = value.x; vector.y = value.y; vector.z = (vector.w = 0f); for (global::UIDrawCall.Clipping clipping = global::UIDrawCall.Clipping.None; clipping < (global::UIDrawCall.Clipping) 4; clipping++) { if ((this.madeMats & (global::UIMaterial.ClippingFlags)(1 << (int)clipping)) != (global::UIMaterial.ClippingFlags) 0) { this.FastGet(clipping).SetVector(property, vector); } } }
// Token: 0x06004AFE RID: 19198 RVA: 0x0012203C File Offset: 0x0012023C private Material FastGet(global::UIDrawCall.Clipping clipping) { switch (clipping) { case global::UIDrawCall.Clipping.None: return(this.matNone); case global::UIDrawCall.Clipping.HardClip: return(this.matHardClip); case global::UIDrawCall.Clipping.AlphaClip: return(this.matAlphaClip); case global::UIDrawCall.Clipping.SoftClip: return(this.matSoftClip); default: throw new NotImplementedException(); } }
// Token: 0x06004B05 RID: 19205 RVA: 0x001222B0 File Offset: 0x001204B0 private Material MakeMaterial(global::UIDrawCall.Clipping clipping) { bool flag = this.madeMats == (global::UIMaterial.ClippingFlags) 0; Material material; Material material2; switch (clipping) { case global::UIDrawCall.Clipping.None: { Shader shader = this.key.shader; material = this.matNone; material2 = (this.matNone = global::UIMaterial.CreateMaterial(shader)); this.madeMats |= global::UIMaterial.ClippingFlags.None; break; } case global::UIDrawCall.Clipping.HardClip: { Shader shader = global::UIMaterial.GetClippingShader(this.key.shader, global::UIDrawCall.Clipping.HardClip); material = this.matHardClip; material2 = (this.matHardClip = global::UIMaterial.CreateMaterial(shader)); this.madeMats |= global::UIMaterial.ClippingFlags.HardClip; break; } case global::UIDrawCall.Clipping.AlphaClip: { Shader shader = global::UIMaterial.GetClippingShader(this.key.shader, global::UIDrawCall.Clipping.AlphaClip); material = this.matAlphaClip; material2 = (this.matAlphaClip = global::UIMaterial.CreateMaterial(shader)); this.madeMats |= global::UIMaterial.ClippingFlags.AlphaClip; break; } case global::UIDrawCall.Clipping.SoftClip: { Shader shader = global::UIMaterial.GetClippingShader(this.key.shader, global::UIDrawCall.Clipping.SoftClip); material = this.matSoftClip; material2 = (this.matSoftClip = global::UIMaterial.CreateMaterial(shader)); this.madeMats |= global::UIMaterial.ClippingFlags.SoftClip; break; } default: throw new NotImplementedException(); } global::UIMaterial.g.generatedMaterials.Add(material2, this); if (flag) { this.matFirst = material2; material2.CopyPropertiesFromMaterial(this.key); } else { material2.CopyPropertiesFromMaterial(this.matFirst); } if (material) { Object.DestroyImmediate(material); } return(material2); }