Cocos2d-x  v3.10
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Groups
Terrain Class Reference

Defines a Terrain that is capable of rendering large landscapes from 2D heightmap images. More...

Inherits Node.

Classes

struct  DetailMap
 This struct maintain a detail map data ,including source file ,detail size. More...
 
struct  TerrainData
 This TerrainData struct warp all parameter that Terrain need to create. More...
 
struct  Triangle
 Triangle. More...
 

Public Types

enum  CrackFixedType
 the crack fix type. More...
 

Public Member Functions

void setLightMap (const std::string &fileName)
 set light map texture
 
void setLightDir (const Vec3 &lightDir)
 set directional light for the terrain The direction of directional light, Note that lightDir is in the terrain's local space. More...
 
bool initProperties ()
 initialize all Properties which terrain need
 
var initProperties ()
 initialize all Properties which terrain need
 
local initProperties ()
 initialize all Properties which terrain need
 
bool initHeightMap (const std::string &heightMap)
 initialize heightMap data
 
var initHeightMap ( var heightMap)
 initialize heightMap data
 
local initHeightMap ( local heightMap)
 initialize heightMap data
 
bool initTextures ()
 initialize alphaMap ,detailMaps textures
 
var initTextures ()
 initialize alphaMap ,detailMaps textures
 
local initTextures ()
 initialize alphaMap ,detailMaps textures
 
float getHeight (float x, float z, Vec3 *normal=nullptr) const
 get specified position's height mapping to the terrain,use bi-linear interpolation method the X position the Z position the specified position's normal vector in terrain . More...
 
local getHeight ( local x, local z, local nullptr)
 get specified position's height mapping to the terrain,use bi-linear interpolation method the X position the Z position the specified position's normal vector in terrain . More...
 
float getHeight (Vec2 pos, Vec3 *Normal=nullptr) const
 get specified position's height mapping to the terrain,use bi-linear interpolation method the position (X,Z) the specified position's normal vector in terrain . More...
 
var getHeight ( var pos, var nullptr)
 get specified position's height mapping to the terrain,use bi-linear interpolation method the position (X,Z) the specified position's normal vector in terrain . More...
 
local getHeight ( local pos, local nullptr)
 get specified position's height mapping to the terrain,use bi-linear interpolation method the position (X,Z) the specified position's normal vector in terrain . More...
 
Vec3 getNormal (int pixelX, int pixelY) const
 get the normal of the specified pistion in terrain the normal vector of the specified position of the terrain.
 
var getNormal ( var pixelX, var pixelY)
 get the normal of the specified pistion in terrain the normal vector of the specified position of the terrain.
 
local getNormal ( local pixelX, local pixelY)
 get the normal of the specified pistion in terrain the normal vector of the specified position of the terrain.
 
float getImageHeight (int pixelX, int pixelY) const
 get height from the raw height filed the position of x in raw height the position of y in raw height the height of position(x,y)
 
void setDrawWire (bool boolValue)
 show the wireline instead of the surface,Debug Use only the switching vale of method.
 
void setLODDistance (float lod1, float lod2, float lod3)
 Set threshold distance of each LOD level,must equal or gereater than the chunk size the threshold of LOD level 1 the threshold of LOD level 2 the threshold of LOD level 3.
 
local setLODDistance ( local lod1, local lod2, local lod3)
 Set threshold distance of each LOD level,must equal or gereater than the chunk size the threshold of LOD level 1 the threshold of LOD level 2 the threshold of LOD level 3.
 
void setIsEnableFrustumCull (bool boolValue)
 Switch frustum Culling Flag the switching vale of method.
 
var setIsEnableFrustumCull ( var boolValue)
 Switch frustum Culling Flag the switching vale of method.
 
local setIsEnableFrustumCull ( local boolValue)
 Switch frustum Culling Flag the switching vale of method.
 
void setAlphaMap (cocos2d::Texture2D *newAlphaMapTexture)
 set the alpha map a texture2d to be used as alpha map.
 
var setAlphaMap ( var newAlphaMapTexture)
 set the alpha map a texture2d to be used as alpha map.
 
local setAlphaMap ( local newAlphaMapTexture)
 set the alpha map a texture2d to be used as alpha map.
 
void setDetailMap (unsigned int index, DetailMap detailMap)
 set the Detail Map the index of detailmap to be seted. More...
 
var setDetailMap ( var index, var detailMap)
 set the Detail Map the index of detailmap to be seted. More...
 
local setDetailMap ( local index, local detailMap)
 set the Detail Map the index of detailmap to be seted. More...
 
virtual void draw (cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags) override
 Override this method to draw your own node. More...
 
bool getIntersectionPoint (const Ray &ray, Vec3 &intersectionPoint) const
 Ray-Terrain intersection. More...
 
var getIntersectionPoint ( var ray, var intersectionPoint)
 Ray-Terrain intersection. More...
 
local getIntersectionPoint ( local ray, local intersectionPoint)
 Ray-Terrain intersection. More...
 
Vec3 getIntersectionPoint (const Ray &ray) const
 Ray-Terrain intersection. More...
 
void setMaxDetailMapAmount (int maxValue)
 set the MaxDetailAmount. More...
 
var setMaxDetailMapAmount ( var maxValue)
 set the MaxDetailAmount. More...
 
local setMaxDetailMapAmount ( local maxValue)
 set the MaxDetailAmount. More...
 
Vec2 convertToTerrainSpace (Vec2 worldSpace) const
 Convert a world Space position (X,Z) to terrain space position (X,Z) a world space position will be converted a terrain space position.
 
var convertToTerrainSpace ( var worldSpace)
 Convert a world Space position (X,Z) to terrain space position (X,Z) a world space position will be converted a terrain space position.
 
local convertToTerrainSpace ( local worldSpace)
 Convert a world Space position (X,Z) to terrain space position (X,Z) a world space position will be converted a terrain space position.
 
void resetHeightMap (const char *heightMap)
 reset the heightmap data. More...
 
var resetHeightMap ( var heightMap)
 reset the heightmap data. More...
 
local resetHeightMap ( local heightMap)
 reset the heightmap data. More...
 
