COCos 2 d-Xノード(CCAtlas Node.h)API


本論文はhttp://blog.csdn.net/runaying ,引用は出典を明記しなければならない!
COCos 2 d-Xノード(CCAtlas Node.h)API
みなさんがよりよく勉強できるように、私のブログを見ることを強くおすすめします。 Cocos 2 d-X権威ガイドノート
///cocos2d-x-3.0alpha0/cocos2dx/base_nodes


#ifndef __CCATLAS_NODE_H__
#define __CCATLAS_NODE_H__

#include "CCNode.h"
#include "CCProtocols.h"
#include "ccTypes.h"

NS_CC_BEGIN

/**
 * @addtogroup base_nodes
 * @{
 */

class TextureAtlas;

/** @brief AtlasNode   Node    ,    RGBAProtocol 、 TextureProtocol   

      render(  )   TextureAtlas   .
     render(  )   AtlasNode     TextureAtlas (or AtlasNode    )

           ,       :
- opacity and RGB colors        //     RGB  
*/
class CC_DLL AtlasNode : public NodeRGBA, public TextureProtocol
{    
public:
	/**       Atlas   ,   item(  Atlas   tile(  ))    、        items         AtlasNode */
	static AtlasNode * create(const char* tile,unsigned int tileWidth, unsigned int tileHeight,
                              unsigned int itemsToRender);
    /**
     * @js ctor
     */
    AtlasNode();
    /**
     * @js NA
     * @lua NA
     */
    virtual ~AtlasNode();

    /**       Atlas   ,   item(  Atlas   tile(  ))    、        items          AtlasNode */
    bool initWithTileFile(const char* tile, unsigned int tileWidth, unsigned int tileHeight, unsigned int itemsToRender);

    /**    texture,   item(  Atlas   tile(  ))    、        items          AtlasNode
     */
    bool initWithTexture(Texture2D* texture, unsigned int tileWidth, unsigned int tileHeight, unsigned int itemsToRender);
    
    /**   Atlas(   ) (indexed vertex array).    //      
    *        
    */
    virtual void updateAtlasValues();

    void setTextureAtlas(TextureAtlas* textureAtlas);
    TextureAtlas* getTextureAtlas() const;
    
    void setQuadsToDraw(unsigned int quadsToDraw);
    unsigned int getQuadsToDraw() const;

    
    // Overrides(  )
    virtual void draw() override;
    virtual Texture2D* getTexture() const override;
    virtual void setTexture(Texture2D *texture) override;
    virtual bool isOpacityModifyRGB() const override;
    virtual void setOpacityModifyRGB(bool isOpacityModifyRGB) override;
    virtual const Color3B& getColor(void) const override;
    virtual void setColor(const Color3B& color) override;
    virtual void setOpacity(GLubyte opacity) override;
    /**
    * @code
    *         js or lua       
    * In js: var setBlendFunc(var src, var dst)
    * @endcode
    * @lua NA
    */
    virtual void setBlendFunc(const BlendFunc& blendFunc) override;
    /**
    * @js NA
    * @lua NA
    */
    virtual const BlendFunc& getBlendFunc() const override;

private :
    void calculateMaxItems();
    void updateBlendFunc();
    void updateOpacityModifyRGB();
    
    friend class Director;
    void setIgnoreContentScaleFactor(bool bIgnoreContentScaleFactor);

protected:
    //!     
    unsigned int _itemsPerRow;
    //!      
    unsigned int _itemsPerColumn;

    //!        
    unsigned int    _itemWidth;
    //!        
    unsigned int    _itemHeight;
    
    Color3B    _colorUnmodified;
    
    TextureAtlas* _textureAtlas;
    //     
    bool _isOpacityModifyRGB;
    BlendFunc _blendFunc;

    //       
    unsigned int _quadsToDraw;
    //     
    GLint    _uniformColor;
    //        LabelAtlas FPS .               .
    bool _ignoreContentScaleFactor;
};

// end of base_node group
/// @}

NS_CC_END

#endif // __CCATLAS_NODE_H__