本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-x节点(CCGrid.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
基础类,Grid 的各种状态
///cocos2d-x-3.0alpha0/cocos2dx/effects
//基础类,Grid 的各种状态
#ifndef __EFFECTS_CCGRID_H__
#define __EFFECTS_CCGRID_H__
#include "cocoa/CCObject.h"
#include "base_nodes/CCNode.h"
#include "CCCamera.h"
#include "ccTypes.h"
#include "textures/CCTexture2D.h"
#include "CCDirector.h"
#include "kazmath/mat4.h"
#ifdef EMSCRIPTEN
#include "base_nodes/CCGLBufferedNode.h"
#endif // EMSCRIPTEN
NS_CC_BEGIN
class Texture2D;
class Grabber;
class GLProgram;
/**
* @addtogroup effects
* @{
*/
/** Base class for other
*/
class CC_DLL GridBase : public Object
{
public:
/** 创建一个 Grid */
static GridBase* create(const Size& gridSize, Texture2D *texture, bool flipped);
/** 创建一个 Grid */
static GridBase* create(const Size& gridSize);
/**
* @js NA
* @lua NA
*/
virtual ~GridBase(void);
bool initWithSize(const Size& gridSize, Texture2D *texture, bool bFlipped);
bool initWithSize(const Size& gridSize);
/** grid 是否激活了 */
inline bool isActive(void) { return _active; }
void setActive(bool bActive);
/** grid 被重用的次数 */
inline int getReuseGrid(void) { return _reuseGrid; }
inline void setReuseGrid(int nReuseGrid) { _reuseGrid = nReuseGrid; }
/** grid 的尺寸 */
inline const Size& getGridSize(void) { return _gridSize; }
inline void setGridSize(const Size& gridSize) { _gridSize = gridSize; }
/** grids 之间的距离(像素为单位) */
inline const Point& getStep(void) { return _step; }
inline void setStep(const Point& step) { _step = step; }
/** texture 是否翻转了 */
inline bool isTextureFlipped(void) { return _isTextureFlipped; }
void setTextureFlipped(bool bFlipped);
void beforeDraw(void);
void afterDraw(Node *target);
virtual void blit(void);
virtual void reuse(void);
virtual void calculateVertexPoints(void);
void set2DProjection(void);
protected:
bool _active;
int _reuseGrid;
Size _gridSize;
Texture2D *_texture;
Point _step;
Grabber *_grabber;
bool _isTextureFlipped;
GLProgram* _shaderProgram;
Director::Projection _directorProjection;
};
/**
Grid3D 实现了一个三维Grid. 每个顶点有3个维度: x,y,z
*/
class CC_DLL Grid3D : public GridBase
#ifdef EMSCRIPTEN
, public GLBufferedNode
#endif // EMSCRIPTEN
{
public:
/** 创建一个 Grid */
static Grid3D* create(const Size& gridSize, Texture2D *texture, bool bFlipped);
/** 创建一个 Grid */
static Grid3D* create(const Size& gridSize);
/**
* @js ctor
*/
Grid3D();
/**
* @js NA
* @lua NA
*/
~Grid3D(void);
/** returns 给定的位置的顶点
* @js NA
* @lua NA
*/
Vertex3F getVertex(const Point& pos) const;
/** @过时不再需要建议使用新的 API ,可以使用 getVertex() 代替
* @js NA
* @lua NA
*/
CC_DEPRECATED_ATTRIBUTE Vertex3F vertex(const Point& pos) const { return getVertex(pos); }
/** returns 给定位置的原始(非转化)顶点
* @js NA
* @lua NA
*/
Vertex3F getOriginalVertex(const Point& pos) const;
/** @过时不再需要建议使用新的 API ,可以使用 getOriginalVertex() 代替
* @js NA
* @lua NA
*/
CC_DEPRECATED_ATTRIBUTE Vertex3F originalVertex(const Point& pos) const { return getOriginalVertex(pos); }
/** 在给定位置设置一个新的顶点
* @js NA
* @lua NA
*/
void setVertex(const Point& pos, const Vertex3F& vertex);
// Overrides
virtual void blit() override;
virtual void reuse() override;
virtual void calculateVertexPoints() override;
protected:
GLvoid *_texCoordinates;
GLvoid *_vertices;
GLvoid *_originalVertices;
GLushort *_indices;
};
/**
TiledGrid3D 实现了一个三维Grid. 和 Grid3D 的不同之处是
tiles 可以从 grid 里面分离.
*/
class CC_DLL TiledGrid3D : public GridBase
#ifdef EMSCRIPTEN
, public GLBufferedNode
#endif // EMSCRIPTEN
{
public:
/** 创建一个 Grid */
static TiledGrid3D* create(const Size& gridSize, Texture2D *texture, bool bFlipped);
/** 创建一个 Grid */
static TiledGrid3D* create(const Size& gridSize);
/**
* @js ctor
*/
TiledGrid3D();
/**
* @js NA
* @lua NA
*/
~TiledGrid3D();
/** returns 给定位置的 tile
* @js NA
* @lua NA
*/
Quad3 getTile(const Point& pos) const;
/** returns 给定位置的 tile
*过时不再需要建议使用新的 API
* @js NA
* @lua NA
*/
CC_DEPRECATED_ATTRIBUTE Quad3 tile(const Point& pos) const { return getTile(pos); }
/** returns 给定位置的原始(非转化)顶点
* @js NA
* @lua NA
*/
Quad3 getOriginalTile(const Point& pos) const;
/** returns 给定位置的原始(非转化)顶点
*过时不再需要建议使用新的 API
* @js NA
* @lua NA
*/
CC_DEPRECATED_ATTRIBUTE Quad3 originalTile(const Point& pos) const { return getOriginalTile(pos); }
/** sets a new tile
* @js NA
* @lua NA
*/
void setTile(const Point& pos, const Quad3& coords);
// Overrides
virtual void blit() override;
virtual void reuse() override;
virtual void calculateVertexPoints() override;
protected:
GLvoid *_texCoordinates;
GLvoid *_vertices;
GLvoid *_originalVertices;
GLushort *_indices;
};
// end of effects group
/// @}
NS_CC_END
#endif // __EFFECTS_CCGRID_H__