float getMinHeight ()
 get the terrain's mininal height. More...
 
var getMinHeight ()
 get the terrain's mininal height. More...
 
local getMinHeight ()
 get the terrain's mininal height. More...
 
float getMaxHeight ()
 get the terrain's maximum height. More...
 
var getMaxHeight ()
 get the terrain's maximum height. More...
 
local getMaxHeight ()
 get the terrain's maximum height. More...
 
AABB getAABB ()
 get the terrain's AABB(in world space) the AABB of map
 
var getAABB ()
 get the terrain's AABB(in world space) the AABB of map
 
local getAABB ()
 get the terrain's AABB(in world space) the AABB of map
 
void setSkirtHeightRatio (float ratio)
 set the skirt height ratio the ratio of skirt height
 
var setSkirtHeightRatio ( var ratio)
 set the skirt height ratio the ratio of skirt height
 
local setSkirtHeightRatio ( local ratio)
 set the skirt height ratio the ratio of skirt height
 
QuadTree * getQuadTree ()
 get the terrain's quad tree which is also the root node. More...
 
void reload ()
 reload sky box after GLESContext reconstructed.
 
var reload ()
 reload sky box after GLESContext reconstructed.
 
local reload ()
 reload sky box after GLESContext reconstructed.
 
Size getTerrainSize () const
 get the terrain's size the size of terrain
 
var getTerrainSize ()
 get the terrain's size the size of terrain
 
local getTerrainSize ()
 get the terrain's size the size of terrain
 
std::vector< float > getHeightData () const
 get the terrain's height data the terrain's height data
 
- Public Member Functions inherited from Node
virtual bool isRunning () const
 Returns whether or not the node is "running". More...
 
var isRunning ()
 Returns whether or not the node is "running". More...
 
local isRunning ()
 Returns whether or not the node is "running". More...
 
void scheduleUpdateWithPriorityLua (int handler, int priority)
 Schedules for lua script. More...
 
local scheduleUpdateWithPriorityLua ( local handler, local priority)
 Schedules for lua script. More...
 
virtual void cleanup ()
 Stops and removes all running actions and schedulers.
 
var cleanup ()
 Stops and removes all running actions and schedulers.
 
local cleanup ()
 Stops and removes all running actions and schedulers.
 
virtual void visit (Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags)
 Visits this node's children and send their render command recursively. More...
 
local visit ( local renderer, local parentTransform, local parentFlags)
 Visits this node's children and send their render command recursively. More...
 
virtual ScenegetScene () const
 Returns the Scene that contains the Node. More...
 
virtual Rect getBoundingBox () const
 Returns an AABB (axis-aligned bounding-box) in its parent's coordinate system. More...
 
virtual Rect boundingBox () const
local boundingBox ()
virtual void setEventDispatcher (EventDispatcher *dispatcher)
 Set event dispatcher for node. More...
 
virtual EventDispatchergetEventDispatcher () const
 Get the event dispatcher. More...
 
local getEventDispatcher ()
 Get the event dispatcher. More...
 
void setPhysicsBody (PhysicsBody *body)
 Set the PhysicsBody that let the sprite effect with physics. More...
 
PhysicsBodygetPhysicsBody () const
 Get the PhysicsBody the sprite have. More...
 
void removeFromPhysicsWorld ()
 Remove this node from physics world. More...
 
var removeFromPhysicsWorld ()
 Remove this node from physics world. More...
 
local removeFromPhysicsWorld ()
 Remove this node from physics world. More...
 
void updateTransformFromPhysics (const Mat4 &parentTransform, uint32_t parentFlags)
 Update the transform matrix from physics.
 
var updateTransformFromPhysics ( var parentTransform, var parentFlags)
 Update the transform matrix from physics.
 
local updateTransformFromPhysics ( local parentTransform, local parentFlags)
 Update the transform matrix from physics.
 
virtual void updatePhysicsBodyTransform (const Mat4 &parentTransform, uint32_t parentFlags, float parentScaleX, float parentScaleY)
 Update physics body transform matrix.
 
var updatePhysicsBodyTransform ( var parentTransform, var parentFlags, var parentScaleX, var parentScaleY)
 Update physics body transform matrix.
 
local updatePhysicsBodyTransform ( local parentTransform, local parentFlags, local parentScaleX, local parentScaleY)
 Update physics body transform matrix.
 
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 setLocalZOrder (int localZOrder)
 LocalZOrder is the 'key' used to sort the node relative to its siblings. More...
 
virtual void setZOrder (int localZOrder)
virtual void _setLocalZOrder (int z)
local _setLocalZOrder ( local z)
virtual int getLocalZOrder () const
 Gets the local Z order of this node. More...
 
var getLocalZOrder ()
 Gets the local Z order of this node. More...
 
local getLocalZOrder ()
 Gets the local Z order of this node. More...
 
virtual int getZOrder () const
virtual void setGlobalZOrder (float globalZOrder)
 Defines the oder in which the nodes are renderer. More...
 
local setGlobalZOrder ( local globalZOrder)
 Defines the oder in which the nodes are renderer. More...
 
virtual float getGlobalZOrder () const
 Returns the Node's Global Z Order. More...
 
virtual void setScaleX (float scaleX)
 Sets the scale (x) of the node. More...
 
local setScaleX ( local scaleX)
 Sets the scale (x) of the node. More...
 
virtual float getScaleX () const
 Returns the scale factor on X axis of this node The scale factor on X axis.
 
virtual void setScaleY (float scaleY)
 Sets the scale (y) of the node. More...
 
local setScaleY ( local scaleY)
 Sets the scale (y) of the node. More...
 
virtual float getScaleY () const
 Returns the scale factor on Y axis of this node The scale factor on Y axis.
 
virtual void setScaleZ (float scaleZ)
 Changes the scale factor on Z axis of this node. More...
 
local setScaleZ ( local scaleZ)
 Changes the scale factor on Z axis of this node. More...
 
virtual float getScaleZ () const
 Returns the scale factor on Z axis of this node The scale factor on Z axis.
 
virtual void setScale (float scale)
 Sets the scale (x,y,z) of the node. More...
 
