Axmol Engine 2.4.0-258ceca
Loading...
Searching...
No Matches
MeshRenderer Class Reference

MeshRenderer: A mesh can be loaded from model files, .obj, .c3t, .c3b and a mesh renderer renders a list of these loaded meshes with specified materials. More...

#include <MeshRenderer.h>

Inherits Node.

Public Member Functions

void setTexture (std::string_view texFile)
 set diffuse texture, set the first mesh's texture if multiple textures exist
 
MeshgetMeshByIndex (int index) const
 get Mesh by index
 
MeshgetMeshByName (std::string_view name) const
 get Mesh by Name, returns the first one if there are more than one mesh with the same name
 
std::vector< Mesh * > getMeshArrayByName (std::string_view name) const
 get mesh array by name, returns all meshes with the given name
 
MeshgetMesh () const
 get mesh at index 0 which is the default mesh
 
ssize_t getMeshCount () const
 get mesh count
 
AttachNodegetAttachNode (std::string_view boneName)
 return an AttachNode by bone name.
 
void removeAttachNode (std::string_view boneName)
 remove an attached node
 
void removeAllAttachNode ()
 remove all attached nodes
 
bool setProgramState (backend::ProgramState *programState, bool ownPS=false) override
 Sets ProgramState, attributes should be bound by the user.
 
virtual Action * runAction (Action *action) override
 Executes an action, and returns the action that is executed.
 
void setForceDepthWrite (bool value)
 Force depth buffer writing, this is useful if you want to achieve effects like fading.
 
virtual Rect getBoundingBox () const override
 Returns a 2d bounding-box Note: the bounding-box is taken from the mesh's AABB with Z-axis ignored.
 
void setLightMask (unsigned int mask)
 light mask getter & setter, lighting only works when _lightmask & light's flag are set to true, the default value of _lightmask is 0xffff
 
void setWireframe (bool value)
 enables wireframe rendering mode for this mesh renderer only, this can be very useful for debugging and understanding generated meshes.
 
virtual void draw (Renderer *renderer, const Mat4 &transform, uint32_t flags) override
 render all meshes within this mesh renderer
 
void setMaterial (Material *material)
 Adds a new material to this mesh renderer.
 
void setMaterial (Material *material, int meshIndex)
 Adds a new material to a particular mesh in this mesh renderer.
 
MaterialgetMaterial (int meshIndex=0) const
 Gets the material of a specific mesh in this mesh renderer.
 
const Vector< Mesh * > & getMeshes () const
 Get list of meshes used in this mesh renderer.
 
bool loadFromCache (std::string_view path)
 load a mesh renderer from cache, returns true if succeeded, false otherwise.
 
bool loadFromFile (std::string_view path, NodeDatas *nodedatas, MeshDatas *meshdatas, MaterialDatas *materialdatas)
 load a file and feed it's content into meshedatas, nodedatas and materialdatas, obj file and .mtl file should be in the same directory.
 
virtual void visit (Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags) override
 Visits this MeshRenderer's children and draws them recursively.
 
void genMaterial (bool useLight=false)
 generate default material.
 
MeshIndexDatagetMeshIndexData (std::string_view indexId) const
 get MeshIndexData by Id
 
void enableInstancing (MeshMaterial::InstanceMaterialType instanceMat, int count=0)
 Enables instancing for this Mesh Renderer, keep in mind that a special vertex shader has to be used, make sure that your shader has a mat4 attribute set on the location of total vertex attributes +1.
 
void setDynamicInstancing (bool dynamic)
 Set this to true and instancing objects within this mesh renderer will be recalculated each frame, use it when you plan to move objects, Otherwise, transforms will be built once for better performance.
 
void addInstanceChild (Node *child, bool active=false)
 Adds a child to use it's transformations for instancing.
 
void shrinkToFitInstances ()
 shrinks the instance transform buffer after many steps of expansion to increase performance.
 
void rebuildInstances ()
 rebuilds the instance transform buffer next frame.
 
