Class IntMesh
- java.lang.Object
-
- gaiasky.util.gdx.mesh.IntMesh
-
- All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable
public class IntMesh extends java.lang.Object implements com.badlogic.gdx.utils.Disposable
This implementation uses 32-bit integer indices instead of 16-bit shorts used in
Mesh
A Mesh holds vertices composed of attributes specified by a
VertexAttributes
instance. The vertices are held either in VRAM in form of vertex buffer objects or in RAM in form of vertex arrays. The former variant is more performant and is preferred over vertex arrays if hardware supports it.Meshes are automatically managed. If the OpenGL context is lost all vertex buffer objects get invalidated and must be reloaded when the context is recreated. This only happens on Android when a user switches to another application or receives an incoming call. A managed Mesh will be reloaded automagically so you don't have to do this manually.
A Mesh consists of vertices and optionally indices which specify which vertices define a triangle. Each vertex is composed of attributes such as position, normal, color or texture coordinate. Note that not all of this attributes must be given, except for position which is non-optional. Each attribute has an alias which is used when rendering a Mesh in OpenGL ES 2.0. The alias is used to bind a specific vertex attribute to a shader attribute. The shader source and the alias of the attribute must match exactly for this to work.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
IntMesh.VertexDataType
-
Constructor Summary
Constructors Modifier Constructor Description IntMesh(boolean staticVertices, boolean staticIndices, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttributes attributes)
Creates a new Mesh with the given attributes.IntMesh(boolean isStatic, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttribute... attributes)
Creates a new Mesh with the given attributes.IntMesh(boolean isStatic, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttributes attributes)
Creates a new Mesh with the given attributes.IntMesh(IntMesh.VertexDataType type, boolean isStatic, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttribute... attributes)
Creates a new Mesh with the given attributes.IntMesh(IntMesh.VertexDataType type, boolean isStatic, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttributes attributes)
Creates a new Mesh with the given attributes.protected
IntMesh(IntVertexData vertices, IntIndexData indices, boolean isVertexArray)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
bind(ExtShaderProgram shader)
Binds the underlyingVertexBufferObject
andIntIndexBufferObject
if indices where given.void
bind(ExtShaderProgram shader, int[] locations)
Binds the underlyingVertexBufferObject
andIntIndexBufferObject
if indices where given.com.badlogic.gdx.math.collision.BoundingBox
calculateBoundingBox()
Calculates theBoundingBox
of the vertices contained in this mesh.void
calculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox bbox)
Calculates theBoundingBox
of the vertices contained in this mesh.com.badlogic.gdx.math.collision.BoundingBox
calculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out, int offset, int count)
Calculate theBoundingBox
of the specified part.com.badlogic.gdx.math.collision.BoundingBox
calculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Calculate theBoundingBox
of the specified part.float
calculateRadius(float centerX, float centerY, float centerZ)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.float
calculateRadius(float centerX, float centerY, float centerZ, int offset, int count)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.float
calculateRadius(float centerX, float centerY, float centerZ, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Calculates the radius of the bounding sphere around the specified center for the specified part.float
calculateRadius(com.badlogic.gdx.math.Vector3 center)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.float
calculateRadius(com.badlogic.gdx.math.Vector3 center, int offset, int count)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.float
calculateRadius(com.badlogic.gdx.math.Vector3 center, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.float
calculateRadiusSquared(float centerX, float centerY, float centerZ, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.static void
clearAllMeshes(com.badlogic.gdx.Application app)
Will clear the managed mesh cache.IntMesh
copy(boolean isStatic)
Copies this mesh.IntMesh
copy(boolean isStatic, boolean removeDuplicates, int[] usage)
Copies this mesh optionally removing duplicate vertices and/or reducing the amount of attributes.void
dispose()
Frees all resources associated with this Meshcom.badlogic.gdx.math.collision.BoundingBox
extendBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out, int offset, int count)
Extends the specifiedBoundingBox
with the specified part.com.badlogic.gdx.math.collision.BoundingBox
extendBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Extends the specifiedBoundingBox
with the specified part.void
getIndices(int[] indices)
Copies the indices from the Mesh to the int array.void
getIndices(int[] indices, int destOffset)
Copies the indices from the Mesh to the int array.void
getIndices(int srcOffset, int[] indices, int destOffset)
Copies the remaining indices from the Mesh to the int array.void
getIndices(int srcOffset, int count, int[] indices, int destOffset)
Copies the indices from the Mesh to the int array.java.nio.IntBuffer
getIndicesBuffer()
static java.lang.String
getManagedStatus()
int
getMaxIndices()
int
getMaxVertices()
int
getNumIndices()
int
getNumVertices()
com.badlogic.gdx.graphics.VertexAttribute
getVertexAttribute(int usage)
Returns the firstVertexAttribute
having the givenVertexAttributes.Usage
.com.badlogic.gdx.graphics.VertexAttributes
getVertexAttributes()
int
getVertexSize()
float[]
getVertices(float[] vertices)
Copies the vertices from the Mesh to the float array.float[]
getVertices(int srcOffset, float[] vertices)
Copies the the remaining vertices from the Mesh to the float array.float[]
getVertices(int srcOffset, int count, float[] vertices)
Copies the specified vertices from the Mesh to the float array.float[]
getVertices(int srcOffset, int count, float[] vertices, int destOffset)
Copies the specified vertices from the Mesh to the float array.java.nio.FloatBuffer
getVerticesBuffer()
static void
invalidateAllMeshes(com.badlogic.gdx.Application app)
Invalidates all meshes so the next time they are rendered new VBO handles are generated.void
render(ExtShaderProgram shader, int primitiveType)
Renders the mesh using the given primitive type.void
render(ExtShaderProgram shader, int primitiveType, int offset, int count)
Renders the mesh using the given primitive type.void
render(ExtShaderProgram shader, int primitiveType, int offset, int count, boolean autoBind)
Renders the mesh using the given primitive type.void
scale(float scaleX, float scaleY, float scaleZ)
Method to scale the positions in the mesh.void
setAutoBind(boolean autoBind)
Sets whether to bind the underlyingVertexArray
orVertexBufferObject
automatically on a call to one of the render methods.IntMesh
setIndices(int[] indices)
Sets the indices of this MeshIntMesh
setIndices(int[] indices, int offset, int count)
Sets the indices of this Mesh.IntMesh
setVertices(float[] vertices)
Sets the vertices of this Mesh.IntMesh
setVertices(float[] vertices, int offset, int count)
Sets the vertices of this Mesh.void
transform(com.badlogic.gdx.math.Matrix4 matrix)
Method to transform the positions in the mesh.static void
transform(com.badlogic.gdx.math.Matrix4 matrix, float[] vertices, int vertexSize, int offset, int dimensions, int start, int count)
Method to transform the positions in the float array.void
transform(com.badlogic.gdx.math.Matrix4 matrix, int start, int count)
void
transformUV(com.badlogic.gdx.math.Matrix3 matrix)
Method to transform the texture coordinates in the mesh.static void
transformUV(com.badlogic.gdx.math.Matrix3 matrix, float[] vertices, int vertexSize, int offset, int start, int count)
Method to transform the texture coordinates (UV) in the float array.protected void
transformUV(com.badlogic.gdx.math.Matrix3 matrix, int start, int count)
void
unbind(ExtShaderProgram shader)
Unbinds the underlyingVertexBufferObject
andIntIndexBufferObject
is indices were given.void
unbind(ExtShaderProgram shader, int[] locations)
Unbinds the underlyingVertexBufferObject
andIntIndexBufferObject
is indices were given.IntMesh
updateVertices(int targetOffset, float[] source)
Update (a portion of) the vertices.IntMesh
updateVertices(int targetOffset, float[] source, int sourceOffset, int count)
Update (a portion of) the vertices.
-
-
-
Constructor Detail
-
IntMesh
protected IntMesh(IntVertexData vertices, IntIndexData indices, boolean isVertexArray)
-
IntMesh
public IntMesh(boolean isStatic, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttribute... attributes)
Creates a new Mesh with the given attributes.- Parameters:
isStatic
- whether this mesh is static or not. Allows for internal optimizations.maxVertices
- the maximum number of vertices this mesh can holdmaxIndices
- the maximum number of indices this mesh can holdattributes
- theVertexAttribute
s. Each vertex attribute defines one property of a vertex such as position, normal or texture coordinate
-
IntMesh
public IntMesh(boolean isStatic, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttributes attributes)
Creates a new Mesh with the given attributes.- Parameters:
isStatic
- whether this mesh is static or not. Allows for internal optimizations.maxVertices
- the maximum number of vertices this mesh can holdmaxIndices
- the maximum number of indices this mesh can holdattributes
- theVertexAttributes
. Each vertex attribute defines one property of a vertex such as position, normal or texture coordinate
-
IntMesh
public IntMesh(boolean staticVertices, boolean staticIndices, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttributes attributes)
Creates a new Mesh with the given attributes. Adds extra optimizations for dynamic (frequently modified) meshes.- Parameters:
staticVertices
- whether vertices of this mesh are static or not. Allows for internal optimizations.staticIndices
- whether indices of this mesh are static or not. Allows for internal optimizations.maxVertices
- the maximum number of vertices this mesh can holdmaxIndices
- the maximum number of indices this mesh can holdattributes
- theVertexAttributes
. Each vertex attribute defines one property of a vertex such as position, normal or texture coordinate
-
IntMesh
public IntMesh(IntMesh.VertexDataType type, boolean isStatic, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttribute... attributes)
Creates a new Mesh with the given attributes. This is an expert method with no error checking. Use at your own risk.- Parameters:
type
- theIntMesh.VertexDataType
to be used, VBO or VA.isStatic
- whether this mesh is static or not. Allows for internal optimizations.maxVertices
- the maximum number of vertices this mesh can holdmaxIndices
- the maximum number of indices this mesh can holdattributes
- theVertexAttribute
s. Each vertex attribute defines one property of a vertex such as position, normal or texture coordinate
-
IntMesh
public IntMesh(IntMesh.VertexDataType type, boolean isStatic, int maxVertices, int maxIndices, com.badlogic.gdx.graphics.VertexAttributes attributes)
Creates a new Mesh with the given attributes. This is an expert method with no error checking. Use at your own risk.- Parameters:
type
- theIntMesh.VertexDataType
to be used, VBO or VA.isStatic
- whether this mesh is static or not. Allows for internal optimizations.maxVertices
- the maximum number of vertices this mesh can holdmaxIndices
- the maximum number of indices this mesh can holdattributes
- theVertexAttributes
.
-
-
Method Detail
-
setVertices
public IntMesh setVertices(float[] vertices)
Sets the vertices of this Mesh. The attributes are assumed to be given in float format.- Parameters:
vertices
- the vertices.- Returns:
- the mesh for invocation chaining.
-
setVertices
public IntMesh setVertices(float[] vertices, int offset, int count)
Sets the vertices of this Mesh. The attributes are assumed to be given in float format.- Parameters:
vertices
- the vertices.offset
- the offset into the vertices arraycount
- the number of floats to use- Returns:
- the mesh for invocation chaining.
-
updateVertices
public IntMesh updateVertices(int targetOffset, float[] source)
Update (a portion of) the vertices. Does not resize the backing buffer.- Parameters:
targetOffset
- the offset in number of floats of the mesh part.source
- the vertex data to update the mesh part with
-
updateVertices
public IntMesh updateVertices(int targetOffset, float[] source, int sourceOffset, int count)
Update (a portion of) the vertices. Does not resize the backing buffer.- Parameters:
targetOffset
- the offset in number of floats of the mesh part.source
- the vertex data to update the mesh part withsourceOffset
- the offset in number of floats within the source arraycount
- the number of floats to update
-
getVertices
public float[] getVertices(float[] vertices)
Copies the vertices from the Mesh to the float array. The float array must be large enough to hold all the Mesh's vertices.- Parameters:
vertices
- the array to copy the vertices to
-
getVertices
public float[] getVertices(int srcOffset, float[] vertices)
Copies the the remaining vertices from the Mesh to the float array. The float array must be large enough to hold the remaining vertices.- Parameters:
srcOffset
- the offset (in number of floats) of the vertices in the mesh to copyvertices
- the array to copy the vertices to
-
getVertices
public float[] getVertices(int srcOffset, int count, float[] vertices)
Copies the specified vertices from the Mesh to the float array. The float array must be large enough to hold count vertices.- Parameters:
srcOffset
- the offset (in number of floats) of the vertices in the mesh to copycount
- the amount of floats to copyvertices
- the array to copy the vertices to
-
getVertices
public float[] getVertices(int srcOffset, int count, float[] vertices, int destOffset)
Copies the specified vertices from the Mesh to the float array. The float array must be large enough to hold destOffset+count vertices.- Parameters:
srcOffset
- the offset (in number of floats) of the vertices in the mesh to copycount
- the amount of floats to copyvertices
- the array to copy the vertices todestOffset
- the offset (in floats) in the vertices array to start copying
-
setIndices
public IntMesh setIndices(int[] indices)
Sets the indices of this Mesh- Parameters:
indices
- the indices- Returns:
- the mesh for invocation chaining.
-
setIndices
public IntMesh setIndices(int[] indices, int offset, int count)
Sets the indices of this Mesh.- Parameters:
indices
- the indicesoffset
- the offset into the indices arraycount
- the number of indices to copy- Returns:
- the mesh for invocation chaining.
-
getIndices
public void getIndices(int[] indices)
Copies the indices from the Mesh to the int array. The int array must be large enough to hold all the Mesh's indices.- Parameters:
indices
- the array to copy the indices to
-
getIndices
public void getIndices(int[] indices, int destOffset)
Copies the indices from the Mesh to the int array. The int array must be large enough to hold destOffset + all the Mesh's indices.- Parameters:
indices
- the array to copy the indices todestOffset
- the offset in the indices array to start copying
-
getIndices
public void getIndices(int srcOffset, int[] indices, int destOffset)
Copies the remaining indices from the Mesh to the int array. The int array must be large enough to hold destOffset + all the remaining indices.- Parameters:
srcOffset
- the zero-based offset of the first index to fetchindices
- the array to copy the indices todestOffset
- the offset in the indices array to start copying
-
getIndices
public void getIndices(int srcOffset, int count, int[] indices, int destOffset)
Copies the indices from the Mesh to the int array. The int array must be large enough to hold destOffset + count indices.- Parameters:
srcOffset
- the zero-based offset of the first index to fetchcount
- the total amount of indices to copyindices
- the array to copy the indices todestOffset
- the offset in the indices array to start copying
-
getNumIndices
public int getNumIndices()
- Returns:
- the number of defined indices
-
getNumVertices
public int getNumVertices()
- Returns:
- the number of defined vertices
-
getMaxVertices
public int getMaxVertices()
- Returns:
- the maximum number of vertices this mesh can hold
-
getMaxIndices
public int getMaxIndices()
- Returns:
- the maximum number of indices this mesh can hold
-
getVertexSize
public int getVertexSize()
- Returns:
- the size of a single vertex in bytes
-
setAutoBind
public void setAutoBind(boolean autoBind)
Sets whether to bind the underlyingVertexArray
orVertexBufferObject
automatically on a call to one of the render methods. Usually you want to use autobind. Manual binding is an expert functionality. There is a driver bug on the MSM720xa chips that will fuck up memory if you manipulate the vertices and indices of a Mesh multiple times while it is bound. Keep this in mind.- Parameters:
autoBind
- whether to autobind meshes.
-
bind
public void bind(ExtShaderProgram shader)
Binds the underlyingVertexBufferObject
andIntIndexBufferObject
if indices where given. Use this with OpenGL ES 2.0 and when auto-bind is disabled.- Parameters:
shader
- the shader (does not bind the shader)
-
bind
public void bind(ExtShaderProgram shader, int[] locations)
Binds the underlyingVertexBufferObject
andIntIndexBufferObject
if indices where given. Use this with OpenGL ES 2.0 and when auto-bind is disabled.- Parameters:
shader
- the shader (does not bind the shader)locations
- array containing the attribute locations.
-
unbind
public void unbind(ExtShaderProgram shader)
Unbinds the underlyingVertexBufferObject
andIntIndexBufferObject
is indices were given. Use this with OpenGL ES 1.x and when auto-bind is disabled.- Parameters:
shader
- the shader (does not unbind the shader)
-
unbind
public void unbind(ExtShaderProgram shader, int[] locations)
Unbinds the underlyingVertexBufferObject
andIntIndexBufferObject
is indices were given. Use this with OpenGL ES 1.x and when auto-bind is disabled.- Parameters:
shader
- the shader (does not unbind the shader)locations
- array containing the attribute locations.
-
render
public void render(ExtShaderProgram shader, int primitiveType)
Renders the mesh using the given primitive type. If indices are set for this mesh then getNumIndices() / #vertices per primitive primitives are rendered. If no indices are set then getNumVertices() / #vertices per primitive are rendered.
This method will automatically bind each vertex attribute as specified at construction time via
VertexAttributes
to the respective shader attributes. The binding is based on the alias defined for each VertexAttribute.This method must only be called after the
ExtShaderProgram.begin()
method has been called!This method is intended for use with OpenGL ES 2.0 and will throw an IllegalStateException when OpenGL ES 1.x is used.
- Parameters:
primitiveType
- the primitive type
-
render
public void render(ExtShaderProgram shader, int primitiveType, int offset, int count)
Renders the mesh using the given primitive type. offset specifies the offset into either the vertex buffer or the index buffer depending on whether indices are defined. count specifies the number of vertices or indices to use thus count / #vertices per primitive primitives are rendered.
This method will automatically bind each vertex attribute as specified at construction time via
VertexAttributes
to the respective shader attributes. The binding is based on the alias defined for each VertexAttribute.This method must only be called after the
ExtShaderProgram.begin()
method has been called!This method is intended for use with OpenGL ES 2.0 and will throw an IllegalStateException when OpenGL ES 1.x is used.
- Parameters:
shader
- the shader to be usedprimitiveType
- the primitive typeoffset
- the offset into the vertex or index buffercount
- number of vertices or indices to use
-
render
public void render(ExtShaderProgram shader, int primitiveType, int offset, int count, boolean autoBind)
Renders the mesh using the given primitive type. offset specifies the offset into either the vertex buffer or the index buffer depending on whether indices are defined. count specifies the number of vertices or indices to use thus count / #vertices per primitive primitives are rendered.
This method will automatically bind each vertex attribute as specified at construction time via
VertexAttributes
to the respective shader attributes. The binding is based on the alias defined for each VertexAttribute.This method must only be called after the
ExtShaderProgram.begin()
method has been called!This method is intended for use with OpenGL ES 2.0 and will throw an IllegalStateException when OpenGL ES 1.x is used.
- Parameters:
shader
- the shader to be usedprimitiveType
- the primitive typeoffset
- the offset into the vertex or index buffercount
- number of vertices or indices to useautoBind
- overrides the autoBind member of this Mesh
-
dispose
public void dispose()
Frees all resources associated with this Mesh- Specified by:
dispose
in interfacecom.badlogic.gdx.utils.Disposable
-
getVertexAttribute
public com.badlogic.gdx.graphics.VertexAttribute getVertexAttribute(int usage)
Returns the firstVertexAttribute
having the givenVertexAttributes.Usage
.- Parameters:
usage
- the Usage.- Returns:
- the VertexAttribute or null if no attribute with that usage was found.
-
getVertexAttributes
public com.badlogic.gdx.graphics.VertexAttributes getVertexAttributes()
- Returns:
- the vertex attributes of this Mesh
-
getVerticesBuffer
public java.nio.FloatBuffer getVerticesBuffer()
- Returns:
- the backing FloatBuffer holding the vertices. Does not have to be a direct buffer on Android!
-
calculateBoundingBox
public com.badlogic.gdx.math.collision.BoundingBox calculateBoundingBox()
Calculates theBoundingBox
of the vertices contained in this mesh. In case no vertices are defined yet aGdxRuntimeException
is thrown. This method creates a new BoundingBox instance.- Returns:
- the bounding box.
-
calculateBoundingBox
public void calculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox bbox)
Calculates theBoundingBox
of the vertices contained in this mesh. In case no vertices are defined yet aGdxRuntimeException
is thrown.- Parameters:
bbox
- the bounding box to store the result in.
-
calculateBoundingBox
public com.badlogic.gdx.math.collision.BoundingBox calculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out, int offset, int count)
Calculate theBoundingBox
of the specified part.- Parameters:
out
- the bounding box to store the result in.offset
- the start index of the part.count
- the amount of indices the part contains.- Returns:
- the value specified by out.
-
calculateBoundingBox
public com.badlogic.gdx.math.collision.BoundingBox calculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Calculate theBoundingBox
of the specified part.- Parameters:
out
- the bounding box to store the result in.offset
- the start index of the part.count
- the amount of indices the part contains.- Returns:
- the value specified by out.
-
extendBoundingBox
public com.badlogic.gdx.math.collision.BoundingBox extendBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out, int offset, int count)
Extends the specifiedBoundingBox
with the specified part.- Parameters:
out
- the bounding box to store the result in.offset
- the start index of the part.count
- the amount of indices the part contains.- Returns:
- the value specified by out.
-
extendBoundingBox
public com.badlogic.gdx.math.collision.BoundingBox extendBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Extends the specifiedBoundingBox
with the specified part.- Parameters:
out
- the bounding box to store the result in.offset
- the start of the part.count
- the size of the part.- Returns:
- the value specified by out.
-
calculateRadiusSquared
public float calculateRadiusSquared(float centerX, float centerY, float centerZ, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.- Parameters:
centerX
- The X coordinate of the center of the bounding spherecenterY
- The Y coordinate of the center of the bounding spherecenterZ
- The Z coordinate of the center of the bounding sphereoffset
- the start index of the part.count
- the amount of indices the part contains.- Returns:
- the squared radius of the bounding sphere.
-
calculateRadius
public float calculateRadius(float centerX, float centerY, float centerZ, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Calculates the radius of the bounding sphere around the specified center for the specified part.- Parameters:
centerX
- The X coordinate of the center of the bounding spherecenterY
- The Y coordinate of the center of the bounding spherecenterZ
- The Z coordinate of the center of the bounding sphereoffset
- the start index of the part.count
- the amount of indices the part contains.- Returns:
- the radius of the bounding sphere.
-
calculateRadius
public float calculateRadius(com.badlogic.gdx.math.Vector3 center, int offset, int count, com.badlogic.gdx.math.Matrix4 transform)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.- Parameters:
center
- The center of the bounding sphereoffset
- the start index of the part.count
- the amount of indices the part contains.- Returns:
- the squared radius of the bounding sphere.
-
calculateRadius
public float calculateRadius(float centerX, float centerY, float centerZ, int offset, int count)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.- Parameters:
centerX
- The X coordinate of the center of the bounding spherecenterY
- The Y coordinate of the center of the bounding spherecenterZ
- The Z coordinate of the center of the bounding sphereoffset
- the start index of the part.count
- the amount of indices the part contains.- Returns:
- the squared radius of the bounding sphere.
-
calculateRadius
public float calculateRadius(com.badlogic.gdx.math.Vector3 center, int offset, int count)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.- Parameters:
center
- The center of the bounding sphereoffset
- the start index of the part.count
- the amount of indices the part contains.- Returns:
- the squared radius of the bounding sphere.
-
calculateRadius
public float calculateRadius(float centerX, float centerY, float centerZ)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.- Parameters:
centerX
- The X coordinate of the center of the bounding spherecenterY
- The Y coordinate of the center of the bounding spherecenterZ
- The Z coordinate of the center of the bounding sphere- Returns:
- the squared radius of the bounding sphere.
-
calculateRadius
public float calculateRadius(com.badlogic.gdx.math.Vector3 center)
Calculates the squared radius of the bounding sphere around the specified center for the specified part.- Parameters:
center
- The center of the bounding sphere- Returns:
- the squared radius of the bounding sphere.
-
getIndicesBuffer
public java.nio.IntBuffer getIndicesBuffer()
- Returns:
- the backing intbuffer holding the indices. Does not have to be a direct buffer on Android!
-
invalidateAllMeshes
public static void invalidateAllMeshes(com.badlogic.gdx.Application app)
Invalidates all meshes so the next time they are rendered new VBO handles are generated.- Parameters:
app
-
-
clearAllMeshes
public static void clearAllMeshes(com.badlogic.gdx.Application app)
Will clear the managed mesh cache. I wouldn't use this if i was you :)
-
getManagedStatus
public static java.lang.String getManagedStatus()
-
scale
public void scale(float scaleX, float scaleY, float scaleZ)
Method to scale the positions in the mesh. Normals will be kept as is. This is a potentially slow operation, use with care. It will also create a temporary float[] which will be garbage collected.- Parameters:
scaleX
- scale on xscaleY
- scale on yscaleZ
- scale on z
-
transform
public void transform(com.badlogic.gdx.math.Matrix4 matrix)
Method to transform the positions in the mesh. Normals will be kept as is. This is a potentially slow operation, use with care. It will also create a temporary float[] which will be garbage collected.- Parameters:
matrix
- the transformation matrix
-
transform
public void transform(com.badlogic.gdx.math.Matrix4 matrix, int start, int count)
-
transform
public static void transform(com.badlogic.gdx.math.Matrix4 matrix, float[] vertices, int vertexSize, int offset, int dimensions, int start, int count)
Method to transform the positions in the float array. Normals will be kept as is. This is a potentially slow operation, use with care.- Parameters:
matrix
- the transformation matrixvertices
- the float arrayvertexSize
- the number of floats in each vertexoffset
- the offset within a vertex to the positiondimensions
- the size of the positionstart
- the vertex to start withcount
- the amount of vertices to transform
-
transformUV
public void transformUV(com.badlogic.gdx.math.Matrix3 matrix)
Method to transform the texture coordinates in the mesh. This is a potentially slow operation, use with care. It will also create a temporary float[] which will be garbage collected.- Parameters:
matrix
- the transformation matrix
-
transformUV
protected void transformUV(com.badlogic.gdx.math.Matrix3 matrix, int start, int count)
-
transformUV
public static void transformUV(com.badlogic.gdx.math.Matrix3 matrix, float[] vertices, int vertexSize, int offset, int start, int count)
Method to transform the texture coordinates (UV) in the float array. This is a potentially slow operation, use with care.- Parameters:
matrix
- the transformation matrixvertices
- the float arrayvertexSize
- the number of floats in each vertexoffset
- the offset within a vertex to the texture locationstart
- the vertex to start withcount
- the amount of vertices to transform
-
copy
public IntMesh copy(boolean isStatic, boolean removeDuplicates, int[] usage)
Copies this mesh optionally removing duplicate vertices and/or reducing the amount of attributes.- Parameters:
isStatic
- whether the new mesh is static or not. Allows for internal optimizations.removeDuplicates
- whether to remove duplicate vertices if possible. Only the vertices specified by usage are checked.usage
- which attributes (if available) to copy- Returns:
- the copy of this mesh
-
copy
public IntMesh copy(boolean isStatic)
Copies this mesh.- Parameters:
isStatic
- whether the new mesh is static or not. Allows for internal optimizations.- Returns:
- the copy of this mesh
-
-