class CCWaves3D : public CCGrid3DAction
{
    float getAmplitude(void);
    void setAmplitude(float fAmplitude);
    float getAmplitudeRate(void);
    void setAmplitudeRate(float fAmplitudeRate);

    static CCWaves3D* create(float duration, CCSize gridSize, unsigned int waves, float amplitude);
};

class CCFlipX3D : public CCGrid3DAction
{
    static CCFlipX3D* create(float duration);
};

class CCFlipY3D : public CCFlipX3D
{
    static CCFlipY3D* create(float duration);
};

class CCLens3D : public CCGrid3DAction
{
    float getLensEffect(void);
    void setLensEffect(float fLensEffect);
    CCPoint getPosition(void);
    void setPosition(CCPoint position);

    static CCLens3D* create(float duration, CCSize gridSize, CCPoint position, float radius);
};

class CCRipple3D : public CCGrid3DAction
{
    CCPoint getPosition(void);
    void setPosition(CCPoint position);
    float getAmplitude(void);
    void setAmplitude(float fAmplitude);
    float getAmplitudeRate(void);
    void setAmplitudeRate(float fAmplitudeRate);

    static CCRipple3D* create(float duration, CCSize gridSize, CCPoint position, float radius, unsigned int waves, float amplitude);
};

class CCShaky3D : public CCGrid3DAction
{
    static CCShaky3D* create(float duration, CCSize gridSize, int range, bool shakeZ);
};

class CCLiquid : public CCGrid3DAction
{
    float getAmplitude(void);
    void setAmplitude(float fAmplitude);
    float getAmplitudeRate(void);
    void setAmplitudeRate(float fAmplitudeRate);

    static CCLiquid* create(float duration, CCSize gridSize, unsigned int waves, float amplitude);
};

class CCWaves : public CCGrid3DAction
{
    float getAmplitude(void);
    void setAmplitude(float fAmplitude);
    float getAmplitudeRate(void);
    void setAmplitudeRate(float fAmplitudeRate);

    static CCWaves* create(float duration, CCSize gridSize, unsigned int waves, float amplitude, bool horizontal, bool vertical);
};

class CCTwirl : public CCGrid3DAction
{
    CCPoint getPosition(void);
    void setPosition(CCPoint position);
    float getAmplitude(void);
    void setAmplitude(float fAmplitude);
    float getAmplitudeRate(void);
    void setAmplitudeRate(float fAmplitudeRate);

    static CCTwirl* create(float duration, CCSize gridSize, CCPoint position, unsigned int twirls, float amplitude);
};