- Public Member Functions inherited from Node
virtual bool isRunning () const
 Returns whether or not the node is "running".
 
void scheduleUpdateWithPriorityLua (int handler, int priority)
 Schedules for lua script.
 
virtual void cleanup ()
 Stops all running actions and schedulers.
 
virtual ScenegetScene () const
 Returns the Scene that contains the Node.
 
virtual void setEventDispatcher (EventDispatcher *dispatcher)
 Set event dispatcher for scene.
 
virtual EventDispatchergetEventDispatcher () const
 Get the event dispatcher of scene.
 
virtual uint8_t getOpacity () const
 Return the node's opacity.
 
virtual uint8_t getDisplayedOpacity () const
 Return the node's display opacity.
 
virtual void setOpacity (uint8_t opacity)
 Change node opacity.
 
virtual void updateDisplayedOpacity (uint8_t parentOpacity)
 Update the displayed opacity of node with it's parent opacity;.
 
virtual bool isCascadeOpacityEnabled () const
 Whether cascadeOpacity is enabled or not.
 
virtual void setCascadeOpacityEnabled (bool cascadeOpacityEnabled)
 Change node's cascadeOpacity property.
 
virtual const Color3BgetColor () const
 Query node's color value.
 
virtual const Color3BgetDisplayedColor () const
 Query node's displayed color.
 
virtual void setColor (const Color3B &color)
 Change the color of node.
 
virtual void updateDisplayedColor (const Color3B &parentColor)
 Update node's displayed color with its parent color.
 
virtual bool isCascadeColorEnabled () const
 Query whether cascadeColor is enabled or not.
 
virtual void setCascadeColorEnabled (bool cascadeColorEnabled)
 If you want node's color affect the children node's color, then set it to true.
 
virtual void setOpacityModifyRGB (bool value)
 If you want the opacity affect the color property, then set to true.
 
virtual bool isOpacityModifyRGB () const
 If node opacity will modify the RGB color value, then you should override this method and return true.
 
void setOnEnterCallback (const std::function< void()> &callback)
 Set the callback of event onEnter.
 
const std::function< void()> & getOnEnterCallback () const
 Get the callback of event onEnter.
 
void setOnExitCallback (const std::function< void()> &callback)
 Set the callback of event onExit.
 
const std::function< void()> & getOnExitCallback () const
 Get the callback of event onExit.
 
void setOnEnterTransitionDidFinishCallback (const std::function< void()> &callback)
 Set the callback of event EnterTransitionDidFinish.
 
const std::function< void()> & getOnEnterTransitionDidFinishCallback () const
 Get the callback of event EnterTransitionDidFinish.
 
void setOnExitTransitionDidStartCallback (const std::function< void()> &callback)
 Set the callback of event ExitTransitionDidStart.
 
const std::function< void()> & getOnExitTransitionDidStartCallback () const
 Get the callback of event ExitTransitionDidStart.
 
unsigned short getCameraMask () const
 get & set camera mask, the node is visible by the camera whose camera flag & node's camera mask is true
 
virtual void setCameraMask (unsigned short mask, bool applyChildren=true)
 Modify the camera mask for current node.
 
void applyMaskOnEnter (bool applyChildren)
 Should addChild() make the child follow it's parent's mask?
 
backend::ProgramState * setProgramStateByProgramId (uint64_t progId)
 Sets ProgramState by programId.
 
virtual void setLocalZOrder (int localZOrder)
 LocalZOrder is the 'key' used to sort the node relative to its siblings.
 
void updateOrderOfArrival ()
 !
 
virtual int getLocalZOrder () const
 Gets the local Z order of this node.
 
virtual void setGlobalZOrder (float globalZOrder)
 Defines the order in which the nodes are renderer.
 
virtual float getGlobalZOrder () const
 Returns the Node's Global Z Order.
 
virtual void setScaleX (float scaleX)
 Sets the scale (x) of the node.
 