local setScale ( local scale)
 Sets the scale (x,y,z) of the node. More...
 
virtual float getScale () const
 Gets the scale factor of the node, when X and Y have the same scale factor. More...
 
virtual void setScale (float scaleX, float scaleY)
 Sets the scale (x,y) of the node. More...
 
local setScale ( local scaleX, local scaleY)
 Sets the scale (x,y) of the node. More...
 
virtual void setPosition (const Vec2 &position)
 Sets the position (x,y) of the node in its parent's coordinate system. More...
 
virtual void setNormalizedPosition (const Vec2 &position)
 Sets the position (x,y) using values between 0 and 1. More...
 
var setNormalizedPosition ( var position)
 Sets the position (x,y) using values between 0 and 1. More...
 
local setNormalizedPosition ( local position)
 Sets the position (x,y) using values between 0 and 1. More...
 
virtual const Vec2getPosition () const
 Gets the position (x,y) of the node in its parent's coordinate system. More...
 
virtual const Vec2getNormalizedPosition () const
 Returns the normalized position. More...
 
virtual void setPosition (float x, float y)
 Sets the position (x,y) of the node in its parent's coordinate system. More...
 
var setPosition ( var x, var y)
 Sets the position (x,y) of the node in its parent's coordinate system. More...
 
local setPosition ( local x, local y)
 Sets the position (x,y) of the node in its parent's coordinate system. More...
 
virtual void getPosition (float *x, float *y) const
 Gets position in a more efficient way, returns two number instead of a Vec2 object. More...
 
virtual void setPositionX (float x)
 Sets the x coordinate of the node in its parent's coordinate system. More...
 
virtual float getPositionX (void) const
 Gets the x coordinate of the node in its parent's coordinate system. More...
 
virtual void setPositionY (float y)
 Sets the y coordinate of the node in its parent's coordinate system. More...
 
virtual float getPositionY (void) const
 Gets the y coordinate of the node in its parent's coordinate system. More...
 
virtual void setPosition3D (const Vec3 &position)
 Sets the position (X, Y, and Z) in its parent's coordinate system. More...
 
virtual Vec3 getPosition3D () const
 Returns the position (X,Y,Z) in its parent's coordinate system. More...
 
virtual void setPositionZ (float positionZ)
 Sets the 'z' coordinate in the position. More...
 
local setPositionZ ( local positionZ)
 Sets the 'z' coordinate in the position. More...
 
virtual void setVertexZ (float vertexZ)
virtual float getPositionZ () const
 Gets position Z coordinate of this node. More...
 
var getVertexZ ()
 Gets position Z coordinate of this node. More...
 
local getPositionZ ()
 Gets position Z coordinate of this node. More...
 
virtual float getVertexZ () const
virtual void setSkewX (float skewX)
 Changes the X skew angle of the node in degrees. More...
 
local setSkewX ( local skewX)
 Changes the X skew angle of the node in degrees. More...
 
virtual float getSkewX () const
 Returns the X skew angle of the node in degrees. More...
 
var getSkewX ()
 Returns the X skew angle of the node in degrees. More...
 
local getSkewX ()
 Returns the X skew angle of the node in degrees. More...
 
virtual void setSkewY (float skewY)
 Changes the Y skew angle of the node in degrees. More...
 
local setSkewY ( local skewY)
 Changes the Y skew angle of the node in degrees. More...
 
virtual float getSkewY () const
 Returns the Y skew angle of the node in degrees. More...
 
var getSkewY ()
 Returns the Y skew angle of the node in degrees. More...
 
local getSkewY ()
 Returns the Y skew angle of the node in degrees. More...
 
virtual void setAnchorPoint (const Vec2 &anchorPoint)
 Sets the anchor point in percent. More...
 
local setAnchorPoint ( local anchorPoint)
 Sets the anchor point in percent. More...
 
virtual const Vec2getAnchorPoint () const
 Returns the anchor point in percent. More...
 
virtual const Vec2getAnchorPointInPoints () const
 Returns the anchorPoint in absolute pixels. More...
 
virtual void setContentSize (const Size &contentSize)
 Sets the untransformed size of the node. More...
 
var setContentSize ( var contentSize)
 Sets the untransformed size of the node. More...
 
local setContentSize ( local contentSize)
 Sets the untransformed size of the node. More...
 
virtual const SizegetContentSize () const
 Returns the untransformed size of the node. More...
 
var getContentSize ()
 Returns the untransformed size of the node. More...
 
local getContentSize ()
 Returns the untransformed size of the node. More...
 
virtual void setVisible (bool visible)
 Sets whether the node is visible. More...
 
local setVisible ( local visible)
 Sets whether the node is visible. More...
 
virtual bool isVisible () const
 Determines if the node is visible. More...
 
virtual void setRotation (float rotation)
 Sets the rotation (angle) of the node in degrees. More...
 
local setRotation ( local rotation)
 Sets the rotation (angle) of the node in degrees. More...
 
virtual float getRotation () const
 Returns the rotation of the node in degrees. More...
 
var getRotation ()
 Returns the rotation of the node in degrees. More...
 
local getRotation ()
 Returns the rotation of the node in degrees. More...
 
virtual void setRotation3D (const Vec3 &rotation)
 Sets the rotation (X,Y,Z) in degrees. More...
 
local setRotation3D ( local rotation)
 Sets the rotation (X,Y,Z) in degrees. More...
 
virtual Vec3 getRotation3D () const
 Returns the rotation (X,Y,Z) in degrees. More...
 
virtual void setRotationQuat (const Quaternion &quat)
 Set rotation by quaternion. More...
 
local setRotationQuat ( local quat)
 Set rotation by quaternion. More...
 
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, The rotation in quaternion.
 
virtual void setRotationSkewX (float rotationX)
 Sets the X rotation (angle) of the node in degrees which performs a horizontal rotational skew. More...
 
local setRotationSkewX ( local rotationX)
 Sets the X rotation (angle) of the node in degrees which performs a horizontal rotational skew. More...
 
virtual void setRotationX (float rotationX)
var setRotationX ( var rotationX)
local setRotationX ( local rotationX)
virtual float getRotationSkewX () const
 Gets the X rotation (angle) of the node in degrees which performs a horizontal rotation skew. More...
 
