Package gaiasky.util.gdx.model
Class IntModelInstance
- java.lang.Object
-
- gaiasky.util.gdx.model.IntModelInstance
-
- All Implemented Interfaces:
IntRenderableProvider
public class IntModelInstance extends java.lang.Object implements IntRenderableProvider
An instance of aIntModel, allows to specify global transform and modify the materials, as it has a copy of the model's materials. Multiple instances can be created from the same IntModel, all sharing the meshes and textures of the IntModel. The IntModel owns the meshes and textures, to dispose of these, the IntModel has to be disposed. Therefor, the IntModel must outlive all its IntModelInstances The IntModelInstance creates a full copy of all materials, nodes and animations.
-
-
Field Summary
Fields Modifier and Type Field Description com.badlogic.gdx.utils.Array<IntAnimation>animationsanimations of the model, modifying node transformationsstatic booleandefaultShareKeyframesWhether, by default,NodeKeyframe's are shared amongstIntModeland IntModelInstance.com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.g3d.Material>materialsthe materials of the model, used by nodes that have a graphical representation FIXME not sure if superfluous, allows modification of materials without having to traverse the nodesIntModelmodeltheIntModelthis instances derives fromcom.badlogic.gdx.utils.Array<IntNode>nodesroot nodes of the modelcom.badlogic.gdx.math.Matrix4transformthe world transformjava.lang.ObjectuserDatauser definable value, which is passed to theIntShader.
-
Constructor Summary
Constructors Constructor Description IntModelInstance(IntModel model)Constructs a new IntModelInstance with all nodes and materials of the given model.IntModelInstance(IntModelInstance copyFrom)Constructs a new IntModelInstance which is an copy of the specified IntModelInstance.IntModelInstance(IntModelInstance copyFrom, com.badlogic.gdx.math.Matrix4 transform)Constructs a new IntModelInstance which is an copy of the specified IntModelInstance.IntModelInstance(IntModelInstance copyFrom, com.badlogic.gdx.math.Matrix4 transform, boolean shareKeyframes)Constructs a new IntModelInstance which is an copy of the specified IntModelInstance.IntModelInstance(IntModel model, float x, float y, float z)Constructs a new IntModelInstance at the specified position.IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform)Constructs a new IntModelInstance with the specified transform.IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, com.badlogic.gdx.utils.Array<java.lang.String> rootNodeIds)Constructs a new IntModelInstance with only the specified nodes and materials of the given model.IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, com.badlogic.gdx.utils.Array<java.lang.String> rootNodeIds, boolean shareKeyframes)Constructs a new IntModelInstance with only the specified nodes and materials of the given model.IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String... rootNodeIds)Constructs a new IntModelInstance with only the specified nodes and materials of the given model.IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String nodeId, boolean mergeTransform)IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String nodeId, boolean parentTransform, boolean mergeTransform)Recursively searches the mode for the specified node.IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String nodeId, boolean recursive, boolean parentTransform, boolean mergeTransform)IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String nodeId, boolean recursive, boolean parentTransform, boolean mergeTransform, boolean shareKeyframes)IntModelInstance(IntModel model, com.badlogic.gdx.math.Vector3 position)Constructs a new IntModelInstance at the specified position.IntModelInstance(IntModel model, com.badlogic.gdx.utils.Array<java.lang.String> rootNodeIds)Constructs a new IntModelInstance with only the specified nodes and materials of the given model.IntModelInstance(IntModel model, java.lang.String... rootNodeIds)Constructs a new IntModelInstance with only the specified nodes and materials of the given model.IntModelInstance(IntModel model, java.lang.String nodeId, boolean mergeTransform)IntModelInstance(IntModel model, java.lang.String nodeId, boolean parentTransform, boolean mergeTransform)Recursively searches the mode for the specified node.IntModelInstance(IntModel model, java.lang.String nodeId, boolean recursive, boolean parentTransform, boolean mergeTransform)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description com.badlogic.gdx.math.collision.BoundingBoxcalculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out)Calculate the bounding box of this model instance.voidcalculateTransforms()Calculates the local and world transform of allIntNodeinstances in this model, recursively.IntModelInstancecopy()com.badlogic.gdx.math.collision.BoundingBoxextendBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out)Extends the bounding box with the bounds of this model instance.IntAnimationgetAnimation(java.lang.String id)IntAnimationgetAnimation(java.lang.String id, boolean ignoreCase)com.badlogic.gdx.graphics.g3d.MaterialgetMaterial(java.lang.String id)com.badlogic.gdx.graphics.g3d.MaterialgetMaterial(java.lang.String id, boolean ignoreCase)IntNodegetNode(java.lang.String id)IntNodegetNode(java.lang.String id, boolean recursive)IntNodegetNode(java.lang.String id, boolean recursive, boolean ignoreCase)IntRenderablegetRenderable(IntRenderable out)IntRenderablegetRenderable(IntRenderable out, IntNode node)IntRenderablegetRenderable(IntRenderable out, IntNode node, IntNodePart nodePart)voidgetRenderables(com.badlogic.gdx.utils.Array<IntRenderable> renderables, com.badlogic.gdx.utils.Pool<IntRenderable> pool)Traverses the IntNode hierarchy and collectsIntRenderableinstances for every node with a graphical representation.protected voidgetRenderables(IntNode node, com.badlogic.gdx.utils.Array<IntRenderable> renderables, com.badlogic.gdx.utils.Pool<IntRenderable> pool)
-
-
-
Field Detail
-
defaultShareKeyframes
public static boolean defaultShareKeyframes
Whether, by default,NodeKeyframe's are shared amongstIntModeland IntModelInstance. Can be overridden per IntModelInstance using the constructor argument.
-
materials
public final com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.g3d.Material> materials
the materials of the model, used by nodes that have a graphical representation FIXME not sure if superfluous, allows modification of materials without having to traverse the nodes
-
nodes
public final com.badlogic.gdx.utils.Array<IntNode> nodes
root nodes of the model
-
animations
public final com.badlogic.gdx.utils.Array<IntAnimation> animations
animations of the model, modifying node transformations
-
transform
public com.badlogic.gdx.math.Matrix4 transform
the world transform
-
userData
public java.lang.Object userData
user definable value, which is passed to theIntShader.
-
-
Constructor Detail
-
IntModelInstance
public IntModelInstance(IntModel model)
Constructs a new IntModelInstance with all nodes and materials of the given model.- Parameters:
model- TheIntModelto create an instance of.
-
IntModelInstance
public IntModelInstance(IntModel model, java.lang.String nodeId, boolean mergeTransform)
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String nodeId, boolean mergeTransform)
- Parameters:
model- The sourceIntModeltransform- TheMatrix4instance for this IntModelInstance to reference or null to create a new matrix.nodeId- The ID of the rootIntNodeof theIntModelfor the instance to containmergeTransform- True to apply the source node transform to the instance transform, resetting the node transform.
-
IntModelInstance
public IntModelInstance(IntModel model, java.lang.String nodeId, boolean parentTransform, boolean mergeTransform)
Recursively searches the mode for the specified node.- Parameters:
model- The sourceIntModelnodeId- The ID of theIntNodewithin theIntModelfor the instance to containparentTransform- True to apply the parent's node transform to the instance (only applicable if recursive is true).mergeTransform- True to apply the source node transform to the instance transform, resetting the node transform.
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String nodeId, boolean parentTransform, boolean mergeTransform)
Recursively searches the mode for the specified node.- Parameters:
model- The sourceIntModeltransform- TheMatrix4instance for this IntModelInstance to reference or null to create a new matrix.nodeId- The ID of theIntNodewithin theIntModelfor the instance to containparentTransform- True to apply the parent's node transform to the instance (only applicable if recursive is true).mergeTransform- True to apply the source node transform to the instance transform, resetting the node transform.
-
IntModelInstance
public IntModelInstance(IntModel model, java.lang.String nodeId, boolean recursive, boolean parentTransform, boolean mergeTransform)
- Parameters:
model- The sourceIntModelnodeId- The ID of theIntNodewithin theIntModelfor the instance to containrecursive- True to recursively search the IntModel's node tree, false to only search for a root nodeparentTransform- True to apply the parent's node transform to the instance (only applicable if recursive is true).mergeTransform- True to apply the source node transform to the instance transform, resetting the node transform.
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String nodeId, boolean recursive, boolean parentTransform, boolean mergeTransform)
- Parameters:
model- The sourceIntModeltransform- TheMatrix4instance for this IntModelInstance to reference or null to create a new matrix.nodeId- The ID of theIntNodewithin theIntModelfor the instance to containrecursive- True to recursively search the IntModel's node tree, false to only search for a root nodeparentTransform- True to apply the parent's node transform to the instance (only applicable if recursive is true).mergeTransform- True to apply the source node transform to the instance transform, resetting the node transform.
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String nodeId, boolean recursive, boolean parentTransform, boolean mergeTransform, boolean shareKeyframes)
- Parameters:
model- The sourceIntModeltransform- TheMatrix4instance for this IntModelInstance to reference or null to create a new matrix.nodeId- The ID of theIntNodewithin theIntModelfor the instance to containrecursive- True to recursively search the IntModel's node tree, false to only search for a root nodeparentTransform- True to apply the parent's node transform to the instance (only applicable if recursive is true).mergeTransform- True to apply the source node transform to the instance transform, resetting the node transform.
-
IntModelInstance
public IntModelInstance(IntModel model, java.lang.String... rootNodeIds)
Constructs a new IntModelInstance with only the specified nodes and materials of the given model.
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, java.lang.String... rootNodeIds)
Constructs a new IntModelInstance with only the specified nodes and materials of the given model.
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.utils.Array<java.lang.String> rootNodeIds)
Constructs a new IntModelInstance with only the specified nodes and materials of the given model.
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, com.badlogic.gdx.utils.Array<java.lang.String> rootNodeIds)
Constructs a new IntModelInstance with only the specified nodes and materials of the given model.
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform, com.badlogic.gdx.utils.Array<java.lang.String> rootNodeIds, boolean shareKeyframes)
Constructs a new IntModelInstance with only the specified nodes and materials of the given model.
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.math.Vector3 position)
Constructs a new IntModelInstance at the specified position.
-
IntModelInstance
public IntModelInstance(IntModel model, float x, float y, float z)
Constructs a new IntModelInstance at the specified position.
-
IntModelInstance
public IntModelInstance(IntModel model, com.badlogic.gdx.math.Matrix4 transform)
Constructs a new IntModelInstance with the specified transform.
-
IntModelInstance
public IntModelInstance(IntModelInstance copyFrom)
Constructs a new IntModelInstance which is an copy of the specified IntModelInstance.
-
IntModelInstance
public IntModelInstance(IntModelInstance copyFrom, com.badlogic.gdx.math.Matrix4 transform)
Constructs a new IntModelInstance which is an copy of the specified IntModelInstance.
-
IntModelInstance
public IntModelInstance(IntModelInstance copyFrom, com.badlogic.gdx.math.Matrix4 transform, boolean shareKeyframes)
Constructs a new IntModelInstance which is an copy of the specified IntModelInstance.
-
-
Method Detail
-
copy
public IntModelInstance copy()
- Returns:
- A newly created IntModelInstance which is a copy of this IntModelInstance
-
getRenderables
public void getRenderables(com.badlogic.gdx.utils.Array<IntRenderable> renderables, com.badlogic.gdx.utils.Pool<IntRenderable> pool)
Traverses the IntNode hierarchy and collectsIntRenderableinstances for every node with a graphical representation. IntRenderables are obtained from the provided pool. The resulting array can be rendered via aIntModelBatch.- Specified by:
getRenderablesin interfaceIntRenderableProvider- Parameters:
renderables- the output arraypool- the pool to obtain IntRenderables from
-
getRenderable
public IntRenderable getRenderable(IntRenderable out)
- Returns:
- The renderable of the first node's first part.
-
getRenderable
public IntRenderable getRenderable(IntRenderable out, IntNode node)
- Returns:
- The renderable of the node's first part.
-
getRenderable
public IntRenderable getRenderable(IntRenderable out, IntNode node, IntNodePart nodePart)
-
getRenderables
protected void getRenderables(IntNode node, com.badlogic.gdx.utils.Array<IntRenderable> renderables, com.badlogic.gdx.utils.Pool<IntRenderable> pool)
-
calculateTransforms
public void calculateTransforms()
Calculates the local and world transform of allIntNodeinstances in this model, recursively. First eachIntNode.localTransformtransform is calculated based on the translation, rotation and scale of each IntNode. Then eachIntNode.calculateWorldTransform()is calculated, based on the parent's world transform and the local transform of each IntNode. Finally, the animation bone matrices are updated accordingly. This method can be used to recalculate all transforms if any of the IntNode's local properties (translation, rotation, scale) was modified.
-
calculateBoundingBox
public com.badlogic.gdx.math.collision.BoundingBox calculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out)
Calculate the bounding box of this model instance. This is a potential slow operation, it is advised to cache the result.- Parameters:
out- theBoundingBoxthat will be set with the bounds.- Returns:
- the out parameter for chaining
-
extendBoundingBox
public com.badlogic.gdx.math.collision.BoundingBox extendBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out)
Extends the bounding box with the bounds of this model instance. This is a potential slow operation, it is advised to cache the result.- Parameters:
out- theBoundingBoxthat will be extended with the bounds.- Returns:
- the out parameter for chaining
-
getAnimation
public IntAnimation getAnimation(java.lang.String id)
- Parameters:
id- The ID of the animation to fetch (case sensitive).- Returns:
- The
IntAnimationwith the specified id, or null if not available.
-
getAnimation
public IntAnimation getAnimation(java.lang.String id, boolean ignoreCase)
- Parameters:
id- The ID of the animation to fetch.ignoreCase- whether to use case sensitivity when comparing the animation id.- Returns:
- The
IntAnimationwith the specified id, or null if not available.
-
getMaterial
public com.badlogic.gdx.graphics.g3d.Material getMaterial(java.lang.String id)
- Parameters:
id- The ID of the material to fetch.- Returns:
- The
Materialwith the specified id, or null if not available.
-
getMaterial
public com.badlogic.gdx.graphics.g3d.Material getMaterial(java.lang.String id, boolean ignoreCase)- Parameters:
id- The ID of the material to fetch.ignoreCase- whether to use case sensitivity when comparing the material id.- Returns:
- The
Materialwith the specified id, or null if not available.
-
getNode
public IntNode getNode(java.lang.String id)
- Parameters:
id- The ID of the node to fetch.- Returns:
- The
IntNodewith the specified id, or null if not found.
-
getNode
public IntNode getNode(java.lang.String id, boolean recursive)
- Parameters:
id- The ID of the node to fetch.recursive- false to fetch a root node only, true to search the entire node tree for the specified node.- Returns:
- The
IntNodewith the specified id, or null if not found.
-
getNode
public IntNode getNode(java.lang.String id, boolean recursive, boolean ignoreCase)
- Parameters:
id- The ID of the node to fetch.recursive- false to fetch a root node only, true to search the entire node tree for the specified node.ignoreCase- whether to use case sensitivity when comparing the node id.- Returns:
- The
IntNodewith the specified id, or null if not found.
-
-