virtual float getScaleX () const
 Returns the scale factor on X axis of this node.
 
virtual void setScaleY (float scaleY)
 Sets the scale (y) of the node.
 
virtual float getScaleY () const
 Returns the scale factor on Y axis of this node.
 
virtual void setScaleZ (float scaleZ)
 Changes the scale factor on Z axis of this node.
 
virtual float getScaleZ () const
 Returns the scale factor on Z axis of this node.
 
virtual void setScale (float scale)
 Sets the scale (x,y,z) of the node.
 
virtual float getScale () const
 Gets the scale factor of the node, when X and Y have the same scale factor.
 
virtual void setScale (float scaleX, float scaleY)
 Sets the scale (x,y) of the node.
 
virtual void setPosition (const Vec2 &position)
 Sets the position (x,y) of the node in its parent's coordinate system.
 
virtual void setPositionNormalized (const Vec2 &position)
 Sets the position (x,y) using values between 0 and 1.
 
virtual const Vec2getPosition () const
 Gets the position (x,y) of the node in its parent's coordinate system.
 
virtual const Vec2getPositionNormalized () const
 Returns the normalized position.
 
virtual void setPosition (float x, float y)
 Sets the position (x,y) of the node in its parent's coordinate system.
 
virtual void getPosition (float *x, float *y) const
 Gets position in a more efficient way, returns two number instead of a Vec2 object.
 
virtual void setPositionX (float x)
 Gets/Sets x or y coordinate individually for position.
 
virtual float getPositionX () const
 Gets the x coordinate of the node in its parent's coordinate system.
 
virtual void setPositionY (float y)
 Sets the y coordinate of the node in its parent's coordinate system.
 
virtual float getPositionY () const
 Gets the y coordinate of the node in its parent's coordinate system.
 
virtual void setPosition3D (const Vec3 &position)
 Sets the position (X, Y, and Z) in its parent's coordinate system.
 
virtual Vec3 getPosition3D () const
 Returns the position (X,Y,Z) in its parent's coordinate system.
 
virtual void setPositionZ (float positionZ)
 Sets the 'z' coordinate in the position.
 
virtual float getPositionZ () const
 Gets position Z coordinate of this node.
 
virtual void setSkewX (float skewX)
 Changes the X skew angle of the node in degrees.
 
virtual float getSkewX () const
 Returns the X skew angle of the node in degrees.
 
virtual void setSkewY (float skewY)
 Changes the Y skew angle of the node in degrees.
 
virtual float getSkewY () const
 Returns the Y skew angle of the node in degrees.
 
virtual void setAnchorPoint (const Vec2 &anchorPoint)
 Sets the anchor point in percent.
 
virtual const Vec2getAnchorPoint () const
 Returns the anchor point in percent.
 
virtual const Vec2getAnchorPointInPoints () const
 Returns the anchorPoint in absolute pixels.
 
virtual void setContentSize (const Vec2 &contentSize)
 Sets the untransformed size of the node.
 
virtual const Vec2getContentSize () const
 Returns the untransformed size of the node.
 
virtual bool hitTest (const Vec2 &worldPoint) const
 The basic node hit test, since axmol-1.0.
 
virtual void setVisible (bool visible)
 Sets whether the node is visible.
 
virtual bool isVisible () const
 Determines if the node is visible.
 
virtual void setRotation (float rotation)
 Sets the rotation (angle) of the node in degrees.
 
virtual float getRotation () const
 Returns the rotation of the node in degrees.
 
virtual void setRotation3D (const Vec3 &rotation)
 Sets the rotation (X,Y,Z) in degrees.
 
virtual Vec3 getRotation3D () const
 Returns the rotation (X,Y,Z) in degrees.
 
virtual void setRotationQuat (const Quaternion &quat)
 Set rotation by quaternion.
 
virtual Quaternion getRotationQuat () const
 Return the rotation by quaternion, Note that when _rotationZ_X == _rotationZ_Y, the returned quaternion equals to RotationZ_X * RotationY * RotationX, it equals to RotationY * RotationX otherwise.
 