local getRotationSkewX ()
 Gets the X rotation (angle) of the node in degrees which performs a horizontal rotation skew. More...
 
virtual float getRotationX () const
virtual void setRotationSkewY (float rotationY)
 Sets the Y rotation (angle) of the node in degrees which performs a vertical rotational skew. More...
 
local setRotationSkewY ( local rotationY)
 Sets the Y rotation (angle) of the node in degrees which performs a vertical rotational skew. More...
 
virtual void setRotationY (float rotationY)
local setRotationY ( local rotationY)
virtual float getRotationSkewY () const
 Gets the Y rotation (angle) of the node in degrees which performs a vertical rotational skew. More...
 
local getRotationSkewY ()
 Gets the Y rotation (angle) of the node in degrees which performs a vertical rotational skew. More...
 
virtual float getRotationY () const
void setOrderOfArrival (int orderOfArrival)
 Sets the arrival order when this node has a same ZOrder with other children. More...
 
int getOrderOfArrival () const
 Returns the arrival order, indicates which children is added previously. More...
 
void setGLServerState (int serverState)
var setGLServerState ( var serverState)
int getGLServerState () const
var getGLServerState ()
virtual void ignoreAnchorPointForPosition (bool ignore)
 Sets whether the anchor point will be (0,0) when you position this node. More...
 
virtual bool isIgnoreAnchorPointForPosition () const
 Gets whether the anchor point will be (0,0) when you position this node. More...
 
virtual void addChild (Node *child)
 Adds a child to the container with z-order as 0. More...
 
var addChild ( var child)
 Adds a child to the container with z-order as 0. More...
 
local addChild ( local child)
 Adds a child to the container with z-order as 0. More...
 
virtual void addChild (Node *child, int localZOrder)
 Adds a child to the container with a local z-order. More...
 
local addChild ( local child, local localZOrder)
 Adds a child to the container with a local z-order. More...
 
virtual void addChild (Node *child, int localZOrder, int tag)
 Adds a child to the container with z order and tag. More...
 
local addChild ( local child, local localZOrder, local tag)
 Adds a child to the container with z order and tag. More...
 
virtual void addChild (Node *child, int localZOrder, const std::string &name)
 Adds a child to the container with z order and tag. More...
 
local addChild ( local child, local localZOrder, local name)
 Adds a child to the container with z order and tag. More...
 
virtual NodegetChildByTag (int tag) const
 Gets a child from the container with its tag. More...
 
template<typename T >
getChildByTag (int tag) const
 Gets a child from the container with its tag that can be cast to Type T. More...
 
template<typename T >
var getChildByTag ( var tag)
 Gets a child from the container with its tag that can be cast to Type T. More...
 
template<typename T >
local getChildByTag ( local tag)
 Gets a child from the container with its tag that can be cast to Type T. More...
 
virtual NodegetChildByName (const std::string &name) const
 Gets a child from the container with its name. More...
 
template<typename T >
getChildByName (const std::string &name) const
 Gets a child from the container with its name that can be cast to Type T. More...
 
virtual void enumerateChildren (const std::string &name, std::function< bool(Node *node)> callback) const
 Search the children of the receiving node to perform processing for nodes which share a name. More...
 
virtual Vector< Node * > & getChildren ()
 Returns the array of the node's children. More...
 
local getChildren ()
 Returns the array of the node's children. More...
 
virtual const Vector< Node * > & getChildren () const
local getChildren ()
virtual ssize_t getChildrenCount () const
 Returns the amount of children. More...
 
var getChildrenCount ()
 Returns the amount of children. More...
 
local getChildrenCount ()
 Returns the amount of children. More...
 
virtual void setParent (Node *parent)
 Sets the parent node. More...
 
local setParent ( local parent)
 Sets the parent node. More...
 
virtual NodegetParent ()
 Returns a pointer to the parent node. More...
 
virtual const NodegetParent () const
var getParent ()
local getParent ()
virtual void removeFromParent ()
 Removes this node itself from its parent node with a cleanup. More...
 
var removeFromParent ()
 Removes this node itself from its parent node with a cleanup. More...
 
local removeFromParent ()
 Removes this node itself from its parent node with a cleanup. More...
 
virtual void removeFromParentAndCleanup (bool cleanup)
 Removes this node itself from its parent node. More...
 
local removeFromParent ( local cleanup)
 Removes this node itself from its parent node. More...
 
virtual void removeChild (Node *child, bool cleanup=true)
 Removes a child from the container. More...
 
virtual void removeChildByTag (int tag, bool cleanup=true)
 Removes a child from the container by tag value. More...
 
var removeChildByTag ( var tag, var true)
 Removes a child from the container by tag value. More...
 
local removeChildByTag ( local tag, local true)
 Removes a child from the container by tag value. More...
 
virtual void removeChildByName (const std::string &name, bool cleanup=true)
 Removes a child from the container by tag value. More...
 
var removeChildByName ( var name, var true)
 Removes a child from the container by tag value. More...
 
local removeChildByName ( local name, local true)
 Removes a child from the container by tag value. More...
 
virtual void removeAllChildren ()
 Removes all children from the container with a cleanup.
 
var removeAllChildren ()
 Removes all children from the container with a cleanup.
 
local 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. More...
 
local removeAllChildren ( local cleanup)
 Removes all children from the container, and do a cleanup to all running actions depending on the cleanup parameter. More...
 
virtual void reorderChild (Node *child, int localZOrder)
 Reorders a child according to a new z value. More...
 
virtual void sortAllChildren ()
 Sorts the children array once before drawing, instead of every time when a child is added or reordered. More...
 
local sortAllChildren ()
 Sorts the children array once before drawing, instead of every time when a child is added or reordered. More...
 
virtual int getTag () const
 Returns a tag that is used to identify the node easily. More...
 
var getTag ()
 Returns a tag that is used to identify the node easily. More...
 
local getTag ()
 Returns a tag that is used to identify the node easily. More...
 
virtual void setTag (int tag)
 Changes the tag that is used to identify the node easily. More...
 
