2014-08-21 14:11:43 +08:00
# cocos2d-x v3.3alpha0 Release Notes #
2014-01-07 08:33:14 +08:00
2014-01-07 08:26:48 +08:00
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
2014-07-15 14:46:56 +08:00
- [cocos2d-x v3.2 Release Notes ](#user-content-cocos2d-x-v32-release-notes )
2014-05-20 08:02:30 +08:00
- [Misc Information ](#user-content-misc-information )
- [Requirements ](#user-content-requirements )
- [Runtime Requirements ](#user-content-runtime-requirements )
- [Compiler Requirements ](#user-content-compiler-requirements )
- [How to run tests ](#user-content-how-to-run-tests )
2014-06-17 21:18:08 +08:00
- [Mac OSX & iOS ](#user-content-mac-osx--ios )
- [Android ](#user-content-android )
- [Windows ](#user-content-windows )
- [Linux ](#user-content-linux )
2014-05-20 08:02:30 +08:00
- [How to start a new game ](#user-content-how-to-start-a-new-game )
2014-07-15 14:46:56 +08:00
- [Highlights of v3.2 ](#user-content-highlights-of-v32 )
- [Documents ](#user-content-documents )
2014-07-06 20:59:34 +08:00
- [Toolchain requirement changed ](#user-content-toolchain-requirement-changed )
2014-07-17 14:17:37 +08:00
- [atof issue on Android ](#user-content-atof-issue-on-android )
2014-05-20 08:02:30 +08:00
- [Features in detail ](#user-content-features-in-detail )
2014-07-15 14:46:56 +08:00
- [Sprite3D & Animation3D ](#user-content-sprite3d--animation3d )
2014-06-17 21:18:08 +08:00
- [fbx-conv usage ](#user-content-fbx-conv-usage )
2014-07-15 14:46:56 +08:00
- [Game controller ](#user-content-game-controller )
2014-07-06 20:59:34 +08:00
- [Fast tilemap ](#user-content-fast-tilemap )
- [Node::enumerateChildren ](#user-content-nodeenumeratechildren )
- [utils::findChildren ](#user-content-utilsfindchildren )
2014-07-15 14:46:56 +08:00
- [Node::setNormalizedPosition ](#user-content-nodesetnormalizedposition )
2014-05-20 08:02:30 +08:00
2014-01-07 08:23:06 +08:00
# Misc Information
2014-08-21 14:11:43 +08:00
* Full Changelog: https://github.com/cocos2d/cocos2d-x/blob/cocos2d-x-3.3alpha0/CHANGELOG
2014-05-20 07:56:33 +08:00
* v3.0 Release Notes can be found here: [v3.0 Release Notes ](https://github.com/cocos2d/cocos2d-x/blob/cocos2d-x-3.0/docs/RELEASE_NOTES.md )
2014-01-07 08:23:06 +08:00
# Requirements
## Runtime Requirements
* Android 2.3 or newer
* iOS 5.0 or newer
* OS X 10.7 or newer
* Windows 7 or newer
2014-05-20 07:56:33 +08:00
* Windows Phone 8 or newer
2014-07-06 20:53:17 +08:00
* Linux Ubuntu 14.04 or newer
2014-01-07 08:23:06 +08:00
* ~~Browsers via Emscripten~~ N/A for the moment
## Compiler Requirements
2014-07-16 11:26:21 +08:00
* Xcode 5.1 or newer for iOS or Mac
2014-07-06 20:53:17 +08:00
* gcc 4.9 or newer for Linux
2014-08-21 14:11:43 +08:00
* ndk-r9d for Android
2014-05-20 07:56:33 +08:00
* Visual Studio 2012 or newer for Windows (win32)
* Visual Studio 2012 or newer for Windows Phone 8
2014-01-07 08:23:06 +08:00
2014-04-21 14:50:27 +08:00
## How to run tests
2014-03-04 18:15:30 +08:00
### Mac OSX & iOS
* Enter `cocos2d-x/build` folder, open `cocos2d_test.xcodeproj`
* Select `iOS` or `OS X` target in scheme toolbar
* Click `run` button
### Android
2014-03-07 08:37:33 +08:00
You can run the samples...
2014-03-04 18:15:30 +08:00
2014-03-07 08:37:33 +08:00
**Using command line:**
2014-03-04 18:15:30 +08:00
$ cd cocos2d-x
2014-03-06 14:44:33 +08:00
$ ./setup.py
2014-03-04 18:15:30 +08:00
$ cd build
2014-03-14 15:01:11 +08:00
$ ./android-build.py cpp-empty-test -p 10
$ adb install cocos2d-x/tests/cpp-empty-test/proj.android/bin/CppEmptyTest-debug.apk
2014-03-04 18:15:30 +08:00
Then click item on Android device to run tests. Available value of `-p` is the API level, cocos2d-x supports from level 10.
2014-03-07 08:37:33 +08:00
**Using Eclipse:**
2014-03-04 18:15:30 +08:00
$ cd cocos2d-x
2014-03-06 14:44:33 +08:00
$ ./setup.py
2014-03-04 18:15:30 +08:00
$ cd build
2014-03-14 15:01:11 +08:00
$ ./android-build.py cpp-empty-test -p 10
2014-03-04 18:15:30 +08:00
Then
* Import cocos2d-x Android project into Eclipse, the path used to import is `cocos/2d/platform/android`
2014-03-14 15:01:11 +08:00
* Import `cpp-empty-test` Android project into Eclipse, the path used to import is `tests/cpp-empty-test/proj.android`
* Build `cpp-empty-test` Android project and run
2014-03-04 18:15:30 +08:00
### Windows
* Enter `cocos2d-x/build` , and open `cocos2d-win32.vs2012.sln`
2014-03-14 15:01:11 +08:00
* Select `cpp-empty-test` as running target
2014-03-04 18:15:30 +08:00
* Click run button
### Linux
$ cd cocos2d-x/build
$ ./install-deps-linux.sh
$ cd ../..
Then
$ mkdir build
$ cd build
2014-03-14 15:01:11 +08:00
$ cmake ../cocos2d-x
2014-03-04 18:15:30 +08:00
$ make -j4
Run
2014-03-14 15:01:11 +08:00
$ cd bin/cpp-empty-test
$ ./cpp-empty-test
2014-03-04 18:15:30 +08:00
2014-03-06 14:44:33 +08:00
## How to start a new game
2014-05-20 08:05:05 +08:00
Please refer to this document: [ReadMe ](../README.md )
2014-03-04 18:15:30 +08:00
2014-08-21 14:11:43 +08:00
# Highlights of v3.3alpha0
2014-01-07 08:23:06 +08:00
2014-08-21 14:11:43 +08:00
* 3d: `Camera` , `AABB` , `OBB` and `Ray`
* ui: added `Scale9Sprite`
* FileUitls: added `isDirectoryExist()` , `createDirectory()` , `removeDirectory()` , `removeFile()` , `renameFile()` and `getFileSize()`
* Device: added `setKeepScreenOn()` on iOS and Android
* Added c++11 random support
* RenderTexture: added a call back function for `saveToFile()`
* SpriteFrameCache: support loading from plist file content data
* Many other small features added and many bugs fixed
2014-01-07 08:23:06 +08:00
2014-07-06 20:53:17 +08:00
# Features in detail
2014-01-07 08:23:06 +08:00
2014-08-21 14:11:43 +08:00
## Camera
2014-01-07 08:23:06 +08:00
2014-08-21 14:11:43 +08:00
This version of camera is powerful then previous one. And you can add it as a child anywhere. If you want to let a Node to be visited by a camera, Node's camera mask should include Camera's flag:
2014-01-07 09:04:12 +08:00
2014-08-21 14:11:43 +08:00
```c++
// let sprite to be visited by a camera
auto sprite = Sprite::create("myFile.png");
sprite->setCameraMask(CameraFlag::USER1);
auto camera = Camera::createPerspective(60, winSize.width/winSize.height, 1, 1000);
camera->setCameraFlag(CameraFlag::USER1);
scene->addChild(camera);
2014-01-07 08:23:06 +08:00
```
2014-07-06 20:53:17 +08:00
2014-08-21 14:11:43 +08:00
If you have many Nodes that want to be visited by a camera, there is a convenient way:
2014-07-06 20:53:17 +08:00
2014-07-15 14:43:40 +08:00
```c++
2014-08-21 14:11:43 +08:00
auto layer = Layer::create();
auto sprite1 = Sprite::create();
auto sprite2 = Sprite::create();
layer->addChild(sprite1);
layer->addChild(sprite2);
// it will set camera mask for all its children
layer->setCameraMask(CameraFlg::USER1);
auto camera = Camera::createPerspective();
camera->setCameraFlag(CameraFlag::USER1);
scene->addChild(camera);
2014-07-15 14:43:40 +08:00
```
2014-07-06 20:53:17 +08:00
2014-08-21 14:11:43 +08:00
Full test case please refer to `tests/cpp-tests/res/Camera3DTest/Camera3DTest.cpp` .
2014-07-06 20:53:17 +08:00
2014-08-21 14:11:43 +08:00
## AABB, OBB and Ray
2014-07-06 20:53:17 +08:00
2014-08-21 14:11:43 +08:00
TBD
2014-07-06 20:53:17 +08:00
2014-08-21 14:11:43 +08:00
## ui::Scale9Sprite
2014-05-20 12:07:43 +08:00
2014-08-21 14:11:43 +08:00
TBD
2014-05-20 12:07:43 +08:00
2014-08-21 14:11:43 +08:00
## c++11 random support
2014-07-06 20:53:17 +08:00
2014-08-21 14:11:43 +08:00
Since `rand()` is not good(refer to [this document ](http://c-faq.com/lib/randrange.html )), we use c++11 random library to do generate random number, and provide a function to easily using:
2014-05-20 12:07:43 +08:00
```c++
2014-08-21 14:11:43 +08:00
int randInt = cocos2d::random(1, 10);
float randFloat = cocos2d::random(1.f, 10.f);
2014-05-20 12:07:43 +08:00
```
2014-01-07 08:23:06 +08:00
2014-08-21 14:11:43 +08:00
## RenderTexture save function
2014-01-07 08:23:06 +08:00
2014-08-21 14:11:43 +08:00
`RenderTexture::saveToFile()` will not save rendertexture when the function returns, because it just send render command to renderer. The file will be saved after render command is executed. It is not convenient if you want to use the saved file to do some work. So we added a parameter in `RenderTexture::saveToFile()` to set a call back function when the file is saved.
2014-07-06 20:53:17 +08:00
```c++
2014-08-21 14:11:43 +08:00
renderTexture->begin();
2014-07-06 20:53:17 +08:00
...
2014-08-21 14:11:43 +08:00
renderTexture->end();
2014-07-15 14:43:40 +08:00
2014-08-21 14:11:43 +08:00
renderTexture->saveToFile("myFile.png", true, callback);
2014-07-15 14:43:40 +08:00
```