|
|
@@ -88,26 +88,26 @@ import java.util.List;
|
|
|
*/
|
|
|
public class TerrainPatch extends Geometry {
|
|
|
|
|
|
- protected LODGeomap geomap;
|
|
|
- protected int lod = -1; // this terrain patch's LOD
|
|
|
- private int maxLod = -1;
|
|
|
- protected int previousLod = -1;
|
|
|
- protected int lodLeft, lodTop, lodRight, lodBottom; // it's neighbour's LODs
|
|
|
-
|
|
|
- protected int size;
|
|
|
+ protected LODGeomap geomap;
|
|
|
+ protected int lod = -1; // this terrain patch's LOD
|
|
|
+ private int maxLod = -1;
|
|
|
+ protected int previousLod = -1;
|
|
|
+ protected int lodLeft, lodTop, lodRight, lodBottom; // it's neighbour's LODs
|
|
|
+
|
|
|
+ protected int size;
|
|
|
|
|
|
- protected int totalSize;
|
|
|
+ protected int totalSize;
|
|
|
|
|
|
- protected short quadrant = 1;
|
|
|
+ protected short quadrant = 1;
|
|
|
|
|
|
- // x/z step
|
|
|
- protected Vector3f stepScale;
|
|
|
+ // x/z step
|
|
|
+ protected Vector3f stepScale;
|
|
|
|
|
|
- // center of the block in relation to (0,0,0)
|
|
|
- protected Vector2f offset;
|
|
|
+ // center of the block in relation to (0,0,0)
|
|
|
+ protected Vector2f offset;
|
|
|
|
|
|
- // amount the block has been shifted.
|
|
|
- protected float offsetAmount;
|
|
|
+ // amount the block has been shifted.
|
|
|
+ protected float offsetAmount;
|
|
|
|
|
|
protected LodCalculator lodCalculator;
|
|
|
protected LodCalculatorFactory lodCalculatorFactory;
|
|
|
@@ -122,78 +122,78 @@ public class TerrainPatch extends Geometry {
|
|
|
super("TerrainPatch");
|
|
|
}
|
|
|
|
|
|
- public TerrainPatch(String name) {
|
|
|
- super(name);
|
|
|
- }
|
|
|
-
|
|
|
- public TerrainPatch(String name, int size) {
|
|
|
- this(name, size, new Vector3f(1,1,1), null, new Vector3f(0,0,0));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Constructor instantiates a new <code>TerrainPatch</code> object. The
|
|
|
- * parameters and heightmap data are then processed to generate a
|
|
|
- * <code>TriMesh</code> object for rendering.
|
|
|
- *
|
|
|
- * @param name
|
|
|
- * the name of the terrain block.
|
|
|
- * @param size
|
|
|
- * the size of the heightmap.
|
|
|
- * @param stepScale
|
|
|
- * the scale for the axes.
|
|
|
- * @param heightMap
|
|
|
- * the height data.
|
|
|
- * @param origin
|
|
|
- * the origin offset of the block.
|
|
|
- */
|
|
|
- public TerrainPatch(String name, int size, Vector3f stepScale,
|
|
|
- float[] heightMap, Vector3f origin) {
|
|
|
- this(name, size, stepScale, heightMap, origin, size, new Vector2f(), 0);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Constructor instantiates a new <code>TerrainPatch</code> object. The
|
|
|
- * parameters and heightmap data are then processed to generate a
|
|
|
- * <code>TriMesh</code> object for renderering.
|
|
|
- *
|
|
|
- * @param name
|
|
|
- * the name of the terrain block.
|
|
|
- * @param size
|
|
|
- * the size of the block.
|
|
|
- * @param stepScale
|
|
|
- * the scale for the axes.
|
|
|
- * @param heightMap
|
|
|
- * the height data.
|
|
|
- * @param origin
|
|
|
- * the origin offset of the block.
|
|
|
- * @param totalSize
|
|
|
- * the total size of the terrain. (Higher if the block is part of
|
|
|
- * a <code>TerrainPage</code> tree.
|
|
|
- * @param offset
|
|
|
- * the offset for texture coordinates.
|
|
|
- * @param offsetAmount
|
|
|
- * the total offset amount. Used for texture coordinates.
|
|
|
- */
|
|
|
- public TerrainPatch(String name, int size, Vector3f stepScale,
|
|
|
- float[] heightMap, Vector3f origin, int totalSize,
|
|
|
- Vector2f offset, float offsetAmount) {
|
|
|
- super(name);
|
|
|
- this.size = size;
|
|
|
- this.stepScale = stepScale;
|
|
|
- this.totalSize = totalSize;
|
|
|
- this.offsetAmount = offsetAmount;
|
|
|
- this.offset = offset;
|
|
|
-
|
|
|
- setLocalTranslation(origin);
|
|
|
-
|
|
|
- FloatBuffer heightBuffer = BufferUtils.createFloatBuffer(size*size);
|
|
|
- heightBuffer.put(heightMap);
|
|
|
-
|
|
|
- geomap = new LODGeomap(size, heightBuffer);
|
|
|
- Mesh m = geomap.createMesh(stepScale, new Vector2f(1,1), offset, offsetAmount, totalSize, false);
|
|
|
- setMesh(m);
|
|
|
-
|
|
|
- }
|
|
|
+ public TerrainPatch(String name) {
|
|
|
+ super(name);
|
|
|
+ }
|
|
|
+
|
|
|
+ public TerrainPatch(String name, int size) {
|
|
|
+ this(name, size, new Vector3f(1,1,1), null, new Vector3f(0,0,0));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Constructor instantiates a new <code>TerrainPatch</code> object. The
|
|
|
+ * parameters and heightmap data are then processed to generate a
|
|
|
+ * <code>TriMesh</code> object for rendering.
|
|
|
+ *
|
|
|
+ * @param name
|
|
|
+ * the name of the terrain block.
|
|
|
+ * @param size
|
|
|
+ * the size of the heightmap.
|
|
|
+ * @param stepScale
|
|
|
+ * the scale for the axes.
|
|
|
+ * @param heightMap
|
|
|
+ * the height data.
|
|
|
+ * @param origin
|
|
|
+ * the origin offset of the block.
|
|
|
+ */
|
|
|
+ public TerrainPatch(String name, int size, Vector3f stepScale,
|
|
|
+ float[] heightMap, Vector3f origin) {
|
|
|
+ this(name, size, stepScale, heightMap, origin, size, new Vector2f(), 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Constructor instantiates a new <code>TerrainPatch</code> object. The
|
|
|
+ * parameters and heightmap data are then processed to generate a
|
|
|
+ * <code>TriMesh</code> object for renderering.
|
|
|
+ *
|
|
|
+ * @param name
|
|
|
+ * the name of the terrain block.
|
|
|
+ * @param size
|
|
|
+ * the size of the block.
|
|
|
+ * @param stepScale
|
|
|
+ * the scale for the axes.
|
|
|
+ * @param heightMap
|
|
|
+ * the height data.
|
|
|
+ * @param origin
|
|
|
+ * the origin offset of the block.
|
|
|
+ * @param totalSize
|
|
|
+ * the total size of the terrain. (Higher if the block is part of
|
|
|
+ * a <code>TerrainPage</code> tree.
|
|
|
+ * @param offset
|
|
|
+ * the offset for texture coordinates.
|
|
|
+ * @param offsetAmount
|
|
|
+ * the total offset amount. Used for texture coordinates.
|
|
|
+ */
|
|
|
+ public TerrainPatch(String name, int size, Vector3f stepScale,
|
|
|
+ float[] heightMap, Vector3f origin, int totalSize,
|
|
|
+ Vector2f offset, float offsetAmount) {
|
|
|
+ super(name);
|
|
|
+ this.size = size;
|
|
|
+ this.stepScale = stepScale;
|
|
|
+ this.totalSize = totalSize;
|
|
|
+ this.offsetAmount = offsetAmount;
|
|
|
+ this.offset = offset;
|
|
|
+
|
|
|
+ setLocalTranslation(origin);
|
|
|
+
|
|
|
+ FloatBuffer heightBuffer = BufferUtils.createFloatBuffer(size*size);
|
|
|
+ heightBuffer.put(heightMap);
|
|
|
+
|
|
|
+ geomap = new LODGeomap(size, heightBuffer);
|
|
|
+ Mesh m = geomap.createMesh(stepScale, new Vector2f(1,1), offset, offsetAmount, totalSize, false);
|
|
|
+ setMesh(m);
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* This calculation is slow, so don't use it often.
|
|
|
@@ -216,23 +216,23 @@ public class TerrainPatch extends Geometry {
|
|
|
return lodEntropy;
|
|
|
}
|
|
|
|
|
|
- public FloatBuffer getHeightmap() {
|
|
|
- return geomap.getHeightData();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * The maximum lod supported by this terrain patch.
|
|
|
- * If the patch size is 32 then the returned value would be log2(32)-2 = 3
|
|
|
- * You can then use that value, 3, to see how many times you can divide 32 by 2
|
|
|
- * before the terrain gets too un-detailed (can't stitch it any further).
|
|
|
- * @return
|
|
|
- */
|
|
|
- public int getMaxLod() {
|
|
|
- if (maxLod < 0)
|
|
|
- maxLod = Math.max(1, (int) (FastMath.log(size-1)/FastMath.log(2)) -1); // -1 forces our minimum of 4 triangles wide
|
|
|
-
|
|
|
- return maxLod;
|
|
|
- }
|
|
|
+ public FloatBuffer getHeightmap() {
|
|
|
+ return geomap.getHeightData();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * The maximum lod supported by this terrain patch.
|
|
|
+ * If the patch size is 32 then the returned value would be log2(32)-2 = 3
|
|
|
+ * You can then use that value, 3, to see how many times you can divide 32 by 2
|
|
|
+ * before the terrain gets too un-detailed (can't stitch it any further).
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public int getMaxLod() {
|
|
|
+ if (maxLod < 0)
|
|
|
+ maxLod = Math.max(1, (int) (FastMath.log(size-1)/FastMath.log(2)) -1); // -1 forces our minimum of 4 triangles wide
|
|
|
+
|
|
|
+ return maxLod;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
@@ -243,30 +243,30 @@ public class TerrainPatch extends Geometry {
|
|
|
* @param updates update objects that may or may not contain this terrain patch
|
|
|
* @return true if the geometry needs re-indexing
|
|
|
*/
|
|
|
- protected boolean calculateLod(List<Vector3f> locations, HashMap<String,UpdatedTerrainPatch> updates) {
|
|
|
+ protected boolean calculateLod(List<Vector3f> locations, HashMap<String,UpdatedTerrainPatch> updates) {
|
|
|
return lodCalculator.calculateLod(locations, updates);
|
|
|
}
|
|
|
|
|
|
- protected void reIndexGeometry(HashMap<String,UpdatedTerrainPatch> updated) {
|
|
|
-
|
|
|
- UpdatedTerrainPatch utp = updated.get(getName());
|
|
|
-
|
|
|
- if (utp != null && (utp.isReIndexNeeded() || utp.isFixEdges()) ) {
|
|
|
- int pow = (int) Math.pow(2, utp.getNewLod());
|
|
|
- boolean left = utp.getLeftLod() > utp.getNewLod();
|
|
|
- boolean top = utp.getTopLod() > utp.getNewLod();
|
|
|
- boolean right = utp.getRightLod() > utp.getNewLod();
|
|
|
- boolean bottom = utp.getBottomLod() > utp.getNewLod();
|
|
|
-
|
|
|
+ protected void reIndexGeometry(HashMap<String,UpdatedTerrainPatch> updated) {
|
|
|
+
|
|
|
+ UpdatedTerrainPatch utp = updated.get(getName());
|
|
|
+
|
|
|
+ if (utp != null && (utp.isReIndexNeeded() || utp.isFixEdges()) ) {
|
|
|
+ int pow = (int) Math.pow(2, utp.getNewLod());
|
|
|
+ boolean left = utp.getLeftLod() > utp.getNewLod();
|
|
|
+ boolean top = utp.getTopLod() > utp.getNewLod();
|
|
|
+ boolean right = utp.getRightLod() > utp.getNewLod();
|
|
|
+ boolean bottom = utp.getBottomLod() > utp.getNewLod();
|
|
|
+
|
|
|
IntBuffer ib = null;
|
|
|
if (lodCalculator.usesVariableLod())
|
|
|
ib = geomap.writeIndexArrayLodVariable(null, pow, (int) Math.pow(2, utp.getRightLod()), (int) Math.pow(2, utp.getTopLod()), (int) Math.pow(2, utp.getLeftLod()), (int) Math.pow(2, utp.getBottomLod()));
|
|
|
else
|
|
|
ib = geomap.writeIndexArrayLodDiff(null, pow, right, top, left, bottom);
|
|
|
- utp.setNewIndexBuffer(ib);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
+ utp.setNewIndexBuffer(ib);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
|
|
|
public Vector2f getTex(float x, float z, Vector2f store) {
|
|
|
@@ -768,176 +768,176 @@ public class TerrainPatch extends Geometry {
|
|
|
getMesh().setDynamic();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Returns the offset amount this terrain block uses for textures.
|
|
|
- *
|
|
|
- * @return The current offset amount.
|
|
|
- */
|
|
|
- public float getOffsetAmount() {
|
|
|
- return offsetAmount;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns the step scale that stretches the height map.
|
|
|
- *
|
|
|
- * @return The current step scale.
|
|
|
- */
|
|
|
- public Vector3f getStepScale() {
|
|
|
- return stepScale;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns the total size of the terrain.
|
|
|
- *
|
|
|
- * @return The terrain's total size.
|
|
|
- */
|
|
|
- public int getTotalSize() {
|
|
|
- return totalSize;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns the size of this terrain block.
|
|
|
- *
|
|
|
- * @return The current block size.
|
|
|
- */
|
|
|
- public int getSize() {
|
|
|
- return size;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns the current offset amount. This is used when building texture
|
|
|
- * coordinates.
|
|
|
- *
|
|
|
- * @return The current offset amount.
|
|
|
- */
|
|
|
- public Vector2f getOffset() {
|
|
|
- return offset;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Sets the value for the current offset amount to use when building texture
|
|
|
- * coordinates. Note that this does <b>NOT </b> rebuild the terrain at all.
|
|
|
- * This is mostly used for outside constructors of terrain blocks.
|
|
|
- *
|
|
|
- * @param offset
|
|
|
- * The new texture offset.
|
|
|
- */
|
|
|
- public void setOffset(Vector2f offset) {
|
|
|
- this.offset = offset;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Sets the size of this terrain block. Note that this does <b>NOT </b>
|
|
|
- * rebuild the terrain at all. This is mostly used for outside constructors
|
|
|
- * of terrain blocks.
|
|
|
- *
|
|
|
- * @param size
|
|
|
- * The new size.
|
|
|
- */
|
|
|
- public void setSize(int size) {
|
|
|
- this.size = size;
|
|
|
-
|
|
|
- maxLod = -1; // reset it
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Sets the total size of the terrain . Note that this does <b>NOT </b>
|
|
|
- * rebuild the terrain at all. This is mostly used for outside constructors
|
|
|
- * of terrain blocks.
|
|
|
- *
|
|
|
- * @param totalSize
|
|
|
- * The new total size.
|
|
|
- */
|
|
|
- public void setTotalSize(int totalSize) {
|
|
|
- this.totalSize = totalSize;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Sets the step scale of this terrain block's height map. Note that this
|
|
|
- * does <b>NOT </b> rebuild the terrain at all. This is mostly used for
|
|
|
- * outside constructors of terrain blocks.
|
|
|
- *
|
|
|
- * @param stepScale
|
|
|
- * The new step scale.
|
|
|
- */
|
|
|
- public void setStepScale(Vector3f stepScale) {
|
|
|
- this.stepScale = stepScale;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Sets the offset of this terrain texture map. Note that this does <b>NOT
|
|
|
- * </b> rebuild the terrain at all. This is mostly used for outside
|
|
|
- * constructors of terrain blocks.
|
|
|
- *
|
|
|
- * @param offsetAmount
|
|
|
- * The new texture offset.
|
|
|
- */
|
|
|
- public void setOffsetAmount(float offsetAmount) {
|
|
|
- this.offsetAmount = offsetAmount;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @return Returns the quadrant.
|
|
|
- */
|
|
|
- public short getQuadrant() {
|
|
|
- return quadrant;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @param quadrant
|
|
|
- * The quadrant to set.
|
|
|
- */
|
|
|
- public void setQuadrant(short quadrant) {
|
|
|
- this.quadrant = quadrant;
|
|
|
- }
|
|
|
-
|
|
|
- public int getLod() {
|
|
|
- return lod;
|
|
|
- }
|
|
|
-
|
|
|
- public void setLod(int lod) {
|
|
|
- this.lod = lod;
|
|
|
- }
|
|
|
-
|
|
|
- public int getPreviousLod() {
|
|
|
- return previousLod;
|
|
|
- }
|
|
|
-
|
|
|
- public void setPreviousLod(int previousLod) {
|
|
|
- this.previousLod = previousLod;
|
|
|
- }
|
|
|
-
|
|
|
- protected int getLodLeft() {
|
|
|
- return lodLeft;
|
|
|
- }
|
|
|
-
|
|
|
- protected void setLodLeft(int lodLeft) {
|
|
|
- this.lodLeft = lodLeft;
|
|
|
- }
|
|
|
-
|
|
|
- protected int getLodTop() {
|
|
|
- return lodTop;
|
|
|
- }
|
|
|
-
|
|
|
- protected void setLodTop(int lodTop) {
|
|
|
- this.lodTop = lodTop;
|
|
|
- }
|
|
|
-
|
|
|
- protected int getLodRight() {
|
|
|
- return lodRight;
|
|
|
- }
|
|
|
-
|
|
|
- protected void setLodRight(int lodRight) {
|
|
|
- this.lodRight = lodRight;
|
|
|
- }
|
|
|
-
|
|
|
- protected int getLodBottom() {
|
|
|
- return lodBottom;
|
|
|
- }
|
|
|
-
|
|
|
- protected void setLodBottom(int lodBottom) {
|
|
|
- this.lodBottom = lodBottom;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * Returns the offset amount this terrain block uses for textures.
|
|
|
+ *
|
|
|
+ * @return The current offset amount.
|
|
|
+ */
|
|
|
+ public float getOffsetAmount() {
|
|
|
+ return offsetAmount;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the step scale that stretches the height map.
|
|
|
+ *
|
|
|
+ * @return The current step scale.
|
|
|
+ */
|
|
|
+ public Vector3f getStepScale() {
|
|
|
+ return stepScale;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the total size of the terrain.
|
|
|
+ *
|
|
|
+ * @return The terrain's total size.
|
|
|
+ */
|
|
|
+ public int getTotalSize() {
|
|
|
+ return totalSize;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the size of this terrain block.
|
|
|
+ *
|
|
|
+ * @return The current block size.
|
|
|
+ */
|
|
|
+ public int getSize() {
|
|
|
+ return size;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the current offset amount. This is used when building texture
|
|
|
+ * coordinates.
|
|
|
+ *
|
|
|
+ * @return The current offset amount.
|
|
|
+ */
|
|
|
+ public Vector2f getOffset() {
|
|
|
+ return offset;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the value for the current offset amount to use when building texture
|
|
|
+ * coordinates. Note that this does <b>NOT </b> rebuild the terrain at all.
|
|
|
+ * This is mostly used for outside constructors of terrain blocks.
|
|
|
+ *
|
|
|
+ * @param offset
|
|
|
+ * The new texture offset.
|
|
|
+ */
|
|
|
+ public void setOffset(Vector2f offset) {
|
|
|
+ this.offset = offset;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the size of this terrain block. Note that this does <b>NOT </b>
|
|
|
+ * rebuild the terrain at all. This is mostly used for outside constructors
|
|
|
+ * of terrain blocks.
|
|
|
+ *
|
|
|
+ * @param size
|
|
|
+ * The new size.
|
|
|
+ */
|
|
|
+ public void setSize(int size) {
|
|
|
+ this.size = size;
|
|
|
+
|
|
|
+ maxLod = -1; // reset it
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the total size of the terrain . Note that this does <b>NOT </b>
|
|
|
+ * rebuild the terrain at all. This is mostly used for outside constructors
|
|
|
+ * of terrain blocks.
|
|
|
+ *
|
|
|
+ * @param totalSize
|
|
|
+ * The new total size.
|
|
|
+ */
|
|
|
+ public void setTotalSize(int totalSize) {
|
|
|
+ this.totalSize = totalSize;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the step scale of this terrain block's height map. Note that this
|
|
|
+ * does <b>NOT </b> rebuild the terrain at all. This is mostly used for
|
|
|
+ * outside constructors of terrain blocks.
|
|
|
+ *
|
|
|
+ * @param stepScale
|
|
|
+ * The new step scale.
|
|
|
+ */
|
|
|
+ public void setStepScale(Vector3f stepScale) {
|
|
|
+ this.stepScale = stepScale;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the offset of this terrain texture map. Note that this does <b>NOT
|
|
|
+ * </b> rebuild the terrain at all. This is mostly used for outside
|
|
|
+ * constructors of terrain blocks.
|
|
|
+ *
|
|
|
+ * @param offsetAmount
|
|
|
+ * The new texture offset.
|
|
|
+ */
|
|
|
+ public void setOffsetAmount(float offsetAmount) {
|
|
|
+ this.offsetAmount = offsetAmount;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return Returns the quadrant.
|
|
|
+ */
|
|
|
+ public short getQuadrant() {
|
|
|
+ return quadrant;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param quadrant
|
|
|
+ * The quadrant to set.
|
|
|
+ */
|
|
|
+ public void setQuadrant(short quadrant) {
|
|
|
+ this.quadrant = quadrant;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLod() {
|
|
|
+ return lod;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLod(int lod) {
|
|
|
+ this.lod = lod;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getPreviousLod() {
|
|
|
+ return previousLod;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPreviousLod(int previousLod) {
|
|
|
+ this.previousLod = previousLod;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected int getLodLeft() {
|
|
|
+ return lodLeft;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void setLodLeft(int lodLeft) {
|
|
|
+ this.lodLeft = lodLeft;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected int getLodTop() {
|
|
|
+ return lodTop;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void setLodTop(int lodTop) {
|
|
|
+ this.lodTop = lodTop;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected int getLodRight() {
|
|
|
+ return lodRight;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void setLodRight(int lodRight) {
|
|
|
+ this.lodRight = lodRight;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected int getLodBottom() {
|
|
|
+ return lodBottom;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void setLodBottom(int lodBottom) {
|
|
|
+ this.lodBottom = lodBottom;
|
|
|
+ }
|
|
|
|
|
|
public LodCalculator getLodCalculator() {
|
|
|
return lodCalculator;
|