local setTag ( local tag)
 Changes the tag that is used to identify the node easily. More...
 
virtual const std::string & getName () const
 Returns a string that is used to identify the node. More...
 
local getName ()
 Returns a string that is used to identify the node. More...
 
virtual void setName (const std::string &name)
 Changes the name that is used to identify the node easily. More...
 
var setName ( var name)
 Changes the name that is used to identify the node easily. More...
 
local setName ( local name)
 Changes the name that is used to identify the node easily. More...
 
virtual void * getUserData ()
 Returns a custom user data pointer. More...
 
virtual const void * getUserData () const
virtual void setUserData (void *userData)
 Sets a custom user data pointer. More...
 
virtual RefgetUserObject ()
 Returns a user assigned Object. More...
 
virtual const RefgetUserObject () const
virtual void setUserObject (Ref *userObject)
 Returns a user assigned Object. More...
 
local setUserObject ( local userObject)
 Returns a user assigned Object. More...
 
GLProgramgetGLProgram () const
 Return the GLProgram (shader) currently used for this node. More...
 
var getGLProgram ()
 Return the GLProgram (shader) currently used for this node. More...
 
local getGLProgram ()
 Return the GLProgram (shader) currently used for this node. More...
 
GLProgramgetShaderProgram () const
var getShaderProgram ()
local getShaderProgram ()
virtual void setGLProgram (GLProgram *glprogram)
 Sets the shader program for this node. More...
 
local setGLProgram ( local glprogram)
 Sets the shader program for this node. More...
 
void setShaderProgram (GLProgram *glprogram)
var setShaderProgram ( var glprogram)
local setShaderProgram ( local glprogram)
GLProgramStategetGLProgramState () const
 Return the GLProgramState currently used for this node. More...
 
var getGLProgramState ()
 Return the GLProgramState currently used for this node. More...
 
local getGLProgramState ()
 Return the GLProgramState currently used for this node. More...
 
virtual void setGLProgramState (GLProgramState *glProgramState)
 Set the GLProgramState for this node. More...
 
local setGLProgramState ( local glProgramState)
 Set the GLProgramState for this node. More...
 
virtual void onEnterTransitionDidFinish ()
 Event callback that is invoked when the Node enters in the 'stage'. More...
 
virtual void onExit ()
 Event callback that is invoked every time the Node leaves the 'stage'. More...
 
virtual void onExitTransitionDidStart ()
 Event callback that is called every time the Node leaves the 'stage'. More...
 
virtual void setActionManager (ActionManager *actionManager)
 Sets the ActionManager object that is used by all actions. More...
 
var setActionManager ( var actionManager)
 Sets the ActionManager object that is used by all actions. More...
 
local setActionManager ( local actionManager)
 Sets the ActionManager object that is used by all actions. More...
 
virtual ActionManagergetActionManager ()
 Gets the ActionManager object that is used by all actions. More...
 
local getActionManager ()
 Gets the ActionManager object that is used by all actions. More...
 
virtual const ActionManagergetActionManager () const
local getActionManager ()
virtual ActionrunAction (Action *action)
 Executes an action, and returns the action that is executed. More...
 
var runAction ( var action)
 Executes an action, and returns the action that is executed. More...
 
local runAction ( local action)
 Executes an action, and returns the action that is executed. More...
 
void stopAllActions ()
 Stops and removes all actions from the running action list .
 
var stopAllActions ()
 Stops and removes all actions from the running action list .
 
local 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. More...
 
var stopAction ( var action)
 Stops and removes an action from the running action list. More...
 
local stopAction ( local action)
 Stops and removes an action from the running action list. More...
 
void stopActionByTag (int tag)
 Removes an action from the running action list by its tag. More...
 
var stopActionByTag ( var tag)
 Removes an action from the running action list by its tag. More...
 
local stopActionByTag ( local tag)
 Removes an action from the running action list by its tag. More...
 
void stopAllActionsByTag (int tag)
 Removes all actions from the running action list by its tag. More...
 
var stopAllActionsByTag ( var tag)
 Removes all actions from the running action list by its tag. More...
 
local stopAllActionsByTag ( local tag)
 Removes all actions from the running action list by its tag. More...
 
void stopActionsByFlags (unsigned int flags)
 Removes all actions from the running action list by its flags. More...
 
ActiongetActionByTag (int tag)
 Gets an action from the running action list by its tag. More...
 
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). More...
 
ssize_t numberOfRunningActions () const
local numberOfRunningActions ()
virtual void setScheduler (Scheduler *scheduler)
 Sets a Scheduler object that is used to schedule all "updates" and timers. More...
 
virtual SchedulergetScheduler ()
 Gets a Sheduler object. More...
 
virtual const SchedulergetScheduler () const
local getScheduler ()
bool isScheduled (SEL_SCHEDULE selector)
 Checks whether a selector is scheduled. More...
 
bool isScheduled (const std::string &key)
 Checks whether a lambda function is scheduled. More...
 
void scheduleUpdate (void)
 Schedules the "update" method. More...
 
void scheduleUpdateWithPriority (int priority)
 Schedules the "update" method with a custom priority. More...
 
void unscheduleUpdate (void)
void schedule (SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)
 Schedules a custom selector. More...
 
void schedule (SEL_SCHEDULE selector, float interval)
 Schedules a custom selector with an interval time in seconds. More...
 
void scheduleOnce (SEL_SCHEDULE selector, float delay)
 Schedules a selector that runs only once, with a delay of 0 or larger The SEL_SCHEDULE selector to be scheduled. More...
 
void scheduleOnce (const std::function< void(float)> &callback, float delay, const std::string &key)
 Schedules a lambda function that runs only once, with a delay of 0 or larger The lambda function to be scheduled. More...
 
void schedule (SEL_SCHEDULE selector)
 Schedules a custom selector, the scheduled selector will be ticked every frame. More...
 
void schedule (const std::function< void(float)> &callback, const std::string &key)
 Schedules a lambda function. More...
 
void schedule (const std::function< void(float)> &callback, float interval, const std::string &key)
 Schedules a lambda function. More...
 
void schedule (const std::function< void(float)> &callback, float interval, unsigned int repeat, float delay, const std::string &key)
 Schedules a lambda function. More...
 
var schedule ( var callback, var interval, var repeat, var delay, var key)
 Schedules a lambda function. More...
 
void unschedule (SEL_SCHEDULE selector)
 Unschedules a custom selector. More...
 
var unschedule ( var selector)
 Unschedules a custom selector. More...
 
void unschedule (const std::string &key)
 Unschedules a lambda function. More...
 
var unschedule ( var key)
 Unschedules a lambda function. More...
 
void unscheduleAllCallbacks ()
 Unschedule all scheduled selectors and lambda functions: custom selectors, and the 'update' selector and lambda functions.
 
var unscheduleAllCallbacks ()
 Unschedule all scheduled selectors and lambda functions: custom selectors, and the 'update' selector and lambda functions.
 
void unscheduleAllSelectors ()
var unscheduleAllSelectors ()
local unscheduleAllSelectors ()
virtual void resume (void)
 Resumes all scheduled selectors, actions and event listeners. More...
 
local resume ()
 Resumes all scheduled selectors, actions and event listeners. More...
 
virtual void pause (void)
 Pauses all scheduled selectors, actions and event listeners. More...
 
local pause ()
 Pauses all scheduled selectors, actions and event listeners. More...
 
void resumeSchedulerAndActions ()
 Resumes all scheduled selectors, actions and event listeners. More...
 
void pauseSchedulerAndActions ()
 Pauses all scheduled selectors, actions and event listeners. More...
 
var pauseSchedulerAndActions ()
 Pauses all scheduled selectors, actions and event listeners. More...
 
local pauseSchedulerAndActions ()
 Pauses all scheduled selectors, actions and event listeners. More...
 
virtual void update (float delta)
 Update method will be called automatically every frame if "scheduleUpdate" is called, and the node is "live".
 
var update ( var delta)
 Update method will be called automatically every frame if "scheduleUpdate" is called, and the node is "live".
 