virtual void setRotationSkewX (float rotationX)
 Sets the X rotation (angle) of the node in degrees which performs a horizontal rotational skew.
 
virtual float getRotationSkewX () const
 Gets the X rotation (angle) of the node in degrees which performs a horizontal rotation skew.
 
virtual void setRotationSkewY (float rotationY)
 Sets the Y rotation (angle) of the node in degrees which performs a vertical rotational skew.
 
virtual float getRotationSkewY () const
 Gets the Y rotation (angle) of the node in degrees which performs a vertical rotational skew.
 
virtual void setIgnoreAnchorPointForPosition (bool ignore)
 Sets whether the anchor point will be (0,0) when you position this node.
 
virtual bool isIgnoreAnchorPointForPosition () const
 Gets whether the anchor point will be (0,0) when you position this node.
 
virtual int getTag () const
 Returns a tag that is used to identify the node easily.
 
virtual void setTag (int tag)
 Changes the tag that is used to identify the node easily.
 
virtual std::string_view getName () const
 Returns a string that is used to identify the node.
 
virtual void setName (std::string_view name)
 Changes the name that is used to identify the node easily.
 
virtual void * getUserData ()
 Returns a custom user data pointer.
 
virtual const void * getUserData () const
 @lua NA
 
virtual void setUserData (void *userData)
 Sets a custom user data pointer.
 
virtual ObjectgetUserObject ()
 Returns a user assigned Object.
 
virtual const ObjectgetUserObject () const
 @lua NA
 
virtual void setUserObject (Object *userObject)
 Returns a user assigned Object.
 
virtual void onEnter ()
 Event callback that is invoked every time when Node enters the 'stage'.
 
virtual void onEnterTransitionDidFinish ()
 Event callback that is invoked when the Node enters in the 'stage'.
 
virtual void onExit ()
 Event callback that is invoked every time the Node leaves the 'stage'.
 
virtual void onExitTransitionDidStart ()
 Event callback that is called every time the Node leaves the 'stage'.
 
virtual void setActionManager (ActionManager *actionManager)
 Sets the ActionManager object that is used by all actions.
 
virtual ActionManagergetActionManager ()
 Gets the ActionManager object that is used by all actions.
 
void stopAllActions ()
 Stops and removes all actions from the running action list .
 
void stopAction (Action *action)
 Stops and removes an action from the running action list.
 
void stopActionByTag (int tag)
 Removes an action from the running action list by its tag.
 
void stopAllActionsByTag (int tag)
 Removes all actions from the running action list by its tag.
 
void stopActionsByFlags (unsigned int flags)
 Removes all actions from the running action list by its flags.
 
Action * getActionByTag (int tag)
 Gets an action from the running action list by its tag.
 
ssize_t getNumberOfRunningActions () const
 Returns the numbers of actions that are running plus the ones that are schedule to run (actions in actionsToAdd and actions arrays).
 
ssize_t getNumberOfRunningActionsByTag (int tag) const
 Returns the numbers of actions that are running plus the ones that are schedule to run (actions in actionsToAdd and actions arrays) with a specific tag.
 
virtual void setScheduler (Scheduler *scheduler)
 Sets a Scheduler object that is used to schedule all "updates" and timers.
 
virtual SchedulergetScheduler ()
 Gets a Scheduler object.
 
bool isScheduled (SEL_SCHEDULE selector) const
 Checks whether a selector is scheduled.
 
bool isScheduled (std::string_view key) const
 Checks whether a lambda function is scheduled.
 
void scheduleUpdate ()
 Schedules the "update" method.
 
void scheduleUpdateWithPriority (int priority)
 Schedules the "update" method with a custom priority.
 
void schedule (SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)
 Schedules a custom selector.
 
void schedule (SEL_SCHEDULE selector, float interval)
 Schedules a custom selector with an interval time in seconds.
 
