aboutsummaryrefslogtreecommitdiffstats
path: root/src/ru/olamedia/geom/ChunkMesh.java
blob: 3ff36df100dd8030228a683b6c989d348f217626 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package ru.olamedia.geom;

import ru.olamedia.olacraft.render.jogl.ChunkRangeRenderer;

public class ChunkMesh {
	private ImmModeMesh opaqueMesh;
	private ImmModeMesh mesh;
	private boolean isCompiled = false;
	private boolean isValid = false;
	private int vertexCount = 0;

	private void updateVertexCount() {
		vertexCount = 0;
		if (null != mesh) {
			vertexCount += mesh.getVertexCount();
		}
		if (null != opaqueMesh) {
			vertexCount += opaqueMesh.getVertexCount();
		}
	}

	public int getVertexCount() {
		return vertexCount;
	}

	public void setMesh(ImmModeMesh m) {
		mesh = m;
		updateVertexCount();
	}

	public void setOpaqueMesh(ImmModeMesh m) {
		opaqueMesh = m;
		updateVertexCount();
	}

	public void render(int pass) {
		if (pass == ChunkRangeRenderer.OPAQUE_PASS) {
			if (null != opaqueMesh) {
				opaqueMesh.draw();
			}
		} else {
			if (null != mesh) {
				mesh.draw();
			}
		}
	}

	public boolean isCompiled() {
		return isCompiled;
	}

	public void setCompiled(boolean isCompiled) {
		this.isCompiled = isCompiled;
	}

	public boolean isValid() {
		return isValid;
	}

	public void setValid(boolean isValid) {
		this.isValid = isValid;
	}

	public boolean isEmpty() {
		return isValid() && (null == mesh) && (null == opaqueMesh);
	}

	public ImmModeMesh getTransparentMesh() {
		return mesh;
	}

	public ImmModeMesh getOpaqueMesh() {
		return opaqueMesh;
	}

	public int getOpaqueVertexCount() {
		return null == opaqueMesh ? 0 : opaqueMesh.getVertexCount();
	}

	public int getTransparentVertexCount() {
		return null == mesh ? 0 : mesh.getVertexCount();
	}
}