123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #include "CCSpriteLoader.h"
- using namespace cocos2d;
- #include "2d/CustomMaterial.hpp"
- #define PROPERTY_FLIP "flip"
- #define PROPERTY_DISPLAYFRAME "displayFrame"
- #define PROPERTY_BLENDFUNC "blendFunc"
- #define PROPERTY_USE_MATERIAL "useMaterial"
- #define PROPERTY_MATERIAL_BALL "materialBall"
- namespace redream {
- void SpriteLoader::onHandlePropTypeSpriteFrame(Node * pNode, Node * pParent, const char * pPropertyName, SpriteFrame * pSpriteFrame, REDReader * ccbReader) {
- if(strcmp(pPropertyName, PROPERTY_DISPLAYFRAME) == 0) {
- if(pSpriteFrame != nullptr) {
- ((Sprite *)pNode)->setSpriteFrame(pSpriteFrame);
- } else {
- CCLOG("ERROR: SpriteFrame nullptr");
- }
- } else {
- NodeLoader::onHandlePropTypeSpriteFrame(pNode, pParent, pPropertyName, pSpriteFrame, ccbReader);
- }
- }
- void SpriteLoader::onHandlePropTypeFlip(Node * pNode, Node * pParent, const char * pPropertyName, bool * pFlip, REDReader * ccbReader) {
- if(strcmp(pPropertyName, PROPERTY_FLIP) == 0) {
- ((Sprite *)pNode)->setFlippedX(pFlip[0]);
- ((Sprite *)pNode)->setFlippedY(pFlip[1]);
- } else {
- NodeLoader::onHandlePropTypeFlip(pNode, pParent, pPropertyName, pFlip, ccbReader);
- }
- }
- void SpriteLoader::onHandlePropTypeBlendFunc(Node * pNode, Node * pParent, const char * pPropertyName, BlendFunc pBlendFunc, REDReader * ccbReader) {
- if(strcmp(pPropertyName, PROPERTY_BLENDFUNC) == 0) {
- ((Sprite *)pNode)->setBlendFunc(pBlendFunc);
- } else {
- NodeLoader::onHandlePropTypeBlendFunc(pNode, pParent, pPropertyName, pBlendFunc, ccbReader);
- }
- }
- void SpriteLoader::onHandlePropTypeCheck(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, bool pCheck, REDReader * ccbReader) {
- if (strcmp(pPropertyName, PROPERTY_USE_MATERIAL) == 0) {
- ((Sprite*)pNode)->setMaterialEnable(pCheck);
- } else {
- NodeLoader::onHandlePropTypeCheck(pNode, pParent, pPropertyName, pCheck, ccbReader);
- }
- }
- void SpriteLoader::onHandlePropTypeMaterialBall(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * materialPath, std::map<std::string, float> params, REDReader * ccbReader) {
- if (strcmp(pPropertyName, PROPERTY_MATERIAL_BALL) == 0) {
- auto sprite = (Sprite*) pNode;
- sprite->setCustomMaterial(materialPath);
- for (auto it = params.begin(); it != params.end(); it++) {
- sprite->getCustomMaterial()->setParamFloat(it->first, it->second);
- }
- } else {
- NodeLoader::onHandlePropTypeMaterialBall(pNode, pParent, pPropertyName, materialPath, params, ccbReader);
- }
- }
- }
|