Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
ShaderMacro.cs
浏览该文件的文档.
1namespace Engine.Graphics {
2 public class ShaderMacro {
3 static string m_nameChars1 = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
4
5 static string m_nameChars2 = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
6
7 public readonly string Name;
8
9 public readonly string Value;
10
11 public ShaderMacro(string name) : this(name, string.Empty) { }
12
13 public ShaderMacro(string name, string value) {
14 if (string.IsNullOrEmpty(name)) {
15 throw new ArgumentNullException(nameof(name));
16 }
17 ArgumentNullException.ThrowIfNull(value);
18 for (int i = 0; i < name.Length; i++) {
19 if ((i == 0 && m_nameChars1.IndexOf(name[i]) == -1)
20 || (i > 0 && m_nameChars2.IndexOf(name[i]) == -1)) {
21 throw new ArgumentException("Invalid shader macro name.");
22 }
23 }
24 if (value.IndexOf('\n') != -1
25 || (value.Length > 0 && (char.IsWhiteSpace(value[0]) || char.IsWhiteSpace(value[^1])))) {
26 throw new ArgumentException("Invalid shader macro value.");
27 }
28 Name = name;
29 Value = value;
30 }
31
32 public override bool Equals(object obj) {
33 if (obj is ShaderMacro) {
34 ShaderMacro shaderMacro = (ShaderMacro)obj;
35 if (shaderMacro.Name == Name) {
36 return shaderMacro.Value == Value;
37 }
38 }
39 return false;
40 }
41
42 public override int GetHashCode() => Name.GetHashCode() + Value.GetHashCode();
43 }
44}
ShaderMacro(string name, string value)
override bool Equals(object obj)