x结构学习(八)CCSize、CCPoint、CCTextureAtlas、FIX

1、CCSize:一个保存宽度和高度的类,简单不解释了

class CC_DLL CCSize{public:float width;float height;public:CCSize();CCSize(float width, float height);CCSize(const CCSize& other);CCSize(const CCPoint& point);CCSize& operator= (const CCSize& other);CCSize& operator= (const CCPoint& point);CCSize operator+(const CCSize& right) const;CCSize operator-(const CCSize& right) const;CCSize operator*(float a) const;CCSize operator/(float a) const;void setSize(float width, float height);bool equals(const CCSize& target) const;};2、CCPoint:一个保存坐标和相关计算的数学类class CC_DLL CCPoint{public:float x;float y;public:CCPoint();CCPoint(float x, float y);CCPoint(const CCPoint& other);CCPoint(const CCSize& size);CCPoint& operator= (const CCPoint& other);CCPoint& operator= (const CCSize& size);CCPoint operator+(const CCPoint& right) const;CCPoint operator-(const CCPoint& right) const;CCPoint operator-() const;CCPoint operator*(float a) const;CCPoint operator/(float a) const;void setPoint(float x, float y);bool equals(const CCPoint& target) const;bool fuzzyEquals(const CCPoint& target, float variance) const; //带偏移(精度)的相等判断inline float getLength() const {//获取向量长度return sqrtf(x*x + y*y);};inline float getLengthSq() const {return dot(*this);};inline float getDistanceSq(const CCPoint& other) const {return (*this – other).getLengthSq();};inline float getDistance(const CCPoint& other) const {return (*this – other).getLength();};inline float getAngle() const {//返回向量和X轴间的角度return atan2f(y, x);};float getAngle(const CCPoint& other) const;inline float dot(const CCPoint& other) const {return x*other.x + y*other.y;};inline float cross(const CCPoint& other) const {return x*other.y – y*other.x;};inline CCPoint getPerp() const {//计算正交向量return CCPoint(-y, x);};inline CCPoint getRPerp() const {return CCPoint(y, -x);};inline CCPoint project(const CCPoint& other) const {return other * (dot(other)/other.dot(other));};inline CCPoint rotate(const CCPoint& other) const {return CCPoint(x*other.x – y*other.y, x*other.y + y*other.x);};inline CCPoint unrotate(const CCPoint& other) const {return CCPoint(x*other.x + y*other.y, y*other.x – x*other.y);};inline CCPoint normalize() const {float length = getLength();if(length == 0.) return CCPoint(1.f, 0);return *this / getLength();};inline CCPoint lerp(const CCPoint& other, float alpha) const {//线性插值return *this * (1.f – alpha) + other * alpha;};3、FIX_POS:宏,,截取一个数在指定范围内#define FIX_POS(_pos, _min, _max) \if (_pos < _min)\_pos = _min;\else if (_pos > _max) \_pos = _max;\4、CCTextureAtlas:纹理地图集类,继承自CCObject

class CC_DLL CCTextureAtlas : public CCObject {protected:GLushort*m_pIndices;#if CC_TEXTURE_ATLAS_USE_VAOGLuintm_uVAOname;#endifGLuintm_pBuffersVBO[2]; //0顶点,1索引boolm_bDirty;CC_PROPERTY_READONLY(unsigned int, m_uTotalQuads, TotalQuads)CC_PROPERTY_READONLY(unsigned int, m_uCapacity, Capacity)CC_PROPERTY(CCTexture2D *, m_pTexture, Texture)CC_PROPERTY(ccV3F_C4B_T2F_Quad *, m_pQuads, Quads)public:CCTextureAtlas();virtual ~CCTextureAtlas();const char* description();//获得描述信息static CCTextureAtlas* create(const char* file , unsigned int capacity); //几个创建和初始化函数bool initWithFile(const char* file, unsigned int capacity);static CCTextureAtlas* createWithTexture(CCTexture2D *texture, unsigned int capacity);bool initWithTexture(CCTexture2D *texture, unsigned int capacity);void updateQuad(ccV3F_C4B_T2F_Quad* quad, unsigned int index);//QUAD相关处理函数void insertQuad(ccV3F_C4B_T2F_Quad* quad, unsigned int index);void insertQuads(ccV3F_C4B_T2F_Quad* quads, unsigned int index, unsigned int amount);void insertQuadFromIndex(unsigned int fromIndex, unsigned int newIndex);void removeQuadAtIndex(unsigned int index);void removeQuadsAtIndex(unsigned int index, unsigned int amount);void removeAllQuads();bool resizeCapacity(unsigned int n);void increaseTotalQuadsWith(unsigned int amount);void moveQuadsFromIndex(unsigned int oldIndex, unsigned int amount, unsigned int newIndex);void moveQuadsFromIndex(unsigned int index, unsigned int newIndex);void fillWithEmptyQuadsFromIndex(unsigned int index, unsigned int amount);void drawNumberOfQuads(unsigned int n);void drawNumberOfQuads(unsigned int n, unsigned int start);void drawQuads();void listenBackToForeground(CCObject *obj);inline void setDirty(bool bDirty) { m_bDirty = bDirty; }private:void setupIndices();void mapBuffers();#if CC_TEXTURE_ATLAS_USE_VAOvoid setupVBOandVAO();#elsevoid setupVBO();#endif};5、CC_PROPERTY_READONLY:定义和获取属性的函数,简化操作#define CC_PROPERTY_READONLY(varType, varName, funName)\protected: varType varName;\public: virtual varType get##funName(void);

每一天都是一个阶梯,是向既定目标迈进的新的一步。

x结构学习(八)CCSize、CCPoint、CCTextureAtlas、FIX

相关文章:

你感兴趣的文章:

标签云: