Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
VertexElement.cs
浏览该文件的文档.
1namespace Engine.Graphics {
2 public class VertexElement : IEquatable<VertexElement> {
3 readonly int m_hashCode;
4
5 public int Offset { get; set; }
6
7 public VertexElementFormat Format { get; }
8
9 public string Semantic { get; }
10
11 public string SemanticName { get; }
12
13 public int SemanticIndex { get; }
14
15 public VertexElement(VertexElementFormat format, string semantic) : this(-1, format, semantic) { }
16
17 public VertexElement(VertexElementFormat format, VertexElementSemantic semantic) : this(-1, format, semantic) { }
18
19 public VertexElement(int offset, VertexElementFormat format, string semantic) {
20 if (string.IsNullOrEmpty(semantic)) {
21 throw new ArgumentException("semantic cannot be empty or null.");
22 }
23 int num = semantic.Length;
24 while (num > 0
25 && char.IsDigit(semantic[num - 1])) {
26 num--;
27 }
28 if (num == 0) {
29 throw new ArgumentException("semantic cannot start with a digit.");
30 }
31 Offset = offset;
32 Format = format;
33 Semantic = semantic;
34 SemanticName = semantic.Substring(0, num);
35 SemanticIndex = num < semantic.Length ? int.Parse(semantic.Substring(num)) : 0;
36 m_hashCode = Offset.GetHashCode() + Format.GetHashCode() + Semantic.GetHashCode();
37 }
38
39 public VertexElement(int offset, VertexElementFormat format, VertexElementSemantic semantic) : this(
40 offset,
41 format,
42 semantic.GetSemanticString()
43 ) { }
44
45 public override int GetHashCode() => m_hashCode;
46
47 public override bool Equals(object other) => other is VertexElement && Equals((VertexElement)other);
48
49 public bool Equals(VertexElement other) => other != null && other.Offset == Offset && other.Format == Format && other.Semantic == Semantic;
50
51 public static bool operator ==(VertexElement ve1, VertexElement ve2) => ve1?.Equals(ve2) ?? ((object)ve2 == null);
52
53 public static bool operator !=(VertexElement ve1, VertexElement ve2) => !(ve1 == ve2);
54 }
55}
static bool operator==(VertexElement ve1, VertexElement ve2)
VertexElement(VertexElementFormat format, string semantic)
VertexElement(int offset, VertexElementFormat format, string semantic)
override bool Equals(object other)
VertexElement(int offset, VertexElementFormat format, VertexElementSemantic semantic)
VertexElement(VertexElementFormat format, VertexElementSemantic semantic)
bool Equals(VertexElement other)
static bool operator!=(VertexElement ve1, VertexElement ve2)