#ifndef _RED_CCNODELOADER_H_ #define _RED_CCNODELOADER_H_ #include "extensions/GUI/CCControlExtension/CCInvocation.h" #include "REDReader.h" #include "extensions/GUI/CCControlExtension/CCControl.h" #include #include "ui/UISlider.h" namespace RRP { class MinMaxGradientData; class MinMaxCurveData; class EmissionData; } namespace redprotocol { struct AudioParam; }; namespace redream { enum class PositionUnit { /// Position is set in points (this is the default) POINTS, /// Position is UI points, on iOS this corresponds to the native point system UIPOINTS, /// Position is a normalized value multiplied by the content size of the parent's container NORMALIZED, }; enum class PositionReferenceCorner { /// Position is relative to the bottom left corner of the parent container (this is the default) BOTTOMLEFT, /// Position is relative to the top left corner of the parent container TOPLEFT, /// Position is relative to the top right corner of the parent container TOPRIGHT, /// Position is relative to the bottom right corner of the parent container BOTTOMRIGHT, }; enum class SizeUnit { /// Content size is set in points (this is the default) POINTS, /// Position is UI points, on iOS this corresponds to the native point system UIPOINTS, /// Content size is a normalized value multiplied by the content size of the parent's container NORMALIZED, /// Content size is the size of the parents container inset by the supplied value INSETPOINTS, /// Content size is the size of the parents container inset by the supplied value multiplied by the UIScaleFactor (as defined by CCDirector) INSETUIPOINTS, }; enum class ScaleType { ABSOLUTE = 0, MULTIPLY_RESOURCES_SCALE = 1, MULTIPLY_MAIN_SCALE = 2, MULTIPLY_ADDITION_SCALE_X = 4, MULTIPLY_ADDITION_SCALE_Y = 8, INVERT_SCALE = 16, }; cocos2d::Vec2 getAbsolutePosition(float mainScale, float additionalScale, const cocos2d::Vec2 &pt, PositionReferenceCorner corner, PositionUnit xUnit, PositionUnit yUnit, const cocos2d::Size &containerSize); cocos2d::Size getAbsoluteSize(float mainScale, float additionalScale, const cocos2d::Size &contentSize, SizeUnit widthUnit, SizeUnit heightUnit, const cocos2d::Size &containerSize); cocos2d::Vec2 getAbsoluteScale(float mainScale, float additionalScale, float scaleX, float scaleY, unsigned int type); float getAbsoluteScale(float mainScale, float additionalScale, float scale, unsigned int type); struct PositionDescription { PositionReferenceCorner referenceCorner; PositionUnit xUnits; PositionUnit yUnits; cocos2d::Vec2 pos; }; struct SizeDescription { SizeUnit widthUnits; SizeUnit heightUnits; cocos2d::Size size; }; struct ScaleDescription { int type; float xScale; float yScale; }; struct FloatScaleDescription { int type; float scale; }; struct FramePath { using TextureResType = cocos2d::ui::Widget::TextureResType; std::string path; TextureResType texType; }; struct MaterialBall { std::string materialPath; std::map params; }; struct BakeAnimation { std::string animationName; float elapsedTime; bool loop; }; struct WiseEventData { std::string wiseBnkPath; std::string wiseEventName; std::vector audioParams; bool wiseForcePost = false; }; //struct CallbackDescription //{ // TargetType type; // std::string name; //}; #define PROPERTY_POSITION "position" #define PROPERTY_CONTENTSIZE "contentSize" #define PROPERTY_SKEW "skew" #define PROPERTY_ANCHORPOINT "anchorPoint" #define PROPERTY_SCALE "scale" #define PROPERTY_ROTATION "rotation" #define PROPERTY_ROTATIONX "rotationX" #define PROPERTY_ROTATIONY "rotationY" #define PROPERTY_TAG "tag" #define PROPERTY_IGNOREANCHORPOINTFORPOSITION "ignoreAnchorPointForPosition" #define PROPERTY_CASCADECOLORENABLED "cascadeColorEnabled" #define PROPERTY_CASCADEOPACITYENABLED "cascadeOpacityEnabled" #define PROPERTY_VISIBLE "visible" #define PROPERTY_OPACITY "opacity" #define PROPERTY_COLOR "color" #define ASSERT_FAIL_UNEXPECTED_PROPERTY(PROPERTY) cocos2d::log("Unexpected property: '%s'!\n", PROPERTY); assert(false) #define ASSERT_FAIL_UNEXPECTED_PROPERTYTYPE(PROPERTYTYPE) cocos2d::log("Unexpected property type: '%d'!\n", PROPERTYTYPE); assert(false) #define RED_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(T) virtual T * createNode(cocos2d::Node * pParent, redream::REDReader * ccbReader) { \ return T::create(); \ } #define RED_PURE_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(T) virtual T * createNode(cocos2d::Node * pParent, redream::REDReader * ccbReader) = 0 #define LOCALIZATION_DEFAULT_FILE "RedLocalization.plist" struct BlockData { cocos2d::SEL_MenuHandler mSELMenuHandler; cocos2d::Ref * _target; }; struct CallbacksData { std::string selectorName; cocos2d::Ref * _target; }; struct BlockControlData { cocos2d::extension::Control::Handler mSELControlHandler; cocos2d::Ref * _target; cocos2d::extension::Control::EventType mControlEvents; }; /* Forward declaration. */ class REDReader; class CC_DLL NodeLoader : public cocos2d::Ref { public: /** * @js NA * @lua NA */ NodeLoader(); /** * @js NA * @lua NA */ virtual ~NodeLoader(); /** * @js NA * @lua NA */ RED_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(NodeLoader, loader); /** * @js NA * @lua NA */ virtual cocos2d::Node * loadNode(cocos2d::Node *, REDReader * ccbReader); /** * @js NA * @lua NA */ virtual void parseProperties(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Node& nodeProtobuf, std::string &reboltName, std::string &reboltId); virtual void handleProperties(Node * pNode, Node * pParent, REDReader * ccbReader, const string& propertyName, REDReader::PropertyType type, const RedreamInfo::Value& valueProtobuf, bool setProp, std::string &reboltName, std::string &reboltId); /** * @js NA * @lua NA */ virtual cocos2d::ValueMap& getCustomProperties(); protected: RED_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(cocos2d::Node); virtual cocos2d::Vec2 parsePropTypePosition(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::Vec2 parsePropTypePoint(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::Vec2 parsePropTypePointLock(cocos2d::Node * pNode,cocos2d:: Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::Size parsePropTypeSize(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual float * parsePropTypeScaleLock(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual float parsePropTypeFloat(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual float parsePropTypeDegrees(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual float parsePropTypeFloatScale(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual int parsePropTypeInteger(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual int parsePropTypeIntegerLabeled(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual float * parsePropTypeFloatVar(cocos2d::Node * pNode,cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual bool parsePropTypeCheck(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::SpriteFrame * parsePropTypeSpriteFrame(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::Texture2D * parsePropTypeTexture(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); //add by djd 粒子支持plist大纹理,优先走大纹理找不到就走小图. virtual cocos2d::SpriteFrame * parsePropTypeTexture2(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual unsigned char parsePropTypeByte(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::Color3B parsePropTypeColor3(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::Color4F * parsePropTypeColor4FVar(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual bool * parsePropTypeFlip(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::BlendFunc parsePropTypeBlendFunc(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual std::string parsePropTypeFntFile(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual std::string parsePropTypeString(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual std::string parsePropTypeText(cocos2d::Node * pNode, cocos2d::Node * pParent, const char *pPropertyName, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual std::string parsePropTypeFontTTF(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual BlockData * parsePropTypeBlock(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual BlockControlData * parsePropTypeBlockControl(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::Node * parsePropTypeREDFile(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf, std::string &reboltName, std::string &reboltId); virtual float * parsePropTypeFloatXY(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual std::string parsePropTypeSpineSkel(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual std::string parsePropTypeSpineAtlas(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual spine::SkeletonFrame parsePropTypeSkelFrame(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual std::vector parsePropTypeFrameSet(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual int parsePropTypePercent(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual CallbacksData * parsePropTypeCallbacks(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual LocalizationModel parsePropTypeLocalization(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual cocos2d::Color4B parsePropTypeColor4(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual bool parsePropTypeSeparatorCheck(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual RRP::MinMaxGradientData parsePropTypeMinMaxGradientData(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual RRP::MinMaxCurveData parsePropTypeMinMaxCurveData(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual RRP::EmissionData parsePropTypeEmissionData(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const char *pPropertyName, const RedreamInfo::Value& valueProtobuf); virtual float * parsePropTypeFloatXYZ(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual std::string parsePropTypeMaterialFile(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual MaterialBall parsePropTypeMaterialBall(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual BakeAnimation parsePropTypeBakeAnimation(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual WiseEventData parsePropTypeWise(cocos2d::Node * pNode, cocos2d::Node * pParent, REDReader * ccbReader, const RedreamInfo::Value& valueProtobuf); virtual void onHandlePropTypePosition(cocos2d::Node * pNode,cocos2d:: Node * pParent, const char* pPropertyName, cocos2d::Vec2 pPosition, REDReader * ccbReader); virtual void onHandlePropTypePoint(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::Vec2 pPoint, REDReader * ccbReader); virtual void onHandlePropTypePointLock(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::Vec2 pPointLock, REDReader * ccbReader); virtual void onHandlePropTypeSize(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::Size pSize, REDReader * ccbReader); virtual void onHandlePropTypeScaleLock(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, float * pScaleLock, REDReader * ccbReader); virtual void onHandlePropTypeFloat(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, float pFloat, REDReader * ccbReader); virtual void onHandlePropTypeDegrees(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, float pDegrees, REDReader * ccbReader); virtual void onHandlePropTypeFloatScale(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, float pFloatScale, REDReader * ccbReader); virtual void onHandlePropTypeInteger(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, int pInteger, REDReader * ccbReader); virtual void onHandlePropTypeIntegerLabeled(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, int pIntegerLabeled, REDReader * ccbReader); virtual void onHandlePropTypeFloatVar(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, float * pFoatVar, REDReader * ccbReader); virtual void onHandlePropTypeFloatXY(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, float * pFoatVar, REDReader * ccbReader); virtual void onHandlePropTypeCheck(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, bool pCheck, REDReader * ccbReader); virtual void onHandlePropTypeSpriteFrame(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::SpriteFrame * pSpriteFrame, REDReader * ccbReader); virtual void onHandlePropTypeAnimation(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::Animation * pAnimation, REDReader * ccbReader); virtual void onHandlePropTypeTexture(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::Texture2D * pTexture2D, REDReader * ccbReader); virtual void onHandlePropTypeByte(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, unsigned char pByte, REDReader * ccbReader); virtual void onHandlePropTypeColor3(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::Color3B pColor3B, REDReader * ccbReader); virtual void onHandlePropTypeColor4FVar(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::Color4F * pColor4FVar, REDReader * ccbReader); virtual void onHandlePropTypeFlip(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, bool * pFlip, REDReader * ccbReader); virtual void onHandlePropTypeBlendFunc(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::BlendFunc pBlendFunc, REDReader * ccbReader); virtual void onHandlePropTypeFntFile(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * pFntFile, REDReader * ccbReader); virtual void onHandlePropTypeString(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * pString, REDReader * ccbReader); virtual void onHandlePropTypeText(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * pText, REDReader * ccbReader); virtual void onHandlePropTypeFontTTF(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * pFontTTF, REDReader * ccbReader); virtual void onHandlePropTypeBlock(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, BlockData * pBlockData, REDReader * ccbReader); virtual void onHandlePropTypeBlockControl(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, BlockControlData * pBlockControlData, REDReader * ccbReader); virtual void onHandlePropTypeREDFile(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::Node * pREDFileNode, REDReader * ccbReader); virtual void onHandlePropTypeSpineSkel(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * pSkel, REDReader * ccbReader); virtual void onHandlePropTypeSpineAtlas(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * pAtlas, REDReader * ccbReader); virtual void onHandlePropTypeSkelFrame(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, spine::SkeletonFrame pSkeFrame, REDReader * ccbReader); virtual void onHandlePropTypeFrameSet(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, std::vector pFrameSet, REDReader * ccbReader); virtual void onHandlePropTypePercent(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, int pValue, REDReader * ccbReader); virtual void onHandlePropTypeColor4(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, cocos2d::Color4B pColor4, REDReader * ccbReader); virtual void onHandlePropTypeCallbacks(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, CallbacksData * pCallbacksData, REDReader * ccbReader); virtual void onHandlePropTypeLocalization(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, LocalizationModel pModel, REDReader * ccbReader); virtual void onHandlePropTypeTableviewRedFile(cocos2d::Node * pNode, cocos2d::Node * pParent, const char * pPropertyName, std::vector pREDFileNodes, REDReader * ccbReader); virtual void onHandlePropTypePbVertsFile(cocos2d::Node * pNode, cocos2d::Node * pParent, const char * pPropertyName, const std::string& filePath, REDReader * ccbReader); virtual void onHandlePropTypeSeparatorCheck(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, bool check, REDReader * ccbReader); virtual void onHandlePropTypeMinMaxGradientData(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, RRP::MinMaxGradientData& minMaxGradientData, REDReader * ccbReader); virtual void onHandlePropTypeMinMaxCurveData(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, RRP::MinMaxCurveData& minMaxCurveData, REDReader * ccbReader); virtual void onHandlePropTypeEmissionData(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, RRP::EmissionData& emissionData, REDReader * ccbReader); virtual void onHandlePropTypeFloatXYZ(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, float * pFloatVar, REDReader * ccbReader); virtual void onHandlePropTypeMaterialFile(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * materialFile, REDReader * ccbReader); virtual void onHandlePropTypeMaterialBall(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * materialPath, std::map params, REDReader * ccbReader); virtual void onHandlePropTypeBakeDataFile(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * dataFile, REDReader * ccbReader); virtual void onHandlePropTypeBakeAnimation(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * animationName, float elapsedTime, bool loop, REDReader * ccbReader); virtual void onHandlePropTypePolygonFile(cocos2d::Node* pNode, cocos2d::Node* pParent, const char* pPropertyName, const std::string& filePath, REDReader* ccbReader); virtual void onHandlePropTypeWise(cocos2d::Node* pNode, cocos2d::Node* pParent, const char* pPropertyName, const WiseEventData& wiseEventData, REDReader* ccbReader); protected: cocos2d::ValueMap _customProperties; }; } #endif