void scheduleOnce (SEL_SCHEDULE selector, float delay)
 Schedules a selector that runs only once, with a delay of 0 or larger.
 
void scheduleOnce (const std::function< void(float)> &callback, float delay, std::string_view key)
 Schedules a lambda function that runs only once, with a delay of 0 or larger.
 
void schedule (SEL_SCHEDULE selector)
 Schedules a custom selector, the scheduled selector will be ticked every frame.
 
void schedule (const std::function< void(float)> &callback, std::string_view key)
 Schedules a lambda function.
 
void schedule (const std::function< void(float)> &callback, float interval, std::string_view key)
 Schedules a lambda function.
 
void schedule (const std::function< void(float)> &callback, float interval, unsigned int repeat, float delay, std::string_view key)
 Schedules a lambda function.
 
void unschedule (SEL_SCHEDULE selector)
 Unschedules a custom selector.
 
void unschedule (std::string_view key)
 Unschedules a lambda function.
 
void unscheduleAllCallbacks ()
 Unschedule all scheduled selectors and lambda functions: custom selectors, and the 'update' selector and lambda functions.
 
virtual void resume ()
 Resumes all scheduled selectors, actions and event listeners.
 
virtual void pause ()
 Pauses all scheduled selectors, actions and event listeners.
 
virtual void update (float delta)
 Update method will be called automatically every frame if "scheduleUpdate" is called, and the node is "live".
 
virtual void updateTransform ()
 Calls children's updateTransform() method recursively.
 
virtual const Mat4getNodeToParentTransform () const
 Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates.
 
virtual Mat4 getNodeToParentTransform (Node *ancestor) const
 Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates.
 
virtual AffineTransform getNodeToParentAffineTransform (Node *ancestor) const
 Returns the affine transform matrix that transform the node's (local) space coordinates into the parent's space coordinates.
 
virtual void setNodeToParentTransform (const Mat4 &transform)
 Sets the transformation matrix manually.
 
virtual const Mat4getParentToNodeTransform () const
 Returns the matrix that transform parent's space coordinates to the node's (local) space coordinates.
 
virtual Mat4 getNodeToWorldTransform () const
 Returns the world affine transform matrix.
 
virtual Mat4 getWorldToNodeTransform () const
 Returns the inverse world affine transform matrix.
 
Vec2 convertToNodeSpace (const Vec2 &worldPoint) const
 Converts a Vec2 to node (local) space coordinates.
 
Vec2 convertToWorldSpace (const Vec2 &nodePoint) const
 Converts a Vec2 to world space coordinates.
 
Vec2 convertToNodeSpaceAR (const Vec2 &worldPoint) const
 Converts a Vec2 to node (local) space coordinates.
 
Vec2 convertToWorldSpaceAR (const Vec2 &nodePoint) const
 Converts a local Vec2 to world space coordinates.The result is in Points.
 
Vec2 convertTouchToNodeSpace (Touch *touch) const
 convenience methods which take a Touch instead of Vec2.
 
Vec2 convertTouchToNodeSpaceAR (Touch *touch) const
 converts a Touch (world coordinates) into a local coordinate.
 
Vec2 getWorldPosition () const
 Gets position of node in world space.
 
void setWorldPosition (const Vec2 &position)
 Sets position of node in world space.
 
void setAdditionalTransform (const Mat4 *additionalTransform)
 Sets an additional transform matrix to the node.
 
Component * getComponent (std::string_view name)
 Gets a component by its name.
 
virtual bool addComponent (Component *component)
 Adds a component.
 
virtual bool removeComponent (std::string_view name)
 Removes a component by its name.
 
virtual bool removeComponent (Component *component)
 Removes a component by its pointer.
 
virtual void removeAllComponents ()
 Removes all components.
 
virtual std::string getDescription () const
 Gets the description string.
 
virtual void addChild (Node *child)
 Adds a child to the container with z-order as 0.
 
virtual void addChild (Node *child, int localZOrder)
 Adds a child to the container with a local z-order.
 
virtual void addChild (Node *child, int localZOrder, int tag)
 Adds a child to the container with z order and tag.
 
virtual void addChild (Node *child, int localZOrder, std::string_view name)
 Adds a child to the container with z order and tag.
 
virtual NodegetChildByTag (int tag) const
 Gets a child from the container with its tag.
 
template<typename T>
getChildByTag (int tag) const
 Gets a child from the container with its tag that can be cast to Type T.
 
virtual NodegetChildByName (std::string_view name) const
 Gets a child from the container with its name.
 
template<typename T>
getChildByName (std::string_view name) const
 Gets a child from the container with its name that can be cast to Type T.
 
virtual void enumerateChildren (std::string_view name, std::function< bool(Node *node)> callback) const
 Search the children of the receiving node to perform processing for nodes which share a name.
 
virtual Vector< Node * > & getChildren ()
 Returns the array of the node's children.
 
virtual ssize_t getChildrenCount () const
 Returns the amount of children.
 
virtual void setParent (Node *parent)
 Sets the parent node.
 
virtual NodegetParent ()
 Returns a pointer to the parent node.
 
virtual void removeFromParent ()
 Removes this node itself from its parent node with a cleanup.
 
virtual void removeFromParentAndCleanup (bool cleanup)
 Removes this node itself from its parent node.
 
virtual void removeChild (Node *child, bool cleanup=true)
 Removes a child from the container.
 
virtual void removeChildByTag (int tag, bool cleanup=true)
 Removes a child from the container by tag value.
 
virtual void removeChildByName (std::string_view name, bool cleanup=true)
 Removes a child from the container by tag value.
 
virtual void removeAllChildren ()
 Removes all children from the container with a cleanup.
 
virtual void removeAllChildrenWithCleanup (bool cleanup)
 Removes all children from the container, and do a cleanup to all running actions depending on the cleanup parameter.
 
virtual void reorderChild (Node *child, int localZOrder)
 Reorders a child according to a new z value.
 
virtual void sortAllChildren ()
 Sorts the children array once before drawing, instead of every time when a child is added or reordered.
 
- Public Member Functions inherited from Object
void retain ()
 Retains the ownership.
 
void release ()
 Releases the ownership immediately.
 
Objectautorelease ()
 Releases the ownership sometime soon automatically.
 
unsigned int getReferenceCount () const
 Returns the Object's current reference count.
 
virtual ~Object ()
 Destructor.
 

Static Public Member Functions

static MeshRenderercreate ()
 Creates an empty MeshRenderer without a mesh or a texture.
 
static MeshRenderercreate (std::string_view modelPath)
 creates a MeshRenderer with a specified path
 
static MeshRenderercreate (std::string_view modelPath, std::string_view texturePath)
 creates a MeshRenderer.
 
static void createAsync (std::string_view modelPath, const std::function< void(MeshRenderer *, void *)> &callback, void *callbackparam)
 create 3d mesh asynchronously If the 3d model was previously loaded, it will create a new 3d mesh and the callback will be called once.
 
static Nodecreate ()
 Allocates and initializes a node.
 
static int getAttachedNodeCount ()
 Gets count of nodes those are attached to scene graph.
 
template<typename _T>
static void sortNodes (ax::Vector< _T * > &nodes)
 Sorts helper function.
 

Additional Inherited Members

- Public Attributes inherited from Object
unsigned int _ID
 object id, ScriptSupport need public _ID
 
int _luaID
 Lua reference id.
 
- Static Public Attributes inherited from Node
static const int INVALID_TAG = -1
 Default tag used for all the nodes.
 

Detailed Description

MeshRenderer: A mesh can be loaded from model files, .obj, .c3t, .c3b and a mesh renderer renders a list of these loaded meshes with specified materials.

Member Function Documentation

◆ create() [1/2]

static MeshRenderer * create ( )
static

