RedBakeNodeLoader.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //
  2. // RedBakeNodeLoader.cpp
  3. // redream_runtime
  4. //
  5. // Created by zhuge on 2023/8/10.
  6. //
  7. #include "RedBakeNodeLoader.h"
  8. #define PROPERTY_TEXTURE "texture"
  9. #define PROPERTY_BAKE_DATA_FILE "bakeDataFile"
  10. #define PROPERTY_BAKE_ANIMATION "bakeAnimation"
  11. namespace redream {
  12. RedBakeNode* RedBakeNodeLoader::createNode(cocos2d::Node * pParent, redream::REDReader * ccbReader) {
  13. auto bakeNode = RedBakeNode::create();
  14. bakeNode->schedule(CC_SCHEDULE_SELECTOR(RedBakeNode::update), 0);
  15. return bakeNode;
  16. }
  17. void RedBakeNodeLoader::onHandlePropTypeTexture(cocos2d::Node *pNode, cocos2d::Node *pParent, const char *pPropertyName, cocos2d::Texture2D *pTexture2D, REDReader *ccbReader) {
  18. if (strcmp(pPropertyName, PROPERTY_TEXTURE) == 0) {
  19. ((RedBakeNode*)pNode)->setTexture(pTexture2D);
  20. } else {
  21. NodeLoader::onHandlePropTypeTexture(pNode, pParent, pPropertyName, pTexture2D, ccbReader);
  22. }
  23. }
  24. void RedBakeNodeLoader::onHandlePropTypeSpriteFrame(cocos2d::Node *pNode, cocos2d::Node *pParent, const char *pPropertyName, cocos2d::SpriteFrame *pSpriteFrame, REDReader *ccbReader) {
  25. if (strcmp(pPropertyName, PROPERTY_TEXTURE) == 0) {
  26. ((RedBakeNode*)pNode)->setTexture(pSpriteFrame->getTexture());
  27. } else {
  28. NodeLoader::onHandlePropTypeSpriteFrame(pNode, pParent, pPropertyName, pSpriteFrame, ccbReader);
  29. }
  30. }
  31. void RedBakeNodeLoader::onHandlePropTypeBakeDataFile(cocos2d::Node *pNode, cocos2d::Node *pParent, const char *pPropertyName, const char *dataFile, REDReader *ccbReader) {
  32. if (strcmp(pPropertyName, PROPERTY_BAKE_DATA_FILE) == 0) {
  33. ((RedBakeNode*)pNode)->setBakeDataFile(dataFile);
  34. } else {
  35. NodeLoader::onHandlePropTypeBakeDataFile(pNode, pParent, pPropertyName, dataFile, ccbReader);
  36. }
  37. }
  38. void RedBakeNodeLoader::onHandlePropTypeBakeAnimation(cocos2d::Node *pNode, cocos2d::Node *pParent, const char *pPropertyName, const char *animationName, float elapsedTime, bool loop, REDReader *ccbReader) {
  39. if (strcmp(pPropertyName, PROPERTY_BAKE_ANIMATION) == 0) {
  40. ((RedBakeNode*)pNode)->setBakeFrame(RedBakeNodeFrame({animationName, elapsedTime, loop}));
  41. } else {
  42. NodeLoader::onHandlePropTypeBakeAnimation(pNode, pParent, pPropertyName, animationName, elapsedTime, loop, ccbReader);
  43. }
  44. }
  45. } // END NAMESPACE