axmol/cocos2dx/actions/CCActionGrid3D.h

293 lines
10 KiB
C++

/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2009 On-Core
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#ifndef __ACTION_CCGRID3D_ACTION_H__
#define __ACTION_CCGRID3D_ACTION_H__
#include "CCActionGrid.h"
NS_CC_BEGIN
/**
* @addtogroup actions
* @{
*/
/**
@brief CCWaves3D action
*/
class CC_DLL CCWaves3D : public CCGrid3DAction
{
public:
inline float getAmplitude(void) { return _amplitude; }
inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }
inline float getAmplitudeRate(void) { return _amplitudeRate; }
inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }
/** initializes an action with duration, grid size, waves and amplitude */
bool initWithDuration(float duration, const CCSize& gridSize, unsigned int waves, float amplitude);
/** returns a new clone of the action */
virtual CCWaves3D* clone() const;
virtual CCObject* copyWithZone(CCZone* pZone);
virtual void update(float time);
public:
/** creates an action with duration, grid size, waves and amplitude */
static CCWaves3D* create(float duration, const CCSize& gridSize, unsigned int waves, float amplitude);
protected:
unsigned int _waves;
float _amplitude;
float _amplitudeRate;
};
/** @brief CCFlipX3D action */
class CC_DLL CCFlipX3D : public CCGrid3DAction
{
public:
/** initializes the action with duration */
virtual bool initWithDuration(float duration);
virtual bool initWithSize(const CCSize& gridSize, float duration);
/** returns a new clone of the action */
virtual CCFlipX3D* clone() const;
virtual CCObject* copyWithZone(CCZone* pZone);
virtual void update(float time);
public:
/** creates the action with duration */
static CCFlipX3D* create(float duration);
};
/** @brief CCFlipY3D action */
class CC_DLL CCFlipY3D : public CCFlipX3D
{
public:
virtual void update(float time);
virtual CCObject* copyWithZone(CCZone* pZone);
public:
/** creates the action with duration */
static CCFlipY3D* create(float duration);
};
/** @brief CCLens3D action */
class CC_DLL CCLens3D : public CCGrid3DAction
{
public:
/** Get lens center position */
inline float getLensEffect(void) { return _lensEffect; }
/** Set lens center position */
inline void setLensEffect(float fLensEffect) { _lensEffect = fLensEffect; }
/** Set whether lens is concave */
inline void setConcave(bool bConcave) { _concave = bConcave; }
inline const CCPoint& getPosition(void) { return _position; }
void setPosition(const CCPoint& position);
/** initializes the action with center position, radius, a grid size and duration */
bool initWithDuration(float duration, const CCSize& gridSize, const CCPoint& position, float radius);
/** returns a new clone of the action */
virtual CCLens3D* clone() const;
virtual CCObject* copyWithZone(CCZone* pZone);
virtual void update(float time);
public:
/** creates the action with center position, radius, a grid size and duration */
static CCLens3D* create(float duration, const CCSize& gridSize, const CCPoint& position, float radius);
protected:
/* lens center position */
CCPoint _position;
float _radius;
/** lens effect. Defaults to 0.7 - 0 means no effect, 1 is very strong effect */
float _lensEffect;
/** lens is concave. (true = concave, false = convex) default is convex i.e. false */
bool _concave;
bool _dirty;
};
/** @brief CCRipple3D action */
class CC_DLL CCRipple3D : public CCGrid3DAction
{
public:
/** get center position */
inline const CCPoint& getPosition(void) { return _position; }
/** set center position */
void setPosition(const CCPoint& position);
inline float getAmplitude(void) { return _amplitude; }
inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }
inline float getAmplitudeRate(void) { return _amplitudeRate; }
inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }
/** initializes the action with radius, number of waves, amplitude, a grid size and duration */
bool initWithDuration(float duration, const CCSize& gridSize, const CCPoint& position, float radius, unsigned int waves, float amplitude);
/** returns a new clone of the action */
virtual CCRipple3D* clone() const;
virtual CCObject* copyWithZone(CCZone* pZone);
virtual void update(float time);
public:
/** creates the action with radius, number of waves, amplitude, a grid size and duration */
static CCRipple3D* create(float duration, const CCSize& gridSize, const CCPoint& position, float radius, unsigned int waves, float amplitude);
protected:
/* center position */
CCPoint _position;
float _radius;
unsigned int _waves;
float _amplitude;
float _amplitudeRate;
};
/** @brief CCShaky3D action */
class CC_DLL CCShaky3D : public CCGrid3DAction
{
public:
/** initializes the action with a range, shake Z vertices, a grid and duration */
bool initWithDuration(float duration, const CCSize& gridSize, int range, bool shakeZ);
/** returns a new clone of the action */
virtual CCShaky3D* clone() const;
virtual CCObject* copyWithZone(CCZone* pZone);
virtual void update(float time);
public:
/** creates the action with a range, shake Z vertices, a grid and duration */
static CCShaky3D* create(float duration, const CCSize& gridSize, int range, bool shakeZ);
protected:
int _randrange;
bool _shakeZ;
};
/** @brief CCLiquid action */
class CC_DLL CCLiquid : public CCGrid3DAction
{
public:
inline float getAmplitude(void) { return _amplitude; }
inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }
inline float getAmplitudeRate(void) { return _amplitudeRate; }
inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }
/** initializes the action with amplitude, a grid and duration */
bool initWithDuration(float duration, const CCSize& gridSize, unsigned int waves, float amplitude);
/** returns a new clone of the action */
virtual CCLiquid* clone() const;
virtual CCObject* copyWithZone(CCZone* pZone);
virtual void update(float time);
public:
/** creates the action with amplitude, a grid and duration */
static CCLiquid* create(float duration, const CCSize& gridSize, unsigned int waves, float amplitude);
protected:
unsigned int _waves;
float _amplitude;
float _amplitudeRate;
};
/** @brief CCWaves action */
class CC_DLL CCWaves : public CCGrid3DAction
{
public:
inline float getAmplitude(void) { return _amplitude; }
inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }
inline float getAmplitudeRate(void) { return _amplitudeRate; }
inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }
/** initializes the action with amplitude, horizontal sin, vertical sin, a grid and duration */
bool initWithDuration(float duration, const CCSize& gridSize, unsigned int waves, float amplitude, bool horizontal, bool vertical);
/** returns a new clone of the action */
virtual CCWaves* clone() const;
virtual CCObject* copyWithZone(CCZone* pZone);
virtual void update(float time);
public:
/** initializes the action with amplitude, horizontal sin, vertical sin, a grid and duration */
static CCWaves* create(float duration, const CCSize& gridSize, unsigned int waves, float amplitude, bool horizontal, bool vertical);
protected:
unsigned int _waves;
float _amplitude;
float _amplitudeRate;
bool _vertical;
bool _horizontal;
};
/** @brief CCTwirl action */
class CC_DLL CCTwirl : public CCGrid3DAction
{
public:
/** get twirl center */
inline const CCPoint& getPosition(void) { return _position; }
/** set twirl center */
void setPosition(const CCPoint& position);
inline float getAmplitude(void) { return _amplitude; }
inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }
inline float getAmplitudeRate(void) { return _amplitudeRate; }
inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }
/** initializes the action with center position, number of twirls, amplitude, a grid size and duration */
bool initWithDuration(float duration, const CCSize& gridSize, CCPoint position, unsigned int twirls, float amplitude);
/** returns a new clone of the action */
virtual CCTwirl* clone() const;
virtual CCObject* copyWithZone(CCZone* pZone);
virtual void update(float time);
public:
/** creates the action with center position, number of twirls, amplitude, a grid size and duration */
static CCTwirl* create(float duration, const CCSize& gridSize, CCPoint position, unsigned int twirls, float amplitude);
protected:
/* twirl center */
CCPoint _position;
unsigned int _twirls;
float _amplitude;
float _amplitudeRate;
};
// end of actions group
/// @}
NS_CC_END
#endif // __ACTION_CCGRID3D_ACTION_H__