Creates an empty MeshRenderer without a mesh or a texture.

Can be used to create procedural meshes on runtime.

Returns
An autoreleased MeshRenderer object.

◆ create() [2/2]

static MeshRenderer * create ( std::string_view modelPath,
std::string_view texturePath )
static

creates a MeshRenderer.

A mesh can only have one texture, the default texture can be overridden with 'texturePath'

◆ createAsync()

static void createAsync ( std::string_view modelPath,
const std::function< void(MeshRenderer *, void *)> & callback,
void * callbackparam )
static

create 3d mesh asynchronously If the 3d model was previously loaded, it will create a new 3d mesh and the callback will be called once.

Otherwise it will load the model file in a new thread, and when the 3d mesh is loaded, the callback will be called with the created MeshRenderer and a user-defined parameter. The callback will be called from the main thread, so it is safe to create any object from the callback.

Parameters
modelPathmodel to be loaded
callbackcallback when loading is finished
callbackparamuser-defined parameter for the callback

◆ getMeshArrayByName()

std::vector< Mesh * > getMeshArrayByName ( std::string_view name) const

get mesh array by name, returns all meshes with the given name

@lua NA

◆ getAttachNode()

AttachNode * getAttachNode ( std::string_view boneName)

return an AttachNode by bone name.

Otherwise, return nullptr if it doesn't exist

◆ runAction()

virtual Action * runAction ( Action * action)
overridevirtual

Executes an action, and returns the action that is executed.

For the MeshRenderer special logic is needed to take care of Fading.

This node becomes the action's target. Refer to Action::getTarget()

Warning
Actions don't retain their target.
Returns
a pointer to Action

Reimplemented from Node.

◆ setMaterial() [1/2]

void setMaterial ( Material * material)

Adds a new material to this mesh renderer.

The Material will be applied to all the meshes that belong to the mesh renderer. It will internally call setMaterial(material,-1)

◆ setMaterial() [2/2]

void setMaterial ( Material * material,
int meshIndex )

Adds a new material to a particular mesh in this mesh renderer.

if meshIndex == -1, then it will be applied to all the meshes that belong to this mesh renderer.

Parameters
meshIndexIndex of the mesh to apply the material to.

◆ getMaterial()

Material * getMaterial ( int meshIndex = 0) const

Gets the material of a specific mesh in this mesh renderer.

Parameters
meshIndexIndex of the mesh to get the material from. 0 is the default index.

◆ visit()

virtual void visit ( Renderer * renderer,
const Mat4 & parentTransform,
uint32_t parentFlags )
overridevirtual

Visits this MeshRenderer's children and draws them recursively.

Note: all children will be rendered in 3D space with depth, this behaviour can be changed using setForce2DQueue()

Reimplemented from Node.

◆ enableInstancing()

void enableInstancing ( MeshMaterial::InstanceMaterialType instanceMat,
int count = 0 )

Enables instancing for this Mesh Renderer, keep in mind that a special vertex shader has to be used, make sure that your shader has a mat4 attribute set on the location of total vertex attributes +1.

Parameters
instanceMatPrebuilt material made to work with instancing.
countCount of Instances, 0 to enable auto expanstion, but you should call shrinkToFitInstances after adding children to maximize performance.

◆ setDynamicInstancing()

void setDynamicInstancing ( bool dynamic)

Set this to true and instancing objects within this mesh renderer will be recalculated each frame, use it when you plan to move objects, Otherwise, transforms will be built once for better performance.

to update transforms on demand use rebuildInstances()

◆ addInstanceChild()

void addInstanceChild ( Node * child,
bool active = false )

Adds a child to use it's transformations for instancing.

The child is in the space of this Node, keep in mind that the node isn't added to the scene graph, it is instead retained and it's parent is set to this node, updates and actions will not run. the reason for this is performance.

Parameters
child,Thechild to use for instancing.
active,Childwill run updates & actions but performance issues may arise.

The documentation for this class was generated from the following file: