28#ifndef __InstancedEntity_H__
29#define __InstancedEntity_H__
Class encapsulating a set of AnimationState objects.
Represents the state of an animation and the weight of its influence.
A 3D box aligned with the x/y/z axes.
A viewpoint from which the scene will be rendered.
Class encapsulating a standard 4x4 homogeneous matrix.
static const Matrix4 IDENTITY
Abstract class defining a movable object in a scene.
Node * mParentNode
node to which this object is attached
Utility class to generate a sequentially numbered series of names.
Class representing a general-purpose node an articulated scene graph.
Implementation of a Quaternion, i.e.
Class to manage the scene object rendering queue.
Visitor object that can be used to iterate over a collection of Renderable instances abstractly.
A SkeletonInstance is a single instance of a Skeleton used by a world object.
Standard 3-dimensional vector.
static const Vector3 ZERO
4-dimensional homogeneous vector.
void setCustomParam(unsigned char idx, const Vector4 &newParam)
Sets the custom parameter for this instance.
void _updateRenderQueue(RenderQueue *queue)
Do nothing, InstanceBatch takes care of this.
Matrix4 mFullLocalTransform
Full world transform.
InstanceBatch * mBatchOwner
void _notifyAttached(Node *parent, bool isTagPoint=false)
Internal method called to notify the object that it has been attached to a node.
InstancedEntityVec mSharingPartners
void createSkeletonInstance()
Creates/destroys our own skeleton, also tells slaves to unlink if we're destroying.
Real getMaxScaleCoef() const
Returns the maximum derived scale coefficient among the xyz values.
friend class InstanceBatchHW
virtual bool isInScene(void) const
Returns true if this object is attached to a SceneNode or TagPoint, and this SceneNode / TagPoint is ...
Real getBoundingRadius(void) const
Retrieves the radius of the origin-centered bounding sphere for this object.
const Vector3 & getPosition() const
Retrieve the position.
InstanceBatch * _getOwner() const
const Quaternion & getOrientation() const
Retrieve the orientation.
bool mNeedTransformUpdate
Tells if mFullTransform needs an updated.
Real mMaxScaleLocal
The maximum absolute scale for all dimension.
friend class BaseInstanceBatchVTF
const String & getMovableType(void) const
Returns the type name of this object.
Real getSquaredViewDepth(const Camera *cam) const
This is used by our batch owner to get the closest entity's depth, returns infinity when not attached...
InstancedEntity(InstanceBatch *batchOwner, uint32 instanceID, InstancedEntity *sharedTransformEntity=NULL)
virtual bool _updateAnimation(void)
Called by InstanceBatch in his _updateRenderQueue to tell us we need to calculate our bone matrices.
size_t getTransforms(Matrix4 *xform) const
Returns number of matrices written to transform, assumes transform has enough space.
const AxisAlignedBox & getBoundingBox(void) const
Retrieves the local axis-aligned bounding box for this object.
const Vector3 & getScale() const
Retrieve the local scale.
virtual ~InstancedEntity()
void setPosition(const Vector3 &position, bool doUpdate=true)
Set the position or the offset from the parent node if a parent node exists.
void setOrientation(const Quaternion &orientation, bool doUpdate=true)
Set the orientation or the offset from the parent node if a parent node exists.
InstancedEntity * mSharedTransformEntity
AnimationStateSet * getAllAnimationStates(void) const
const Vector3 & _getDerivedPosition() const
Returns the derived position of the instanced entity including local transform.
uint16 mTransformLookupNumber
Used in conjunction with bone matrix lookup.
void stopSharingTransform()
bool mUseLocalTransform
Tells whether to use the local transform parameters.
void setScale(const Vector3 &scale, bool doUpdate=true)
Set the scale or the offset from the parent node if a parent node exists.
Matrix4 * mBoneWorldMatrices
bool mNeedAnimTransformUpdate
Tells if the animation world transform needs an update.
friend class InstanceBatchHW_VTF
void stopSharingTransformAsSlave(bool notifyMaster)
When this entity is a slave, stopSharingTransform delegates to this function.
bool isInUse() const
Tells if the entity is in use.
static NameGenerator msNameGenerator
Incremented count for next name extension.
Vector3 mPosition
Object position.
void setInUse(bool used)
Sets whether the entity is in use.
Quaternion mOrientation
Object orientation.
AnimationStateSet * mAnimationState
vector< InstancedEntity * >::type InstancedEntityVec
Stores the master when we're the slave, store our slaves when we're the master.
void unlinkTransform(bool notifyMaster=true)
Just unlinks, and tells our master we're no longer sharing.
friend class InstanceBatch
void updateTransforms()
Update the world transform and derived values.
Vector3 mScale
Object scale.
SkeletonInstance * mSkeletonInstance
void visitRenderables(Renderable::Visitor *visitor, bool debugRenderables=false)
Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject ...
void markTransformDirty()
Mark the transformation matrixes as dirty.
AnimationState * getAnimationState(const String &name) const
void destroySkeletonInstance()
void _notifyMoved(void)
Overridden so we can tell the InstanceBatch it needs to update it's bounds.
const Vector4 & getCustomParam(unsigned char idx)
unsigned long mFrameAnimationLastUpdated
Vector3 mDerivedLocalPosition
void notifyUnlink(const InstancedEntity *slave)
Called when a slave has unlinked from us.
size_t getTransforms3x4(float *xform) const
Returns number of 32-bit values written.
bool shareTransformWith(InstancedEntity *slave)
Shares the entire transformation with another InstancedEntity.
bool hasSkeleton(void) const
SkeletonInstance * getSkeleton(void) const
bool findVisible(Camera *camera) const
Returns true if this InstancedObject is visible to the current camera.
void setTransformLookupNumber(uint16 num)
Sets the transformation look up number.
friend class InstanceBatchShader
virtual const Matrix4 & _getParentNodeFullTransform(void) const
Returns the world transform of the instanced entity including local transform.
float Real
Software floating point type.