cocos2d-x节点(CCGrid.h)API

本文来自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__


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值