From d21af3b9815379f3ae79836116b5efe68851f9ea Mon Sep 17 00:00:00 2001 From: James Chen Date: Tue, 5 Dec 2017 13:35:16 +0800 Subject: [PATCH] Some fixes after using ndk r16 clang to build android projects (#18531) * [android] Fixes warning in UrlAudioPlayer.cpp and CCUserDefault-android.cpp * Don't write 'using namespace std;' in header files. * Uses std::unordered_map instead of std::map for Particle3D module. * Updates external/config.json to v3-deps-141 * Continue to replace `gnustl_static` to `c++_static` for templates and test projects. * Updates CCConsole.h/.cpp to resolve the following issue on Android: jni/../../../../../cocos/base/CCConsole.cpp:321:28: required from here /Users/james/Software/android/android-sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include/utility:506:63: error: incomplete type 'std::__ndk1::is_move_assignable' used in nested name specifier is_move_assignable::value && ^ make: *** [obj/local/arm64-v8a/objs-debug/cocos2dx_internal_static/base/CCConsole.o] Error 1 * Fixes a memory leak while addCommand and other minor changes. * Updates tolua/cocos2dx.ini, don't bind Console::Command * Adds CC_DLL for Console::Command * Reverts tolua/cocos2dx.ini and ignore Console::[add Command addSubCommand getSubCommand delSubCommand]. * Ignores Console::getCommand. --- cocos/audio/android/UrlAudioPlayer.cpp | 2 +- cocos/base/CCConsole.cpp | 168 ++++++++++++++---- cocos/base/CCConsole.h | 49 +++-- cocos/base/CCUserDefault-android.cpp | 2 +- extensions/Particle3D/CCParticleSystem3D.h | 2 +- .../Particle3D/PU/CCPUAffectorManager.h | 1 - .../Particle3D/PU/CCPUBehaviourManager.h | 1 - extensions/Particle3D/PU/CCPUColorAffector.h | 1 + extensions/Particle3D/PU/CCPUEmitterManager.h | 1 - .../Particle3D/PU/CCPUParticleSystem3D.h | 2 +- extensions/Particle3D/PU/CCPURibbonTrail.h | 3 +- .../Particle3D/PU/CCPUScriptCompiler.cpp | 6 +- extensions/Particle3D/PU/CCPUScriptCompiler.h | 13 +- .../Particle3D/PU/CCPUTranslateManager.h | 1 - .../Particle3D/PU/CCPUVertexEmitter.cpp | 2 +- external/config.json | 2 +- .../proj.android/app/jni/Application.mk | 2 +- .../proj.android/app/jni/Application.mk | 2 +- .../proj.android/app/jni/Application.mk | 2 +- tools/tolua/cocos2dx.ini | 2 +- 20 files changed, 197 insertions(+), 67 deletions(-) diff --git a/cocos/audio/android/UrlAudioPlayer.cpp b/cocos/audio/android/UrlAudioPlayer.cpp index c6f01b826c..8795d10c9a 100644 --- a/cocos/audio/android/UrlAudioPlayer.cpp +++ b/cocos/audio/android/UrlAudioPlayer.cpp @@ -69,7 +69,7 @@ UrlAudioPlayer::UrlAudioPlayer(SLEngineItf engineItf, SLObjectItf outputMixObjec __playerContainerMutex.lock(); __playerContainer.push_back(this); - ALOGV("Current UrlAudioPlayer instance count: %d", __playerContainer.size()); + ALOGV("Current UrlAudioPlayer instance count: %d", (int)__playerContainer.size()); __playerContainerMutex.unlock(); _callerThreadId = callerThreadUtils->getCallerThreadId(); diff --git a/cocos/base/CCConsole.cpp b/cocos/base/CCConsole.cpp index b36939b049..29b7b31446 100644 --- a/cocos/base/CCConsole.cpp +++ b/cocos/base/CCConsole.cpp @@ -311,42 +311,134 @@ const std::string& Console::Utility::getPrompt() // Command code // -void Console::Command::addCallback(const Callback& callback_) +Console::Command::Command() +: _callback(nullptr) { - callback = callback_; + +} + +Console::Command::Command(const std::string& name, const std::string& help) +: _name(name) +, _help(help) +, _callback(nullptr) +{ + +} + +Console::Command::Command(const std::string& name, const std::string& help, const Callback& callback) +: _name(name) +, _help(help) +, _callback(callback) +{ + +} + +Console::Command::Command(const Command& o) +{ + *this = o; +} + +Console::Command::Command(Command&& o) +{ + *this = std::move(o); +} + +Console::Command::~Command() +{ + for (const auto& e : _subCommands) + { + delete e.second; + } +} + +Console::Command& Console::Command::operator=(const Command& o) +{ + if (this != &o) + { + _name = o._name; + _help = o._help; + _callback = o._callback; + + for (const auto& e : _subCommands) + delete e.second; + + _subCommands.clear(); + for (const auto& e : o._subCommands) + { + Command* subCommand = e.second; + auto newCommand = new (std::nothrow) Command(*subCommand); + _subCommands[e.first] = newCommand; + } + } + + return *this; +} + +Console::Command& Console::Command::operator=(Command&& o) +{ + if (this != &o) + { + _name = std::move(o._name); + _help = std::move(o._help); + _callback = std::move(o._callback); + o._callback = nullptr; + + for (const auto& e : _subCommands) + delete e.second; + + _subCommands.clear(); + _subCommands = std::move(o._subCommands); + } + + return *this; +} + +void Console::Command::addCallback(const Callback& callback) +{ + _callback = callback; } void Console::Command::addSubCommand(const Command& subCmd) { - subCommands[subCmd.name] = subCmd; + auto iter = _subCommands.find(subCmd._name); + if (iter != _subCommands.end()) + { + delete iter->second; + _subCommands.erase(iter); + } + + Command* cmd = new (std::nothrow) Command(); + *cmd = subCmd; + _subCommands[subCmd._name] = cmd; } const Console::Command* Console::Command::getSubCommand(const std::string& subCmdName) const { - auto it = subCommands.find(subCmdName); - if(it != subCommands.end()) { + auto it = _subCommands.find(subCmdName); + if(it != _subCommands.end()) { auto& subCmd = it->second; - return &subCmd; + return subCmd; } return nullptr; } void Console::Command::delSubCommand(const std::string& subCmdName) { - auto it = subCommands.find(subCmdName); - if(it != subCommands.end()) { - subCommands.erase(it); + auto iter = _subCommands.find(subCmdName); + if (iter != _subCommands.end()) { + delete iter->second; + _subCommands.erase(iter); } } void Console::Command::commandHelp(int fd, const std::string& /*args*/) { - if (! help.empty()) { - Console::Utility::mydprintf(fd, "%s\n", help.c_str()); + if (! _help.empty()) { + Console::Utility::mydprintf(fd, "%s\n", _help.c_str()); } - if (! subCommands.empty()) { - sendHelp(fd, subCommands, ""); + if (! _subCommands.empty()) { + sendHelp(fd, _subCommands, ""); } } @@ -366,18 +458,18 @@ void Console::Command::commandGeneric(int fd, const std::string& args) } // find sub command - auto it = subCommands.find(key); - if (it != subCommands.end()) { + auto it = _subCommands.find(key); + if (it != _subCommands.end()) { auto subCmd = it->second; - if (subCmd.callback) { - subCmd.callback(fd, args); + if (subCmd->_callback) { + subCmd->_callback(fd, args); } return; } // can not find - if (callback) { - callback(fd, args); + if (_callback) { + _callback(fd, args); } } @@ -413,6 +505,9 @@ Console::Console() Console::~Console() { stop(); + + for (auto& e : _commands) + delete e.second; } bool Console::listenOnTCP(int port) @@ -530,21 +625,29 @@ void Console::stop() void Console::addCommand(const Command& cmd) { - _commands[cmd.name] = cmd; + Command* newCommand = new (std::nothrow) Command(cmd); + auto iter = _commands.find(cmd.getName()); + if (iter != _commands.end()) + { + delete iter->second; + _commands.erase(iter); + } + _commands[cmd.getName()] = newCommand; } void Console::addSubCommand(const std::string& cmdName, const Command& subCmd) { auto it = _commands.find(cmdName); - if(it != _commands.end()) { + if (it != _commands.end()) + { auto& cmd = it->second; - addSubCommand(cmd, subCmd); + addSubCommand(*cmd, subCmd); } } void Console::addSubCommand(Command& cmd, const Command& subCmd) { - cmd.subCommands[subCmd.name] = subCmd; + cmd.addSubCommand(subCmd); } const Console::Command* Console::getCommand(const std::string& cmdName) @@ -552,7 +655,7 @@ const Console::Command* Console::getCommand(const std::string& cmdName) auto it = _commands.find(cmdName); if(it != _commands.end()) { auto& cmd = it->second; - return &cmd; + return cmd; } return nullptr; } @@ -562,7 +665,7 @@ const Console::Command* Console::getSubCommand(const std::string& cmdName, const auto it = _commands.find(cmdName); if(it != _commands.end()) { auto& cmd = it->second; - return getSubCommand(cmd, subCmdName); + return getSubCommand(*cmd, subCmdName); } return nullptr; } @@ -576,6 +679,7 @@ void Console::delCommand(const std::string& cmdName) { auto it = _commands.find(cmdName); if(it != _commands.end()) { + delete it->second; _commands.erase(it); } } @@ -585,7 +689,7 @@ void Console::delSubCommand(const std::string& cmdName, const std::string& subCm auto it = _commands.find(cmdName); if(it != _commands.end()) { auto& cmd = it->second; - delSubCommand(cmd, subCmdName); + delSubCommand(*cmd, subCmdName); } } @@ -855,7 +959,7 @@ bool Console::parseCommand(int fd) } auto cmd = it->second; - cmd.commandGeneric(fd, args2); + cmd->commandGeneric(fd, args2); }else if(strcmp(buf, "\r\n") != 0) { const char err[] = "Unknown command. Type 'help' for options\n"; Console::Utility::sendToConsole(fd, err, strlen(err)); @@ -1480,21 +1584,21 @@ void Console::printFileUtils(int fd) Console::Utility::sendPrompt(fd); } -void Console::sendHelp(int fd, const std::map& commands, const char* msg) +void Console::sendHelp(int fd, const std::unordered_map& commands, const char* msg) { Console::Utility::sendToConsole(fd, msg, strlen(msg)); for(auto& it : commands) { auto command = it.second; - if (command.help.empty()) continue; + if (command->getHelp().empty()) continue; - Console::Utility::mydprintf(fd, "\t%s", command.name.c_str()); - ssize_t tabs = strlen(command.name.c_str()) / 8; + Console::Utility::mydprintf(fd, "\t%s", command->getName().c_str()); + ssize_t tabs = strlen(command->getName().c_str()) / 8; tabs = 3 - tabs; for(int j=0;jgetHelp().c_str()); } } diff --git a/cocos/base/CCConsole.h b/cocos/base/CCConsole.h index fa442ccbfc..bc634aa33d 100644 --- a/cocos/base/CCConsole.h +++ b/cocos/base/CCConsole.h @@ -41,7 +41,7 @@ typedef SSIZE_T ssize_t; #include #include -#include +#include #include #include #include @@ -110,17 +110,29 @@ public: }; /** Command Struct */ - struct Command { + class CC_DLL Command + { + public: using Callback = std::function; - std::string name; - std::string help; - Callback callback{nullptr}; - std::map subCommands; - /** Constructor */ - Command() {} - Command(std::string name_, std::string help_) : name(name_), help(help_) {}; - Command(std::string name_, std::string help_, Callback callback_) : name(name_), help(help_), callback(callback_) {}; + Command(); + Command(const std::string& name, const std::string& help); + Command(const std::string& name, const std::string& help, const Callback& callback); + + /** Copy constructor */ + Command(const Command& o); + + /** Move constructor */ + Command(Command&& o); + + /** Destructor */ + ~Command(); + + /** Copy operator */ + Command& operator=(const Command& o); + + /** Move operator */ + Command& operator=(Command&& o); /** add callback */ void addCallback(const Callback& callback); @@ -139,6 +151,19 @@ public: /** generic command handler */ void commandGeneric(int fd, const std::string& args); + + /** Gets the name of the current command */ + const std::string& getName() const { return _name; } + + /** Gets the help information of the current command */ + const std::string& getHelp() const { return _help; } + + private: + std::string _name; + std::string _help; + + Callback _callback; + std::unordered_map _subCommands; }; /** Constructor */ @@ -252,7 +277,7 @@ protected: bool _endThread; bool _isIpv6Server; - std::map _commands; + std::unordered_map _commands; // strings generated by cocos2d sent to the remote console bool _sendDebugStrings; @@ -271,7 +296,7 @@ private: void printFileUtils(int fd); /** send help message to console */ - static void sendHelp(int fd, const std::map& commands, const char* msg); + static void sendHelp(int fd, const std::unordered_map& commands, const char* msg); }; NS_CC_END diff --git a/cocos/base/CCUserDefault-android.cpp b/cocos/base/CCUserDefault-android.cpp index 1388a7138d..c135864260 100644 --- a/cocos/base/CCUserDefault-android.cpp +++ b/cocos/base/CCUserDefault-android.cpp @@ -389,7 +389,7 @@ Data UserDefault::getDataForKey(const char* pKey, const Data& defaultValue) if (encodedDefaultData) free(encodedDefaultData); - CCLOG("ENCODED STRING: --%s--%d", encodedStr.c_str(), encodedStr.length()); + CCLOG("ENCODED STRING: --%s--%d", encodedStr.c_str(), (int)encodedStr.length()); unsigned char * decodedData = NULL; int decodedDataLen = base64Decode((unsigned char*)encodedStr.c_str(), (unsigned int)encodedStr.length(), &decodedData); diff --git a/extensions/Particle3D/CCParticleSystem3D.h b/extensions/Particle3D/CCParticleSystem3D.h index ba3a62cc37..324ee0fd2c 100644 --- a/extensions/Particle3D/CCParticleSystem3D.h +++ b/extensions/Particle3D/CCParticleSystem3D.h @@ -55,7 +55,7 @@ struct CC_DLL Particle3D float depth;//Own depth //user defined property - std::map userDefs; + std::unordered_map userDefs; }; template diff --git a/extensions/Particle3D/PU/CCPUAffectorManager.h b/extensions/Particle3D/PU/CCPUAffectorManager.h index 00b8b500da..868ead4e09 100644 --- a/extensions/Particle3D/PU/CCPUAffectorManager.h +++ b/extensions/Particle3D/PU/CCPUAffectorManager.h @@ -56,7 +56,6 @@ #include "extensions/Particle3D/PU/CCPUVelocityMatchingAffectorTranslator.h" #include "extensions/Particle3D/PU/CCPUVortexAffectorTranslator.h" -using namespace std; NS_CC_BEGIN class PUAffectorManager diff --git a/extensions/Particle3D/PU/CCPUBehaviourManager.h b/extensions/Particle3D/PU/CCPUBehaviourManager.h index c370a8ebf4..1d78605e7f 100644 --- a/extensions/Particle3D/PU/CCPUBehaviourManager.h +++ b/extensions/Particle3D/PU/CCPUBehaviourManager.h @@ -31,7 +31,6 @@ #include "extensions/Particle3D/PU/CCPUBehaviour.h" #include "extensions/Particle3D/PU/CCPUSlaveBehaviourTranslator.h" -using namespace std; NS_CC_BEGIN class PUBehaviourManager diff --git a/extensions/Particle3D/PU/CCPUColorAffector.h b/extensions/Particle3D/PU/CCPUColorAffector.h index 0262966ce2..6e8d60c411 100644 --- a/extensions/Particle3D/PU/CCPUColorAffector.h +++ b/extensions/Particle3D/PU/CCPUColorAffector.h @@ -29,6 +29,7 @@ #include "extensions/Particle3D/PU/CCPUAffector.h" #include "base/ccTypes.h" +#include NS_CC_BEGIN diff --git a/extensions/Particle3D/PU/CCPUEmitterManager.h b/extensions/Particle3D/PU/CCPUEmitterManager.h index 0c4565fdab..c895bc4183 100644 --- a/extensions/Particle3D/PU/CCPUEmitterManager.h +++ b/extensions/Particle3D/PU/CCPUEmitterManager.h @@ -38,7 +38,6 @@ #include "extensions/Particle3D/PU/CCPUSlaveEmitterTranslator.h" #include "extensions/Particle3D/PU/CCPUSphereSurfaceEmitterTranslator.h" -using namespace std; NS_CC_BEGIN class PUEmitterManager diff --git a/extensions/Particle3D/PU/CCPUParticleSystem3D.h b/extensions/Particle3D/PU/CCPUParticleSystem3D.h index 474dad1b46..076d3a6377 100644 --- a/extensions/Particle3D/PU/CCPUParticleSystem3D.h +++ b/extensions/Particle3D/PU/CCPUParticleSystem3D.h @@ -215,7 +215,7 @@ class CC_DLL PUParticleSystem3D : public ParticleSystem3D { public: - typedef std::map ParticlePoolMap; + typedef std::unordered_map ParticlePoolMap; static const float DEFAULT_WIDTH; static const float DEFAULT_HEIGHT; diff --git a/extensions/Particle3D/PU/CCPURibbonTrail.h b/extensions/Particle3D/PU/CCPURibbonTrail.h index ad8c363851..0e866ab513 100644 --- a/extensions/Particle3D/PU/CCPURibbonTrail.h +++ b/extensions/Particle3D/PU/CCPURibbonTrail.h @@ -30,6 +30,7 @@ #include "math/CCMath.h" #include "extensions/Particle3D/PU/CCPUBillboardChain.h" #include +#include NS_CC_BEGIN @@ -163,7 +164,7 @@ protected: // fast lookup node->chain index // we use positional map too because that can be useful - typedef std::map NodeToChainSegmentMap; + typedef std::unordered_map NodeToChainSegmentMap; NodeToChainSegmentMap _nodeToSegMap; /// Total length of trail in world units diff --git a/extensions/Particle3D/PU/CCPUScriptCompiler.cpp b/extensions/Particle3D/PU/CCPUScriptCompiler.cpp index 7f5d398dde..cb39a7c372 100644 --- a/extensions/Particle3D/PU/CCPUScriptCompiler.cpp +++ b/extensions/Particle3D/PU/CCPUScriptCompiler.cpp @@ -80,7 +80,7 @@ void PUObjectAbstractNode::setVariable(const std::string &inName, const std::str std::pair PUObjectAbstractNode::getVariable(const std::string &inName) const { - std::map::const_iterator i = _env.find(inName); + std::unordered_map::const_iterator i = _env.find(inName); if(i != _env.end()) return std::make_pair(true, i->second); @@ -95,7 +95,7 @@ std::pair PUObjectAbstractNode::getVariable(const std::string return std::make_pair(false, ""); } -const map &PUObjectAbstractNode::getVariables() const +const std::unordered_map &PUObjectAbstractNode::getVariables() const { return _env; } @@ -313,7 +313,7 @@ void PUScriptCompiler::visit(PUConcreteNode *node) impl->file = node->file; impl->abstract = false; - list temp; + std::list temp; temp.push_back(node); for(const auto& child : node->children) { diff --git a/extensions/Particle3D/PU/CCPUScriptCompiler.h b/extensions/Particle3D/PU/CCPUScriptCompiler.h index 7955a8a7c7..e898e93917 100644 --- a/extensions/Particle3D/PU/CCPUScriptCompiler.h +++ b/extensions/Particle3D/PU/CCPUScriptCompiler.h @@ -28,6 +28,9 @@ #include "base/CCRef.h" #include "extensions/Particle3D/PU/CCPUScriptParser.h" +#include +#include + NS_CC_BEGIN /** This enum holds the types of the possible abstract nodes */ @@ -74,7 +77,7 @@ public: class CC_DLL PUObjectAbstractNode : public PUAbstractNode { private: - std::map _env; + std::unordered_map _env; public: std::string name, cls; std::vector bases; @@ -93,7 +96,7 @@ public: void addVariable(const std::string &name); void setVariable(const std::string &name, const std::string &value); std::pair getVariable(const std::string &name) const; - const std::map &getVariables() const; + const std::unordered_map &getVariables() const; }; /** This abstract node represents a script property */ @@ -134,7 +137,7 @@ private: bool isNameExcluded(const std::string &cls, PUAbstractNode *parent); public: - typedef std::map IdMap; + typedef std::unordered_map IdMap; static PUScriptCompiler* Instance(); @@ -144,7 +147,7 @@ public: void convertToAST(const PUConcreteNodeList &nodes,PUAbstractNodeList &aNodes); - std::map env; + std::unordered_map env; private: PUScriptCompiler(); @@ -154,7 +157,7 @@ private: void visit(PUConcreteNode *node); private: - std::map _compiledScripts; + std::unordered_map _compiledScripts; PUAbstractNode *_current; PUAbstractNodeList *_nodes; PUParticleSystem3D *_PUParticleSystem3D; diff --git a/extensions/Particle3D/PU/CCPUTranslateManager.h b/extensions/Particle3D/PU/CCPUTranslateManager.h index 42356937ed..d86c37ad83 100644 --- a/extensions/Particle3D/PU/CCPUTranslateManager.h +++ b/extensions/Particle3D/PU/CCPUTranslateManager.h @@ -37,7 +37,6 @@ #include "extensions/Particle3D/PU/CCPUObserverTranslator.h" #include "extensions/Particle3D/PU/CCPUBehaviourTranslator.h" -using namespace std; NS_CC_BEGIN class PUMaterialCache; class PUTranslateManager diff --git a/extensions/Particle3D/PU/CCPUVertexEmitter.cpp b/extensions/Particle3D/PU/CCPUVertexEmitter.cpp index 8edee94975..46a87880f3 100644 --- a/extensions/Particle3D/PU/CCPUVertexEmitter.cpp +++ b/extensions/Particle3D/PU/CCPUVertexEmitter.cpp @@ -322,7 +322,7 @@ NS_CC_BEGIN // @remarks // Use objectspace for the vectors and only transform as soon as a particle is emitted. // */ -// list::iterator iterator = mSpawnPositionList.end(); +// std::list::iterator iterator = mSpawnPositionList.end(); // Vec3 start = startVector; // if (lengthIncrement > 0.0f) // { diff --git a/external/config.json b/external/config.json index f8b2f8bbb1..09f9fc02c8 100644 --- a/external/config.json +++ b/external/config.json @@ -1,5 +1,5 @@ { - "version": "v3-deps-139", + "version": "v3-deps-141", "zip_file_size": "136974507", "repo_name": "cocos2d-x-3rd-party-libs-bin", "repo_parent": "https://github.com/cocos2d/", diff --git a/templates/js-template-default/frameworks/runtime-src/proj.android/app/jni/Application.mk b/templates/js-template-default/frameworks/runtime-src/proj.android/app/jni/Application.mk index e318042b3b..24d2be8cfd 100644 --- a/templates/js-template-default/frameworks/runtime-src/proj.android/app/jni/Application.mk +++ b/templates/js-template-default/frameworks/runtime-src/proj.android/app/jni/Application.mk @@ -1,4 +1,4 @@ -APP_STL := gnustl_static +APP_STL := c++_static # Uncomment this line to compile to armeabi-v7a, your application will run faster but support less devices #APP_ABI := armeabi-v7a diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.android/app/jni/Application.mk b/templates/lua-template-default/frameworks/runtime-src/proj.android/app/jni/Application.mk index 58d51bff55..224e46c317 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.android/app/jni/Application.mk +++ b/templates/lua-template-default/frameworks/runtime-src/proj.android/app/jni/Application.mk @@ -1,4 +1,4 @@ -APP_STL := gnustl_static +APP_STL := c++_static APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char -Wno-extern-c-compat APP_LDFLAGS := -latomic diff --git a/tests/lua-game-controller-test/project/proj.android/app/jni/Application.mk b/tests/lua-game-controller-test/project/proj.android/app/jni/Application.mk index 231945156f..852f82dfeb 100644 --- a/tests/lua-game-controller-test/project/proj.android/app/jni/Application.mk +++ b/tests/lua-game-controller-test/project/proj.android/app/jni/Application.mk @@ -1,4 +1,4 @@ -APP_STL := gnustl_static +APP_STL := c++_static APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char APP_LDFLAGS := -latomic diff --git a/tools/tolua/cocos2dx.ini b/tools/tolua/cocos2dx.ini index 0edc786ea1..8ee397281e 100644 --- a/tools/tolua/cocos2dx.ini +++ b/tools/tolua/cocos2dx.ini @@ -114,7 +114,7 @@ skip = Node::[setGLServerState description getUserObject .*UserData getGLServerS TMXTiledMap::[getPropertiesForGID], EventCustom::[getUserData setUserData], Component::[serialize], - Console::[addCommand], + Console::[addCommand addSubCommand getSubCommand delSubCommand getCommand], ParallaxNode::[(s|g)etParallaxArray], TileMapAtlas::[(s|g)etTGAInfo], GLProgramState::[setVertexAttribCallback setUniformCallback setVertexAttribPointer],