Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
TerrainGeometry.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
5 public class TerrainGeometry : IDisposable {
7
9
11
13
15
17
19
20 public Dictionary<Texture2D, TerrainGeometry> Draws;
21
23
24 [Obsolete("此方法将弃用")]
25 public TerrainGeometry() {
27 }
28
29 public TerrainGeometry(Texture2D texture2D) {
31 DefaultTexture = texture2D;
32 //添加到默认纹理区
33 Draws = new Dictionary<Texture2D, TerrainGeometry> { { DefaultTexture, this } };
34 }
35
36 public virtual void InitSubsets() {
38 for (int i = 0; i < 7; i++) {
40 }
47 }
48
49 public virtual TerrainGeometry GetGeometry(Texture2D texture) {
50 if (Draws?.TryGetValue(texture, out TerrainGeometry geometries) ?? false) {
51 return geometries;
52 }
53 TerrainGeometry geometry = new(texture);
54 Draws ??= [];
55 Draws.Add(texture, geometry);
56 return geometry;
57 }
58
59 public virtual void ClearGeometry() {
60 foreach (TerrainGeometrySubset subset in Subsets) {
61 subset.Indices.Clear();
62 subset.Vertices.Clear();
63 }
64 if (Draws == null) {
65 return;
66 }
67 foreach (KeyValuePair<Texture2D, TerrainGeometry> drawItem in Draws) {
68 if (drawItem.Value != this) {
69 drawItem.Value.ClearGeometry();
70 }
71 }
72 Draws.Clear();
73 if (DefaultTexture != null) {
74 Draws.Add(DefaultTexture, this);
75 }
76 }
77
78 public virtual void Dispose() {
79 Utilities.Dispose(ref SubsetOpaque);
80 Utilities.Dispose(ref SubsetAlphaTest);
81 Utilities.Dispose(ref SubsetTransparent);
82 for (int i = 0; i < OpaqueSubsetsByFace.Length; i++)
83 {
84 Utilities.Dispose(ref OpaqueSubsetsByFace[i]);
85 }
86 for (int j = 0; j < AlphaTestSubsetsByFace.Length; j++)
87 {
88 Utilities.Dispose(ref AlphaTestSubsetsByFace[j]);
89 }
90 for (int k = 0; k < TransparentSubsetsByFace.Length; k++)
91 {
92 Utilities.Dispose(ref TransparentSubsetsByFace[k]);
93 }
94 for (int l = 0; l < Subsets.Length; l++)
95 {
96 Utilities.Dispose(ref Subsets[l]);
97 }
98 foreach (TerrainGeometry terrainGeometry in Draws.Values) {
99 terrainGeometry?.Dispose();
100 }
101 }
102 }
103}
TerrainGeometrySubset[] Subsets
TerrainGeometrySubset[] TransparentSubsetsByFace
TerrainGeometrySubset SubsetTransparent
Dictionary< Texture2D, TerrainGeometry > Draws
TerrainGeometry(Texture2D texture2D)
TerrainGeometrySubset SubsetAlphaTest
TerrainGeometrySubset SubsetOpaque
TerrainGeometrySubset[] AlphaTestSubsetsByFace
virtual TerrainGeometry GetGeometry(Texture2D texture)
TerrainGeometrySubset[] OpaqueSubsetsByFace
TerrainGeometryDynamicArray< TerrainVertex > Vertices
TerrainGeometryDynamicArray< int > Indices