display/CCDisplayManager

#ifndef __CCDISPLAYMANAGER_H__

#define __CCDISPLAYMANAGER_H__


#include "../utils/CCArmatureDefine.h"

#include "../display/CCDecorativeDisplay.h"

#include "../datas/CCDatas.h"


NS_CC_EXT_BEGIN


class CCBone;


//! CCDisplayManager manages CCBone's display

class  CCDisplayManager : public CCObject

{

public:

    static CCDisplayManager *create(CCBone *bone);


public:

    CCDisplayManager();

    ~CCDisplayManager();


    bool init(CCBone *bone);


    /**

     * Use CCBoneData to init the display list.

     * If display is a sprite, and it have texture info in the TexutreData, then use TexutreData to init the display's anchor point

     * If the display is a CCArmature, then create a new CCArmature

     */

    void initDisplayList(CCBoneData *boneData);


    /**

     * Add display and use  _DisplayData init the display.

     * If index already have a display, then replace it.

     * If index is current display index, then also change display to _index

     *

     *@param displayData it include the display information, like DisplayType.

     *If you want to create a sprite display, then create a CCSpriteDisplayData param

     *

     *@param index the index of the display you want to replace or add to

     *-1 : append display from back

     */

    void addDisplay(CCDisplayData *displayData, int index);


    void removeDisplay(int index);


    CCArray *getDecorativeDisplayList();


    /**

     * Change display by index. You can just use this method to change display in the display list.

     * The display list is just used for this bone, and it is the displays you may use in every frame.

     *

     * Note : if index is the same with prev index, the method will not effect

     *

     * @param index The index of the display you want to change

     * @param force If true, then force change display to specified display, or current display will set to  display index edit in the flash every key frame.

     */

    void changeDisplayByIndex(int index, bool force);



    CCNode *getDisplayRenderNode();


    int getCurrentDisplayIndex();


    void setCurrentDecorativeDisplay(CCDecorativeDisplay *decoDisplay);

    CCDecorativeDisplay *getCurrentDecorativeDisplay();

    CCDecorativeDisplay *getDecorativeDisplayByIndex( int index);


    /**

     * Sets whether the display is visible

     * The default value is true, a node is default to visible

     *

     * @param visible   true if the node is visible, false if the node is hidden.

     */

    virtual void setVisible(bool visible);

    /**

     * Determines if the display is visible

     *

     * @see setVisible(bool)

     * @return true if the node is visible, false if the node is hidden.

     */

    virtual bool isVisible();


    CCSize getContentSize();

    CCRect getBoundingBox();


    CCPoint getAnchorPoint();

    CCPoint getAnchorPointInPoints();


    /**

     * Check if the position is inside the bone.

     */

    virtual bool containPoint(CCPoint &_point);


    /**

     * Check if the position is inside the bone.

     */

    virtual bool containPoint(float x, float y);


protected:

CCArray *m_pDecoDisplayList;

//! Display render node.

CCNode *m_pDisplayRenderNode;

    //! Include current display information, like contour sprite, etc.

    CCDecorativeDisplay *m_pCurrentDecoDisplay;

    //! Current display index

    int m_iDisplayIndex;


    CC_SYNTHESIZE_PASS_BY_REF(bool, m_bForceChangeDisplay, ForceChangeDisplay)


    //! Whether of not the bone is visible. Default is true

    bool m_bVisible;


    CCBone *m_pBone;

};


NS_CC_EXT_END


#endif /*__CCDISPLAYMANAGER_H__*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值