CCParticleSystemQuad

#ifndef __CC_PARTICLE_SYSTEM_QUAD_H__

#define __CC_PARTICLE_SYSTEM_QUAD_H__


#include  "CCParticleSystem.h"


NS_CC_BEGIN


class CCSpriteFrame;


/**

 * @addtogroup particle_nodes

 * @{

 */


/** @brief CCParticleSystemQuad is a subclass of CCParticleSystem


It includes all the features of ParticleSystem.


Special features and Limitations:    

- Particle size can be any float number.

- The system can be scaled

- The particles can be rotated

- It supports subrects

- It supports batched rendering since 1.1

@since v0.8

*/

class CC_DLL CCParticleSystemQuad : public CCParticleSystem

{

protected:

    ccV3F_C4B_T2F_Quad    *m_pQuads;        // quads to be rendered

    GLushort            *m_pIndices;    // indices


#if CC_TEXTURE_ATLAS_USE_VAO

    GLuint                m_uVAOname;

#endif


    GLuint                m_pBuffersVBO[2]; //0: vertex  1: indices


public:

    CCParticleSystemQuad();

    virtual ~CCParticleSystemQuad();


    /** creates an initializes a CCParticleSystemQuad from a plist file.

    This plist files can be created manually or with Particle Designer:  

    */

    static CCParticleSystemQuad * create(const char *plistFile);


    /** initializes the indices for the vertices*/

    void initIndices();


    /** initializes the texture with a rectangle measured Points */

    void initTexCoordsWithRect(const CCRect& rect);


    /** Sets a new CCSpriteFrame as particle.

    WARNING: this method is experimental. Use setTexture:withRect instead.

    @since v0.99.4

    */

    void setDisplayFrame(CCSpriteFrame *spriteFrame);


    /** Sets a new texture with a rect. The rect is in Points.

    @since v0.99.4

    */

    void setTextureWithRect(CCTexture2D *texture, const CCRect& rect);

    // super methods

    virtual bool initWithTotalParticles(unsigned int numberOfParticles);

    virtual void setTexture(CCTexture2D* texture);

    virtual void updateQuadWithParticle(tCCParticle* particle, const CCPoint& newPosition);

    virtual void postStep();

    virtual void draw();

    virtual void setBatchNode(CCParticleBatchNode* batchNode);

    virtual void setTotalParticles(unsigned int tp);

    

    /** listen the event that coming to foreground on Android

     */

    void listenBackToForeground(CCObject *obj);


    static CCParticleSystemQuad * create();

    static CCParticleSystemQuad * createWithTotalParticles(unsigned int numberOfParticles);

private:

#if CC_TEXTURE_ATLAS_USE_VAO

    void setupVBOandVAO();

#else

    void setupVBO();

#endif

    bool allocMemory();

};


// end of particle_nodes group

/// @}


NS_CC_END


#endif //__CC_PARTICLE_SYSTEM_QUAD_H__


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值