+ Added Application::openUrl for all supported platforms ecept WP8 and WinRT.
+ Scale9Sprite capInsets set fix.
+ Clang static analyzer crash fix.
+ Fix include in cocos network module.
+ Slider misprint fix.
+ Fix web socket crash.
+ Scale9Sprite cropped sprite frames support.
+
+ youknowone
+ Adds iOS-like elastic bounceback support for cocos2d::extension::ScrollView
+
+ aeonmine
+ Fixed ActionObject memory leak in ActionManagerEx::initWithDictionary
+ Fixed memory leak in cocos studiov2.0 reader
+
+ LoungeKatt
+ Corrected a mistake of building android project in README.md
+
+ flashjay
+ Remove deprecated code in lua tests & template
+ luaLoadChunksFromZip should just remove .lua or .luac extension
+
+ zukkun
+ Fixed incorrect function invocation in PhysicsBody::setAngularVelocityLimit
+
+ dbaack
+ Fixed a bug that removing and re-adding an event listener will trigger assert
+
+ zakmandhro
+ A typo fix in RELEASE_NOTES.md
+
+ mgcL
+ A potential memory leak fix in value's default constructor
+ Added ScriptHandlerMgr::destroyInstance to avoid memory leak
+
+ Mazyod
+ Fixed a bug that HTTPClient reports 2xx status codes as errors
+ Added missing Text Font and Placeholder feature of EditBox for Mac platform
+ HttpRequest uses std::function as callback
+ EditBox: mac secure input
+ Fix a bug that can not get/set text in password mode on Mac OS X
+ Make sure TableView parents are visible before handling touch
+ Fixed memory leak in HttpRequest
+
+ iSevenDays
+ Fixed a bug that the result of 'malloc' is incompatible with type 'unsigned char *' in Image::saveImageToPNG
+ Fixed a potential memory leak in CCEditBoxImplIOS.mm
+ Fixed incompatible pointer conversion in external/chipmunk/src/cpArray.c
+ Fixed memory leak in 'Image'
+ Fixed loosing precision when using 'recv' in 'Console'
+ Fixed link error with Xcode 6 when building with 32-bit architecture
+ Fixed CMake for Mac OS X
+
+ ololomax
+ Fixed a potential crash in SceneReader::createNodeWithSceneFile
+
+ gaoxiaosong
+ Fixed a warning in cpCollision.c
+
+ sachingarg05
+ Re-added orientation change callback in java activity
+ GLProgram should not abort() if shader compilation fails, returning false is better.
+
+ dplusic
+ Fixed that cc.pGetAngle may return wrong value
+
+ zifter
+ Fixed a bug that the effect of particle loaded from CocosBuilder is incorrectly
+ Fix twice calling onExit
+ Fixed bug with cascade opacity and color for control button
+ Fix Progress Action. Not working with charging from 100 to 0.
+
+ twhittock
+ Fixed a bug that Application::run returns wrong value on Mac platform
+
+ asmodehn
+ Added SDK / NDK detection based on PATH in Setup.py
+
+ myourys
+ Make cpp template support Eclipse c++ project
+
+ NatWeiss
+ Fix compilation error using arch i386
+ Fixed debug-config crash if a FrameBuffer has no RenderTargetDepthStencil.
+
+ favorcode
+ Correct some doxygen comment
+
+ asuuma
+ Fix Repeat will run one more over in rare situations.
+
+ uqtimes
+ Fix NSNotificationCenter and NSTimer leaks
+
+ ntotani
+ fix building error in lua-binding in release mode
+ Fixed WebView lua-bind method name.
+
+ kezhuw
+ AutoReleasePool manager improvement
+ Fixed a bug that condition variable sleep on unrelated mutex in HttpClient
+
+ zhouxiaoxiaoxujian
+ Added TextField::getStringLength()
+ Add shadow, outline, glow filter support for UIText
+ Fix UITextField IME can't auto detach
+ Add getChildByName method for get a node that can be cast to Type T
+ Improvement ImageViewReader don't necessary loadTexture when imageFilePath is empty
+
+ QiuleiWang
+ Fix the bug that calculated height of multi-line string was incorrect on iOS
+
+ Rumist
+ Fix the bug that the result of Director->convertToUI() is error.
+
+ kyokomi
+ Fix the bug that UIButton doesn't support TTF font
+ Fix a bug of TextReader
+ Fix a bug that UITextField doesn't support TTF font
+ Setted contentSize in CSLoader
+
+ gin0606
+ Add a new line at the end of a file
+ Fix a bug that crash happened when try to remove videoView(STATE_PLAYBACK_COMPLETED) in android
+ Fix video scale issue in iOS
+ Fix iOS VideoPlayer memory leak
+ Added c++11 random library support
+ Added WebView widget which supports iOS and Android
+
+ billtt
+ Fixed a bug that Node::setScale(float) may not work properly
+ network: Fixed a problem where WebSocket messages may pile up
+
+ Teivaz
+ Custom uniform search optimization
+ Fixed compiling error on WP8.
+ Added method for custom precompiled shader program loading on WP8
+ Enable screen orientation change handling on WP8
+ Enabled GLProgramState restoring on render recreated on WP8
+
+ chareice
+ Make `setup.py` work on zsh
+
+ taug
+ Could add seach path and resolution order path in front.
+
+ CaiCQ
+ Fix a but that LabelTTF may lost chinese characters on linux
+
+ chenguangqi
+ Fixed a compiling error on Android
+ Fixed an error when importing project using Eclipse on Android
+
+ uorbe001
+ Allow setting bundle to use in file utils on iOS and Mac OS X
+
+ yongkangchen
+ Fixed a bug that font size of EditBox is not scaled when glview is scaled on Mac OS X
+ Fixed a bug that Label::setTextColor does not have any effect on Mac OS X
+
+ wagulu
+ Fixed a bug that particle effect is wrong when scaled
+
+ reckhou
+ Optimize FPS control on Android
+
+ dzl-ian
+ Added getter and setter for TextColor for UIText
+
+ zii
+ Added utils::gettime()
+
+ takaken1994
+ Added function for setting min/max scale for ScrollView
+ studio: Removed "using namespace cocos2d" from CCFrame.h
+
+ maltium
+ Added 3D rotation support to RotateTo action
+
+ Hamken100per
+ Added a function getAssetManager() on CCFileUtilsAndroid
+
+ rny
+ Fixed LabelTTF::getBoundingBox() position error
+ SpriteFrameCache load from plist file content data
+
+ AppleJDay
+ Add Feature:EventMouse should support getDelta, getDeltaX, getDeltaY functions
+
+ GavinThornton
+ Fixed a bug that when a sprite added into SpriteBatchNod it will turn black if setting opacity
+
+ DavidPartouche
+ Fixed the bug that video player not showing on iOS if it's not in FullScreen mode
+
+ zaWasp
+ Added support for applicationDidEnterBackground / applicationWillEnterForeground on win32
+
+ xiangxw
+ Fixed the bug that Console::sendPrompt() will send extra `\0`
+
+ kaishiqi
+ Fixed a but that cursor postion is wrong on desktop.
+
+ jagd
+ Added setSubsteps() and getSubsteps() in PhysicsWorld
+
+ denpen
+ Fixed a bug that scroll view hidden picks up the touch events.
+
+ joewan
+ Fixed memory leak when use menu_selector
+
+ zhongfq
+ Optimize decompress jpg data
+ Fixed memory leak of TextureCache::reloadTexture()
+
+ wohaaitinciu
+ WebView support on windows.
+ Fix a fatal bug in EditBox implement for platform win32.
+
+ guykogus
+ Implemented Application::openUrl for WP8 and WinRT
+
+ tttreal
+ Fixed Label::getStringNumLines()
+
+ hongliang-goudou
+ Fixed the bug that UI animation playing crash if GUI JSON file is loaded again
+
+ yestein
+ Add Cocostudio Armature getOffsetPoints API for Lua
+
+ coldfog
+ Fix bug that ActionManagerEx::initWithBinary can only load one UI animation
+
+ timur-losev
+ Fix a bug that GLProgramCache::addGLProgram() can not replace existing program
+
+ TimothyZhang
+ Fixed a potential memory leak in GLProgram::setGLProgram()
+ Add jsb.fileUtils.writeDataToFile().
+
+ ahlwong
+ Fix Label Kerning on Single Characters
+
+ Svenito
+ Add greater than operator to Vec2
+
+ liamcindy
+ Update ui button size changed logic.
+ Added support for Cocos Studio Light3D.
+ Fix scrollview render errorl.
+ Update for text effect clone.
+ Update controlButton size calculate with new Scale9Sprite logic.
+ Update pageview to support adjust child size.
+
+ vovkasm
+ Fix warnings for Xcode6.1
+
+ nilium
+ Unignore libs dir in plugin and fix Travis script to descend into included directories
+
+ shrimpz
+ Fix two typos in luaval_to_quaternion
+ Fix label crashed on android
+
+ ton1517
+ Fix the issue that JumpTo can not be applied more than once
+
+ takaokato
+ Fix wrong result in Node:getParenttoNodeTransform() if node is transformed
+
+ AknEp
+ Fix FileUtils::fullPathForFilename return empty string if file not found
+
+ kompjoefriek
+ Fix compiling warnings
+ Device: Added vibrate support to enable vibration for a duration.
+
+ tmr111116
+ fix random int overflow
+
+ flamefox
+ fix the bug that Sprite3D::getAttachNode() should failed when there is no bone with name
+
+ ryule
+ Fixed HttpClient-ios request to work when the data is started by 0x00
+
+ loadrunner
+ Added romanian languange support
+ Added sensor property for PhysicsShape
+ Added line spacing/leading feature to Label.
+ Changed label font size type to float.
+ Removed scale factor for label shadow.
+ Fixed a TMXLayer bug: When using float values (for example the actual position of the character) to get the current tile, the wrong tile is sometimes/usually returned.
+[FIX] the color of underline is different from the text color
+[FIX] memory leak in `MenuItemToggle::create()`
+[FIX] crash after removing a physics body right after adding it
+[FIX] SpriteBatchNode crash if CC_SPRITE_DEBUG_DRAW is enabled
+[FIX] memory leak in `Data::move()`
+[FIX] crash in `EaseExpoentialOut::clone()`
+[FIX] buffer over-read in `GLProgram::updateUniformLocation()`
+[FIX] `dirty` variable incorrectly reset with a multiple camera setup causing drawing issues on Sprite
+[FIX] fix label text formatter right alignment
+[FIX] `bsd_signal` link error on Android
+[FIX] crash while decoding small MP3 file on Android
+[FIX] `AppDelegate::applicationWillEnterForeground()` is invoked at launch on Android
+[FIX] fix `relocation overflow in R_ARM_THM_CALL` on Android
+[FIX] navigation bar doesn't hide if show and dismiss keyboard on Android
+[FIX] `utils::getTimeInMilliseconds()` may return wrong value on Android
+[FiX] link error that `bsd_sinal` is not defined if building with API level 21+ and uses libwebsockets on Android
+[FIX] compiling error with Android 6.0(API 23)
+[FIX] music is not resumed when app is reactived on iOS
+[FIX] random crash in `alGenBuffers` at startup on iOS
+[FIX] can not play audio if uncache and play audio many times on iOS
+[FIX] `Text::create()` crash if it contains invalid string on iOS
+[FIX] `FileUtils::removeDirectory()` can not work on all platforms except iOS and Mac
+[FIX] can not compile cocos2d-x on Mac OS X 10.10 and lower
+[FIX] new js project link error on linux
+[FIX] AudioEngine can not play large ogg file on Windows
+[FIX] design resolution broken after minimize on desk platforms
+[FIX] can not get the `backClicked` in lua
+[FIX] `cc.convertColor` issue in lua
+[FIX] browser version detection
+[FIX] compiling error with `cocos gen-libs`
+[FIX] spine track entry can circle reference each other
+[FIX] global object can leak during restart in JSB
+[FIX] progress timer nested sprite can't change color in Canvas
+[FIX] layout refresh issue in web engine
+[FIX] dom element position synchronization issue in web engine
+[FIX] armature position shake when parent node move in web engine
+[FIX] rendering issue for Armature using sprite as display in bone in web engine
+[FIX] Scale9Sprite GRAY state isn't correct in WebGL
+[FIX] touch startPoint can be overwrote in web engine
+[FIX] syncStatus transform dirty flag isn't resetting in web engine
+
+cocos2d-x-3.12 Jul 06 2016
+
+[HIGHLIGHT] add VR support
+[HIGHLIGHT] add Tizen support
+[HIGHLIGHT] fix Android performance issue
+[HIGHLIGHT] Web engine performance improved in WebGL mode
+[HIGHLIGHT] support obb extension on Android
+
+[NEW] Core: add `utils::findChild()`
+[NEW] Core: add CSV format support to tile maps
+[NEW] Core: add `FileUtils::getContents()`
+[NEW] Core: cocos2d::Value supports unsigned
+[NEW] Particle: add feature to pause/resume particle emitter
+[NEW] Platform: support Windows 10 UWP x64
+[NEW] UI: add clamp and shrunk feature for system fonts, currently only support iOS, Android and Mac
+[NEW] UI: make ListView select item programmatically
+[NEW] UI: add `EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS` to lowercase characters
+[NEW] UI: add `setBounce()` to WebView
+[NEW] Web: refactor TMXLayer renderers
+[NEW] Web: can force orientation in mobile browser
+[NEW] Web: support high resolution TTF Label on retina display
+
+[REFINE] Android: use clang instead of gcc to compile codes
+[REFINE] Android: hide virtual button by default
+[REFINE] Android: set music volume control as default
+[REFINE] Android: usage clang insteand of gcc to compile codes
+[REFINE] Audio: catch `IllegalStateException` exception to avoid crash when playing background music with SimpleAudioEngine on Android
+[REFINE] Core: fix many warnings
+[REFINE] Core: move StringUtils functions from deprecated header file to ccUTF8.h
+[REFINE] Core: FontFNT will ignore chars that exceeds 65535 and print a warning information
+[REFINE] Core: `Node::ignoreAnchorPointForPosition()` is deprecated and add `Node::setIgnoreAnchorPointForPosition()`
+[REFINE] Core: allow inherit from platform FileUitils
+[REFINE] Core: add optional alpha parameter to Color4B and Color4F
+[REFINE] Core: Follow action can accept horizontal and vertical offset
+[REFINE] Core: TMXXMLParse parse `id` element
+[REFINE] Lua: rename all member functions named `end()` to `endLua()`
+[REFINE] JSB: make selectedSprite opitional in MenuItemSprite
+[REFINE] JSB: return null if read failed in `js_cocos2dx_CCFileUtils_getDataFromFile()`
+[REFINE] Template: iOS tempalte is refined to make cocos2d-x game scene work better with other UIView
+[REFINE] Template: remove `build_native.sh`
+[REFINE] Template: ARC support on iOS and Mac OS
+[REFINE] UI: TTF and BMFont label wrap mode will automanytically changed to char wrap mode when label's width is less than word's boundary
+[REFINE] UI: UIWidget adds missing properties for clone
+[REFINE] UI: UIScrollBar caches the texture created with base64 encoded images
+[REFINE] UI: EditBox now prints lowercase letters by default
+[REFINE] UI: enable WebView's local storage on Android
+[REFINE] UI: improve EditBox implementation on WinRT
+[REFINE] UI: make PageView indicator more tunable
+[REFINE] UI: make PageView page turning event time tweak configurable
+[REFINE] UI: RichText is improved: add effect of outline, shadow and glow; catch the event of open url; ability to extend tags; add anchor of image tag
+[REFINE] 3D: skeleton animation is more efficient when two animations switch frequently
+[REFINE] 3rd party: update webp to 0.5.0
+[REFINE] Web: improve basic types to reduce memory usage
+[REFINE] Web: Show line number in console statements
+[REFINE] Web: Cache base64 image of PageViewIndicator and ScrollViewBar
+[REFINE] Web: Pass error in cc.AsyncPool in onEnd callback
+[REFINE] Web: Separate ccui.ListView event callback from ccui.ScrollView for its own events
+
+[FIX] Android: fix compiling error if using NDK r11+
+[FIX] Android: package name is `libcocos2dx` instead of application name if building with Android Studio
+[FIX] Audio: AudioEngine can not work if the file path contains not ascii code on iOS
+[FIX] Audio: SimpleAudioEngine::playEffect() doesn't work correctly on Linux
+[FIX] AssetsManager: can not work
+[FIX] AssetsManagerEx: use manifestUrl from remote version
+[FIX] Core: `FileUtils::writeValueMap()` will crash on iOS if it contains `Value::Type::None` type element
+[FIX] Core: `ClippgNode::setStencil()` may cause assert error if it is invoked before
+[FIX] Core: `TextureCache::addImageAsync()` doesn't set pixel format corretly
+[FIX] Core: `GL::SetBlending()` doesn't set dst correctly
+[FIX] Core: vertex z can not work correctly if window size changed on desktop platforms
+[FIX] Core: use `std::isnan()` instead of `isnan()` to fix compiling errors on some Linux platforms
+[FIX] Core: crash on windows when using PolygonInfo
+[FIX] UI: Keyboard doesn't hide when click the screen outside of EditBox on iOS platform.
+[FIX] UI: Fix a fatal bug in EditBox implement on Windows platform.
+[FIX] UI: Fix edit box setPlaceholderFontName and scale font size issue.
+[FIX] Core: Fix memory leak when initWithImage() failed.
+[FIX] Network: CCDownloader on iOS is broken in v3.9 js-binding.
+[FIX] JS: Bindings fixes for Menu, Sprite and Label.
+[FIX] Studio: Remove weak reference in ActionNode.
+[FIX] UI: shouldStartLoading method should return value to js in js-binding.
+[FIX] UI: Fix scrollview render error.
+[FIX] JS: Fix win32 js project crash issue.
+[FIX] UI: Button touch doesn't work with scale9 enabled.
+[FIX] JS: Fix evalString doesn't return result issue.
+[FIX] JS: Fix ComponentJS proxy management issue in JSB.
+[FIX] Android: Fix include in cocos network module.
+[FIX] Network: Fix web socket crash.
+[FIX] UI: Fix TextField missing default password style text setting.
+
+[TEST] S9SpriteTest: Scale9Sprite fade actions with cascade opacity.
+[TEST] Web: Remove default focus block from UIFocusTestVertical.
+[TEST] Lua: Fix pageViewTest Horizontal scroll won't work in Lua-test.
+
+cocos2d-x-3.9 November.09 2015
+
+[NEW] Label: Added line spacing/leading feature to Label.
+[NEW] ListView: Added APIs to scroll to specific item in list.
+[NEW] ListView: Added APIs to get an item in specific position like center, leftmost, rightmost, topmost and bottommost.
+[NEW] ListView: Added a feature for magnetic scrolling.
+[NEW] Animate: Added ActionTimeline::setAnimationEndCallBack and ActionTimeline::addFrameEndCallFunc.
+[NEW] Animate: Added CSLoader::createNodeWithVisibleSize, CSLoader::createNodeWithVisibleSize and moved "ui::Helper::DoLayout" into them.
+[NEW] Studio: Added Light3D support for Cocos Studio.
+[NEW] Platform: Added the missing CURL support to the Windows 10 UWP version.
+[NEW] Platform: Added UIEditBox support on linux platform.
+
+[REFINE] 3D: Added non-null checks in PUScriptCompiler::visit before dereferencing.
+[REFINE] 3D: Refined SkyboxBrush by making the shader parameter take effect at once.
+[REFINE] Label: Changed label font size type to float to support high precision when font size is small.
+[REFINE] ListView: Fixed an issue that list view's Magnetic::CENTER is not working well when non-bounceable.
+[REFINE] ListView: Added feature of jumping to a specific item in list view.
+[REFINE] Sprite: Added "a unsupport image format!" log when creating a sprite in CCImage.cpp.
+[REFINE] ScrollView: Merge logics of Scroll View for scroll by inertia and auto scroll into one.
+[REFINE] Animate: Moved initialization of image to an appropriate location, because it always called twice in SpriteFrameCache::addSpriteFramesWithFile().
+[REFINE] Simulator: Changed the size of startFlag to 13.
+[REFINE] Simulator: Show Node and Skeleton in the middle of the simulator.
+[REFINE] Simulator: Removed screen direction check in simulator to avoid render error.
+[REFINE] Pysics: Refined components to improve physics performance.
+[REFINE] UI: Refined ComponentContainer to improve performance.
+[REFINE] UI: EventListenerMouse will dispatch EventMouse events.
+[REFINE] OpenGL: Added check for glfwCreateWindow.
+[REFINE] Platform: Fixed a crash on xiaomi2 if Cocos2d-x is built as a dynamic library.
+[REFINE] Platform: Updated libcococs2d name to v3.9 on WinRT platforms.
+[REFINE] Platform: Added some support for mouse on WinRT. Include: Show/Hide mouse cursor; Mouse event implemented similar Desktop version; Left button send mouse event and touch; Support other mouse button and scroll wheel.
+[REFINE] Platform: Correct the convertion between unicode and utf8 on WinRT.
+[REFINE] Platform: Improved EditBox implement on Win32 platform.
+[REFINE] JS: Set js templates Mac target platform from null to 10.7.
+[REFINE] JS: Removed the static define of variable in headfile of ScriptingCore.
+[REFINE] Lua: Added AssetsManagerEx constants UPDATE_FAILED and ERROR_DECOMPRESS in Lua.
+[REFINE] Lua / JS: Refined lua/js binding tool.
+[REFINE] I/O: Refined AssetsManagerEx unzipping by using async.
+[REFINE] Web: Improved logic of jsb_boot.js to sync with the web engine behavior.
+[REFINE] Web: Sync with CCBoot for web.
+[REFINE] Build: Fixed various compiler warnings on Xcode 7.
+[REFINE] Build: Fixed Wformat-security warning on Xcode.
+[REFINE] Build: Fixed a compile error in __LayerRGBA.
+[REFINE] Tool: Added tools for generating documents automatically.
+[REFINE] Doc: Clean up the code of setRect() function.
+[REFINE] Doc: Fixed a minor typo and renamed INTIAL_CAPS_ALL_CHARACTERS to INITIAL_CAPS_ALL_CHARACTERS in UIEditBox.
+
+[FIX] 3D: Fixed a bug that obb did not rotate with Sprite3d.
+[FIX] 3D: Corrected spot light init value.
+[FIX] 3D: Added the missing CCMotionStreak3D files.
+[FIX] 3D: Fixed a bug in CCPhysics3DComponent.cpp that oldBool is set with a wrong value.
+[FIX] 3D: Fixed shader light parameter bug that caused for that all the mesh share light parameter.
+[FIX] Sprite: Fixed a bug that CC_SPRITE_DEBUG_DRAW did nothing in Cocos2d-x.
+[FIX] Button: Fixed an issue that when image size of variable button status texture are different, Helper::restrictCapInsetRect result may stop the pressed & disabled status picture from loading.
+[FIX] Font: Fixed a crash bug in destructor of FontFreeType.
+[FIX] Label: Removed scale factor for label shadow.
+[FIX] Label: Added missing override keyword.
+[FIX] LoadingBar: Fixed a crash bug in LoadingBar.
+[FIX] Particle: Fixed a bug of nomalize_point which caused particle rendering error.
+[FIX] Tilemap: Fixed a TMXLayer bug: When using float values (for example the actual position of the character) to get the current tile, the wrong tile is sometimes/usually returned.
+[FIX] Animate: Fixed a crash bug when csb file is broken.
+[FIX] Animate: Fixed a bug that a same frame index is inserted after animation speed is scaled.
+[FIX] Animate: Fixed bug in v1.6 that bone animation crashed when performing getBoneAtPoint(0,0).
+[FIX] Animate: Fixed crash when recall a cached timeline after scene exited.
+[FIX] Animate: Fixed debug-config crash if a FrameBuffer has no RenderTargetDepthStencil.
+[FIX] UI: Fixed an image bug caused by the _hasPremultipliedAlpha field.
+[FIX] UI: Added missing getChildByTag<>() API.
+[FIX] UI: Fixed a bug in Widget::isClippingParentContainsPoint: _hittedByCamera may be null.
+[FIX] UI: Fixed a bug that cocos2d::Map may cause Dangling Pointers when inserting Ref Object which already exist in the Map.
+[FIX] UI: Fixed a bug in Scheduler which may case Force Close.
+[FIX] OpenGL: Fixed a bug of ui::WebView callback operate in OpenGL.
+[FIX] Performance: Fixed a bug that NotificationNode was not entered and exited.
+[FIX] Renderer: Fixed a bug that Material::clone failed to set the parent correctly.
+[FIX] Simulator: Fixed a bug that when scene was set to a very large size(eg. 2048x1536), the simulator window was out of screen.
+[FIX] Simulator: Fixed a compilation issue about simulator on Android x86.
+[FIX] Skeleton: Removed redundant interface in CCSkeletonNode.
+[FIX] Studio: Fixed a bug about Cocos Studio GUItest that MoveBy vertical direction under lua test project cannot scroll back to page 1 from page 2.
+[FIX] Studio: Hide menu "cocostudio 2.1" for JSON exported from Cocos Studio 2.x is not supported in CocoStudio 1.6.
+[FIX] Studio: Fixed bug that when create project from template, the app name of android-studio project is not changed.
+[FIX] Platform: Fixed a bug that Android activity destroyed after reopening the app.
+[FIX] Platform: Fixed a crash bug of AudioPlayer in Win32.
+[FIX] Platform: Fixed an error about Chinese input in textfield with specific IME on Android.
+[FIX] Platform: Fixed missing image asset in Win10 UWP manifest.
+[FIX] Platform: Fixed Windows 10 UWP app manifest by correcting image asset paths.
+[FIX] Platform: Fixed a bug that FileUtils::GetFileSize can't treat multi-char path.
+[FIX] Platform: Fixed a bug of loading pluginx lib when compile Android with --compile-script flag.
+[FIX] Platform: Fixed a crash bug caused by integer overflow in Device::getTextureDataForText on iOS.
+[FIX] Platform: Fixed the broken v3 Win10 UWP build by removing CCComponentPhysics2d files from the libcocos2d project.
+ [HIGHLIGHT] UI: Reimplemented and enhanced EditBox on Android: display cursor; support copy, cut, paste and select actions; support multi-line input; pretty adjustment when virtual keyboard shown
+ [HIGHLIGHT] JS: Bound new AudioEngine in JSB
+ [HIGHLIGHT] JS: Merged JSB test project into cocos2d test project
+ [HIGHLIGHT] network: Upgrade SocketIO support to v1.x
+ [HIGHLIGHT] tools: Optimize Bindings Generator
+ [HIGHLIGHT] Label: Added HANYI FullType font support
+
+ [NEW] 3D: Added light map support in Terrain
+ [NEW] UI: Added ScrollViewBar for displaying a scroll bar at the side of ScrollView (JSB/Lua ready)
+ [NEW] UI: Enhanced ScrollView with easing out scrolling
+ [NEW] UI: Added PageView vertical scroll support
+ [NEW] UI: Added PageView::JumpToPage API
+ [NEW] UI: Added a setter for line width in DrawNode
+ [NEW] Action: Permitted setting bitwise flags to action
+ [NEW] Animate: Added Animate's getCurrentFrameIndex function
+ [NEW] FileUtils: Added FileUtils::getFileExtension for getting file's extension name
+ [NEW] Device: Added vibrate support to enable vibration for a duration
+ [NEW] WP8: remove WP8 support because Angle don't support WP8 any more
+ [NEW] WP8.1: added back button support
+
+ [FIX] Animate3D: modify `Animate3D::setHighQuality()` Animate3D::setQuality(), add a new animation quality type none which means that will not update animation to the bone, it is useful when the Sprite3D is out of the screen, it can safe a lot of cpu time.
+ [FIX] AnimationCurve: memory leak
+ [FIX] Bundle3D: memory leak when failed to load file
+ [FIX] HttpClient: memory leak on iOS
+ [FIX] JNI: JNI illegal start byte error which causes crashing error on Android 5.0
+ [FIX] PUParticleSystem3D: refactoring create function using initWithXXX
+ [FIX] UI:VideoPlayer: crashed when playing streamed MP4 file on iOS
+ [FIX] VideoPlayer: can not play videos on Android v2.3.x
+
+cocos2d-x-3.6beta0 Apr.14 2015
+ [NEW] 3rd: update Spine runtime to v2.1.25
+ [NEW] MotionStreak: add `MotionStreak::getStroke()` and `MotionStreak::setStroke()`
+ [NEW] Rect: added `Rect::intersectsCircle()`
+ [NEW] UI:Text: add `Text::disableEffect(LabelEffect)` to disable a specific effect
+
+ [FIX] 3rd: link error on VS2012 caused by libpng
+ [FIX] Label: position is wrong if it is visited by a new camera
+ [FIX] Particle3D: crash on clone
+ [FIX] Particle3D: "make local" now working correctly. "Make local" is a properties that toggles particle coordination between local and global.
+ [FIX] Particle3D: particle rotation now no longer stacks up on each other
+ [FIX] Particle3D: Ribbon Trail now positions correctly
+ [FIX] Physics: rigid body's rotation is wrong if it is attatched to a node which rotation is not 0
+ [FIX] Label: stroke color of system font is incorrect on iOS
+
+cocos2d-x-3.5rc0 Mar.13 2015
+ [NEW] CocosStudio: add callback when loading a CSB file
+ [NEW] Particle3D: more Particle Universe features are supported, add observers and event handlers
+
+ [FIX] Billboard: fix bug on transparent Billboard because of transparent queue
+ [FIX] Bundle: bug that create bundle with empty path
+ [FIX] Camera: camera is detroyed unexpectedly when call removeAllChildren
+ [FIX] C++: use console in `build/build_native.sh`
+ [FIX] Label: position is wrong if it is visited by a new camera
+ [FIX] MotionStreak: can not work with MoveTo and MoveBy
+ [FIX] MoveTo: disable reverse() because it is meaningless
+ [FIX] Particle3D: to make path shorter, rename Particle Universe folder to PU, and files CCPUParticle3DXXX to CCPUXXX to fix compiling error on WP8
+ [FIX] Particle3D: `loadMaterialsFromSearchPaths` bug on linux platform
+ [FIX] Sprite3D: fix bug on transparent 3D Sprite because of transparent queue
+
+cocos2d-x-3.5beta0 Feb.27 2015
+ [NEW] Added Particle3D
+ [NEW] C++: add Romanian language support
+
+ [FIX] Audio: audio can not resume if it is interrupted, and back from background
+ [FIX] Cocos Studio UI: setCameraMask does not work for the Cocos Studio UI
+ [FIX] C++: compiling error when using CC_USE_CULLING
+ [FIX] Label: texture size of string has unexpected padding on iOS 7 and upper version
+ [FIX] HttpClient: if the request data is started by a null character, it does not fill http body
+ [FIX] HttpClient: memory leak on iOS
+ [FIX] Sprite3D: `getAttachNode()` will fail when there is no bone with name
+
+cocos2d-x-3.4 Jan.30 2015
+ [FIX] Animate3D: `setSpeed` has not effect if `Animate3D` is used in Sequence
+ [FIX] C++: will crash if built with armeabi-v7a enabled on Android devices that with armeabi-v7a architecture but doesn't support NEON instructions
+ [FIX] C++: may crash if VAO is not supported
+ [FIX] EditBox: content is not clipped correctly on windows
+ [FIX] GLProgram: will cause crash on some devices that don't support more than 8 atrributes
+ [FIX] HttpClient: not set response code when connecting failed on Android
+ [FIX] Label: alpha channel of text color of system font has not effect
+ [FIX] Label: use int for dimensions that will lose the precision
+ [FIX] Label: labels will become white block after resume from background on some Android devices, such as xiaomi3
+ [FIX] Label: improved parsing performance of bitmap font
+ [FIX] Label: can not display `&` if using system font on windows
+ [FIX] Lua-binding:studio-support: AnimationInfo is not binded
+ [FIX] New audio: not close file descriptor leads to that may causes game freeze if playing two many times(may be more than 1000) on Android
+ [FIX] Node: anchor point has not effect to rotation, it always rotate along (0, 0)
+ [FIX] Physics integration: Scale9Sprite can't run `Move` action and `Scale` action if used physical scene
+ [FIX] SpriteFrameCache: `addSpriteFramesWithFil`e may crash if plist file doesn't exist
+ [FIX] Sprite3D: material files (.mtl) are not loaded for any object when creating from an .obj file
+ [FIX] UI::ImageView: rendered content size is wrong if `ignoreSize` is true and `Scale9` is not enabled
+ [FIX] UI::Slider: when scale9 is enabled, the progress bar's rendering height is wrong
+ [FIX] UI:Scale9Sprite: some position information will be lost when toggling `Scale9` state
+ [FIX] UI::TextField: will get wrong event message if clicking `TextField` twice
+ [FIX] UI::TextField: result of `getContentSize` is wrong if it is invoked in insert or delete event callback
+ [FIX] UI::WebView: base URL can not work
+
+cocos2d-x-3.4rc1 Jan.15 2015
+ [NEW] C++: added CC_USE_CULLING macro to control if enable auto culling or not
+ [NEW] FileUtils::fullPathForFilename will return empty string when file can not be found
+ [NEW] VertexBuffer&IndexBuffer: allow setting usage(GL_STATIC_DRAW or GL_DYNAMIC_DRAW) in create method
+ [NEW] Renderer: 3D rendering support for 2d objects
+
+ [FIX] DrawNode: fix random crash because of init opengl buffer wrongly
+ [FIX] DrawNode: drawPoints() can not set ponit size
+ [FIX] EventDispatcher: crash if adding/removing event listeners and dispatching event in event callback function
+ [FIX] GLProgramState: may cause GL_INVALID_VALUE error at start up on Android
+ [FIX] LUA: 0x80000000 can not be converted by lua_tonumber correctly on some devices
+ [FIX] PhysicsBody: can't get correct position in the same frame of adding PhysicsBody to PhysicsWorld
+ [FIX] UI: fix crash when navigation controller is null
+
+cocos2d-x-3.4rc0 Jan.9 2015
+ [NEW] 3rd: update libcurl to v7.39
+ [NEW] 3rd: update luajit to v2.0.3
+
+ [FIX] C++: crash when run clang static analyzer in Xcode
+ [FIX] DrawNode: can not set color when DrawPoints, wrong behavior of drawRect
+ [FIX] FileUtils: getData() can't get data from file when file was using by other application on windows
+ [FIX] FileUtils: getData() will cause memory leak if file size is 0 on windows
+ [FIX] GLProgram: when there is a shader compile error in shader, it will crash on windows
+ [FIX] GLProgramState: Assert error because uniforms and attribute is not refreshed when come to foreground on android
+ [FIX] HttpClient: http requests will be lost in immediately mode on iOS
+ [FIX] JumpTo: can not be applied more than once
+ [FIX] Label: may cause infinite loop if using system font on Android
+ [FIX] Particle: GL_INVALID_OPERATION error because VAO and VBOs is not reset when come to foreground on android
+ [FIX] Physics integration: physics body is not still after disabling gravitational force by PhysicsBody::setGravityEnable()
+ [FIX] Sprite3DTest: Sprite3DUVAnimationTest, Sprite3DFakeShadowTest, Sprite3DLightMapTest, Sprite3DBasicToonShaderTest will crash on android when switch to foreground from background
+ [FIX] Template: multiple dex files define error on Android if using Eclipse to build new generated application
+ [FIX] VideoPlayer: can not play video if passing path returned from FileUtils::fullPathForFilename() on Android
+ [NEW] Application: added Turkish and Ukrainian language support
+ [NEW] UI:LoadingBar: add TextureResType to LoadingBar's create method
+ [NEW] Director: add setClearColor() to set clear values for the color buffers
+ [NEW] Node: rotation representation using quaternion
+ [NEW] UI: Added new layout functionality for Cocos Studio, keeps widget margins a fixed set and adjusts the widget size according to the margins.
+ [NEW] UI: Add gray shader to ui::Button, ui::CheckBox and ui::Slider when the disable state resources are not provided
+ [NEW] UI: Modify the default behavior when ui::Button, ui::CheckBox and ui::Slider's selected state resources are not provided, the new behavior is scale the normal state texture when the selected state texture are missing.
+ [NEW] 3rd party libraries: Add prebuilt version of libcurl to Mac and upgrade iOS,Android,Mac and Win32 libcurl to 7.39.0.
+ [NEW] Replace network module implementation from libcurl to system network API on IOS and Android
+
+ [FIX] ui::Button: fix setTitleColor calls method setColor instead of setTextColor of title label.
+ [FIX] AssetsManagerEx: Fix assetManager can't download file on Win32
+ [FIX] FileUtils: WebP format with alpha channel displayed wrong
+ [FIX] Label: content size of Label is incorrect if the string is set to empty string
+ [FIX] GLProgramState: fix assert error caused by outdated uniform and attribute cache
+
+cocos2d-x-3.3 Dec.12 2014
+ [FIX] Billboard: allow billboard rotate along z axis
+ [FIX] Bundle3D: create aabb for mesh whose aabb does not exist (user custom mesh)
+ [FIX] EditBox: text position and move animation error on iPhone6 Plus
+ [FIX] FileUtils: createDirectory(): doesn't invoke closedir() after opendir on platforms other than WP8/WinRT/Windows
+
+cocos2d-x-3.3-rc2 Dec.5 2014
+ [FIX] C++: use 100% of one core on Windows
+ [FIX] Label: when a label is added to a invisible parent node, app will crash if switching from background
+ [FIX] Label: label will not be shown when using system font on Mac
+ [FIX] Studio reader: replace protocol buffer with flatbuffer
+
+cocos2d-x-3.3-rc1 Nov.29 2014
+ [NEW] Vec2: added greater than operator
+ [NEW] Tools: Updated cocos console to v1.4 (from 1.2)
+ [NEW] WP8: Win8.1 universal app support
+
+ [FIX] Audio: `SimpleAudioEngine::sharedEngine()->playBackgroundMusic()` crashed freezen on Lollipop(Android5.0)
+ [FIX] Button: when the dimension of button title is larger than the button, button will scale to fit the dimension of the button title
+ [FIX] Button: when the dimension of button title is larger than the button, button will scale to fit the dimension of the button title
+ [FIX] Camera: does not work correctly when the up is not (0, 1, 0)
+ [FIX] Director: Uses a low-pass filter to diplay the FPS
+ [FIX] DrawNode: drawPoint() may cause crash
+ [FIX] EventKeyboard: can not check right Shift, right Ctrl and right ALT
+ [FIX] GLProgramCache: doesn't release old program with the same key before adding a new one
+ [FIX] GLProgramState: enabled GLProgramState restoring on render recreated on WP8
+ [FIX] Label: label shifting when outline feature enabled
+ [FIX] Label: when applying additionalKerning to a Label that displays a string with only 1 character, the character is shifted
+ [FIX] Label: display incompletely with multiline text with outline feature enabled
+ [FIX] Label: crash if using BMFont but missing corresponding png file
+ [FIX] Lua: logical error in luaval_to_quaternion
+ [FIX] New audio: can not loop on Android 2.3.x
+ [FIX] Random: CCRANDOM_0_1() and CCRANDOM_MINUS_1_1() can be seeded using std::srand(seed)
+ [FIX] Scale9Sprite: will be flipped if both flipX and flipY are false
+ [FIX] Scale9Sprite: if scale and flip property are set at the same time, the result would be wrong
+ [FIX] Scene: setScale() doesn't work as expected
+ [FIX] Sprite3D: did not create attached sprite from cache
+ [FIX] Tests: Sprite Performance Test automation works as expected
+ [FIX] UI: Text: invoke ignoreContentAdatpSize(false) will cause wrong effect
+ [FIX] VideoPlayer: showed in wrong place on Android v2.3.x
+ [FIX] WebView: showed in wrong place on Android v2.3.x
+ [FIX] WP: back key behaviour and Director::getInstance()->end() works not correctly
+
+ [FIX] Lua-binding: XmlHttpRequest would truncate binary data
+
+cocos2d-x-3.3-rc0 Oct.21 2014
+ [NEW] 3d: added light support: direction light, point light, spot light and ambient light
+ [NEW] Added ClippingRectangleNode
+ [NEW] Added AssetsManagerEx, which is more powerful than AssetsManager
+ [NEW] Added a test case of sprite lamp effect
+ [NEW] Animate3D: can create with start frame and end frame
+ [NEW] Audio: new audio supports Mac OS X and Windows
+ [NEW] Node: visit() and draw() new arguments: Renderer, parentTransform, and whether or not the parentTransform has changed since the last frame
+ [NEW] Language: Added Dutch support
+ [NEW] Sprite: Added auto-culling support. Performance increased in about 100% when many sprites are outside the screen
+ [NEW] Setup.sh: added script to set up environment needed for cocos2d-x
+ [NEW] Scheduler: Added new API [ schedule(std::function, ...), schedule(member_func, ...) ], deprecated the old API [ scheduleSelector(member_func, ...) ]
+ [FIX] Action: FadeIn and FadeOut behaviours is incorrect if it doesn't start from an edge value( 0 or 255)
+ [FIX] Array: crash when invoking initWithObjects()
+ [FIX] Action: Merge cocostudio/CCActionXxx to CCAction
+ [FIX] Bindings: Adds a macro to disable inserting script binding relevant codes
+ [FIX] Bindings: Supports 'setTimeout' and 'setInterval' in JSB
+ [FIX] Bindngs: Exposes the missing data structures of Spine to JS
+ [FIX] Bindings: cc.BuilderReader.load( path, null, parentSize ); was not allowed
+ [FIX] Console: crashes on Windows
+ [FIX] ControlButton: Crash if it was removed from parent in its callback
+ [FIX] CocoStudio: Logical error in 'TriggerObj::detect()'
+ [FIX] Director: Crash if invoking Director::end() on WINDOWS
+ [FIX] Director: setAnimationInterval has not effect on Mac
+ [FIX] EditBox: position would not be updated if its parent's position changed
+ [FIX] EditBox: Voice recognition input would cause crash on ios7
+ [FIX] EGLView: renamed to GLView, no longer a singleton, easier to customize
+ [FIX] EventDispatcher: removeAllEventListeners() remove event listeners used internally, make textures not reload on Android when come from background
+ [FIX] EventDispatcher: dispatchEventToListeners() causes "out of range" exception
+ [FIX] Image: s3tc compressed textures with no mipmaps fail to be loaded
+ [FIX] Label: A string which only contains CJK characters can't make a line-break when it's needed
+ [FIX] Label: Character would not be aligned on the baseline when label using distance field
+ [FIX] Label: Color and opacity can't take effect
+ [FIX] Label: Font size passed to new Label didn't consider 'contentScaleFactor'
+ [FIX] Label: loading custom fonts from ttf file fails on windows
+ [FIX] Label: LabelAtlas::setColor takes no effect
+ [FIX] MotionStreak: Added unimplemented position getter/setter
+ [FIX] Node: setAdditionalTransform receives a pointer and not a const reference
+ [FIX] Node: setRotation() moves opposite when node has a physics body
+ [FIX] Node: Can not use Node::setPhysicsBody to reset a physics body
+ [FIX] Object: Object -> Ref, and remove unneeded functions
+ [FIX] Other: Removes samples except testcpp|testjavascript|testlua. Moves sample games to `cocos2d/samples` repo
+ [FIX] Bindings-generator supports Windows again and remove dependency of LLVM since we only need binary(libclang.so/dll).
+ [FIX] Removes unused files for MAC platform after using glfw3 to create opengl context.
+ [FIX] Wrong arithmetic of child's position in ParallaxNode::addChild()
+ [FIX] CocoStudio: TestColliderDetector in ArmatureTest can't work.
+ [FIX] CocoStudio: The order of transform calculation in Skin::getNodeToWorldTransform() is incorrect.
+ [FIX] Crash if file doesn't exist when using FileUtils::getStringFromFile.
+ [FIX] If setting a shorter string than before while using LabelAtlas, the effect will be wrong.
+ [FIX] Label: Memory leak in FontFreeType::createFontAtlas().
+ [FIX] Label: Crash when using unknown characters.
+ [FIX] Label: Missing line breaks and wrong alignment.
+ [FIX] Label: Corrupt looking characters and incorrect spacing between characters
+ [FIX] Label: Label:color and opacity settings are invalid afeter these these properties changed: 1)text content changed 2)align style changed 3)max line width limited
+ [FIX] Label: Crash when using unknown characters
+ [FIX] Console: log(format, va_args) is private to prevent possible resolution errors
+ [FIX] Configuration: dumpInfo() -> getInfo()
+ [FIX] ControlSlider doesn't support to set selected thumb sprite.
+ [FIX] ControlButton doesn't support to set scale ratio of touchdown state.
+ [FIX] Particles: Crash was triggered if there is not `textureFileName`section in particle plist file.
+ [FIX] Renderer: Uses a float as key with only the depth. Viewport, opaque are not needed now
+ [FIX] Renderer Performance Fix: QuadCommand::init() does not copy the Quads, it only store a reference making the code faster
+ [FIX] Renderer Performance Fix: Sprite and SpriteBatchNode (and subclasses) has much better performance
+ [FIX] Renderer Performance Fix: When note using VAO, call glBufferData() instead of glBufferSubData().
+ [FIX] Renderer Performance Fix: Doesn't sort z=0 elements. It also uses sort() instead of stable_sort() for z!=0.
+ [FIX] Sprite: removed _hasChildren optimization. It uses !_children.empty() now which is super fast as well
+ [FIX] Tests: Sprites Performance Test has 4 new tests
+ [FIX] TextureCache: getTextureForKey and removeTextureForKey work as expected
+- Forum (preferred way): http://discuss.cocos2d-x.org/
+- IRC: https://webchat.freenode.net/ (Use the *cocos2d* or *cocos2d-x* channels)
+- Weibo: http://t.sina.com.cn/cocos2dx
+- Twitter: http://www.twitter.com/cocos2dx
+
+## Reporting bugs
+
+To report bugs, please use the [Issue Tracker](https://github.com/cocos2d/cocos2d-x/issues)
+
+Steps to report a bug:
+* Open the [url](https://github.com/cocos2d/cocos2d-x/issues/new)
+* Add all the needed information to reproduce the bug, the information include
+ * engine version
+ * steps to reproduce the bug
+ * some pseudocode
+ * resources link if needed
+
+
+## Submitting patches
+
+If you want to contribute code, please follow these steps:
+
+(If you are new to git and/or GitHub, you should read [Pro Git](http://progit.org/book/) , especially the section on [Contributing to a project:Small/Large Public Project](http://progit.org/book/ch5-2.html#public_small_project) )
+
+- Download the latest cocos2d-x develop branch from github:
+* Visual Studio 2013 Update 4 or later is required for Windows 8.1 Universal Apps
+
+* Visual Studio 2015 (Release version) and Windows 10.0 (Release version) are required for Windows 10.0 Universal Windows Platform (UWP) Apps. RC versions of Visual Studio and Windows 10 are no longer supported.
+
+Starting with Cocos2d-x v3.3, you can create Windows 8.1 Universal Apps (Windows Store and Windows Phone 8.1).
+Starting with Cocos2d-x v3.8 you can create Windows 10.0 UWP Apps (Windows Store and Windows Phone 10.0).
+Starting with Cocos2d-x v3.6 there will no longer be support for Windows Phone 8.0.
+
+See more info on how to install and create games on Windows RT (Windows and Windows Phone 8.1) at http://msopentech.github.io/cocos2d-x/
+
+### Build and run new project for web ###
+
+Only JS project can be published to web platforms, so you will need to create a JS project first:
+
+ $ cocos new -l js WebGame
+
+Then you can run your game in a web browser:
+
+ $ cocos run -p web
+
+Or you can publish your game to `publish/html5/` folder:
+
+ $ cocos run -p web -m release [--advanced]
+
+Documentations and samples
+-------------
+* [All Docs in a single place!](http://cocos2d-x.org/docs/)
+* [Online API Reference](http://cocos2d-x.org/docs/api-ref/index.html) _Note that Cocos2d-x, Cocos2d-JS and Cocos Creator have different API set_
+ message(FATAL_ERROR "Minizip library on you system very old. Please use recent version from https://github.com/nmoinvaz/minizip or enable USE_PREBUILT_LIBS")
+ if(FPHSA_FOUND_VAR MATCHES "^${_NAME}_FOUND$" OR FPHSA_FOUND_VAR MATCHES "^${_NAME_UPPER}_FOUND$")
+ set(_FOUND_VAR ${FPHSA_FOUND_VAR})
+ else()
+ message(FATAL_ERROR "The argument for FOUND_VAR is \"${FPHSA_FOUND_VAR}\", but only \"${_NAME}_FOUND\" and \"${_NAME_UPPER}_FOUND\" are valid names.")
+ endif()
+ else()
+ set(_FOUND_VAR ${_NAME_UPPER}_FOUND)
+ endif()
+
+ # collect all variables which were not found, so they can be printed, so the
+ message( SEND_ERROR "Could not get Android native API level. Probably you have specified invalid level value, or your copy of NDK/toolchain is broken." )
+set( ANDROID_FORBID_SYGWIN TRUE CACHE BOOL "Prevent cmake from working under cygwin and using cygwin tools")
+mark_as_advanced( ANDROID_FORBID_SYGWIN )
+if( ANDROID_FORBID_SYGWIN )
+ if( CYGWIN )
+ message( FATAL_ERROR "Android NDK and android-cmake toolchain are not welcome Cygwin. It is unlikely that this cmake toolchain will work under cygwin. But if you want to try then you can set cmake variable ANDROID_FORBID_SYGWIN to FALSE and rerun cmake." )
+ endif()
+
+ if( CMAKE_HOST_WIN32 )
+ # remove cygwin from PATH
+ set( __new_path "$ENV{PATH}")
+ __LIST_FILTER( __new_path "cygwin" )
+ set(ENV{PATH} "${__new_path}")
+ unset(__new_path)
+ endif()
+endif()
+
+
+# detect current host platform
+if( NOT DEFINED ANDROID_NDK_HOST_X64 AND (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64" OR CMAKE_HOST_APPLE) )
+ set( ANDROID_NDK_HOST_X64 1 CACHE BOOL "Try to use 64-bit compiler toolchain" )
+ if( NOT __androidNdkPreviousPath STREQUAL ANDROID_NDK_TOOLCHAINS_PATH )
+ message( FATAL_ERROR "It is not possible to change the path to the NDK on subsequent CMake run. You must remove all generated files from your build folder first.
+ message( FATAL_ERROR "Specified toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is missing in your NDK or broken. Please verify that your NDK is working or select another compiler toolchain.
+To configure the toolchain set CMake variable ANDROID_TOOLCHAIN_NAME to one of the following values:\n${toolchains_list}\n" )
+ endif()
+ list( GET __availableToolchainArchs ${__toolchainIdx} __toolchainArch )
+ if( NOT __toolchainArch STREQUAL ANDROID_ARCH_NAME )
+ message( SEND_ERROR "Selected toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is not able to compile binaries for the \"${ANDROID_ARCH_NAME}\" platform." )
+ if( NOT __realApiLevel EQUAL ANDROID_NATIVE_API_LEVEL AND NOT __realApiLevel GREATER 9000 )
+ message( SEND_ERROR "Specified Android API level (${ANDROID_NATIVE_API_LEVEL}) does not match to the level found (${__realApiLevel}). Probably your copy of NDK is broken." )
+ endif()
+ unset( __realApiLevel )
+ endif()
+ set( ANDROID_NATIVE_API_LEVEL "${ANDROID_NATIVE_API_LEVEL}" CACHE STRING "Android API level for native code" FORCE )
+set( ANDROID_ABI "${ANDROID_ABI}" CACHE STRING "The target ABI for Android. If arm, then armeabi-v7a is recommended for hardware floating point." FORCE )
+ if( NOT "${ANDROID_STL}" MATCHES "^(none|system|system_re|gabi\\+\\+_static|gabi\\+\\+_shared|stlport_static|stlport_shared|gnustl_static|gnustl_shared|c\\+\\+_shared)$")
+ message( FATAL_ERROR "ANDROID_STL is set to invalid value \"${ANDROID_STL}\".
+The possible values are:
+ none -> Do not configure the runtime.
+ system -> Use the default minimal system C++ runtime library.
+ system_re -> Same as system but with rtti and exceptions.
+ gabi++_static -> Use the GAbi++ runtime as a static library.
+ gabi++_shared -> Use the GAbi++ runtime as a shared library.
+ stlport_static -> Use the STLport runtime as a static library.
+ stlport_shared -> Use the STLport runtime as a shared library.
+ gnustl_static -> (default) Use the GNU STL as a static library.
+ gnustl_shared -> Use the GNU STL as a shared library.
+ c++_shared -> Use the LLVM libc++ as a shared library.
+" )
+ endif()
+elseif( BUILD_WITH_STANDALONE_TOOLCHAIN )
+ if( NOT "${ANDROID_STL}" MATCHES "^(none|gnustl_static|gnustl_shared)$")
+ message( FATAL_ERROR "ANDROID_STL is set to invalid value \"${ANDROID_STL}\".
+The possible values are:
+ none -> Do not configure the runtime.
+ gnustl_static -> (default) Use the GNU STL as a static library.
+ gnustl_shared -> Use the GNU STL as a shared library.
+" )
+ endif()
+endif()
+
+unset( ANDROID_RTTI )
+unset( ANDROID_EXCEPTIONS )
+unset( ANDROID_STL_INCLUDE_DIRS )
+unset( __libstl )
+unset( __libsupcxx )
+
+if( NOT _CMAKE_IN_TRY_COMPILE AND ANDROID_NDK_RELEASE STREQUAL "r7b" AND ARMEABI_V7A AND NOT VFPV3 AND ANDROID_STL MATCHES "gnustl" )
+ message( WARNING "The GNU STL armeabi-v7a binaries from NDK r7b can crash non-NEON devices. The files provided with NDK r7b were not configured properly, resulting in crashes on Tegra2-based devices and others when trying to use certain floating-point functions (e.g., cosf, sinf, expf).
+You are strongly recommended to switch to another NDK release.
+" )
+endif()
+
+if( NOT _CMAKE_IN_TRY_COMPILE AND X86 AND ANDROID_STL MATCHES "gnustl" AND ANDROID_NDK_RELEASE STREQUAL "r6" )
+ message( WARNING "The x86 system header file from NDK r6 has incorrect definition for ptrdiff_t. You are recommended to upgrade to a newer NDK release or manually patch the header:
+ # always search static GNU STL to get the location of libsupc++.a
+ if( ARMEABI_V7A AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/thumb/libstdc++.a" )
+ elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libstdc++.a" )
+ elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libgnustl_shared.so" )
+if( ANDROID_NDK_RELEASE_NUM LESS 7000 ) # before r7
+ # libGLESv2.so in NDK's prior to r7 refers to missing external symbols.
+ # So this flag option is required for all projects using OpenGL from native.
+ __INIT_VARIABLE( ANDROID_SO_UNDEFINED VALUES ON )
+else()
+ __INIT_VARIABLE( ANDROID_SO_UNDEFINED VALUES OFF )
+endif()
+__INIT_VARIABLE( ANDROID_NO_UNDEFINED VALUES ON )
+__INIT_VARIABLE( ANDROID_FUNCTION_LEVEL_LINKING VALUES ON )
+__INIT_VARIABLE( ANDROID_GOLD_LINKER VALUES ON )
+__INIT_VARIABLE( ANDROID_NOEXECSTACK VALUES ON )
+__INIT_VARIABLE( ANDROID_RELRO VALUES ON )
+
+set( ANDROID_NO_UNDEFINED ${ANDROID_NO_UNDEFINED} CACHE BOOL "Show all undefined symbols as linker errors" )
+set( ANDROID_SO_UNDEFINED ${ANDROID_SO_UNDEFINED} CACHE BOOL "Allows or disallows undefined symbols in shared libraries" )
+set( ANDROID_FUNCTION_LEVEL_LINKING ${ANDROID_FUNCTION_LEVEL_LINKING} CACHE BOOL "Put each function in separate section and enable garbage collection of unused input sections at link time" )
+ elseif( ANDROID_NDK_RELEASE STREQUAL "r8b" AND ARMEABI AND NOT _CMAKE_IN_TRY_COMPILE )
+ message( WARNING "The default bfd linker from arm GCC 4.6 toolchain can fail with 'unresolvable R_ARM_THM_CALL relocation' error message. See https://code.google.com/p/android/issues/detail?id=35342
+ On Linux and OS X host platform you can workaround this problem using gold linker (default).
+ Rerun cmake with -DANDROID_GOLD_LINKER=ON option in case of problems.
+# ANDROID_SO_UNDEFINED : OFF/ON (default depends on NDK version)
+# ANDROID_FUNCTION_LEVEL_LINKING : ON/OFF
+# ANDROID_GOLD_LINKER : ON/OFF
+# ANDROID_NOEXECSTACK : ON/OFF
+# ANDROID_RELRO : ON/OFF
+# ANDROID_FORCE_ARM_BUILD : ON/OFF
+# ANDROID_STL_FORCE_FEATURES : ON/OFF
+# ANDROID_LIBM_PATH : path to libm.so (set to something like $(TOP)/out/target/product/<product_name>/obj/lib/libm.so) to workaround unresolved `sincos`
+# Can be set only at the first run:
+# ANDROID_NDK : path to your NDK install
+# NDK_CCACHE : path to your ccache executable
+# ANDROID_TOOLCHAIN_NAME : the NDK name of compiler toolchain
+# ANDROID_NDK_HOST_X64 : try to use x86_64 toolchain (default for x64 host systems)
+# ANDROID_NDK_LAYOUT : the inner NDK structure (RELEASE, LINARO, ANDROID)
+# LIBRARY_OUTPUT_PATH_ROOT : <any valid path>
+# ANDROID_STANDALONE_TOOLCHAIN
+#
+# Primary read-only variables:
+# ANDROID : always TRUE
+# ARMEABI : TRUE for arm v6 and older devices
+# ARMEABI_V6 : TRUE for arm v6
+# ARMEABI_V7A : TRUE for arm v7a
+# ARM64_V8A : TRUE for arm64-v8a
+# NEON : TRUE if NEON unit is enabled
+# VFPV3 : TRUE if VFP version 3 is enabled
+# X86 : TRUE if configured for x86
+# X86_64 : TRUE if configured for x86_64
+# MIPS : TRUE if configured for mips
+# MIPS64 : TRUE if configured for mips64
+# BUILD_WITH_ANDROID_NDK : TRUE if NDK is used
+# BUILD_WITH_STANDALONE_TOOLCHAIN : TRUE if standalone toolchain is used
+# ANDROID_NDK_HOST_SYSTEM_NAME : "windows", "linux-x86" or "darwin-x86" depending on host platform
+ message (FATAL_ERROR "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.")
+ endif (_CMAKE_IOS_SDKS)
+ message (STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}")
+endif (NOT DEFINED CMAKE_IOS_SDK_ROOT)
+set (CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK")
+
+# Set the sysroot default to the most recent SDK
+set (CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support")
+
+# set the architecture for iOS
+# NOTE: Currently both ARCHS_STANDARD_32_BIT and ARCHS_UNIVERSAL_IPHONE_OS set armv7 only, so set both manually
+if (${IOS_PLATFORM} STREQUAL "OS")
+ set (IOS_ARCH armv6 armv7)
+else (${IOS_PLATFORM} STREQUAL "OS")
+ set (IOS_ARCH i386)
+endif (${IOS_PLATFORM} STREQUAL "OS")
+
+set (CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE string "Build architecture for iOS")
+
+# Set the find root to the iOS developer roots and to user defined paths
+ static Sequence* create(M m1, M m2, M m3, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, NULL); }
+ static Sequence* create(M m1, M m2, M m3, M m4, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, NULL); }
+ static Sequence* create(M m1, M m2, M m3, M m4, M m5, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, NULL); }
+ static Sequence* create(M m1, M m2, M m3, M m4, M m5, M m6, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, NULL); }
+ static Sequence* create(M m1, M m2, M m3, M m4, M m5, M m6, M m7, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, m7, NULL); }
+ static Sequence* create(M m1, M m2, M m3, M m4, M m5, M m6, M m7, M m8, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, m7, m8, NULL); }
+ static Sequence* create(M m1, M m2, M m3, M m4, M m5, M m6, M m7, M m8, M m9, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, m7, m8, m9, NULL); }
+ static Sequence* create(M m1, M m2, M m3, M m4, M m5, M m6, M m7, M m8, M m9, M m10, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, NULL); }
+
+ // On WP8 for variable argument lists longer than 10 items, use the other create functions or variadicCreate with NULL as the last argument
+ static Spawn* create(M m1, M m2, M m3, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, NULL); }
+ static Spawn* create(M m1, M m2, M m3, M m4, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, NULL); }
+ static Spawn* create(M m1, M m2, M m3, M m4, M m5, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, NULL); }
+ static Spawn* create(M m1, M m2, M m3, M m4, M m5, M m6, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, NULL); }
+ static Spawn* create(M m1, M m2, M m3, M m4, M m5, M m6, M m7, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, m7, NULL); }
+ static Spawn* create(M m1, M m2, M m3, M m4, M m5, M m6, M m7, M m8, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, m7, m8, NULL); }
+ static Spawn* create(M m1, M m2, M m3, M m4, M m5, M m6, M m7, M m8, M m9, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, m7, m8, m9, NULL); }
+ static Spawn* create(M m1, M m2, M m3, M m4, M m5, M m6, M m7, M m8, M m9, M m10, std::nullptr_t listEnd) { return variadicCreate(m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, NULL); }
+
+ // On WP8 for variable argument lists longer than 10 items, use the other create functions or createSpawn with NULL as the last argument.
+* @brief Resize a Node object to the final size by modifying it's Size attribute.
+*/
+class CC_DLL ResizeTo : public ActionInterval
+{
+public:
+ /**
+ * Creates the action.
+ * @brief Resize a Node object to the final size by modifying it's Size attribute. Works on all nodes where setContentSize is effective. But it's mostly useful for nodes where 9-slice is enabled
+* @brief Resize a Node object by a Size. Works on all nodes where setContentSize is effective. But it's mostly useful for nodes where 9-slice is enabled
+ @brief ActionManager is a singleton that manages all the actions.
+ Normally you won't need to use this singleton directly. 99% of the cases you will use the Node interface,
+ which uses this singleton.
+ But there are some cases where you might need to use this singleton.
+ Examples:
+ - When you want to run an action where the target is different from a Node.
+ - When you want to pause / resume the actions.
+
+ @since v0.8
+ */
+class CC_DLL ActionManager : public Ref
+{
+public:
+ /**
+ * @js ctor
+ */
+ ActionManager(void);
+
+ /**
+ * @js NA
+ * @lua NA
+ */
+ ~ActionManager(void);
+
+ // actions
+
+ /** Adds an action with a target.
+ If the target is already present, then the action will be added to the existing target.
+ If the target is not present, a new instance of this target will be created either paused or not, and the action will be added to the newly created target.
+ When the target is paused, the queued actions won't be 'ticked'.
+ *
+ * @param action A certain action.
+ * @param target The target which need to be added an action.
+ /** A AnimationFrameDisplayedNotification notification will be broadcast when the frame is displayed with this dictionary as UserInfo. If UserInfo is nil, then no notification will be broadcast. */
+ ValueMap _userInfo;
+
+private:
+ CC_DISALLOW_COPY_AND_ASSIGN(AnimationFrame);
+};
+
+
+
+
+/** @class Animation
+ * A Animation object is used to perform animations on the Sprite objects.
+ * The Animation object contains AnimationFrame objects, and a possible delay between the frames.
+ * You can animate a Animation object by using the Animate action. Example:
+ CCLOG("cocos2d: AnimationCache: Animation '%s' refers to frame '%s' which is not currently in the SpriteFrameCache. This frame will not be added to the animation.", anim.first.c_str(), frameName.asString().c_str());
+ CCLOG("cocos2d: AnimationCache: None of the frames for animation '%s' were found in the SpriteFrameCache. Animation is not being added to the Animation Cache.", anim.first.c_str());
+ continue;
+ }
+ else if ( frames.size() != frameNameSize )
+ {
+ CCLOG("cocos2d: AnimationCache: An animation in your dictionary refers to a frame which is not in the SpriteFrameCache. Some or all of the frames for the animation '%s' may be missing.", anim.first.c_str());
+ CCLOG("cocos2d: AnimationCache: Animation '%s' refers to frame '%s' which is not currently in the SpriteFrameCache. This frame will not be added to the animation.", name.c_str(), spriteFrameName.c_str());
+ * expand the points along their edge, useful after you reduce the points that cuts into the sprite
+ * using ClipperLib
+ * @param points a vector of Vec2 points as input
+ * @param rect a texture rect for specify an area of the image, the expanded points will be clamped in this rect, ultimately resulting in a quad if the expansion is too great
+ * @param epsilon the distance which the edges will expand
+ * @return a vector of Vec2 as the result of the expansion
+ * a helper function, packing autoPolygon creation, trace, reduce, expand, triangulate and calculate uv in one function
+ * @warning if you want to repetitively generate polygons, consider create an AutoPolygon object, and use generateTriangles function, as it only reads the file once
+ * @param filename A path to image file, e.g., "scene1/monster.png".
+ * @param rect texture rect, use Rect::ZERO for the size of the texture, default is Rect::ZERO
+ * @param epsilon the value used to reduce and expand, default to 2.0
+ * @param threshold the value where bigger than the threshold will be counted as opaque, used in trace
+ * @return a PolygonInfo, to use with sprite
+ * @code
+ * auto sp = Sprite::create(AutoPolygon::generatePolygon("grossini.png"));
+ * Scene creates a default camera. And the default camera mask of Node is 1, therefore it can be seen by the default camera.
+ * During rendering the scene, it draws the objects seen by each camera in the added order except default camera. The default camera is the last one being drawn with.
+ * It's usually a good idea to render 3D objects in a separate camera.
+ * And set the 3d camera flag to CameraFlag::USER1 or anything else except DEFAULT. Dedicate The DEFAULT camera for UI, because it is rendered at last.
+ * You can change the camera order to get different result when depth test is not enabled.
+ * For each camera, transparent 3d sprite is rendered after opaque 3d sprite and other 2d objects.
+ */
+enum class CameraFlag
+{
+ DEFAULT = 1,
+ USER1 = 1 << 1,
+ USER2 = 1 << 2,
+ USER3 = 1 << 3,
+ USER4 = 1 << 4,
+ USER5 = 1 << 5,
+ USER6 = 1 << 6,
+ USER7 = 1 << 7,
+ USER8 = 1 << 8,
+};
+/**
+ * Defines a camera .
+ */
+class CC_DLL Camera :public Node
+{
+ friend class Scene;
+ friend class Director;
+ friend class EventDispatcher;
+public:
+ /**
+ * The type of camera.
+ */
+ enum class Type
+ {
+ PERSPECTIVE = 1,
+ ORTHOGRAPHIC = 2
+ };
+public:
+ /**
+ * Creates a perspective camera.
+ *
+ * @param fieldOfView The field of view for the perspective camera (normally in the range of 40-60 degrees).
+ * @param aspectRatio The aspect ratio of the camera (normally the width of the viewport divided by the height of the viewport).
+ * set depth, camera with larger depth is drawn on top of camera with smaller depth, the depth of camera with CameraFlag::DEFAULT is 0, user defined camera is -1 by default
+ */
+ void setDepth(int8_t depth);
+
+ /**
+ * get depth, camera with larger depth is drawn on top of camera with smaller depth, the depth of camera with CameraFlag::DEFAULT is 0, user defined camera is -1 by default
+ Before rendering scene with this camera, the background need to be cleared. It clears the depth buffer with max depth by default. Use setBackgroundBrush to modify the default behavior
+ */
+ void clearBackground();
+ /**
+ Apply the FBO, RenderTargets and viewport.
+ */
+ void apply();
+ /**
+ Restore the FBO, RenderTargets and viewport.
+ */
+ void restore();
+
+ /**
+ Set FBO, which will attach several render target for the rendered result.
+ bool _viewProjectionUpdated; //Whether or not the viewprojection matrix was updated since the last frame.
+ unsigned short _cameraFlag; // camera flag
+ mutable Frustum _frustum; // camera frustum
+ mutable bool _frustumDirty;
+ int8_t _depth; //camera depth, the depth of camera with CameraFlag::DEFAULT flag is 0 by default, a camera with larger depth is drawn on top of camera with smaller depth
+
+ CameraBackgroundBrush* _clearBrush; //brush used to clear the back ground
+ * Defines a brush to clear the background of camera.
+ * There are 4 types of brush. None brush do nothing, Depth brush clear background with given depth, Color brush clear background with given color and depth, Skybox brush clear the background with a skybox. Camera uses depth brush by default.
+ */
+class CC_DLL CameraBackgroundBrush : public Ref
+{
+public:
+ /**
+ * Brush types. There are 4 types of brush. See CameraBackgroundDepthBrush, CameraBackgroundColorBrush, CameraBackgroundSkyBoxBrush for more information.
+ */
+ enum class BrushType
+ {
+ NONE, //none brush
+ DEPTH, // depth brush. See CameraBackgroundDepthBrush
+ COLOR, // color brush. See CameraBackgroundColorBrush
+ SKYBOX, // skybox brush. See CameraBackgroundSkyBoxBrush
+ You can change the color, point size, width by calling:
+ - drawColor4B(), drawColor4F()
+ - ccPointSize()
+ - glLineWidth()
+
+ @warning These functions draws the Line, Vec2, Polygon, immediately. They aren't batched. If you are going to make a game that depends on these primitives, I suggest creating a batch. Instead you should use DrawNode