local update ( local 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. More...
 
virtual const Mat4getNodeToParentTransform () const
 Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates. More...
 
virtual AffineTransform getNodeToParentAffineTransform () const
local getNodeToParentAffineTransform ()
virtual Mat4 getNodeToParentTransform (Node *ancestor) const
 Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates. More...
 
local getNodeToParentTransform ( local ancestor)
 Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates. More...
 
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. More...
 
local getNodeToParentAffineTransform ( local ancestor)
 Returns the affine transform matrix that transform the node's (local) space coordinates into the parent's space coordinates. More...
 
virtual void setNodeToParentTransform (const Mat4 &transform)
 Sets the transformation matrix manually. More...
 
var setNodeToParentTransform ( var transform)
 Sets the transformation matrix manually. More...
 
local setNodeToParentTransform ( local transform)
 Sets the transformation matrix manually. More...
 
virtual AffineTransform nodeToParentTransform () const
local nodeToParentTransform ()
virtual const Mat4getParentToNodeTransform () const
 Returns the matrix that transform parent's space coordinates to the node's (local) space coordinates. More...
 
var getParentToNodeTransform ()
 Returns the matrix that transform parent's space coordinates to the node's (local) space coordinates. More...
 
local getParentToNodeTransform ()
 Returns the matrix that transform parent's space coordinates to the node's (local) space coordinates. More...
 
virtual AffineTransform getParentToNodeAffineTransform () const
local getParentToNodeAffineTransform ()
virtual AffineTransform parentToNodeTransform () const
local parentToNodeTransform ()
virtual Mat4 getNodeToWorldTransform () const
 Returns the world affine transform matrix. More...
 
var getNodeToWorldTransform ()
 Returns the world affine transform matrix. More...
 
local getNodeToWorldTransform ()
 Returns the world affine transform matrix. More...
 
virtual AffineTransform getNodeToWorldAffineTransform () const
local getNodeToWorldAffineTransform ()
virtual AffineTransform nodeToWorldTransform () const
local nodeToWorldTransform ()
virtual Mat4 getWorldToNodeTransform () const
 Returns the inverse world affine transform matrix. More...
 
var getWorldToNodeTransform ()
 Returns the inverse world affine transform matrix. More...
 
local getWorldToNodeTransform ()
 Returns the inverse world affine transform matrix. More...
 
virtual AffineTransform getWorldToNodeAffineTransform () const
local getWorldToNodeAffineTransform ()
virtual AffineTransform worldToNodeTransform () const
local worldToNodeTransform ()
Vec2 convertToNodeSpace (const Vec2 &worldPoint) const
 Converts a Vec2 to node (local) space coordinates. More...
 
Vec2 convertToWorldSpace (const Vec2 &nodePoint) const
 Converts a Vec2 to world space coordinates. More...
 
Vec2 convertToNodeSpaceAR (const Vec2 &worldPoint) const
 Converts a Vec2 to node (local) space coordinates. More...
 
Vec2 convertToWorldSpaceAR (const Vec2 &nodePoint) const
 Converts a local Vec2 to world space coordinates.The result is in Points. More...
 
Vec2 convertTouchToNodeSpace (Touch *touch) const
 Convenience methods which take a Touch instead of Vec2. More...
 
var convertTouchToNodeSpace ( var touch)
 Convenience methods which take a Touch instead of Vec2. More...
 
local convertTouchToNodeSpace ( local touch)
 Convenience methods which take a Touch instead of Vec2. More...
 
Vec2 convertTouchToNodeSpaceAR (Touch *touch) const
 Converts a Touch (world coordinates) into a local coordinate. More...
 
void setAdditionalTransform (Mat4 *additionalTransform)
 Sets an additional transform matrix to the node. More...
 
void setAdditionalTransform (const AffineTransform &additionalTransform)
var setAdditionalTransform ( var additionalTransform)
local setAdditionalTransform ( local additionalTransform)
Component * getComponent (const std::string &name)
 Gets a component by its name. More...
 
var getComponent ( var name)
 Gets a component by its name. More...
 
local getComponent ( local name)
 Gets a component by its name. More...
 
virtual bool addComponent (Component *component)
 Adds a component. More...
 
virtual bool removeComponent (const std::string &name)
 Removes a component by its name. More...
 
local removeComponent ( local name)
 Removes a component by its name. More...
 
virtual bool removeComponent (Component *component)
 Removes a component by its pointer. More...
 
local removeComponent ( local component)
 Removes a component by its pointer. More...
 
virtual void removeAllComponents ()
 Removes all components.
 
virtual std::string getDescription () const
 Gets the description string. More...
 
- Public Member Functions inherited from Ref
void retain ()
 Retains the ownership. More...
 
local retain ()
 Retains the ownership. More...
 
void release ()
 Releases the ownership immediately. More...
 
Refautorelease ()
 Releases the ownership sometime soon automatically. More...
 
unsigned int getReferenceCount () const
 Returns the Ref's current reference count. More...
 
local getReferenceCount ()
 Returns the Ref's current reference count. More...
 
virtual ~Ref ()
 Destructor.
 

Static Public Member Functions

static Terraincreate (TerrainData &parameter, CrackFixedType fixedType=CrackFixedType::INCREASE_LOWER)
 create and initialize terrain all parameter that Terrain need to create the crack fix type. More...
 
- Static Public Member Functions inherited from Node
static Nodecreate ()
 Allocates and initializes a node. More...
 
var create ()
 Allocates and initializes a node. More...
 
local create ()
 Allocates and initializes a node. More...
 

Additional Inherited Members

- Public Attributes inherited from Ref
unsigned int _ID
 object id, ScriptSupport need public _ID
 
local _ID
 object id, ScriptSupport need public _ID
 
int _luaID
 Lua reference id.
 
local _luaID
 Lua reference id.
 
void * _scriptObject
 scriptObject, support for swift
 
local _scriptObject
 scriptObject, support for swift
 
bool _rooted
 When true, it means that the object was already rooted.
 
local _rooted
 When true, it means that the object was already rooted.
 
bool _scriptOwned
 The life of the object is scrolled by the scripting engine. More...
 
local _scriptOwned
 The life of the object is scrolled by the scripting engine. More...
 
- Static Public Attributes inherited from Node
static const int INVALID_TAG = -1
 Default tag used for all the nodes.
 
var INVALID_TAG = -1
 Default tag used for all the nodes.
 
local INVALID_TAG = -1
 Default tag used for all the nodes.
 

Detailed Description

Defines a Terrain that is capable of rendering large landscapes from 2D heightmap images.

Terrains can be constructed from several different internal formats heightmap sources:

  1. RGB888
  2. RGBA8888
  3. Luminance(gray-scale)8

Terrain use TerrainData struct to initialize.the TerrainData struct warp all parameters that Terrain initialization need. TerrainData provide several handy constructor for users

Surface detail is provided via texture splatting, where multiple Detail texture layers can be added along with alpha map to define how different Detail texture blend with each other. These DetailTexture can be defined in TerrainData. The number of supported Detail texture is Four. although typically 2-3 levels is sufficient. For simple usage ,surface detail also is provided via simple Texture.

Internally, Terrain is divide into smaller, more manageable chunks, which can be culled separately for more efficient rendering. The size of the terrain chunks can be controlled via the chunkSize property in TerrainData.

Chunks are managed under the QuadTree.As DE FACTO terminal Node of the QuadTree; let us cull chunks efficientlly to reduce drawCall amount And reduce the VBOs'Size that pass to the GPU.

Level of detail (LOD) is supported using a technique that is similar to texture mipmapping – called GeoMapping. A distance-to-camera based test used to decide the appropriate LOD for a terrain chunk. The number of LOD levels is 0 by default (which means only the base level is used),the maxium number of LOD levels is 4. Of course ,you can hack the value individually.

Finally, when LOD is enabled, cracks can begin to appear between terrain Chunks of different LOD levels. An acceptable solution might be to simply reduce the lower LOD(high detail,smooth) chunks border, And let the higher LOD(rough) chunks to seamlessly connect it.

We can use ray-terrain intersection to pick a point of the terrain; Also we can get an arbitrary point of the terrain's height and normal vector for convenience .

Member Function Documentation

void setLightDir ( const Vec3 lightDir)

set directional light for the terrain The direction of directional light, Note that lightDir is in the terrain's local space.

Most of the time terrain is placed at (0,0,0) and without rotation, so lightDir is also in the world space.

var setLightDir ( var  lightDir)

set directional light for the terrain The direction of directional light, Note that lightDir is in the terrain's local space.

Most of the time terrain is placed at (0,0,0) and without rotation, so lightDir is also in the world space.

local setLightDir ( local  lightDir)

set directional light for the terrain The direction of directional light, Note that lightDir is in the terrain's local space.

Most of the time terrain is placed at (0,0,0) and without rotation, so lightDir is also in the world space.

static Terrain* create ( TerrainData parameter,
CrackFixedType  fixedType = CrackFixedType::INCREASE_LOWER 
)
static

create and initialize terrain all parameter that Terrain need to create the crack fix type.

use to fix the gaps between different LOD chunks A initialized terrain which is marked as "autorelease

var create ( var  parameter,
var  fixedType = CrackFixedType::INCREASE_LOWER 
)
static

create and initialize terrain all parameter that Terrain need to create the crack fix type.

use to fix the gaps between different LOD chunks A initialized terrain which is marked as "autorelease

local create ( local  parameter,
local  fixedType = CrackFixedType::INCREASE_LOWER 
)
static

create and initialize terrain all parameter that Terrain need to create the crack fix type.

use to fix the gaps between different LOD chunks A initialized terrain which is marked as "autorelease

float getHeight ( float  x,
float  z,
Vec3 normal = nullptr 
) const

get specified position's height mapping to the terrain,use bi-linear interpolation method the X position the Z position the specified position's normal vector in terrain .

if this argument is NULL or nullptr,Normal calculation shall be skip. the height value of the specified position of the terrain, if the (X,Z) position is out of the terrain bounds,it shall return 0;

var getHeight ( var  x,
var  z,
var  normal = nullptr 
)

get specified position's height mapping to the terrain,use bi-linear interpolation method the X position the Z position the specified position's normal vector in terrain .

if this argument is NULL or nullptr,Normal calculation shall be skip. the height value of the specified position of the terrain, if the (X,Z) position is out of the terrain bounds,it shall return 0;

local getHeight ( local  x,
local  z,
local  normal = nullptr 
)

get specified position's height mapping to the terrain,use bi-linear interpolation method the X position the Z position the specified position's normal vector in terrain .

if this argument is NULL or nullptr,Normal calculation shall be skip. the height value of the specified position of the terrain, if the (X,Z) position is out of the terrain bounds,it shall return 0;

float getHeight ( Vec2  pos,
Vec3 Normal = nullptr 
) const

get specified position's height mapping to the terrain,use bi-linear interpolation method the position (X,Z) the specified position's normal vector in terrain .

if this argument is NULL or nullptr,Normal calculation shall be skip. the height value of the specified position of the terrain, if the (X,Z) position is out of the terrain bounds,it shall return 0;

var getHeight ( var  pos,
var  Normal = nullptr 
)

get specified position's height mapping to the terrain,use bi-linear interpolation method the position (X,Z) the specified position's normal vector in terrain .

if this argument is NULL or nullptr,Normal calculation shall be skip. the height value of the specified position of the terrain, if the (X,Z) position is out of the terrain bounds,it shall return 0;

local getHeight ( local  pos,
local  Normal = nullptr 
)

get specified position's height mapping to the terrain,use bi-linear interpolation method the position (X,Z) the specified position's normal vector in terrain .

if this argument is NULL or nullptr,Normal calculation shall be skip. the height value of the specified position of the terrain, if the (X,Z) position is out of the terrain bounds,it shall return 0;

void setDetailMap ( unsigned int  index,
DetailMap  detailMap 
)

set the Detail Map the index of detailmap to be seted.

the detailMap to be seted.

var setDetailMap ( var  index,
var  detailMap 
)

set the Detail Map the index of detailmap to be seted.

the detailMap to be seted.

local setDetailMap ( local  index,
local  detailMap 
)

set the Detail Map the index of detailmap to be seted.

the detailMap to be seted.

virtual void draw ( cocos2d::Renderer *  renderer,
const cocos2d::Mat4 transform,
uint32_t  flags 
)
overridevirtual

Override this method to draw your own node.

The following GL states will be enabled by default:

  • glEnableClientState(GL_VERTEX_ARRAY);
  • glEnableClientState(GL_COLOR_ARRAY);
  • glEnableClientState(GL_TEXTURE_COORD_ARRAY);
  • glEnable(GL_TEXTURE_2D); AND YOU SHOULD NOT DISABLE THEM AFTER DRAWING YOUR NODE But if you enable any other GL state, you should disable it after drawing your node.

Reimplemented from Node.

var draw ( var  renderer,
var  transform,
var  flags 
)
overridevirtual

Override this method to draw your own node.

The following GL states will be enabled by default:

  • glEnableClientState(GL_VERTEX_ARRAY);
  • glEnableClientState(GL_COLOR_ARRAY);
  • glEnableClientState(GL_TEXTURE_COORD_ARRAY);
  • glEnable(GL_TEXTURE_2D); AND YOU SHOULD NOT DISABLE THEM AFTER DRAWING YOUR NODE But if you enable any other GL state, you should disable it after drawing your node.

Reimplemented from Node.

local draw ( local  renderer,
local  transform,
local  flags 
)
overridevirtual

Override this method to draw your own node.

The following GL states will be enabled by default:

  • glEnableClientState(GL_VERTEX_ARRAY);
  • glEnableClientState(GL_COLOR_ARRAY);
  • glEnableClientState(GL_TEXTURE_COORD_ARRAY);
  • glEnable(GL_TEXTURE_2D); AND YOU SHOULD NOT DISABLE THEM AFTER DRAWING YOUR NODE But if you enable any other GL state, you should disable it after drawing your node.

Reimplemented from Node.

bool getIntersectionPoint ( const Ray ray,
Vec3 intersectionPoint 
) const

Ray-Terrain intersection.

The ray used for intersection Hit point if hitted. true if hit, false otherwise.

var getIntersectionPoint ( var  ray,
var  intersectionPoint 
)

Ray-Terrain intersection.

The ray used for intersection Hit point if hitted. true if hit, false otherwise.

local getIntersectionPoint ( local  ray,
local  intersectionPoint 
)

Ray-Terrain intersection.

The ray used for intersection Hit point if hitted. true if hit, false otherwise.

Vec3 getIntersectionPoint ( const Ray ray) const

Ray-Terrain intersection.

the ray used for intersection the intersection point

var getIntersectionPoint ( var  ray)

Ray-Terrain intersection.

the ray used for intersection the intersection point

local getIntersectionPoint ( local  ray)

Ray-Terrain intersection.

the ray used for intersection the intersection point

void setMaxDetailMapAmount ( int  maxValue)

set the MaxDetailAmount.

the maximum of detail map

var setMaxDetailMapAmount ( var  maxValue)

set the MaxDetailAmount.

the maximum of detail map

local setMaxDetailMapAmount ( local  maxValue)

set the MaxDetailAmount.

the maximum of detail map

void resetHeightMap ( const char *  heightMap)

reset the heightmap data.

the new height map

var resetHeightMap ( var  heightMap)

reset the heightmap data.

the new height map

local resetHeightMap ( local  heightMap)

reset the heightmap data.

the new height map

float getMinHeight ( )

get the terrain's mininal height.

the min height of map

var getMinHeight ( )

get the terrain's mininal height.

the min height of map

local getMinHeight ( )

get the terrain's mininal height.

the min height of map

float getMaxHeight ( )

get the terrain's maximum height.

the max height of map

var getMaxHeight ( )

get the terrain's maximum height.

the max height of map

local getMaxHeight ( )

get the terrain's maximum height.

the max height of map

QuadTree* getQuadTree ( )

get the terrain's quad tree which is also the root node.

the terrain's quad tree

var getQuadTree ( )

get the terrain's quad tree which is also the root node.

the terrain's quad tree

local getQuadTree ( )

get the terrain's quad tree which is also the root node.

the terrain's quad tree


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