From 36038df1b6555e70ca5a797f2735fdb50d4e1c21 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 3 Feb 2016 19:59:34 +0300 Subject: [PATCH 01/94] initial commit Basic removal of some android files --- .../targets/Headless/Debug.overrides.json | 337 ------ cocos2d-tests-android/Headless.iml | 13 - .../Headless.xcodeproj/project.pbxproj | 1017 ----------------- .../Headless/Headless-Headless.iml | 77 -- .../Headless/Headless-Info.plist | 52 - .../Headless/Headless-Prefix.pch | 15 - .../Headless/HeadlessActivity.h | 14 - .../Headless/HeadlessActivity.m | 54 - .../Published-Android/configCocos2d.plist | 12 - cocos2d-tests-android/Headless/SimpleScene.h | 13 - cocos2d-tests-android/Headless/SimpleScene.m | 61 - cocos2d-tests-android/Headless/build.gradle | 24 - .../Headless/en.lproj/InfoPlist.strings | 2 - .../Headless/proguard-rules.txt | 17 - .../Headless/src/main/AndroidManifest.xml | 25 - .../main/res/drawable-hdpi/ic_launcher.png | Bin 10389 -> 0 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 7085 -> 0 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 14358 -> 0 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 14625 -> 0 bytes .../Headless/tests/CCBMFontTest.m | 1 - .../Headless/tests/CCEffectsTest.m | 1 - .../Headless/tests/CCLabelTTFTest.m | 1 - .../Headless/tests/CCLayoutTest.m | 1 - .../Headless/tests/CCPackageTest.m | Bin 286808 -> 0 bytes .../Headless/tests/CCPhysicsTest.m | 1 - .../Headless/tests/CCRendererTest.m | 1 - .../Headless/tests/CCResponderTest.m | 1 - .../Headless/tests/CCSchedulerTest.m | 1 - .../Headless/tests/CCScrollViewTest.m | 1 - .../Headless/tests/CCSliderTest.m | 1 - .../Headless/tests/CCSprite9SliceTest.m | 1 - .../Headless/tests/CCTableViewTest.m | 1 - .../Headless/tests/CCTextFieldTest.m | 57 - .../Headless/tests/CCTextureCacheTest.m | 1 - .../Headless/tests/CCTransitionTest.m | 1 - .../Headless/tests/ColorPickerTest.m | 1 - .../Headless/tests/ColorTest.m | 1 - .../Headless/tests/ObjectALTest.m | 1 - .../Headless/tests/ParallaxTest.m | 1 - .../Headless/tests/ParticleTest.m | 1 - .../Headless/tests/PositioningTest.m | 1 - .../Headless/tests/SpritePerformanceTest.m | 1 - .../Headless/tests/TextureTest.m | 1 - .../Headless/tests/TilemapTest.m | 1 - .../Headless/tests/VertexZTest.m | 1 - .../HeadlessTests/HeadlessTests-Info.plist | 22 - .../HeadlessTests/HeadlessTests.m | 34 - .../HeadlessTests/en.lproj/InfoPlist.strings | 2 - cocos2d-tests-android/build.gradle | 16 - cocos2d-tests-android/gradle.properties | 18 - .../gradle/wrapper/gradle-wrapper.jar | Bin 49896 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - cocos2d-tests-android/gradlew | 164 --- cocos2d-tests-android/gradlew.bat | 90 -- cocos2d-tests-android/local.properties | 10 - cocos2d-tests-android/settings.gradle | 1 - .../Android/CCPlatformTextFieldAndroid.h | 13 - .../Android/CCPlatformTextFieldAndroid.m | 115 -- cocos2d-ui/Platform/Android/java/CCEditText.h | 21 - cocos2d-ui/Platform/Android/java/CCEditText.m | 38 - cocos2d.xcodeproj/project.pbxproj | 932 --------------- cocos2d/Platforms/Android/CCActivity.h | 36 - cocos2d/Platforms/Android/CCActivity.m | 455 -------- cocos2d/Platforms/Android/CCDirectorAndroid.h | 44 - cocos2d/Platforms/Android/CCDirectorAndroid.m | 230 ---- cocos2d/Platforms/Android/CCGLView.h | 69 -- cocos2d/Platforms/Android/CCGLView.m | 589 ---------- cocos2d/Platforms/Android/CCGestureListener.h | 30 - cocos2d/Platforms/Android/CCGestureListener.m | 91 -- .../Platforms/Android/CCMathTypesAndroid.h | 167 --- .../Platforms/Android/CCMathUtilsAndroid.h | 58 - cocos2d/Platforms/Android/CCMatrix3.h | 498 -------- cocos2d/Platforms/Android/CCMatrix3.m | 58 - cocos2d/Platforms/Android/CCMatrix4.h | 859 -------------- cocos2d/Platforms/Android/CCMatrix4.m | 117 -- cocos2d/Platforms/Android/CCQuaternion.h | 290 ----- cocos2d/Platforms/Android/CCQuaternion.m | 124 -- cocos2d/Platforms/Android/CCTouchAndroid.h | 27 - cocos2d/Platforms/Android/CCTouchAndroid.m | 54 - cocos2d/Platforms/Android/CCVector2.h | 425 ------- cocos2d/Platforms/Android/CCVector3.h | 295 ----- cocos2d/Platforms/Android/CCVector4.h | 495 -------- .../Android/java/org/cocos2d/CCActivity.java | 47 - .../java/org/cocos2d/CCGestureListener.java | 26 - 84 files changed, 8380 deletions(-) delete mode 100644 cocos2d-tests-android/Headless.approj/targets/Headless/Debug.overrides.json delete mode 100644 cocos2d-tests-android/Headless.iml delete mode 100644 cocos2d-tests-android/Headless.xcodeproj/project.pbxproj delete mode 100644 cocos2d-tests-android/Headless/Headless-Headless.iml delete mode 100644 cocos2d-tests-android/Headless/Headless-Info.plist delete mode 100644 cocos2d-tests-android/Headless/Headless-Prefix.pch delete mode 100644 cocos2d-tests-android/Headless/HeadlessActivity.h delete mode 100644 cocos2d-tests-android/Headless/HeadlessActivity.m delete mode 100644 cocos2d-tests-android/Headless/Published-Android/configCocos2d.plist delete mode 100644 cocos2d-tests-android/Headless/SimpleScene.h delete mode 100644 cocos2d-tests-android/Headless/SimpleScene.m delete mode 100644 cocos2d-tests-android/Headless/build.gradle delete mode 100644 cocos2d-tests-android/Headless/en.lproj/InfoPlist.strings delete mode 100644 cocos2d-tests-android/Headless/proguard-rules.txt delete mode 100644 cocos2d-tests-android/Headless/src/main/AndroidManifest.xml delete mode 100644 cocos2d-tests-android/Headless/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100644 cocos2d-tests-android/Headless/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100644 cocos2d-tests-android/Headless/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100644 cocos2d-tests-android/Headless/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 120000 cocos2d-tests-android/Headless/tests/CCBMFontTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCEffectsTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCLabelTTFTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCLayoutTest.m delete mode 100644 cocos2d-tests-android/Headless/tests/CCPackageTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCPhysicsTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCRendererTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCResponderTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCSchedulerTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCScrollViewTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCSliderTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCSprite9SliceTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCTableViewTest.m delete mode 100644 cocos2d-tests-android/Headless/tests/CCTextFieldTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCTextureCacheTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/CCTransitionTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/ColorPickerTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/ColorTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/ObjectALTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/ParallaxTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/ParticleTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/PositioningTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/SpritePerformanceTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/TextureTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/TilemapTest.m delete mode 120000 cocos2d-tests-android/Headless/tests/VertexZTest.m delete mode 100644 cocos2d-tests-android/HeadlessTests/HeadlessTests-Info.plist delete mode 100644 cocos2d-tests-android/HeadlessTests/HeadlessTests.m delete mode 100644 cocos2d-tests-android/HeadlessTests/en.lproj/InfoPlist.strings delete mode 100644 cocos2d-tests-android/build.gradle delete mode 100644 cocos2d-tests-android/gradle.properties delete mode 100644 cocos2d-tests-android/gradle/wrapper/gradle-wrapper.jar delete mode 100644 cocos2d-tests-android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 cocos2d-tests-android/gradlew delete mode 100644 cocos2d-tests-android/gradlew.bat delete mode 100644 cocos2d-tests-android/local.properties delete mode 100644 cocos2d-tests-android/settings.gradle delete mode 100644 cocos2d-ui/Platform/Android/CCPlatformTextFieldAndroid.h delete mode 100644 cocos2d-ui/Platform/Android/CCPlatformTextFieldAndroid.m delete mode 100644 cocos2d-ui/Platform/Android/java/CCEditText.h delete mode 100644 cocos2d-ui/Platform/Android/java/CCEditText.m delete mode 100644 cocos2d/Platforms/Android/CCActivity.h delete mode 100644 cocos2d/Platforms/Android/CCActivity.m delete mode 100644 cocos2d/Platforms/Android/CCDirectorAndroid.h delete mode 100644 cocos2d/Platforms/Android/CCDirectorAndroid.m delete mode 100644 cocos2d/Platforms/Android/CCGLView.h delete mode 100644 cocos2d/Platforms/Android/CCGLView.m delete mode 100644 cocos2d/Platforms/Android/CCGestureListener.h delete mode 100644 cocos2d/Platforms/Android/CCGestureListener.m delete mode 100644 cocos2d/Platforms/Android/CCMathTypesAndroid.h delete mode 100644 cocos2d/Platforms/Android/CCMathUtilsAndroid.h delete mode 100644 cocos2d/Platforms/Android/CCMatrix3.h delete mode 100644 cocos2d/Platforms/Android/CCMatrix3.m delete mode 100644 cocos2d/Platforms/Android/CCMatrix4.h delete mode 100644 cocos2d/Platforms/Android/CCMatrix4.m delete mode 100644 cocos2d/Platforms/Android/CCQuaternion.h delete mode 100644 cocos2d/Platforms/Android/CCQuaternion.m delete mode 100644 cocos2d/Platforms/Android/CCTouchAndroid.h delete mode 100644 cocos2d/Platforms/Android/CCTouchAndroid.m delete mode 100644 cocos2d/Platforms/Android/CCVector2.h delete mode 100644 cocos2d/Platforms/Android/CCVector3.h delete mode 100644 cocos2d/Platforms/Android/CCVector4.h delete mode 100644 cocos2d/Platforms/Android/java/org/cocos2d/CCActivity.java delete mode 100644 cocos2d/Platforms/Android/java/org/cocos2d/CCGestureListener.java diff --git a/cocos2d-tests-android/Headless.approj/targets/Headless/Debug.overrides.json b/cocos2d-tests-android/Headless.approj/targets/Headless/Debug.overrides.json deleted file mode 100644 index 68b4ee750fb..00000000000 --- a/cocos2d-tests-android/Headless.approj/targets/Headless/Debug.overrides.json +++ /dev/null @@ -1,337 +0,0 @@ -{ - "configuration_format_version": 2, - - - - // Dictionary of global configuration parameters. - // These parameters are not taken from the xcode project, - // so they need to be supplied by the user. - "config": { - - // A short name to identify the application. - // Used to decide the APK filename, but not shown - // anywhere in the app. - // "APPLICATION_NAME": "", - - // The name of the application to display in the launcher - // "APPLICATION_FULL_NAME": "", - - // The unique identifier for the application. - // Normally this is in reverse DNS notation, e.g., - // "com.apportable.Spin" - // "APPLICATION_IDENTIFIER": "", - - // Short version name for the app, e.g., "1.0" - // "SHORT_VERSION": "", - - // If you're using Google Play Game Services, put in the client id (a numerical value) - // "GOOGLE_PLAY_CLIENT_ID": "1234567" - - // A list of features needed on the target platform. - // Common features include: - // "accelerometer" - // "access_network_state" - // "access_wifi_state" - // "atc_slow_surface" - // "billing" - // "c2dm_receive" - // "check_license" - // "gcm_receive" - // "get_accounts" - // "large_heap" - // "live_wallpaper" - // "multitouch" - // "multitouch_distinct" - // "multitouch_jazzhand" - // "NFC" - // "no_internet" - // "notifications" - // "opengles2" - // "portrait" - // "prefer_external_storage" - // "read_phone_state" - // "stencil_buffer" - // "touch_filter_move" - // "touchscreen" - // "true_color" - // "vibrate" - // "wake_lock" - // "write_external_storage" - // "write_settings" - // "xperia" - //"FEATURES": [] - - // Preferred way of handling URLs in the code. - // Leave it null for most cases. - //"URL_SCHEME": null, - - // Key to receive remote notifications on the device. - //"REMOTE_NOTIFICATION_KEY": "", - - // The method for adjusting the splash screen (Default.png) - // to fit the native device resolution. Options are: - // "aspect_fill" - // "aspect_fit" - // "letterbox" (the default) - // "native" - // "stretch" - //"SPLASH_SCREEN_TYPE": "letterbox", - - // Path to the image to use for the app's icon. - // Usually something like "./Icon.png". - // "ICON": "", // 48x48 - // "MEDIUM_RES_ICON": "", // 48x48 - // "HIGH_RES_ICON": "", // 72x72 - // "XHIGH_RES_ICON": "", // 96x96 - // "XXHIGH_RES_ICON": "", // 144x144 - // "XXXHIGH_RES_ICON": "", // 192x192 - - // A regular expression to determine which assets - // should be compressed when building the final app. - // By default, text assets are not compressed. Use - // this to compress certain text assets. For example, - // ".*.plist$" will cause all files ending in ".plist" - // to be compressed. - //"COMPRESSED_ASSETS_PATTERN": "", - //"UNCOMPRESSED_ASSETS_PATTERN": "", - - // Automatically convert audio to oggs. Defaults to true. - // Can be configured per file with add params and "convert" - // field or with the "CONVERTABLE_AUDIO_EXTENSIONS" flag. - //"CONVERT_AUDIO": false, - - // Comma-separated list of file extensions that are safe to convert to OGGs - //"CONVERTABLE_AUDIO_EXTENSIONS": ".mp3,.wav,.caf,.m4a", - - // Compress PNGs with pngcrush. Defaults to true. - //"COMPRESS_PNGS": false, - - // This will cache all converted assets (pngs, oggs, etc) - // into the approj directory. This is useful if you want to - // persist the changes across builds or check them in source - // control so they are uses by Linux based builders. Note that - // if you disable this, your final build params file will contain - // absolute paths and should not be checked in. - // Defaults to true. - //"STORE_ASSESTS_IN_APPROJ": false, - - // ICU_CONFIGS specifies the ICU (International Components for Unicode) database for the project - // The default is "normal" which meets the needs of most apps using NS Format classes and/or localization - // "full" will specify a complete database - // "none" will specify no database. Be careful - It's not always intutitive when Foundation depends upon ICU - - // The normal table is 2762244 bytes compressed and 8622768 uncompressed - // The full table is 8396438 bytes compressed and 20775168 uncompressed - - // You can also configure and build your own ICU table at http://apps.icu-project.org/datacustom/ICUData50.html - // Add it to the "add_params" "assets" section and specify the path to ICU_CONFIG - // For example TBD - - "ICU_CONFIG" : "normal", - - //Manifest extras - //A list of .xml files that contain snippets to be included in AndroidManifest.xml - //inside the , and tags respectively. - //"MANIFEST_EXTRAS": [], - //"ACTIVITY_MANIFEST_EXTRAS": [], - //"APPLICATION_MANIFEST_EXTRAS": [], - - // Advanced Options - //"NOTIFICATION_ICON":"", - //"TEMPLATE_VALUES":{}, - //"OGGENC_OPTIONS":"", - //"AFCONVERT_OPTIONS":"", - //"PNGCRUSH_OPTIONS":"", - //"MIN_SDK": 9, - //"C2DM_SENDER": "", - //"HARDWARE_ACCELERATED": "", - //"NFC_SCHEME": "", - //"MPMETRICS_API_KEY": "", - //"RENAME_TARGET": true, - - }, - - // Sometimes header include path ordering matters. If so, put the ordering constraints into this - // array. For example, if "./foo" has to come before "./bar", you would put: - // ["./foo", "./bar"] - // Note that "./some_other_include_path" doesn't appear in the list, since its order doesn't matter. - // You can also specify "*", which matches everything not already constrained. This lets you put - // particular paths at the beginning or end of the list. For example, ["./foo", "*", "./bar"]. - "header_ordering_constraints": [], - - // Edit this section to add and replace files and parameters to the generated settings for this project. - // If the generated settings for a particular file are incorrect, simply add it here with the settings - // you need and the final build parameters will only included the version specified here. - "add_params": { - // A list of pch files to -include. - // PCH files can be either a string, e.g., "./MyApp-Prefix.pch", - // or a dictionary specifying the pch and the environment where - // it should be used, e.g., - // {"pch": "./prefix-android.pch", "env": {"TARGET_OS": "android"}} - "pchs": [], - - // A list of header search paths - // e.g. "./External/facebook-sdk/include" - "header_paths": [], - - // A list of global compile flags for the project. - // Flags can be either a string, e.g. "-Werror-shadow", - // or a dictionary specifying the flag and the environment - // that it should be used in, e.g., - // {"flag": "-fstack-protector", "env": {"TARGET_OS": "android"}} - "flags": [], - - // A dictionary of global compiler definitions for the project. - // Defines can be a simple key-value pair, e.g., "DEBUG": 1, - // or the value can be a dictionary specifying the value and the - // environment that it should be used in, e.g., - // "SOME_DEFINE": {"value": "\"yep its building on android\"", "env": {"TARGET_OS": "android"}} - "defines": {}, - - // A list of dependencies. Typically these correspond to - // frameworks in the xcode project. - "deps": [ - ], - - // A list of source files (e.g. .m, .mm, .c, .cc, and .cpp) files to build. - // Source files can be a string, e.g. "./main.c", or a dictionary specifying - // the file, any special flags, any defines, and the environment - // where it should be compiled, e.g., - // {"source": "./PngImageLoader.m", "flags": ["-fstack-protector"], "defines": {"PNG": 1}, "env": {"TARGET_TEXTURE_FMT": "png"}} - "sources": [], - - // A list of glob inclusion filters for additional files. - // This can also be used to replace flags on multiple files. - // e.g. {"source":"./Server/Level_[0-9].m","flags": ["-fno-objc-arc"], "defines": {"NDEBUG": 1}} - "sources_glob":[], - - // A list of assets to package with the application. - // Assets can be either a string, e.g., "./Info.plist", - // or a dictionary specifying the asset and the target path it should be written to - // in the app, and the environment it should be included with, e.g., - // {"asset": "./Resources/cube_texture.pvr.ccz", "target": "Bundled Resources/", "env": {"TARGET_TEXTURE_FMT": "pvr"}} - // or a dictionary like above, but instead specifying the full target file name - // for the asset, e.g., - // {"asset": "./Resources/cube_texture.pvr.ccz", "target": "Bundled Resources/cube_texture.pvr.gz", "env": {"TARGET_TEXTURE_FMT": "pvr"}} - "assets": [], - - // A list of Info.plist files. The first one in the list will be the one we consider the main Info.plist. - "infoplists": [], - - //A list of specific java sources file to compile - "java_sources": [], - - //A list of the java root source directories - "java_sourcepaths": [], - - //A list of java Librarys (jars) - "java_libs": [], - - //A list of java resource directories - "java_res_dirs": [], - - //A list of libs to include with the APK - "libs":[], - - //Additional linker (ld) flags. - "link_flags":[], - - // A list of XIBs to compile into NIBs. - "xibs": [], - - // A list of storyboards to compile into storyboardc bundles - "storyboards": [], - - // A list of xcdatamodels to compile into momc bundles - "xcdatamodels": [], - - //Sub projects. Example : SomeSubProject.xcodeproj should be listed as "SomeSubProject" - "modules": [], - }, - - // Edit this section to remove files and parameters from the generated #{$build_params_file} for this project. - // For this section, only specify the file name as a string in the cases where you could normally - // also specify an array or a dictionary. To override the generated settings for a particular - // file, simply add it to the "add_params" list above with the settings you want. - "remove_params": { - // A list of pch files to remove from -include. - // PCH files can be either a string, e.g., "./MyApp-Prefix.pch", - // or a dictionary specifying the pch and the environment where - // it should be used, e.g., - // {"pch": "./prefix-android.pch", "env": {"TARGET_OS": "android"}} - "pchs": [], - - // A list of header search paths. - // e.g. "./External/facebook-sdk/include" - "header_paths": [], - - // A list of global compile flags for the project. - // Flags can be either a string, e.g. "-Werror-shadow", - // or a dictionary specifying the flag and the environment - // that it should be used in, e.g., - // {"flag": "-fstack-protector", "env": {"TARGET_OS": "android"}} - "flags": [], - - // A dictionary of global compiler definitions for the project. - // Defines can be a simple key-value pair, e.g., "DEBUG": 1, - // or the value can be a dictionary specifying the value and the - // environment that it should be used in, e.g., - // "SOME_DEFINE": {"value": "\"yep its building on android\"", "env": {"TARGET_OS": "android"}} - "defines": {}, - - // A list of dependencies. Typically these correspond to - // frameworks in the xcode project. - "deps": [], - - // A list of source files (e.g. .m, .mm, .c, .cc, and .cpp) files to remove from the build. - // e.g. "./External/Reachabilty/Reachability.m" - "sources": [], - - // A list of glob removal filters to filter out source files. - // e.g. "./Server/Level_[0-9].m" - "sources_glob":[], - - // A list of assets to package with the application. - // Assets can be either a string, e.g., "./Info.plist", - // a dictionary specifying the asset, the target path it should be written to - // in the app, and the environment it should be included with, e.g., - // {"asset": "./Resources/cube_texture.pvr.ccz", "target_path": "Bundled Resources/", "env": {"TARGET_TEXTURE_FMT": "pvr"}} - // or a dictionary like above, but instead specifying the full target file name - // for the asset, e.g., - // {"asset": "./Resources/cube_texture.pvr.ccz", "target_file": "Bundled Resources/cube_texture.pvr.gz", "env": {"TARGET_TEXTURE_FMT": "pvr"}} - "assets": [], - - // A list of Info.plist files. The first one in the list will be the one we consider the main Info.plist. - "infoplists": [], - - //A list of specific java sources file to compile - "java_sources": [], - - //A list of the java root source directories - "java_sourcepaths": [], - - //A list of java Librarys (jars) - "java_libs": [], - - //A list of java resource directories - "java_res_dirs": [], - - //A list of libs to include with the APK - "libs":[], - - //Additional linker (ld) flags. - "link_flags":[], - - // A list of XIBs to compile into NIBs. - "xibs": [], - - // A list of storyboards to compile into storyboardc bundles - "storyboards": [], - - // A list of xcdatamodels to compile into momc bundles - "xcdatamodels": [], - - //Sub projects. Example : SomeSubProject.xcodeproj should be listed as "SomeSubProject" - "modules": [], - } -} diff --git a/cocos2d-tests-android/Headless.iml b/cocos2d-tests-android/Headless.iml deleted file mode 100644 index d9c631dd27f..00000000000 --- a/cocos2d-tests-android/Headless.iml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/cocos2d-tests-android/Headless.xcodeproj/project.pbxproj b/cocos2d-tests-android/Headless.xcodeproj/project.pbxproj deleted file mode 100644 index e5d54e4bdf9..00000000000 --- a/cocos2d-tests-android/Headless.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1017 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 141A45D31A38DB1000853DB8 /* CoreJava.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 141A45D21A38DB1000853DB8 /* CoreJava.framework */; }; - 147456A41A3B9B1A0024B64E /* Published-Android in Resources */ = {isa = PBXBuildFile; fileRef = 147456A31A3B9B1A0024B64E /* Published-Android */; }; - 14D9F5D61A3A81DE00620103 /* configCocos2d.plist in Resources */ = {isa = PBXBuildFile; fileRef = 14D9F5D51A3A81DE00620103 /* configCocos2d.plist */; }; - 14EF47AE1A37F15800A45BE4 /* JavaKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14EF47AD1A37F15800A45BE4 /* JavaKit.framework */; }; - 14EF47AF1A37F17300A45BE4 /* AndroidKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14098DAA1A37EA94005F0B26 /* AndroidKit.framework */; }; - 14EF47B01A37F31100A45BE4 /* GLActivityKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14098DAC1A37EA9A005F0B26 /* GLActivityKit.framework */; }; - 464236B61A428B4D00532547 /* JavaFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 464236B51A428B4D00532547 /* JavaFoundation.framework */; }; - 57E144FE1975DC340065F142 /* A Damn Mess.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57E144C31975DC340065F142 /* A Damn Mess.ttf */; }; - 57E144FF1975DC340065F142 /* Abberancy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57E144C41975DC340065F142 /* Abberancy.ttf */; }; - 57E145011975DC340065F142 /* arial-unicode-26.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144C61975DC340065F142 /* arial-unicode-26.fnt */; }; - 57E145021975DC340065F142 /* arial-unicode-26.GlyphProject in Resources */ = {isa = PBXBuildFile; fileRef = 57E144C71975DC340065F142 /* arial-unicode-26.GlyphProject */; }; - 57E145031975DC340065F142 /* arial-unicode-26.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144C81975DC340065F142 /* arial-unicode-26.png */; }; - 57E145041975DC340065F142 /* arial16.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144C91975DC340065F142 /* arial16.fnt */; }; - 57E145051975DC340065F142 /* arial16.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144CA1975DC340065F142 /* arial16.png */; }; - 57E145061975DC340065F142 /* bitmapFontTest.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144CB1975DC340065F142 /* bitmapFontTest.fnt */; }; - 57E145071975DC340065F142 /* bitmapFontTest.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144CC1975DC340065F142 /* bitmapFontTest.png */; }; - 57E145081975DC340065F142 /* bitmapFontTest2.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144CD1975DC340065F142 /* bitmapFontTest2.fnt */; }; - 57E145091975DC340065F142 /* bitmapFontTest3.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144CE1975DC340065F142 /* bitmapFontTest3.fnt */; }; - 57E1450A1975DC340065F142 /* bitmapFontTest3.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144CF1975DC340065F142 /* bitmapFontTest3.png */; }; - 57E1450B1975DC340065F142 /* bitmapFontTest4.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D01975DC340065F142 /* bitmapFontTest4.fnt */; }; - 57E1450C1975DC340065F142 /* bitmapFontTest4.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D11975DC340065F142 /* bitmapFontTest4.png */; }; - 57E1450D1975DC340065F142 /* bitmapFontTest5.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D21975DC340065F142 /* bitmapFontTest5.fnt */; }; - 57E1450E1975DC340065F142 /* bitmapFontTest5.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D31975DC340065F142 /* bitmapFontTest5.png */; }; - 57E1450F1975DC340065F142 /* boundsTestFont.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D41975DC340065F142 /* boundsTestFont.fnt */; }; - 57E145101975DC340065F142 /* boundsTestFont.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D51975DC340065F142 /* boundsTestFont.png */; }; - 57E145111975DC340065F142 /* font-issue1343-hd.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D61975DC340065F142 /* font-issue1343-hd.fnt */; }; - 57E145121975DC340065F142 /* font-issue1343-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D71975DC340065F142 /* font-issue1343-hd.png */; }; - 57E145131975DC340065F142 /* font-issue1343.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D81975DC340065F142 /* font-issue1343.fnt */; }; - 57E145141975DC340065F142 /* font-issue1343.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144D91975DC340065F142 /* font-issue1343.png */; }; - 57E145151975DC340065F142 /* fps_images-hd.plist in Resources */ = {isa = PBXBuildFile; fileRef = 57E144DA1975DC340065F142 /* fps_images-hd.plist */; }; - 57E145161975DC340065F142 /* fps_images-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144DB1975DC340065F142 /* fps_images-hd.png */; }; - 57E145171975DC340065F142 /* fps_images-ipadhd.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144DC1975DC340065F142 /* fps_images-ipadhd.png */; }; - 57E145181975DC340065F142 /* fps_images.GlyphProject in Resources */ = {isa = PBXBuildFile; fileRef = 57E144DD1975DC340065F142 /* fps_images.GlyphProject */; }; - 57E145191975DC340065F142 /* fps_images.plist in Resources */ = {isa = PBXBuildFile; fileRef = 57E144DE1975DC340065F142 /* fps_images.plist */; }; - 57E1451A1975DC340065F142 /* fps_images.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144DF1975DC340065F142 /* fps_images.png */; }; - 57E1451B1975DC340065F142 /* futura-48.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E01975DC340065F142 /* futura-48.fnt */; }; - 57E1451C1975DC340065F142 /* futura-48.GlyphProject in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E11975DC340065F142 /* futura-48.GlyphProject */; }; - 57E1451D1975DC340065F142 /* futura-48.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E21975DC340065F142 /* futura-48.png */; }; - 57E1451E1975DC340065F142 /* geneva-32.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E31975DC340065F142 /* geneva-32.fnt */; }; - 57E1451F1975DC340065F142 /* helvetica-32.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E41975DC340065F142 /* helvetica-32.fnt */; }; - 57E145201975DC340065F142 /* helvetica-geneva-32.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E51975DC340065F142 /* helvetica-geneva-32.png */; }; - 57E145211975DC340065F142 /* konqa32-hd.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E61975DC340065F142 /* konqa32-hd.fnt */; }; - 57E145221975DC340065F142 /* konqa32-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E71975DC340065F142 /* konqa32-hd.png */; }; - 57E145231975DC340065F142 /* konqa32.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E81975DC340065F142 /* konqa32.fnt */; }; - 57E145241975DC340065F142 /* konqa32.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144E91975DC340065F142 /* konqa32.png */; }; - 57E145251975DC340065F142 /* larabie-16-hd.plist in Resources */ = {isa = PBXBuildFile; fileRef = 57E144EA1975DC340065F142 /* larabie-16-hd.plist */; }; - 57E145261975DC340065F142 /* larabie-16-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144EB1975DC340065F142 /* larabie-16-hd.png */; }; - 57E145271975DC340065F142 /* larabie-16.plist in Resources */ = {isa = PBXBuildFile; fileRef = 57E144EC1975DC340065F142 /* larabie-16.plist */; }; - 57E145281975DC340065F142 /* larabie-16.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144ED1975DC340065F142 /* larabie-16.png */; }; - 57E145291975DC340065F142 /* markerFelt-hd.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144EE1975DC340065F142 /* markerFelt-hd.fnt */; }; - 57E1452A1975DC340065F142 /* markerFelt-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144EF1975DC340065F142 /* markerFelt-hd.png */; }; - 57E1452B1975DC340065F142 /* markerFelt.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F01975DC340065F142 /* markerFelt.fnt */; }; - 57E1452C1975DC340065F142 /* markerFelt.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F11975DC340065F142 /* markerFelt.png */; }; - 57E1452D1975DC340065F142 /* Paint Boy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F21975DC340065F142 /* Paint Boy.ttf */; }; - 57E1452E1975DC340065F142 /* RobotoSlab-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F31975DC340065F142 /* RobotoSlab-Bold.ttf */; }; - 57E1452F1975DC340065F142 /* RobotoSlab-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F41975DC340065F142 /* RobotoSlab-Light.ttf */; }; - 57E145301975DC340065F142 /* RobotoSlab-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F51975DC340065F142 /* RobotoSlab-Regular.ttf */; }; - 57E145311975DC340065F142 /* RobotoSlab-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F61975DC340065F142 /* RobotoSlab-Thin.ttf */; }; - 57E145321975DC340065F142 /* Schwarzwald Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F71975DC340065F142 /* Schwarzwald Regular.ttf */; }; - 57E145331975DC340065F142 /* Scissor Cuts.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F81975DC340065F142 /* Scissor Cuts.ttf */; }; - 57E145341975DC340065F142 /* tuffy_bold_italic-charmap-hd.plist in Resources */ = {isa = PBXBuildFile; fileRef = 57E144F91975DC340065F142 /* tuffy_bold_italic-charmap-hd.plist */; }; - 57E145351975DC340065F142 /* tuffy_bold_italic-charmap.plist in Resources */ = {isa = PBXBuildFile; fileRef = 57E144FA1975DC340065F142 /* tuffy_bold_italic-charmap.plist */; }; - 57E145361975DC340065F142 /* tuffy_bold_italic-charmap.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144FB1975DC340065F142 /* tuffy_bold_italic-charmap.png */; }; - 57E145371975DC340065F142 /* west_england-64.fnt in Resources */ = {isa = PBXBuildFile; fileRef = 57E144FC1975DC340065F142 /* west_england-64.fnt */; }; - 57E145381975DC340065F142 /* west_england-64.png in Resources */ = {isa = PBXBuildFile; fileRef = 57E144FD1975DC340065F142 /* west_england-64.png */; }; - 57F23E5B197774FE003D811B /* ThisFontIsAbdFont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 57F23E5A197774FE003D811B /* ThisFontIsAbdFont.ttf */; }; - 5B063DC619636B77002B1CDE /* ObjectALTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F5B195CE564002338B1 /* ObjectALTest.m */; }; - 5B063DC919636B8C002B1CDE /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2952D3C19520B9A007C58A7 /* OpenAL.framework */; }; - 5B0ED72E196E4D3500F9868F /* Images in Resources */ = {isa = PBXBuildFile; fileRef = 5B0ED72D196E4D3500F9868F /* Images */; }; - 5B0ED732196E4DAA00F9868F /* TileMaps in Resources */ = {isa = PBXBuildFile; fileRef = 5B0ED731196E4DAA00F9868F /* TileMaps */; }; - 5B0ED736196E54BD00F9868F /* Sounds in Resources */ = {isa = PBXBuildFile; fileRef = 5B0ED735196E54BD00F9868F /* Sounds */; }; - 5B0ED738196E550000F9868F /* Particles in Resources */ = {isa = PBXBuildFile; fileRef = 5B0ED737196E550000F9868F /* Particles */; }; - 5B165F63195CE564002338B1 /* CCBMFontTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F49195CE564002338B1 /* CCBMFontTest.m */; }; - 5B165F65195CE564002338B1 /* CCEffectsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F4B195CE564002338B1 /* CCEffectsTest.m */; }; - 5B165F66195CE564002338B1 /* CCLabelTTFTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F4C195CE564002338B1 /* CCLabelTTFTest.m */; }; - 5B165F67195CE564002338B1 /* CCLayoutTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F4D195CE564002338B1 /* CCLayoutTest.m */; }; - 5B165F68195CE564002338B1 /* CCPhysicsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F4E195CE564002338B1 /* CCPhysicsTest.m */; }; - 5B165F69195CE564002338B1 /* CCRendererTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F4F195CE564002338B1 /* CCRendererTest.m */; }; - 5B165F6A195CE564002338B1 /* CCResponderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F50195CE564002338B1 /* CCResponderTest.m */; }; - 5B165F6B195CE564002338B1 /* CCSchedulerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F51195CE564002338B1 /* CCSchedulerTest.m */; }; - 5B165F6C195CE564002338B1 /* CCScrollViewTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F52195CE564002338B1 /* CCScrollViewTest.m */; }; - 5B165F6D195CE564002338B1 /* CCSliderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F53195CE564002338B1 /* CCSliderTest.m */; }; - 5B165F6E195CE564002338B1 /* CCSprite9SliceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F54195CE564002338B1 /* CCSprite9SliceTest.m */; }; - 5B165F6F195CE564002338B1 /* CCTableViewTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F55195CE564002338B1 /* CCTableViewTest.m */; }; - 5B165F70195CE564002338B1 /* CCTextFieldTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F56195CE564002338B1 /* CCTextFieldTest.m */; }; - 5B165F71195CE564002338B1 /* CCTextureCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F57195CE564002338B1 /* CCTextureCacheTest.m */; }; - 5B165F72195CE564002338B1 /* CCTransitionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F58195CE564002338B1 /* CCTransitionTest.m */; }; - 5B165F73195CE564002338B1 /* ColorPickerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F59195CE564002338B1 /* ColorPickerTest.m */; }; - 5B165F74195CE564002338B1 /* ColorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F5A195CE564002338B1 /* ColorTest.m */; }; - 5B165F76195CE564002338B1 /* ParallaxTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F5C195CE564002338B1 /* ParallaxTest.m */; }; - 5B165F77195CE564002338B1 /* ParticleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F5D195CE564002338B1 /* ParticleTest.m */; }; - 5B165F78195CE564002338B1 /* PositioningTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F5E195CE564002338B1 /* PositioningTest.m */; }; - 5B165F79195CE564002338B1 /* SpritePerformanceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F5F195CE564002338B1 /* SpritePerformanceTest.m */; }; - 5B165F7A195CE564002338B1 /* TextureTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F60195CE564002338B1 /* TextureTest.m */; }; - 5B165F7B195CE564002338B1 /* TilemapTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F61195CE564002338B1 /* TilemapTest.m */; }; - 5B165F7C195CE564002338B1 /* VertexZTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F62195CE564002338B1 /* VertexZTest.m */; }; - 5B4D6CC11936ACE5004D1A0B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B4D6CC01936ACE5004D1A0B /* Foundation.framework */; }; - 5B4D6CC31936ACE5004D1A0B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B4D6CC21936ACE5004D1A0B /* CoreGraphics.framework */; }; - 5B4D6CCB1936ACE5004D1A0B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B4D6CC91936ACE5004D1A0B /* InfoPlist.strings */; }; - 5BA67A56196CA1220010FFB7 /* HeadlessActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BA67A55196CA1220010FFB7 /* HeadlessActivity.m */; settings = {COMPILER_FLAGS = "-O0"; }; }; - BC9F4EE119DCB1B200B25F01 /* CCPackageTest.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9F4EE019DCB1B200B25F01 /* CCPackageTest.m */; }; - D23DE6761958DBA0000483A8 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE66A1958DBA0000483A8 /* Default-568h@2x.png */; }; - D23DE6771958DBA0000483A8 /* Default-Landscape~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE66B1958DBA0000483A8 /* Default-Landscape~ipad.png */; }; - D23DE6781958DBA0000483A8 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE66C1958DBA0000483A8 /* Default.png */; }; - D23DE6791958DBA0000483A8 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE66D1958DBA0000483A8 /* Default@2x.png */; }; - D23DE67A1958DBA0000483A8 /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE66E1958DBA0000483A8 /* Icon-72.png */; }; - D23DE67B1958DBA0000483A8 /* Icon-Small-50.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE66F1958DBA0000483A8 /* Icon-Small-50.png */; }; - D23DE67C1958DBA0000483A8 /* Icon-Small.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE6701958DBA0000483A8 /* Icon-Small.png */; }; - D23DE67D1958DBA0000483A8 /* Icon-Small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE6711958DBA0000483A8 /* Icon-Small@2x.png */; }; - D23DE67E1958DBA0000483A8 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE6721958DBA0000483A8 /* Icon.png */; }; - D23DE67F1958DBA0000483A8 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D23DE6731958DBA0000483A8 /* Icon@2x.png */; }; - D23DE6811958DBA0000483A8 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = D23DE6751958DBA0000483A8 /* iTunesArtwork */; }; - D23DE9E51958E0BD000483A8 /* Resources-shared in Resources */ = {isa = PBXBuildFile; fileRef = D23DE9E41958E0BD000483A8 /* Resources-shared */; }; - D242C50E1958D78700E7726D /* MainMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = D242C50B1958D78700E7726D /* MainMenu.m */; }; - D242C50F1958D78700E7726D /* TestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = D242C50D1958D78700E7726D /* TestBase.m */; }; - D242C5131958D87900E7726D /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D242C5121958D87900E7726D /* CoreText.framework */; }; - D28F46271988175F006A017B /* Music in Resources */ = {isa = PBXBuildFile; fileRef = D28F46261988175F006A017B /* Music */; }; - D2A8000319F0F9D500ED29F6 /* libcocos2dAndroid.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2A8FFFC19F0F9A500ED29F6 /* libcocos2dAndroid.a */; }; - D2BBF573195280150005272F /* libEGL.so in Frameworks */ = {isa = PBXBuildFile; fileRef = D2BBF572195280150005272F /* libEGL.so */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - D2A8000119F0F9C300ED29F6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2A8FFEC19F0F9A400ED29F6 /* cocos2d.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D2FEB60D194F6C9E00FC0574; - remoteInfo = cocos2dAndroid; - }; - D2A8FFF919F0F9A500ED29F6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2A8FFEC19F0F9A400ED29F6 /* cocos2d.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 5018F24D0DFDEAC400C013A5; - remoteInfo = "cocos2d-ios"; - }; - D2A8FFFB19F0F9A500ED29F6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2A8FFEC19F0F9A400ED29F6 /* cocos2d.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D2FEB74F194F6C9E00FC0574; - remoteInfo = cocos2dAndroid; - }; - D2A8FFFF19F0F9A500ED29F6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2A8FFEC19F0F9A400ED29F6 /* cocos2d.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 7A4037A819E37038007B6E8F; - remoteInfo = "cocos2d-mac"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 14098DAA1A37EA94005F0B26 /* AndroidKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AndroidKit.framework; path = "../../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/AndroidKit.framework"; sourceTree = ""; }; - 14098DAC1A37EA9A005F0B26 /* GLActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLActivityKit.framework; path = "../../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/GLActivityKit.framework"; sourceTree = ""; }; - 141A45D21A38DB1000853DB8 /* CoreJava.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreJava.framework; path = "../../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/CoreJava.framework"; sourceTree = ""; }; - 146F55071A391B5C00CCCF26 /* GLActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLActivityKit.framework; path = System/Library/Frameworks/GLActivityKit.framework; sourceTree = SDKROOT; }; - 147456A31A3B9B1A0024B64E /* Published-Android */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "Published-Android"; sourceTree = ""; }; - 14D9F5D51A3A81DE00620103 /* configCocos2d.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = configCocos2d.plist; path = "../../cocos2d-ui-tests/Resources-shared/configCocos2d.plist"; sourceTree = ""; }; - 14EF47AD1A37F15800A45BE4 /* JavaKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaKit.framework; path = "../../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/JavaKit.framework"; sourceTree = ""; }; - 464236B31A428B4500532547 /* JavaBridge.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaBridge.framework; path = System/Library/Frameworks/JavaBridge.framework; sourceTree = SDKROOT; }; - 464236B51A428B4D00532547 /* JavaFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaFoundation.framework; path = System/Library/Frameworks/JavaFoundation.framework; sourceTree = SDKROOT; }; - 57E144C31975DC340065F142 /* A Damn Mess.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "A Damn Mess.ttf"; sourceTree = ""; }; - 57E144C41975DC340065F142 /* Abberancy.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Abberancy.ttf; sourceTree = ""; }; - 57E144C61975DC340065F142 /* arial-unicode-26.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "arial-unicode-26.fnt"; sourceTree = ""; }; - 57E144C71975DC340065F142 /* arial-unicode-26.GlyphProject */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = "arial-unicode-26.GlyphProject"; sourceTree = ""; }; - 57E144C81975DC340065F142 /* arial-unicode-26.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arial-unicode-26.png"; sourceTree = ""; }; - 57E144C91975DC340065F142 /* arial16.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = arial16.fnt; sourceTree = ""; }; - 57E144CA1975DC340065F142 /* arial16.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arial16.png; sourceTree = ""; }; - 57E144CB1975DC340065F142 /* bitmapFontTest.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bitmapFontTest.fnt; sourceTree = ""; }; - 57E144CC1975DC340065F142 /* bitmapFontTest.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bitmapFontTest.png; sourceTree = ""; }; - 57E144CD1975DC340065F142 /* bitmapFontTest2.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bitmapFontTest2.fnt; sourceTree = ""; }; - 57E144CE1975DC340065F142 /* bitmapFontTest3.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bitmapFontTest3.fnt; sourceTree = ""; }; - 57E144CF1975DC340065F142 /* bitmapFontTest3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bitmapFontTest3.png; sourceTree = ""; }; - 57E144D01975DC340065F142 /* bitmapFontTest4.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bitmapFontTest4.fnt; sourceTree = ""; }; - 57E144D11975DC340065F142 /* bitmapFontTest4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bitmapFontTest4.png; sourceTree = ""; }; - 57E144D21975DC340065F142 /* bitmapFontTest5.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bitmapFontTest5.fnt; sourceTree = ""; }; - 57E144D31975DC340065F142 /* bitmapFontTest5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bitmapFontTest5.png; sourceTree = ""; }; - 57E144D41975DC340065F142 /* boundsTestFont.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = boundsTestFont.fnt; sourceTree = ""; }; - 57E144D51975DC340065F142 /* boundsTestFont.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = boundsTestFont.png; sourceTree = ""; }; - 57E144D61975DC340065F142 /* font-issue1343-hd.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "font-issue1343-hd.fnt"; sourceTree = ""; }; - 57E144D71975DC340065F142 /* font-issue1343-hd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "font-issue1343-hd.png"; sourceTree = ""; }; - 57E144D81975DC340065F142 /* font-issue1343.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "font-issue1343.fnt"; sourceTree = ""; }; - 57E144D91975DC340065F142 /* font-issue1343.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "font-issue1343.png"; sourceTree = ""; }; - 57E144DA1975DC340065F142 /* fps_images-hd.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "fps_images-hd.plist"; sourceTree = ""; }; - 57E144DB1975DC340065F142 /* fps_images-hd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fps_images-hd.png"; sourceTree = ""; }; - 57E144DC1975DC340065F142 /* fps_images-ipadhd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fps_images-ipadhd.png"; sourceTree = ""; }; - 57E144DD1975DC340065F142 /* fps_images.GlyphProject */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = fps_images.GlyphProject; sourceTree = ""; }; - 57E144DE1975DC340065F142 /* fps_images.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = fps_images.plist; sourceTree = ""; }; - 57E144DF1975DC340065F142 /* fps_images.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fps_images.png; sourceTree = ""; }; - 57E144E01975DC340065F142 /* futura-48.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "futura-48.fnt"; sourceTree = ""; }; - 57E144E11975DC340065F142 /* futura-48.GlyphProject */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = "futura-48.GlyphProject"; sourceTree = ""; }; - 57E144E21975DC340065F142 /* futura-48.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "futura-48.png"; sourceTree = ""; }; - 57E144E31975DC340065F142 /* geneva-32.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "geneva-32.fnt"; sourceTree = ""; }; - 57E144E41975DC340065F142 /* helvetica-32.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "helvetica-32.fnt"; sourceTree = ""; }; - 57E144E51975DC340065F142 /* helvetica-geneva-32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "helvetica-geneva-32.png"; sourceTree = ""; }; - 57E144E61975DC340065F142 /* konqa32-hd.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "konqa32-hd.fnt"; sourceTree = ""; }; - 57E144E71975DC340065F142 /* konqa32-hd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "konqa32-hd.png"; sourceTree = ""; }; - 57E144E81975DC340065F142 /* konqa32.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = konqa32.fnt; sourceTree = ""; }; - 57E144E91975DC340065F142 /* konqa32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = konqa32.png; sourceTree = ""; }; - 57E144EA1975DC340065F142 /* larabie-16-hd.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "larabie-16-hd.plist"; sourceTree = ""; }; - 57E144EB1975DC340065F142 /* larabie-16-hd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "larabie-16-hd.png"; sourceTree = ""; }; - 57E144EC1975DC340065F142 /* larabie-16.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "larabie-16.plist"; sourceTree = ""; }; - 57E144ED1975DC340065F142 /* larabie-16.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "larabie-16.png"; sourceTree = ""; }; - 57E144EE1975DC340065F142 /* markerFelt-hd.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "markerFelt-hd.fnt"; sourceTree = ""; }; - 57E144EF1975DC340065F142 /* markerFelt-hd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "markerFelt-hd.png"; sourceTree = ""; }; - 57E144F01975DC340065F142 /* markerFelt.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = markerFelt.fnt; sourceTree = ""; }; - 57E144F11975DC340065F142 /* markerFelt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = markerFelt.png; sourceTree = ""; }; - 57E144F21975DC340065F142 /* Paint Boy.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Paint Boy.ttf"; sourceTree = ""; }; - 57E144F31975DC340065F142 /* RobotoSlab-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "RobotoSlab-Bold.ttf"; sourceTree = ""; }; - 57E144F41975DC340065F142 /* RobotoSlab-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "RobotoSlab-Light.ttf"; sourceTree = ""; }; - 57E144F51975DC340065F142 /* RobotoSlab-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "RobotoSlab-Regular.ttf"; sourceTree = ""; }; - 57E144F61975DC340065F142 /* RobotoSlab-Thin.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "RobotoSlab-Thin.ttf"; sourceTree = ""; }; - 57E144F71975DC340065F142 /* Schwarzwald Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Schwarzwald Regular.ttf"; sourceTree = ""; }; - 57E144F81975DC340065F142 /* Scissor Cuts.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Scissor Cuts.ttf"; sourceTree = ""; }; - 57E144F91975DC340065F142 /* tuffy_bold_italic-charmap-hd.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "tuffy_bold_italic-charmap-hd.plist"; sourceTree = ""; }; - 57E144FA1975DC340065F142 /* tuffy_bold_italic-charmap.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "tuffy_bold_italic-charmap.plist"; sourceTree = ""; }; - 57E144FB1975DC340065F142 /* tuffy_bold_italic-charmap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "tuffy_bold_italic-charmap.png"; sourceTree = ""; }; - 57E144FC1975DC340065F142 /* west_england-64.fnt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "west_england-64.fnt"; sourceTree = ""; }; - 57E144FD1975DC340065F142 /* west_england-64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "west_england-64.png"; sourceTree = ""; }; - 57F23E5A197774FE003D811B /* ThisFontIsAbdFont.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = ThisFontIsAbdFont.ttf; sourceTree = ""; }; - 5B0ED72D196E4D3500F9868F /* Images */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Images; path = ../../Resources/Images; sourceTree = ""; }; - 5B0ED731196E4DAA00F9868F /* TileMaps */ = {isa = PBXFileReference; lastKnownFileType = folder; name = TileMaps; path = ../../Resources/TileMaps; sourceTree = ""; }; - 5B0ED735196E54BD00F9868F /* Sounds */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Sounds; path = ../../Resources/Sounds; sourceTree = ""; }; - 5B0ED737196E550000F9868F /* Particles */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Particles; path = ../../Resources/Particles; sourceTree = ""; }; - 5B165F43195CE3F0002338B1 /* SimpleScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleScene.h; sourceTree = ""; }; - 5B165F44195CE3F0002338B1 /* SimpleScene.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleScene.m; sourceTree = ""; }; - 5B165F49195CE564002338B1 /* CCBMFontTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBMFontTest.m; sourceTree = ""; }; - 5B165F4B195CE564002338B1 /* CCEffectsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectsTest.m; sourceTree = ""; }; - 5B165F4C195CE564002338B1 /* CCLabelTTFTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLabelTTFTest.m; sourceTree = ""; }; - 5B165F4D195CE564002338B1 /* CCLayoutTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLayoutTest.m; sourceTree = ""; }; - 5B165F4E195CE564002338B1 /* CCPhysicsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsTest.m; sourceTree = ""; }; - 5B165F4F195CE564002338B1 /* CCRendererTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRendererTest.m; sourceTree = ""; }; - 5B165F50195CE564002338B1 /* CCResponderTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCResponderTest.m; sourceTree = ""; }; - 5B165F51195CE564002338B1 /* CCSchedulerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSchedulerTest.m; sourceTree = ""; }; - 5B165F52195CE564002338B1 /* CCScrollViewTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCScrollViewTest.m; sourceTree = ""; }; - 5B165F53195CE564002338B1 /* CCSliderTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSliderTest.m; sourceTree = ""; }; - 5B165F54195CE564002338B1 /* CCSprite9SliceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSprite9SliceTest.m; sourceTree = ""; }; - 5B165F55195CE564002338B1 /* CCTableViewTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTableViewTest.m; sourceTree = ""; }; - 5B165F56195CE564002338B1 /* CCTextFieldTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTextFieldTest.m; sourceTree = ""; }; - 5B165F57195CE564002338B1 /* CCTextureCacheTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTextureCacheTest.m; sourceTree = ""; }; - 5B165F58195CE564002338B1 /* CCTransitionTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTransitionTest.m; sourceTree = ""; }; - 5B165F59195CE564002338B1 /* ColorPickerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ColorPickerTest.m; sourceTree = ""; }; - 5B165F5A195CE564002338B1 /* ColorTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ColorTest.m; sourceTree = ""; }; - 5B165F5B195CE564002338B1 /* ObjectALTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjectALTest.m; sourceTree = ""; }; - 5B165F5C195CE564002338B1 /* ParallaxTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ParallaxTest.m; sourceTree = ""; }; - 5B165F5D195CE564002338B1 /* ParticleTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ParticleTest.m; sourceTree = ""; }; - 5B165F5E195CE564002338B1 /* PositioningTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PositioningTest.m; sourceTree = ""; }; - 5B165F5F195CE564002338B1 /* SpritePerformanceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpritePerformanceTest.m; sourceTree = ""; }; - 5B165F60195CE564002338B1 /* TextureTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TextureTest.m; sourceTree = ""; }; - 5B165F61195CE564002338B1 /* TilemapTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TilemapTest.m; sourceTree = ""; }; - 5B165F62195CE564002338B1 /* VertexZTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VertexZTest.m; sourceTree = ""; }; - 5B25AFF41973193A004BDA29 /* res */ = {isa = PBXFileReference; lastKnownFileType = folder; name = res; path = src/main/res; sourceTree = ""; }; - 5B4D6CBD1936ACE5004D1A0B /* Headless.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Headless.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B4D6CC01936ACE5004D1A0B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 5B4D6CC21936ACE5004D1A0B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 5B4D6CC41936ACE5004D1A0B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 5B4D6CC81936ACE5004D1A0B /* Headless-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Headless-Info.plist"; sourceTree = ""; }; - 5B4D6CCA1936ACE5004D1A0B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 5B4D6CCE1936ACE5004D1A0B /* Headless-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Headless-Prefix.pch"; sourceTree = ""; }; - 5B4D6CD91936ACE5004D1A0B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 5B4D6CE11936ACE5004D1A0B /* HeadlessTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HeadlessTests-Info.plist"; sourceTree = ""; }; - 5B4D6CE31936ACE5004D1A0B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 5B4D6CE51936ACE5004D1A0B /* HeadlessTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HeadlessTests.m; sourceTree = ""; }; - 5B89B0211946369D00CD2A5E /* AndroidManifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = AndroidManifest.xml; path = src/main/AndroidManifest.xml; sourceTree = ""; }; - 5BA67A54196CA1220010FFB7 /* HeadlessActivity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeadlessActivity.h; sourceTree = ""; }; - 5BA67A55196CA1220010FFB7 /* HeadlessActivity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HeadlessActivity.m; sourceTree = ""; }; - 5BAF859E1936C8990085EA39 /* libEGL.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libEGL.so; path = "usr/lib/armv7a-neon/libEGL.so"; sourceTree = SDKROOT; }; - 5BAF85A01936C8A90085EA39 /* libGLESv1_CM.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv1_CM.so; path = "usr/lib/armv7a-neon/libGLESv1_CM.so"; sourceTree = SDKROOT; }; - 5BAF85A11936C8A90085EA39 /* libGLESv2.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv2.so; path = "usr/lib/armv7a-neon/libGLESv2.so"; sourceTree = SDKROOT; }; - 5BAF85A21936C8A90085EA39 /* libGLESv3.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv3.so; path = "usr/lib/armv7a-neon/libGLESv3.so"; sourceTree = SDKROOT; }; - 5BCE505B1941181E00E057D0 /* libbridge_runtime.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libbridge_runtime.so; path = "usr/local/lib/armv7a-neon/libbridge_runtime.so"; sourceTree = SDKROOT; }; - BC9F4EE019DCB1B200B25F01 /* CCPackageTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCPackageTest.m; path = "../../../cocos2d-ui-tests/tests/CCPackageTest.m"; sourceTree = ""; }; - D23DE66A1958DBA0000483A8 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "../../cocos2d-ui-tests/ios/Resources/Default-568h@2x.png"; sourceTree = ""; }; - D23DE66B1958DBA0000483A8 /* Default-Landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-Landscape~ipad.png"; path = "../../cocos2d-ui-tests/ios/Resources/Default-Landscape~ipad.png"; sourceTree = ""; }; - D23DE66C1958DBA0000483A8 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = "../../cocos2d-ui-tests/ios/Resources/Default.png"; sourceTree = ""; }; - D23DE66D1958DBA0000483A8 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "../../cocos2d-ui-tests/ios/Resources/Default@2x.png"; sourceTree = ""; }; - D23DE66E1958DBA0000483A8 /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72.png"; path = "../../cocos2d-ui-tests/ios/Resources/Icon-72.png"; sourceTree = ""; }; - D23DE66F1958DBA0000483A8 /* Icon-Small-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small-50.png"; path = "../../cocos2d-ui-tests/ios/Resources/Icon-Small-50.png"; sourceTree = ""; }; - D23DE6701958DBA0000483A8 /* Icon-Small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small.png"; path = "../../cocos2d-ui-tests/ios/Resources/Icon-Small.png"; sourceTree = ""; }; - D23DE6711958DBA0000483A8 /* Icon-Small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small@2x.png"; path = "../../cocos2d-ui-tests/ios/Resources/Icon-Small@2x.png"; sourceTree = ""; }; - D23DE6721958DBA0000483A8 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = "../../cocos2d-ui-tests/ios/Resources/Icon.png"; sourceTree = ""; }; - D23DE6731958DBA0000483A8 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "../../cocos2d-ui-tests/ios/Resources/Icon@2x.png"; sourceTree = ""; }; - D23DE6751958DBA0000483A8 /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = file; name = iTunesArtwork; path = "../../cocos2d-ui-tests/ios/Resources/iTunesArtwork"; sourceTree = ""; }; - D23DE9E41958E0BD000483A8 /* Resources-shared */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "Resources-shared"; path = "../../cocos2d-ui-tests/Resources-shared"; sourceTree = ""; }; - D242C50A1958D78700E7726D /* MainMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainMenu.h; path = "../../cocos2d-ui-tests/MainMenu.h"; sourceTree = ""; }; - D242C50B1958D78700E7726D /* MainMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MainMenu.m; path = "../../cocos2d-ui-tests/MainMenu.m"; sourceTree = ""; }; - D242C50C1958D78700E7726D /* TestBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestBase.h; path = "../../cocos2d-ui-tests/TestBase.h"; sourceTree = ""; }; - D242C50D1958D78700E7726D /* TestBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TestBase.m; path = "../../cocos2d-ui-tests/TestBase.m"; sourceTree = ""; }; - D242C5121958D87900E7726D /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; }; - D28F46261988175F006A017B /* Music */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Music; path = ../../Resources/Music; sourceTree = ""; }; - D2952D3C19520B9A007C58A7 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; - D2A8FFEC19F0F9A400ED29F6 /* cocos2d.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d.xcodeproj; path = ../../cocos2d.xcodeproj; sourceTree = ""; }; - D2BBF54F195264EA0005272F /* libGLESv3.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv3.so; path = usr/lib/armeabi/libGLESv3.so; sourceTree = SDKROOT; }; - D2BBF55419527B170005272F /* libGLESv3.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv3.so; path = usr/lib/armv7a/libGLESv3.so; sourceTree = SDKROOT; }; - D2BBF55A19527B620005272F /* libGLESv3.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv3.so; path = usr/lib/x86/libGLESv3.so; sourceTree = SDKROOT; }; - D2BBF55E19527DD80005272F /* libGLESv2.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv2.so; path = usr/lib/armeabi/libGLESv2.so; sourceTree = SDKROOT; }; - D2BBF56419527E960005272F /* libGLESv2.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv2.so; path = usr/lib/armv7a/libGLESv2.so; sourceTree = SDKROOT; }; - D2BBF56719527EC70005272F /* libGLESv2.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv2.so; path = usr/lib/x86/libGLESv2.so; sourceTree = SDKROOT; }; - D2BBF5701952800B0005272F /* libGLESv1_CM.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv1_CM.so; path = usr/lib/armv7a/libGLESv1_CM.so; sourceTree = SDKROOT; }; - D2BBF572195280150005272F /* libEGL.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libEGL.so; path = usr/lib/armv7a/libEGL.so; sourceTree = SDKROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 5B4D6CBA1936ACE5004D1A0B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 464236B61A428B4D00532547 /* JavaFoundation.framework in Frameworks */, - 141A45D31A38DB1000853DB8 /* CoreJava.framework in Frameworks */, - 14EF47AF1A37F17300A45BE4 /* AndroidKit.framework in Frameworks */, - 14EF47AE1A37F15800A45BE4 /* JavaKit.framework in Frameworks */, - D2A8000319F0F9D500ED29F6 /* libcocos2dAndroid.a in Frameworks */, - D242C5131958D87900E7726D /* CoreText.framework in Frameworks */, - 5B063DC919636B8C002B1CDE /* OpenAL.framework in Frameworks */, - D2BBF573195280150005272F /* libEGL.so in Frameworks */, - 5B4D6CC31936ACE5004D1A0B /* CoreGraphics.framework in Frameworks */, - 5B4D6CC11936ACE5004D1A0B /* Foundation.framework in Frameworks */, - 14EF47B01A37F31100A45BE4 /* GLActivityKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 14D9F5D31A3A81C100620103 /* Resources */ = { - isa = PBXGroup; - children = ( - 14D9F5D41A3A81CA00620103 /* Published-Android */, - ); - name = Resources; - sourceTree = ""; - }; - 14D9F5D41A3A81CA00620103 /* Published-Android */ = { - isa = PBXGroup; - children = ( - 14D9F5D51A3A81DE00620103 /* configCocos2d.plist */, - ); - name = "Published-Android"; - sourceTree = ""; - }; - 57E144C21975DC340065F142 /* Fonts */ = { - isa = PBXGroup; - children = ( - 57F23E5A197774FE003D811B /* ThisFontIsAbdFont.ttf */, - 57E144C31975DC340065F142 /* A Damn Mess.ttf */, - 57E144C41975DC340065F142 /* Abberancy.ttf */, - 57E144C61975DC340065F142 /* arial-unicode-26.fnt */, - 57E144C71975DC340065F142 /* arial-unicode-26.GlyphProject */, - 57E144C81975DC340065F142 /* arial-unicode-26.png */, - 57E144C91975DC340065F142 /* arial16.fnt */, - 57E144CA1975DC340065F142 /* arial16.png */, - 57E144CB1975DC340065F142 /* bitmapFontTest.fnt */, - 57E144CC1975DC340065F142 /* bitmapFontTest.png */, - 57E144CD1975DC340065F142 /* bitmapFontTest2.fnt */, - 57E144CE1975DC340065F142 /* bitmapFontTest3.fnt */, - 57E144CF1975DC340065F142 /* bitmapFontTest3.png */, - 57E144D01975DC340065F142 /* bitmapFontTest4.fnt */, - 57E144D11975DC340065F142 /* bitmapFontTest4.png */, - 57E144D21975DC340065F142 /* bitmapFontTest5.fnt */, - 57E144D31975DC340065F142 /* bitmapFontTest5.png */, - 57E144D41975DC340065F142 /* boundsTestFont.fnt */, - 57E144D51975DC340065F142 /* boundsTestFont.png */, - 57E144D61975DC340065F142 /* font-issue1343-hd.fnt */, - 57E144D71975DC340065F142 /* font-issue1343-hd.png */, - 57E144D81975DC340065F142 /* font-issue1343.fnt */, - 57E144D91975DC340065F142 /* font-issue1343.png */, - 57E144DA1975DC340065F142 /* fps_images-hd.plist */, - 57E144DB1975DC340065F142 /* fps_images-hd.png */, - 57E144DC1975DC340065F142 /* fps_images-ipadhd.png */, - 57E144DD1975DC340065F142 /* fps_images.GlyphProject */, - 57E144DE1975DC340065F142 /* fps_images.plist */, - 57E144DF1975DC340065F142 /* fps_images.png */, - 57E144E01975DC340065F142 /* futura-48.fnt */, - 57E144E11975DC340065F142 /* futura-48.GlyphProject */, - 57E144E21975DC340065F142 /* futura-48.png */, - 57E144E31975DC340065F142 /* geneva-32.fnt */, - 57E144E41975DC340065F142 /* helvetica-32.fnt */, - 57E144E51975DC340065F142 /* helvetica-geneva-32.png */, - 57E144E61975DC340065F142 /* konqa32-hd.fnt */, - 57E144E71975DC340065F142 /* konqa32-hd.png */, - 57E144E81975DC340065F142 /* konqa32.fnt */, - 57E144E91975DC340065F142 /* konqa32.png */, - 57E144EA1975DC340065F142 /* larabie-16-hd.plist */, - 57E144EB1975DC340065F142 /* larabie-16-hd.png */, - 57E144EC1975DC340065F142 /* larabie-16.plist */, - 57E144ED1975DC340065F142 /* larabie-16.png */, - 57E144EE1975DC340065F142 /* markerFelt-hd.fnt */, - 57E144EF1975DC340065F142 /* markerFelt-hd.png */, - 57E144F01975DC340065F142 /* markerFelt.fnt */, - 57E144F11975DC340065F142 /* markerFelt.png */, - 57E144F21975DC340065F142 /* Paint Boy.ttf */, - 57E144F31975DC340065F142 /* RobotoSlab-Bold.ttf */, - 57E144F41975DC340065F142 /* RobotoSlab-Light.ttf */, - 57E144F51975DC340065F142 /* RobotoSlab-Regular.ttf */, - 57E144F61975DC340065F142 /* RobotoSlab-Thin.ttf */, - 57E144F71975DC340065F142 /* Schwarzwald Regular.ttf */, - 57E144F81975DC340065F142 /* Scissor Cuts.ttf */, - 57E144F91975DC340065F142 /* tuffy_bold_italic-charmap-hd.plist */, - 57E144FA1975DC340065F142 /* tuffy_bold_italic-charmap.plist */, - 57E144FB1975DC340065F142 /* tuffy_bold_italic-charmap.png */, - 57E144FC1975DC340065F142 /* west_england-64.fnt */, - 57E144FD1975DC340065F142 /* west_england-64.png */, - ); - name = Fonts; - path = ../../Resources/Fonts; - sourceTree = ""; - }; - 5B165F48195CE564002338B1 /* tests */ = { - isa = PBXGroup; - children = ( - 5B165F49195CE564002338B1 /* CCBMFontTest.m */, - 5B165F4B195CE564002338B1 /* CCEffectsTest.m */, - 5B165F4C195CE564002338B1 /* CCLabelTTFTest.m */, - 5B165F4D195CE564002338B1 /* CCLayoutTest.m */, - BC9F4EE019DCB1B200B25F01 /* CCPackageTest.m */, - 5B165F4E195CE564002338B1 /* CCPhysicsTest.m */, - 5B165F4F195CE564002338B1 /* CCRendererTest.m */, - 5B165F50195CE564002338B1 /* CCResponderTest.m */, - 5B165F51195CE564002338B1 /* CCSchedulerTest.m */, - 5B165F52195CE564002338B1 /* CCScrollViewTest.m */, - 5B165F53195CE564002338B1 /* CCSliderTest.m */, - 5B165F54195CE564002338B1 /* CCSprite9SliceTest.m */, - 5B165F55195CE564002338B1 /* CCTableViewTest.m */, - 5B165F56195CE564002338B1 /* CCTextFieldTest.m */, - 5B165F57195CE564002338B1 /* CCTextureCacheTest.m */, - 5B165F58195CE564002338B1 /* CCTransitionTest.m */, - 5B165F59195CE564002338B1 /* ColorPickerTest.m */, - 5B165F5A195CE564002338B1 /* ColorTest.m */, - 5B165F5B195CE564002338B1 /* ObjectALTest.m */, - 5B165F5C195CE564002338B1 /* ParallaxTest.m */, - 5B165F5D195CE564002338B1 /* ParticleTest.m */, - 5B165F5E195CE564002338B1 /* PositioningTest.m */, - 5B165F5F195CE564002338B1 /* SpritePerformanceTest.m */, - 5B165F60195CE564002338B1 /* TextureTest.m */, - 5B165F61195CE564002338B1 /* TilemapTest.m */, - 5B165F62195CE564002338B1 /* VertexZTest.m */, - ); - path = tests; - sourceTree = ""; - }; - 5B4D6CB41936ACE5004D1A0B = { - isa = PBXGroup; - children = ( - 5B4D6CC61936ACE5004D1A0B /* Headless */, - 5B4D6CDF1936ACE5004D1A0B /* HeadlessTests */, - 5B4D6CBF1936ACE5004D1A0B /* Frameworks */, - 5B4D6CBE1936ACE5004D1A0B /* Products */, - ); - sourceTree = ""; - }; - 5B4D6CBE1936ACE5004D1A0B /* Products */ = { - isa = PBXGroup; - children = ( - 5B4D6CBD1936ACE5004D1A0B /* Headless.app */, - ); - name = Products; - sourceTree = ""; - }; - 5B4D6CBF1936ACE5004D1A0B /* Frameworks */ = { - isa = PBXGroup; - children = ( - 464236B51A428B4D00532547 /* JavaFoundation.framework */, - 464236B31A428B4500532547 /* JavaBridge.framework */, - 146F55071A391B5C00CCCF26 /* GLActivityKit.framework */, - 141A45D21A38DB1000853DB8 /* CoreJava.framework */, - 14EF47AD1A37F15800A45BE4 /* JavaKit.framework */, - 14098DAC1A37EA9A005F0B26 /* GLActivityKit.framework */, - 14098DAA1A37EA94005F0B26 /* AndroidKit.framework */, - D242C5121958D87900E7726D /* CoreText.framework */, - D2BBF572195280150005272F /* libEGL.so */, - D2BBF5701952800B0005272F /* libGLESv1_CM.so */, - D2BBF56719527EC70005272F /* libGLESv2.so */, - D2BBF56419527E960005272F /* libGLESv2.so */, - D2BBF55E19527DD80005272F /* libGLESv2.so */, - D2BBF55A19527B620005272F /* libGLESv3.so */, - D2BBF55419527B170005272F /* libGLESv3.so */, - D2BBF54F195264EA0005272F /* libGLESv3.so */, - D2952D3C19520B9A007C58A7 /* OpenAL.framework */, - 5BCE505B1941181E00E057D0 /* libbridge_runtime.so */, - 5BAF85A01936C8A90085EA39 /* libGLESv1_CM.so */, - 5BAF85A11936C8A90085EA39 /* libGLESv2.so */, - 5BAF85A21936C8A90085EA39 /* libGLESv3.so */, - 5BAF859E1936C8990085EA39 /* libEGL.so */, - 5B4D6CC01936ACE5004D1A0B /* Foundation.framework */, - 5B4D6CC21936ACE5004D1A0B /* CoreGraphics.framework */, - 5B4D6CC41936ACE5004D1A0B /* UIKit.framework */, - 5B4D6CD91936ACE5004D1A0B /* XCTest.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 5B4D6CC61936ACE5004D1A0B /* Headless */ = { - isa = PBXGroup; - children = ( - 147456A31A3B9B1A0024B64E /* Published-Android */, - 14D9F5D31A3A81C100620103 /* Resources */, - D28F46261988175F006A017B /* Music */, - 5B0ED737196E550000F9868F /* Particles */, - 5B0ED735196E54BD00F9868F /* Sounds */, - 5B0ED731196E4DAA00F9868F /* TileMaps */, - 5B0ED72D196E4D3500F9868F /* Images */, - D23DE9E41958E0BD000483A8 /* Resources-shared */, - D23DE64E1958DB52000483A8 /* Resources-iOS */, - 5B25AFF41973193A004BDA29 /* res */, - D242C5071958D76500E7726D /* Testbed */, - 5B165F48195CE564002338B1 /* tests */, - 5B4D6CC71936ACE5004D1A0B /* Supporting Files */, - D2D0EDF51951260300E9103F /* libs */, - ); - path = Headless; - sourceTree = ""; - }; - 5B4D6CC71936ACE5004D1A0B /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 5B89B0211946369D00CD2A5E /* AndroidManifest.xml */, - 5B4D6CC81936ACE5004D1A0B /* Headless-Info.plist */, - 5B4D6CC91936ACE5004D1A0B /* InfoPlist.strings */, - 5B4D6CCE1936ACE5004D1A0B /* Headless-Prefix.pch */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 5B4D6CDF1936ACE5004D1A0B /* HeadlessTests */ = { - isa = PBXGroup; - children = ( - 5B4D6CE51936ACE5004D1A0B /* HeadlessTests.m */, - 5B4D6CE01936ACE5004D1A0B /* Supporting Files */, - ); - path = HeadlessTests; - sourceTree = ""; - }; - 5B4D6CE01936ACE5004D1A0B /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 5B4D6CE11936ACE5004D1A0B /* HeadlessTests-Info.plist */, - 5B4D6CE21936ACE5004D1A0B /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - D23DE64E1958DB52000483A8 /* Resources-iOS */ = { - isa = PBXGroup; - children = ( - 57E144C21975DC340065F142 /* Fonts */, - D23DE66A1958DBA0000483A8 /* Default-568h@2x.png */, - D23DE66B1958DBA0000483A8 /* Default-Landscape~ipad.png */, - D23DE66C1958DBA0000483A8 /* Default.png */, - D23DE66D1958DBA0000483A8 /* Default@2x.png */, - D23DE66E1958DBA0000483A8 /* Icon-72.png */, - D23DE66F1958DBA0000483A8 /* Icon-Small-50.png */, - D23DE6701958DBA0000483A8 /* Icon-Small.png */, - D23DE6711958DBA0000483A8 /* Icon-Small@2x.png */, - D23DE6721958DBA0000483A8 /* Icon.png */, - D23DE6731958DBA0000483A8 /* Icon@2x.png */, - D23DE6751958DBA0000483A8 /* iTunesArtwork */, - ); - name = "Resources-iOS"; - sourceTree = ""; - }; - D242C5071958D76500E7726D /* Testbed */ = { - isa = PBXGroup; - children = ( - D242C50A1958D78700E7726D /* MainMenu.h */, - D242C50B1958D78700E7726D /* MainMenu.m */, - 5BA67A54196CA1220010FFB7 /* HeadlessActivity.h */, - 5BA67A55196CA1220010FFB7 /* HeadlessActivity.m */, - D242C50C1958D78700E7726D /* TestBase.h */, - D242C50D1958D78700E7726D /* TestBase.m */, - 5B165F43195CE3F0002338B1 /* SimpleScene.h */, - 5B165F44195CE3F0002338B1 /* SimpleScene.m */, - ); - name = Testbed; - sourceTree = ""; - }; - D2A8FFED19F0F9A400ED29F6 /* Products */ = { - isa = PBXGroup; - children = ( - D2A8FFFA19F0F9A500ED29F6 /* libcocos2d.a */, - D2A8FFFC19F0F9A500ED29F6 /* libcocos2dAndroid.a */, - D2A8000019F0F9A500ED29F6 /* libcocos2d-mac.a */, - ); - name = Products; - sourceTree = ""; - }; - D2D0EDF51951260300E9103F /* libs */ = { - isa = PBXGroup; - children = ( - D2A8FFEC19F0F9A400ED29F6 /* cocos2d.xcodeproj */, - ); - name = libs; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 5B4D6CBC1936ACE5004D1A0B /* Headless */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5B4D6CE91936ACE5004D1A0B /* Build configuration list for PBXNativeTarget "Headless" */; - buildPhases = ( - 5B4D6CB91936ACE5004D1A0B /* Sources */, - 5B4D6CBA1936ACE5004D1A0B /* Frameworks */, - 5B4D6CBB1936ACE5004D1A0B /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - D2A8000219F0F9C300ED29F6 /* PBXTargetDependency */, - ); - name = Headless; - productName = Headless; - productReference = 5B4D6CBD1936ACE5004D1A0B /* Headless.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 5B4D6CB51936ACE5004D1A0B /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - ORGANIZATIONNAME = Apportable; - }; - buildConfigurationList = 5B4D6CB81936ACE5004D1A0B /* Build configuration list for PBXProject "Headless" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 5B4D6CB41936ACE5004D1A0B; - productRefGroup = 5B4D6CBE1936ACE5004D1A0B /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = D2A8FFED19F0F9A400ED29F6 /* Products */; - ProjectRef = D2A8FFEC19F0F9A400ED29F6 /* cocos2d.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 5B4D6CBC1936ACE5004D1A0B /* Headless */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - D2A8000019F0F9A500ED29F6 /* libcocos2d-mac.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libcocos2d-mac.a"; - remoteRef = D2A8FFFF19F0F9A500ED29F6 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D2A8FFFA19F0F9A500ED29F6 /* libcocos2d.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libcocos2d.a; - remoteRef = D2A8FFF919F0F9A500ED29F6 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D2A8FFFC19F0F9A500ED29F6 /* libcocos2dAndroid.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libcocos2dAndroid.a; - remoteRef = D2A8FFFB19F0F9A500ED29F6 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 5B4D6CBB1936ACE5004D1A0B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D28F46271988175F006A017B /* Music in Resources */, - 57E1452B1975DC340065F142 /* markerFelt.fnt in Resources */, - 57E145071975DC340065F142 /* bitmapFontTest.png in Resources */, - 57E145251975DC340065F142 /* larabie-16-hd.plist in Resources */, - 57E145221975DC340065F142 /* konqa32-hd.png in Resources */, - 57E1450E1975DC340065F142 /* bitmapFontTest5.png in Resources */, - 57E145031975DC340065F142 /* arial-unicode-26.png in Resources */, - 57E145101975DC340065F142 /* boundsTestFont.png in Resources */, - 57E1451B1975DC340065F142 /* futura-48.fnt in Resources */, - 57E1450B1975DC340065F142 /* bitmapFontTest4.fnt in Resources */, - 5B0ED732196E4DAA00F9868F /* TileMaps in Resources */, - 57E145291975DC340065F142 /* markerFelt-hd.fnt in Resources */, - 57E145131975DC340065F142 /* font-issue1343.fnt in Resources */, - 57E145081975DC340065F142 /* bitmapFontTest2.fnt in Resources */, - D23DE67C1958DBA0000483A8 /* Icon-Small.png in Resources */, - 57E1452C1975DC340065F142 /* markerFelt.png in Resources */, - 57E145231975DC340065F142 /* konqa32.fnt in Resources */, - 57E145261975DC340065F142 /* larabie-16-hd.png in Resources */, - D23DE6811958DBA0000483A8 /* iTunesArtwork in Resources */, - 57E145361975DC340065F142 /* tuffy_bold_italic-charmap.png in Resources */, - 57E145271975DC340065F142 /* larabie-16.plist in Resources */, - 5B0ED72E196E4D3500F9868F /* Images in Resources */, - D23DE6771958DBA0000483A8 /* Default-Landscape~ipad.png in Resources */, - 57E145061975DC340065F142 /* bitmapFontTest.fnt in Resources */, - 57E145351975DC340065F142 /* tuffy_bold_italic-charmap.plist in Resources */, - 57E1452A1975DC340065F142 /* markerFelt-hd.png in Resources */, - D23DE67E1958DBA0000483A8 /* Icon.png in Resources */, - 57E145181975DC340065F142 /* fps_images.GlyphProject in Resources */, - 57E1451D1975DC340065F142 /* futura-48.png in Resources */, - 57E145161975DC340065F142 /* fps_images-hd.png in Resources */, - 57E144FE1975DC340065F142 /* A Damn Mess.ttf in Resources */, - 57E145281975DC340065F142 /* larabie-16.png in Resources */, - 57E145021975DC340065F142 /* arial-unicode-26.GlyphProject in Resources */, - 57E1451A1975DC340065F142 /* fps_images.png in Resources */, - 57E1452E1975DC340065F142 /* RobotoSlab-Bold.ttf in Resources */, - 57E145321975DC340065F142 /* Schwarzwald Regular.ttf in Resources */, - 14D9F5D61A3A81DE00620103 /* configCocos2d.plist in Resources */, - 57E1450C1975DC340065F142 /* bitmapFontTest4.png in Resources */, - D23DE9E51958E0BD000483A8 /* Resources-shared in Resources */, - D23DE67B1958DBA0000483A8 /* Icon-Small-50.png in Resources */, - 57E145301975DC340065F142 /* RobotoSlab-Regular.ttf in Resources */, - 57E145111975DC340065F142 /* font-issue1343-hd.fnt in Resources */, - D23DE67D1958DBA0000483A8 /* Icon-Small@2x.png in Resources */, - 57E145241975DC340065F142 /* konqa32.png in Resources */, - 57E145011975DC340065F142 /* arial-unicode-26.fnt in Resources */, - 57E145381975DC340065F142 /* west_england-64.png in Resources */, - 57E145201975DC340065F142 /* helvetica-geneva-32.png in Resources */, - 57E144FF1975DC340065F142 /* Abberancy.ttf in Resources */, - 57E1450F1975DC340065F142 /* boundsTestFont.fnt in Resources */, - D23DE67F1958DBA0000483A8 /* Icon@2x.png in Resources */, - 57E1450A1975DC340065F142 /* bitmapFontTest3.png in Resources */, - 5B4D6CCB1936ACE5004D1A0B /* InfoPlist.strings in Resources */, - 57E1451E1975DC340065F142 /* geneva-32.fnt in Resources */, - 57E145041975DC340065F142 /* arial16.fnt in Resources */, - 57E1452F1975DC340065F142 /* RobotoSlab-Light.ttf in Resources */, - D23DE6791958DBA0000483A8 /* Default@2x.png in Resources */, - 57E145091975DC340065F142 /* bitmapFontTest3.fnt in Resources */, - 57E145371975DC340065F142 /* west_england-64.fnt in Resources */, - 5B0ED738196E550000F9868F /* Particles in Resources */, - D23DE6761958DBA0000483A8 /* Default-568h@2x.png in Resources */, - 57F23E5B197774FE003D811B /* ThisFontIsAbdFont.ttf in Resources */, - 57E1450D1975DC340065F142 /* bitmapFontTest5.fnt in Resources */, - 57E145311975DC340065F142 /* RobotoSlab-Thin.ttf in Resources */, - 57E145211975DC340065F142 /* konqa32-hd.fnt in Resources */, - 57E1451F1975DC340065F142 /* helvetica-32.fnt in Resources */, - 57E145051975DC340065F142 /* arial16.png in Resources */, - D23DE6781958DBA0000483A8 /* Default.png in Resources */, - 57E145341975DC340065F142 /* tuffy_bold_italic-charmap-hd.plist in Resources */, - 57E145121975DC340065F142 /* font-issue1343-hd.png in Resources */, - 57E145191975DC340065F142 /* fps_images.plist in Resources */, - 57E145151975DC340065F142 /* fps_images-hd.plist in Resources */, - 57E145141975DC340065F142 /* font-issue1343.png in Resources */, - 147456A41A3B9B1A0024B64E /* Published-Android in Resources */, - D23DE67A1958DBA0000483A8 /* Icon-72.png in Resources */, - 57E145331975DC340065F142 /* Scissor Cuts.ttf in Resources */, - 5B0ED736196E54BD00F9868F /* Sounds in Resources */, - 57E1452D1975DC340065F142 /* Paint Boy.ttf in Resources */, - 57E145171975DC340065F142 /* fps_images-ipadhd.png in Resources */, - 57E1451C1975DC340065F142 /* futura-48.GlyphProject in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 5B4D6CB91936ACE5004D1A0B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5B165F6A195CE564002338B1 /* CCResponderTest.m in Sources */, - 5B165F77195CE564002338B1 /* ParticleTest.m in Sources */, - 5B165F79195CE564002338B1 /* SpritePerformanceTest.m in Sources */, - 5B165F6B195CE564002338B1 /* CCSchedulerTest.m in Sources */, - 5B165F69195CE564002338B1 /* CCRendererTest.m in Sources */, - 5B165F74195CE564002338B1 /* ColorTest.m in Sources */, - 5B165F78195CE564002338B1 /* PositioningTest.m in Sources */, - 5B165F7B195CE564002338B1 /* TilemapTest.m in Sources */, - 5BA67A56196CA1220010FFB7 /* HeadlessActivity.m in Sources */, - D242C50F1958D78700E7726D /* TestBase.m in Sources */, - 5B165F6E195CE564002338B1 /* CCSprite9SliceTest.m in Sources */, - 5B165F67195CE564002338B1 /* CCLayoutTest.m in Sources */, - 5B063DC619636B77002B1CDE /* ObjectALTest.m in Sources */, - 5B165F6F195CE564002338B1 /* CCTableViewTest.m in Sources */, - 5B165F73195CE564002338B1 /* ColorPickerTest.m in Sources */, - D242C50E1958D78700E7726D /* MainMenu.m in Sources */, - 5B165F72195CE564002338B1 /* CCTransitionTest.m in Sources */, - 5B165F7A195CE564002338B1 /* TextureTest.m in Sources */, - 5B165F76195CE564002338B1 /* ParallaxTest.m in Sources */, - 5B165F71195CE564002338B1 /* CCTextureCacheTest.m in Sources */, - 5B165F70195CE564002338B1 /* CCTextFieldTest.m in Sources */, - 5B165F6D195CE564002338B1 /* CCSliderTest.m in Sources */, - 5B165F65195CE564002338B1 /* CCEffectsTest.m in Sources */, - 5B165F68195CE564002338B1 /* CCPhysicsTest.m in Sources */, - 5B165F7C195CE564002338B1 /* VertexZTest.m in Sources */, - 5B165F63195CE564002338B1 /* CCBMFontTest.m in Sources */, - 5B165F66195CE564002338B1 /* CCLabelTTFTest.m in Sources */, - BC9F4EE119DCB1B200B25F01 /* CCPackageTest.m in Sources */, - 5B165F6C195CE564002338B1 /* CCScrollViewTest.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - D2A8000219F0F9C300ED29F6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = cocos2dAndroid; - targetProxy = D2A8000119F0F9C300ED29F6 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 5B4D6CC91936ACE5004D1A0B /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 5B4D6CCA1936ACE5004D1A0B /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 5B4D6CE21936ACE5004D1A0B /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 5B4D6CE31936ACE5004D1A0B /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 5B4D6CE71936ACE5004D1A0B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "${PROJECT_DIR}/../**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = apportablesdk1.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 5B4D6CE81936ACE5004D1A0B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "${PROJECT_DIR}/../**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - SDKROOT = apportablesdk1.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 5B4D6CEA1936ACE5004D1A0B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ANDROID_MANIFEST = "$(SRCROOT)//Headless/src/main/AndroidManifest.xml"; - ANDROID_RES_DIRS = "$(SRCROOT)//Headless/src/main/res"; - APPORTABLE_TARGET = Android; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "Headless/Headless-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - COCOS2D_ANDROID, - ); - INFOPLIST_FILE = "Headless/Headless-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(SDKROOT)/usr/local/lib/armv7a-neon", - "$(SDKROOT)/usr/lib/armeabi", - "$(SDKROOT)/usr/lib/armv7a", - "$(SDKROOT)/usr/lib/x86", - ); - OTHER_LDFLAGS = ( - "-landroid", - "-lgles_apportable", - "-ObjC", - "-all_load", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = sbandroid; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 5B4D6CEB1936ACE5004D1A0B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ANDROID_MANIFEST = "$(SRCROOT)//Headless/src/main/AndroidManifest.xml"; - ANDROID_RES_DIRS = "$(SRCROOT)//Headless/src/main/res"; - APPORTABLE_TARGET = Android; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "Headless/Headless-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = COCOS2D_ANDROID; - INFOPLIST_FILE = "Headless/Headless-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(SDKROOT)/usr/local/lib/armv7a-neon", - "$(SDKROOT)/usr/lib/armeabi", - "$(SDKROOT)/usr/lib/armv7a", - "$(SDKROOT)/usr/lib/x86", - ); - OTHER_LDFLAGS = ( - "-landroid", - "-lgles_apportable", - "-all_load", - "-ObjC", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = sbandroid; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 5B4D6CB81936ACE5004D1A0B /* Build configuration list for PBXProject "Headless" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5B4D6CE71936ACE5004D1A0B /* Debug */, - 5B4D6CE81936ACE5004D1A0B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 5B4D6CE91936ACE5004D1A0B /* Build configuration list for PBXNativeTarget "Headless" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5B4D6CEA1936ACE5004D1A0B /* Debug */, - 5B4D6CEB1936ACE5004D1A0B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 5B4D6CB51936ACE5004D1A0B /* Project object */; -} diff --git a/cocos2d-tests-android/Headless/Headless-Headless.iml b/cocos2d-tests-android/Headless/Headless-Headless.iml deleted file mode 100644 index 6543d2558be..00000000000 --- a/cocos2d-tests-android/Headless/Headless-Headless.iml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cocos2d-tests-android/Headless/Headless-Info.plist b/cocos2d-tests-android/Headless/Headless-Info.plist deleted file mode 100644 index cc48dc7bb6e..00000000000 --- a/cocos2d-tests-android/Headless/Headless-Info.plist +++ /dev/null @@ -1,52 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - UIAppFonts - - Schwarzwald Regular.ttf - Abberancy.ttf - Abduction.ttf - Paint Boy.ttf - - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocos2d.demo - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/cocos2d-tests-android/Headless/Headless-Prefix.pch b/cocos2d-tests-android/Headless/Headless-Prefix.pch deleted file mode 100644 index 3bb26e825c5..00000000000 --- a/cocos2d-tests-android/Headless/Headless-Prefix.pch +++ /dev/null @@ -1,15 +0,0 @@ -// -// Prefix header -// -// The contents of this file are implicitly included at the beginning of every source file. -// - -#import - -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iOS SDK 3.0 and later." -#endif - -#ifdef __OBJC__ - #import -#endif diff --git a/cocos2d-tests-android/Headless/HeadlessActivity.h b/cocos2d-tests-android/Headless/HeadlessActivity.h deleted file mode 100644 index 0580f847556..00000000000 --- a/cocos2d-tests-android/Headless/HeadlessActivity.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// HeadlessActivity.h -// Headless -// -// Created by Philippe Hausler on 7/8/14. -// Copyright (c) 2014 Apportable. All rights reserved. -// - -#import "CCActivity.h" - -BRIDGE_CLASS("com.apportable.GLActivity") -@interface HeadlessActivity : CCActivity - -@end diff --git a/cocos2d-tests-android/Headless/HeadlessActivity.m b/cocos2d-tests-android/Headless/HeadlessActivity.m deleted file mode 100644 index bb68bce2ab7..00000000000 --- a/cocos2d-tests-android/Headless/HeadlessActivity.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// HeadlessActivity.m -// Headless -// -// Created by Philippe Hausler on 7/8/14. -// Copyright (c) 2014 Apportable. All rights reserved. -// - -#import "HeadlessActivity.h" -#import "MainMenu.h" - -@implementation HeadlessActivity - -- (void)setupPaths -{ - [super setupPaths]; - CCFileUtils* sharedFileUtils = [CCFileUtils sharedFileUtils]; - NSString *resourcePath = [[NSBundle mainBundle] resourcePath]; - sharedFileUtils.searchPath = @[ - [resourcePath stringByAppendingPathComponent:@"Images"], - [resourcePath stringByAppendingPathComponent:@"Fonts"], - [resourcePath stringByAppendingPathComponent:@"Resources-shared"], - resourcePath - ]; - - // Register spritesheets. - CCSpriteFrameCache *spriteFrameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; - [spriteFrameCache registerSpriteFramesFile:@"Interface.plist"]; - [spriteFrameCache registerSpriteFramesFile:@"Sprites.plist"]; - [spriteFrameCache registerSpriteFramesFile:@"TilesAtlassed.plist"]; -} - - -- (CCScene *)startScene -{ - return [MainMenu scene]; -} - -- (BOOL)onKeyUp:(int32_t)keyCode keyEvent:(AndroidKeyEvent *)event -{ - if ([[CCDirector sharedDirector] runningScene] == [self startScene]) - { - return NO; - } - - [self runOnGameThread:^{ - CCTransition* transition = [CCTransition transitionMoveInWithDirection:CCTransitionDirectionRight duration:0.3]; - [[CCDirector sharedDirector] replaceScene:[MainMenu scene] withTransition:transition]; - }]; - - return YES; -} - -@end diff --git a/cocos2d-tests-android/Headless/Published-Android/configCocos2d.plist b/cocos2d-tests-android/Headless/Published-Android/configCocos2d.plist deleted file mode 100644 index 5261fca23b3..00000000000 --- a/cocos2d-tests-android/Headless/Published-Android/configCocos2d.plist +++ /dev/null @@ -1,12 +0,0 @@ - - - - - CCSetupScreenMode - CCScreenModeFlexible - CCSetupScreenOrientation - CCScreenOrientationLandscape - CCSetupTabletScale2X - - - diff --git a/cocos2d-tests-android/Headless/SimpleScene.h b/cocos2d-tests-android/Headless/SimpleScene.h deleted file mode 100644 index be966a1b552..00000000000 --- a/cocos2d-tests-android/Headless/SimpleScene.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// SimpleScene.h -// cocos2d-tests-ios -// -// Created by Oleg Osin on 6/3/14. -// Copyright (c) 2014 Cocos2d. All rights reserved. -// - -#import "TestBase.h" - -@interface SimpleScene : TestBase - -@end diff --git a/cocos2d-tests-android/Headless/SimpleScene.m b/cocos2d-tests-android/Headless/SimpleScene.m deleted file mode 100644 index 2d63a086073..00000000000 --- a/cocos2d-tests-android/Headless/SimpleScene.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// SimpleScene.m -// cocos2d-tests-ios -// -// Created by Oleg Osin on 6/3/14. -// Copyright (c) 2014 Cocos2d. All rights reserved. -// - -#import "SimpleScene.h" -#import "CCNodeColor.h" -#import "CCSprite.h" -#import "CCLabelTTF.h" - -@implementation SimpleScene - -- (id)init -{ - if((self = [super init])) - { - - return self; - } - - return self; -} - -- (void)onEnter { - [super onEnter]; - - CCNodeColor* node1 = [CCNodeColor nodeWithColor:[CCColor redColor]]; - node1.contentSize = CGSizeMake(20, 20); - [self addChild:node1]; - - CCNodeColor* node2 = [CCNodeColor nodeWithColor:[CCColor blueColor]]; - node2.contentSize = CGSizeMake(20, 20); - node2.position = ccp(30, 0); - [self addChild:node2]; - - CCSprite* spr = [CCSprite spriteWithImageNamed:@"sample_hollow_circle.png"]; - spr.position = ccp(100, 0); - spr.anchorPoint = ccp(0.0, 0.0); - [self addChild:spr]; - - CCSprite* spr2 = [CCSprite spriteWithImageNamed:@"sample_hollow_circle.png"]; - spr2.position = ccp(0, 90); - spr2.anchorPoint = ccp(0.0, 0.0); - [self addChild:spr2]; - - CCSprite* spr3 = [CCSprite spriteWithImageNamed:@"sample_square.png"]; - spr3.position = ccp(70, 90); - spr3.anchorPoint = ccp(0.0, 0.0); - [self addChild:spr3]; - - CCLabelTTF *label1 = [CCLabelTTF labelWithString:@"Label" fontName:@"Helvetica" fontSize:10.0]; - label1.positionType = CCPositionTypeNormalized; - label1.position = ccp(0.5, 0.5); - [self addChild:label1]; - -} - -@end diff --git a/cocos2d-tests-android/Headless/build.gradle b/cocos2d-tests-android/Headless/build.gradle deleted file mode 100644 index d7a310ee89b..00000000000 --- a/cocos2d-tests-android/Headless/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -apply plugin: 'android' - -android { - compileSdkVersion 19 - buildToolsVersion "19.0.1" - - defaultConfig { - minSdkVersion 8 - targetSdkVersion 19 - versionCode 1 - versionName "1.0" - } - buildTypes { - release { - runProguard false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' - } - } -} - -dependencies { - compile 'com.android.support:appcompat-v7:+' - compile fileTree(dir: 'libs', include: ['*.jar']) -} diff --git a/cocos2d-tests-android/Headless/en.lproj/InfoPlist.strings b/cocos2d-tests-android/Headless/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff8f8..00000000000 --- a/cocos2d-tests-android/Headless/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/cocos2d-tests-android/Headless/proguard-rules.txt b/cocos2d-tests-android/Headless/proguard-rules.txt deleted file mode 100644 index cb8998dd02e..00000000000 --- a/cocos2d-tests-android/Headless/proguard-rules.txt +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /Applications/Android Studio.app/sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/src/main/AndroidManifest.xml b/cocos2d-tests-android/Headless/src/main/AndroidManifest.xml deleted file mode 100644 index e6972194e6d..00000000000 --- a/cocos2d-tests-android/Headless/src/main/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/cocos2d-tests-android/Headless/src/main/res/drawable-hdpi/ic_launcher.png b/cocos2d-tests-android/Headless/src/main/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index d939fcebdd9b289df38c097e18d7c12152d85f3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10389 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 diff --git a/cocos2d-tests-android/Headless/src/main/res/drawable-mdpi/ic_launcher.png b/cocos2d-tests-android/Headless/src/main/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index 6b0f8e192d9697132a5e86cb3ed067f6f6b2cb77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7085 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 X-0O@xNk1GO00000NkvXXu0mjfWC+8c diff --git a/cocos2d-tests-android/Headless/src/main/res/drawable-xhdpi/ic_launcher.png b/cocos2d-tests-android/Headless/src/main/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index 7f590d1c3e6c1adad38b9cec8ce20fbb01eaf514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14358 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

-;cNR`cTDCU&n)QfA~=b3M_hww*+sJOF}Zvr<; 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

rR}X%<|eNhdAYY6xA5GiY3|F~U<+l?!HR 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 diff --git a/cocos2d-tests-android/Headless/tests/CCBMFontTest.m b/cocos2d-tests-android/Headless/tests/CCBMFontTest.m deleted file mode 120000 index 152970c932b..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCBMFontTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCBMFontTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCEffectsTest.m b/cocos2d-tests-android/Headless/tests/CCEffectsTest.m deleted file mode 120000 index 93187cb1d18..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCEffectsTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCEffectsTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCLabelTTFTest.m b/cocos2d-tests-android/Headless/tests/CCLabelTTFTest.m deleted file mode 120000 index 9c84b20295e..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCLabelTTFTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCLabelTTFTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCLayoutTest.m b/cocos2d-tests-android/Headless/tests/CCLayoutTest.m deleted file mode 120000 index 789efe7ee4b..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCLayoutTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCLayoutTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCPackageTest.m b/cocos2d-tests-android/Headless/tests/CCPackageTest.m deleted file mode 100644 index 4ffaf381cc6f38ead877fdb8b217582167656af5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286808 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 diff --git a/cocos2d-tests-android/Headless/tests/CCPhysicsTest.m b/cocos2d-tests-android/Headless/tests/CCPhysicsTest.m deleted file mode 120000 index 36f5d64573b..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCPhysicsTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCPhysicsTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCRendererTest.m b/cocos2d-tests-android/Headless/tests/CCRendererTest.m deleted file mode 120000 index a3eded61500..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCRendererTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCRendererTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCResponderTest.m b/cocos2d-tests-android/Headless/tests/CCResponderTest.m deleted file mode 120000 index 71946482fa2..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCResponderTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCResponderTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCSchedulerTest.m b/cocos2d-tests-android/Headless/tests/CCSchedulerTest.m deleted file mode 120000 index 26bf110cbc1..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCSchedulerTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCSchedulerTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCScrollViewTest.m b/cocos2d-tests-android/Headless/tests/CCScrollViewTest.m deleted file mode 120000 index 16d5c9c5372..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCScrollViewTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCScrollViewTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCSliderTest.m b/cocos2d-tests-android/Headless/tests/CCSliderTest.m deleted file mode 120000 index 6252677bc70..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCSliderTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCSliderTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCSprite9SliceTest.m b/cocos2d-tests-android/Headless/tests/CCSprite9SliceTest.m deleted file mode 120000 index d38ec925af4..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCSprite9SliceTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCSprite9SliceTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCTableViewTest.m b/cocos2d-tests-android/Headless/tests/CCTableViewTest.m deleted file mode 120000 index 214dbae1d81..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCTableViewTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCTableViewTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCTextFieldTest.m b/cocos2d-tests-android/Headless/tests/CCTextFieldTest.m deleted file mode 100644 index 5ab0ecfc78b..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCTextFieldTest.m +++ /dev/null @@ -1,57 +0,0 @@ -// -// CCTextFieldTest.m -// cocos2d-ui-tests-osx -// -// Created by Viktor on 10/23/13. -// Copyright (c) 2013 Cocos2d. All rights reserved. -// - -#import "TestBase.h" -#if !__CC_PLATFORM_ANDROID_COMPILE_ON_IOS_LAWLZ -#import "CCTextField.h" -#endif - -@interface CCTextFieldTest : TestBase @end - -@implementation CCTextFieldTest - -- (NSArray*) testConstructors -{ - return [NSArray arrayWithObjects: - @"setupTextFieldBasicTest", - nil]; -} - -- (void) setupTextFieldBasicTest -{ -#if !__CC_PLATFORM_ANDROID_COMPILE_ON_IOS_LAWLZ - self.subTitle = @"Tests text fields."; - - CCSpriteFrame* bg = [CCSpriteFrame frameWithImageNamed:@"Tests/textfield-bg.png"]; - CCTextField* textField = [[CCTextField alloc] initWithSpriteFrame:bg]; - - textField.preferredSizeType = CCSizeTypeMake(CCSizeUnitNormalized, CCSizeUnitPoints); - textField.preferredSize = CGSizeMake(0.5, 50); - textField.positionType = CCPositionTypeNormalized; - textField.position = ccp(0.5f, 0.8f); - textField.padding = 10; - textField.anchorPoint = ccp(0.5f, 0.5f); - textField.string = @"Hello!"; - - [textField setTarget:self selector:@selector(pressedEnter:)]; - - [self.contentNode addChild:textField]; -#endif -} - -- (void) pressedEnter:(id)sender -{ - CCTextField* textField = sender; - - NSLog(@"Finished editing: %@", textField.string); - - self.subTitle = [NSString stringWithFormat:@"Editing: '%@'", textField.string]; - -} - -@end diff --git a/cocos2d-tests-android/Headless/tests/CCTextureCacheTest.m b/cocos2d-tests-android/Headless/tests/CCTextureCacheTest.m deleted file mode 120000 index 5c7e6f44f18..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCTextureCacheTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCTextureCacheTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/CCTransitionTest.m b/cocos2d-tests-android/Headless/tests/CCTransitionTest.m deleted file mode 120000 index 3130029fd56..00000000000 --- a/cocos2d-tests-android/Headless/tests/CCTransitionTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/CCTransitionTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/ColorPickerTest.m b/cocos2d-tests-android/Headless/tests/ColorPickerTest.m deleted file mode 120000 index 4831f4f035f..00000000000 --- a/cocos2d-tests-android/Headless/tests/ColorPickerTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/ColorPickerTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/ColorTest.m b/cocos2d-tests-android/Headless/tests/ColorTest.m deleted file mode 120000 index e5a71c83948..00000000000 --- a/cocos2d-tests-android/Headless/tests/ColorTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/ColorTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/ObjectALTest.m b/cocos2d-tests-android/Headless/tests/ObjectALTest.m deleted file mode 120000 index c974adc312a..00000000000 --- a/cocos2d-tests-android/Headless/tests/ObjectALTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/ObjectALTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/ParallaxTest.m b/cocos2d-tests-android/Headless/tests/ParallaxTest.m deleted file mode 120000 index 1dc44bdfe5c..00000000000 --- a/cocos2d-tests-android/Headless/tests/ParallaxTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/ParallaxTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/ParticleTest.m b/cocos2d-tests-android/Headless/tests/ParticleTest.m deleted file mode 120000 index 64e6bdf83f8..00000000000 --- a/cocos2d-tests-android/Headless/tests/ParticleTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/ParticleTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/PositioningTest.m b/cocos2d-tests-android/Headless/tests/PositioningTest.m deleted file mode 120000 index da7a2a6f52b..00000000000 --- a/cocos2d-tests-android/Headless/tests/PositioningTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/PositioningTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/SpritePerformanceTest.m b/cocos2d-tests-android/Headless/tests/SpritePerformanceTest.m deleted file mode 120000 index 28f7ba31a41..00000000000 --- a/cocos2d-tests-android/Headless/tests/SpritePerformanceTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/SpritePerformanceTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/TextureTest.m b/cocos2d-tests-android/Headless/tests/TextureTest.m deleted file mode 120000 index 1b6d4d04530..00000000000 --- a/cocos2d-tests-android/Headless/tests/TextureTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/TextureTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/TilemapTest.m b/cocos2d-tests-android/Headless/tests/TilemapTest.m deleted file mode 120000 index d6342c48a9f..00000000000 --- a/cocos2d-tests-android/Headless/tests/TilemapTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/TilemapTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/Headless/tests/VertexZTest.m b/cocos2d-tests-android/Headless/tests/VertexZTest.m deleted file mode 120000 index 0674d209ee0..00000000000 --- a/cocos2d-tests-android/Headless/tests/VertexZTest.m +++ /dev/null @@ -1 +0,0 @@ -../../../cocos2d-ui-tests/tests/VertexZTest.m \ No newline at end of file diff --git a/cocos2d-tests-android/HeadlessTests/HeadlessTests-Info.plist b/cocos2d-tests-android/HeadlessTests/HeadlessTests-Info.plist deleted file mode 100644 index 6ad1eb4a547..00000000000 --- a/cocos2d-tests-android/HeadlessTests/HeadlessTests-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.apportable.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/cocos2d-tests-android/HeadlessTests/HeadlessTests.m b/cocos2d-tests-android/HeadlessTests/HeadlessTests.m deleted file mode 100644 index 9dbb7edaead..00000000000 --- a/cocos2d-tests-android/HeadlessTests/HeadlessTests.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// HeadlessTests.m -// HeadlessTests -// -// Created by Philippe Hausler on 5/28/14. -// Copyright (c) 2014 Apportable. All rights reserved. -// - -#import - -@interface HeadlessTests : XCTestCase - -@end - -@implementation HeadlessTests - -- (void)setUp -{ - [super setUp]; - // Put setup code here. This method is called before the invocation of each test method in the class. -} - -- (void)tearDown -{ - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} - -- (void)testExample -{ - XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); -} - -@end diff --git a/cocos2d-tests-android/HeadlessTests/en.lproj/InfoPlist.strings b/cocos2d-tests-android/HeadlessTests/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff8f8..00000000000 --- a/cocos2d-tests-android/HeadlessTests/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/cocos2d-tests-android/build.gradle b/cocos2d-tests-android/build.gradle deleted file mode 100644 index 80eec1a7930..00000000000 --- a/cocos2d-tests-android/build.gradle +++ /dev/null @@ -1,16 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - repositories { - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:0.9.+' - } -} - -allprojects { - repositories { - mavenCentral() - } -} diff --git a/cocos2d-tests-android/gradle.properties b/cocos2d-tests-android/gradle.properties deleted file mode 100644 index 5d08ba75bb9..00000000000 --- a/cocos2d-tests-android/gradle.properties +++ /dev/null @@ -1,18 +0,0 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Settings specified in this file will override any Gradle settings -# configured through the IDE. - -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html - -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx10248m -XX:MaxPermSize=256m -# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true \ No newline at end of file diff --git a/cocos2d-tests-android/gradle/wrapper/gradle-wrapper.jar b/cocos2d-tests-android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 8c0fb64a8698b08ecc4158d828ca593c4928e9dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49896 zcmagFb986H(k`5d^NVfUwr$(C?M#x1ZQHiZiEVpg+jrjgoQrerx!>1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/cocos2d-tests-android/gradlew.bat b/cocos2d-tests-android/gradlew.bat deleted file mode 100644 index aec99730b4e..00000000000 --- a/cocos2d-tests-android/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/cocos2d-tests-android/local.properties b/cocos2d-tests-android/local.properties deleted file mode 100644 index 22473278931..00000000000 --- a/cocos2d-tests-android/local.properties +++ /dev/null @@ -1,10 +0,0 @@ -## This file is automatically generated by Android Studio. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file should *NOT* be checked into Version Control Systems, -# as it contains information specific to your local configuration. -# -# Location of the SDK. This is only used by Gradle. -# For customization when using a Version Control System, please read the -# header note. -sdk.dir=/Applications/Android Studio.app/sdk \ No newline at end of file diff --git a/cocos2d-tests-android/settings.gradle b/cocos2d-tests-android/settings.gradle deleted file mode 100644 index 54cc8cc872f..00000000000 --- a/cocos2d-tests-android/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':Headless' diff --git a/cocos2d-ui/Platform/Android/CCPlatformTextFieldAndroid.h b/cocos2d-ui/Platform/Android/CCPlatformTextFieldAndroid.h deleted file mode 100644 index 8f5d8fdf0b1..00000000000 --- a/cocos2d-ui/Platform/Android/CCPlatformTextFieldAndroid.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// CCPlatformTextFieldAndroid.h -// cocos2d-osx -// -// Created by Sergey Klimov on 7/1/14. -// -// - -#import "CCPlatformTextField.h" - -@interface CCPlatformTextFieldAndroid : CCPlatformTextField - -@end diff --git a/cocos2d-ui/Platform/Android/CCPlatformTextFieldAndroid.m b/cocos2d-ui/Platform/Android/CCPlatformTextFieldAndroid.m deleted file mode 100644 index 40a856f5d41..00000000000 --- a/cocos2d-ui/Platform/Android/CCPlatformTextFieldAndroid.m +++ /dev/null @@ -1,115 +0,0 @@ -// -// CCPlatformTextFieldAndroid.m -// cocos2d-osx -// -// Created by Sergey Klimov on 7/1/14. -// -// - -#import "CCPlatformTextFieldAndroid.h" -#import "CCActivity.h" -#import -#import "CCControl.h" -#import "CCDirector.h" -#import "CCEditText.h" - -#import -#import -#import - -#import -#import - -@implementation CCPlatformTextFieldAndroid { - CCEditText *_editText; -} - -- (id) init { - if (self=[super init]) { - dispatch_async(dispatch_get_main_queue(), ^{ - _editText = [[CCEditText alloc] initWithContext:[CCActivity currentActivity]]; - [_editText setBackground:[[AndroidColorDrawable alloc] initWithColor:AndroidColorTransparent]]; - [_editText setTextColorByColor:AndroidColorBlack]; - }); - - } - return self; -} - -- (void)dealloc -{ - _editText = nil; -} - -- (void)onEnterTransitionDidFinish { - [super onEnterTransitionDidFinish]; - [self addEditText]; -} - -- (void) onExitTransitionDidStart -{ - [super onExitTransitionDidStart]; - [self removeEditText]; -} - -- (void) positionInControl:(CCControl *)control padding:(float)padding { - CGPoint viewPos = [control convertToWorldSpace:CGPointZero]; - CGSize screenSize = [[CCDirector sharedDirector] viewSizeInPixels]; - CGFloat scale = [[CCDirector sharedDirector] contentScaleFactor]; - CGSize size = control.contentSizeInPoints; - - size.width *= scale; - size.height *= scale; - - viewPos.x *= scale; - viewPos.y *= scale; - viewPos.y = screenSize.height - viewPos.y - size.height; - - int nativePadding = (int)padding*scale; - dispatch_async(dispatch_get_main_queue(), ^{ - AndroidAbsoluteLayoutLayoutParams *params = [[AndroidAbsoluteLayoutLayoutParams alloc] initWithWidth:size.width height:size.height x:viewPos.x y:viewPos.y]; - [_editText setPadding:nativePadding top:nativePadding right:nativePadding bottom:nativePadding]; - [_editText setLayoutParams:params]; - [_editText setImeOptions:AndroidEditorInfoImeFlagNoExtractUi]; - }); -} - --(void)addEditText { - dispatch_async(dispatch_get_main_queue(), ^{ - AndroidAbsoluteLayout *layout = [[CCActivity currentActivity] layout]; - [layout addView:_editText]; - __weak id weakSelf = self; - [_editText setCompletionBlock:^{ - if ([[weakSelf delegate] respondsToSelector:@selector(platformTextFieldDidFinishEditing:)]) { - [[weakSelf delegate] platformTextFieldDidFinishEditing:weakSelf]; - } - }]; - }); -} - -- (void)removeEditText { - dispatch_async(dispatch_get_main_queue(), ^{ - AndroidAbsoluteLayout *layout = [[CCActivity currentActivity] layout]; - [layout removeView:_editText]; - }); -} - -- (void)setFontSize:(float)fontSize { - dispatch_async(dispatch_get_main_queue(), ^{ - [_editText setTextSize:fontSize]; - }); -} - -- (void)setString:(NSString *)string { - dispatch_async(dispatch_get_main_queue(), ^{ - [_editText setText:string]; - }); -} - -- (NSString *)string { - NSString *str = [_editText.text description]; - return str; -} - - -@end diff --git a/cocos2d-ui/Platform/Android/java/CCEditText.h b/cocos2d-ui/Platform/Android/java/CCEditText.h deleted file mode 100644 index 3b4fbdae5c2..00000000000 --- a/cocos2d-ui/Platform/Android/java/CCEditText.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// CCEditText.h -// cocos2d-ios -// -// Created by Sergey Klimov on 8/5/14. -// -// - -#import - -@class AndroidContext; -@class AndroidKeyEvent; - -typedef void (^CCEditTextCompletionBlock)(void); - -BRIDGE_CLASS("com.apportable.GLEditText") -@interface CCEditText : GLEditText -- (id)initWithContext:(AndroidContext *)context; -- (BOOL)onKeyPreIme:(int32_t)keyCode keyEvent:(AndroidKeyEvent *)event; -- (void)setCompletionBlock:(CCEditTextCompletionBlock)completionBlock; -@end diff --git a/cocos2d-ui/Platform/Android/java/CCEditText.m b/cocos2d-ui/Platform/Android/java/CCEditText.m deleted file mode 100644 index 1b1c3fac021..00000000000 --- a/cocos2d-ui/Platform/Android/java/CCEditText.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// CCEditText.m -// cocos2d-ios -// -// Created by Sergey Klimov on 8/5/14. -// -// - -#import "CCEditText.h" - -#import -#import - -@implementation CCEditText { - CCEditTextCompletionBlock _completionBlock; -} - -- (BOOL)onKeyPreIme:(int32_t)keyCode keyEvent:(AndroidKeyEvent *)event { - if (keyCode == AndroidKeyEventKeycodeBack || [event action] == AndroidKeyEventActionUp) { - if (_completionBlock != nil) { - _completionBlock(); - } - - return NO; - } - return [self dispatchKeyEvent:event]; - -} - -- (void) setCompletionBlock:(CCEditTextCompletionBlock)completionBlock { - _completionBlock = [completionBlock copy]; -} - -- (void)dealloc { - [_completionBlock release]; - [super dealloc]; -} -@end diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 16134c22a5f..011e028467b 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -25,13 +25,8 @@ 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; - 1426D9951A38D24A00A579AF /* CCGestureListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BC3CB5719626FA000C4F0D0 /* CCGestureListener.h */; }; - 1435EB831A37BA7000BD04D4 /* GLActivityKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1435EB821A37BA7000BD04D4 /* GLActivityKit.framework */; }; - 14C4C33E1A37E39E00DD3957 /* AndroidKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14C4C33D1A37E39E00DD3957 /* AndroidKit.framework */; }; - 14EF47AA1A37F11C00A45BE4 /* JavaKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14EF47A91A37F11C00A45BE4 /* JavaKit.framework */; }; 2B192835163361B10049A044 /* CCClippingNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B192833163361B10049A044 /* CCClippingNode.h */; }; 2B192836163361B10049A044 /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B192834163361B10049A044 /* CCClippingNode.m */; }; - 462D9B7F1A427E130040C5F2 /* JavaFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 462D9B7E1A427E130040C5F2 /* JavaFoundation.framework */; }; 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; 5015043C113300F900A9CA65 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50150436113300F900A9CA65 /* CCActionProgressTimer.m */; }; 5018F2690DFDEAFF00C013A5 /* CCAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2520DFDEAFF00C013A5 /* CCAction.h */; }; @@ -105,20 +100,12 @@ 50F9E8170E1AA34E000E7616 /* ccTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F9E8160E1AA34E000E7616 /* ccTypes.h */; }; 50FBB2DA117613F500150761 /* CCActionTween.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FBB2D8117613F500150761 /* CCActionTween.h */; }; 50FBB2DB117613F500150761 /* CCActionTween.m in Sources */ = {isa = PBXBuildFile; fileRef = 50FBB2D9117613F500150761 /* CCActionTween.m */; }; - 571CD02619649E03003D460C /* CCPlatformTextFieldAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD01C19649E03003D460C /* CCPlatformTextFieldAndroid.h */; }; 571CD02819649E03003D460C /* CCPlatformTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD01E19649E03003D460C /* CCPlatformTextField.h */; }; 571CD02919649E03003D460C /* CCPlatformTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD01F19649E03003D460C /* CCPlatformTextField.m */; }; 571CD02A19649E03003D460C /* CCPlatformTextFieldIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD02119649E03003D460C /* CCPlatformTextFieldIOS.h */; }; 571CD02B19649E03003D460C /* CCPlatformTextFieldIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD02219649E03003D460C /* CCPlatformTextFieldIOS.m */; }; - 57202D391970776100238D56 /* CCPlatformTextFieldAndroid.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD01D19649E03003D460C /* CCPlatformTextFieldAndroid.m */; }; - 577D72D11970AC59005ABDC0 /* CCPlatformTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD01F19649E03003D460C /* CCPlatformTextField.m */; }; - 57BFF2BA1991937C00A3FE9C /* CCEditText.m in Sources */ = {isa = PBXBuildFile; fileRef = 57BFF2B81991937C00A3FE9C /* CCEditText.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 5BC1DE2A1A2E2099009C2E67 /* NSEvent+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BC1DE281A2E2099009C2E67 /* NSEvent+CC.h */; }; 5BC1DE2B1A2E2099009C2E67 /* NSEvent+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BC1DE291A2E2099009C2E67 /* NSEvent+CC.m */; }; - 5BC3CB5919626FA000C4F0D0 /* CCGestureListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BC3CB5719626FA000C4F0D0 /* CCGestureListener.h */; }; - 5BC3CB5A19626FA000C4F0D0 /* CCGestureListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BC3CB5819626FA000C4F0D0 /* CCGestureListener.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5BF32698195F947800D9A51A /* CCActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BF32696195F947800D9A51A /* CCActivity.h */; }; - 5BF32699195F947800D9A51A /* CCActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BF32697195F947800D9A51A /* CCActivity.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc -O0"; }; }; 7A4037C219E37117007B6E8F /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4037C119E37117007B6E8F /* GLKit.framework */; }; 7A4037C419E3711D007B6E8F /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4037C319E3711D007B6E8F /* ApplicationServices.framework */; }; 7A4037C619E37126007B6E8F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4037C519E37126007B6E8F /* QuartzCore.framework */; }; @@ -250,18 +237,6 @@ 7A59471819E3730100F65F90 /* CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D38058181889AD6000822437 /* CCRenderer.h */; }; 7A59471919E3730100F65F90 /* CCRenderer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D309054F18AC23110081BF11 /* CCRenderer_Private.h */; }; 7A59471A19E3730200F65F90 /* CCRenderer.m in Headers */ = {isa = PBXBuildFile; fileRef = D38058191889AD6000822437 /* CCRenderer.m */; }; - 7A59471C19E3730200F65F90 /* CCMathUtilsAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08819805E8400233D80 /* CCMathUtilsAndroid.h */; }; - 7A59471D19E3730200F65F90 /* CCMatrix3.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08919805E8400233D80 /* CCMatrix3.h */; }; - 7A59471E19E3730300F65F90 /* CCMatrix4.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08A19805E8400233D80 /* CCMatrix4.h */; }; - 7A59471F19E3730300F65F90 /* CCQuaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08B19805E8400233D80 /* CCQuaternion.h */; }; - 7A59472019E3730300F65F90 /* CCMathTypesAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08C19805E8400233D80 /* CCMathTypesAndroid.h */; }; - 7A59472219E3730400F65F90 /* CCVector3.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08E19805E8400233D80 /* CCVector3.h */; }; - 7A59472319E3730400F65F90 /* CCVector4.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08F19805E8400233D80 /* CCVector4.h */; }; - 7A59472419E3730400F65F90 /* CCVector2.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB09019805E8400233D80 /* CCVector2.h */; }; - 7A59472A19E3730500F65F90 /* CCActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BF32696195F947800D9A51A /* CCActivity.h */; }; - 7A59472E19E3730600F65F90 /* CCDirectorAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D285ECF6192EF5B2009F4E88 /* CCDirectorAndroid.h */; }; - 7A59473019E3730700F65F90 /* CCTouchAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CBA194BC500007CA669 /* CCTouchAndroid.h */; }; - 7A59473219E3730800F65F90 /* CCGestureListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BC3CB5719626FA000C4F0D0 /* CCGestureListener.h */; }; 7A59473519E3730800F65F90 /* CCMetalView.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B12199528B6003AA81A /* CCMetalView.h */; }; 7A59473719E3730900F65F90 /* UITouch+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */; }; 7A59473919E3730900F65F90 /* CCDirectorIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD0EA121F4B4600B0C81C /* CCDirectorIOS.h */; }; @@ -397,12 +372,6 @@ 7A59486019E375AE00F65F90 /* CCShader.m in Sources */ = {isa = PBXBuildFile; fileRef = E0BC7D9C1342CE7B001B4DCC /* CCShader.m */; }; 7A59486219E375AE00F65F90 /* NSValue+CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6219C3A0FD009BED7A /* NSValue+CCRenderer.m */; }; 7A59486519E375AE00F65F90 /* CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D38058191889AD6000822437 /* CCRenderer.m */; }; - 7A59486C19E375AF00F65F90 /* CCMatrix4.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB08D19805E8400233D80 /* CCMatrix4.m */; }; - 7A59487019E375B000F65F90 /* CCQuaternion.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB09119805E8400233D80 /* CCQuaternion.m */; }; - 7A59487119E375B000F65F90 /* CCMatrix3.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB09219805E8400233D80 /* CCMatrix3.m */; }; - 7A59487619E375B000F65F90 /* CCActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BF32697195F947800D9A51A /* CCActivity.m */; }; - 7A59487A19E375B100F65F90 /* CCDirectorAndroid.m in Sources */ = {isa = PBXBuildFile; fileRef = D285ECF7192EF5B2009F4E88 /* CCDirectorAndroid.m */; }; - 7A59487E19E375B100F65F90 /* CCGestureListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BC3CB5819626FA000C4F0D0 /* CCGestureListener.m */; }; 7A59488119E375B200F65F90 /* CCMetalView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B13199528B6003AA81A /* CCMetalView.m */; }; 7A59488319E375B200F65F90 /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */; }; 7A59488519E375B200F65F90 /* CCDirectorIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = E0EAD0EB121F4B4600B0C81C /* CCDirectorIOS.m */; }; @@ -433,14 +402,11 @@ 7A5948CF19E375BE00F65F90 /* CCControlTextureFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45F17E7AF1C0028BE0B /* CCControlTextureFactory.m */; }; 7A5948D119E375BE00F65F90 /* CCTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E260D718171D2000A0E872 /* CCTextField.m */; }; 7A5948D319E375BE00F65F90 /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; - 7A59493E19E3803200F65F90 /* CCEffectBlur.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B081995285B003AA81A /* CCEffectBlur.h */; }; 7A59494019E3810500F65F90 /* CCPlatformTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD01F19649E03003D460C /* CCPlatformTextField.m */; }; 7A59498319E38C9800F65F90 /* libSSZipArchiveMac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A59498219E38C8300F65F90 /* libSSZipArchiveMac.a */; }; - 7A97912B19E646F9001FFC4D /* libSSZipArchiveAndroid.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A40378319E36EFF007B6E8F /* libSSZipArchiveAndroid.a */; }; 83409E4919D5BADC004B7EB9 /* libSSZipArchive.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 83409E3619D5B791004B7EB9 /* libSSZipArchive.a */; }; 839CE58619FFB139003369F0 /* CCEffectInvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 839CE58419FFB139003369F0 /* CCEffectInvert.h */; }; 839CE58719FFB139003369F0 /* CCEffectInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 839CE58519FFB139003369F0 /* CCEffectInvert.m */; }; - 839CE58A19FFB145003369F0 /* CCEffectInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 839CE58519FFB139003369F0 /* CCEffectInvert.m */; }; 839CE58B19FFB146003369F0 /* CCEffectInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 839CE58519FFB139003369F0 /* CCEffectInvert.m */; }; 83E1A86219C8ACA0000A3BCA /* CCPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85A19C8ACA0000A3BCA /* CCPackage.h */; }; 83E1A86319C8ACA0000A3BCA /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85B19C8ACA0000A3BCA /* CCPackage.m */; }; @@ -464,20 +430,14 @@ 83E1A88B19C8ACDC000A3BCA /* CCPackageInstaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A88319C8ACDC000A3BCA /* CCPackageInstaller.m */; }; 83E21C001A121EB5000D1695 /* CCPackageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85F19C8ACA0000A3BCA /* CCPackageManager.m */; }; 9D03A5EB1A02F61700C651C8 /* CCLightNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */; }; - 9D03A5EC1A02F61A00C651C8 /* CCLightNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */; }; 9D03A5ED1A02F61B00C651C8 /* CCLightNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */; }; - 9D03A5F31A02F8C100C651C8 /* CCEffectLighting.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD047C19DE154400687820 /* CCEffectLighting.h */; }; 9D03A5F61A02F8C200C651C8 /* CCEffectLighting.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD047C19DE154400687820 /* CCEffectLighting.h */; }; - 9D03A5F71A02F8C500C651C8 /* CCEffectLighting.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DDD047D19DE154400687820 /* CCEffectLighting.m */; }; 9D03A5F81A02F8C600C651C8 /* CCEffectLighting.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DDD047D19DE154400687820 /* CCEffectLighting.m */; }; 9D1B4A991A02E90300B2DD9B /* CCLightGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */; }; - 9D1B4A9A1A02E90300B2DD9B /* CCLightGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */; }; 9D1B4A9B1A02E90300B2DD9B /* CCLightGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */; }; 9D2773B51AB77F3800D19A11 /* CCEffectStereo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2773B31AB77F3800D19A11 /* CCEffectStereo.h */; }; - 9D2773B61AB77F3800D19A11 /* CCEffectStereo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2773B31AB77F3800D19A11 /* CCEffectStereo.h */; }; 9D2773B71AB77F3800D19A11 /* CCEffectStereo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2773B31AB77F3800D19A11 /* CCEffectStereo.h */; }; 9D2773B81AB77F3800D19A11 /* CCEffectStereo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2773B41AB77F3800D19A11 /* CCEffectStereo.m */; }; - 9D2773B91AB77F3800D19A11 /* CCEffectStereo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2773B41AB77F3800D19A11 /* CCEffectStereo.m */; }; 9D2773BA1AB77F3800D19A11 /* CCEffectStereo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2773B41AB77F3800D19A11 /* CCEffectStereo.m */; }; 9D69E6D619DF604800C2749C /* CCLightNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D69E6D419DF604800C2749C /* CCLightNode.h */; }; 9D69E6D719DF604800C2749C /* CCLightNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D69E6D519DF604800C2749C /* CCLightNode.m */; }; @@ -486,16 +446,12 @@ 9D856721191B019900573093 /* CCEffectContrast.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671F191B019900573093 /* CCEffectContrast.h */; }; 9D856722191B019900573093 /* CCEffectContrast.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D856720191B019900573093 /* CCEffectContrast.m */; }; 9D9205D21A0173D600FF2D6D /* CCLightCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */; }; - 9D9205D31A0173D600FF2D6D /* CCLightCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */; }; 9D9205D41A0173D600FF2D6D /* CCLightCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */; }; 9D9205D51A0173D600FF2D6D /* CCLightCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */; }; - 9D9205D61A0173D600FF2D6D /* CCLightCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */; }; 9D9205D71A0173D600FF2D6D /* CCLightCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */; }; 9DBCA31419B68BE400EFE96D /* CCEffectColorChannelOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DBCA31219B68BE400EFE96D /* CCEffectColorChannelOffset.h */; }; 9DBCA31519B68BE400EFE96D /* CCEffectColorChannelOffset.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DBCA31319B68BE400EFE96D /* CCEffectColorChannelOffset.m */; }; - 9DC780B71A1175F000DD5A4B /* CCLightNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D69E6D419DF604800C2749C /* CCLightNode.h */; }; 9DC780BA1A1175F100DD5A4B /* CCLightNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D69E6D419DF604800C2749C /* CCLightNode.h */; }; - 9DC780BB1A11760A00DD5A4B /* CCLightNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D69E6D519DF604800C2749C /* CCLightNode.m */; }; 9DC780BC1A11760B00DD5A4B /* CCLightNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D69E6D519DF604800C2749C /* CCLightNode.m */; }; 9DDD047E19DE154400687820 /* CCEffectLighting.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD047C19DE154400687820 /* CCEffectLighting.h */; }; 9DDD047F19DE154400687820 /* CCEffectLighting.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DDD047D19DE154400687820 /* CCEffectLighting.m */; }; @@ -585,36 +541,12 @@ B7EE69E31819E75700B983FE /* CCLayoutBox.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69DF1819E75700B983FE /* CCLayoutBox.m */; }; B7EE6A1E181AE34600B983FE /* CCSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE6A1C181AE34600B983FE /* CCSlider.h */; }; B7EE6A1F181AE34600B983FE /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; - BC9F4E8819DB632400B25F01 /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85B19C8ACA0000A3BCA /* CCPackage.m */; }; - BC9F4E8E19DB632800B25F01 /* CCPackageConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85D19C8ACA0000A3BCA /* CCPackageConstants.m */; }; - BC9F4E8F19DB632B00B25F01 /* CCPackageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85F19C8ACA0000A3BCA /* CCPackageManager.m */; }; - BC9F4E9019DB633100B25F01 /* CCPackageHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E525F9EA4B5DD37D0418869E /* CCPackageHelper.m */; }; - BC9F4E9119DB633500B25F01 /* CCPackageDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A87119C8ACC1000A3BCA /* CCPackageDownload.m */; }; - BC9F4E9219DB633B00B25F01 /* CCPackageDownloadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A87419C8ACC1000A3BCA /* CCPackageDownloadManager.m */; }; - BC9F4E9319DB633F00B25F01 /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A86B19C8ACAF000A3BCA /* CCPackageUnzipper.m */; }; - BC9F4E9419DB635000B25F01 /* CCPackageCocos2dEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A87F19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.m */; }; - BC9F4E9519DB635200B25F01 /* CCPackageInstaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A88319C8ACDC000A3BCA /* CCPackageInstaller.m */; }; - BC9F4E9619DB643C00B25F01 /* CCPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85A19C8ACA0000A3BCA /* CCPackage.h */; }; - BC9F4E9719DB643F00B25F01 /* CCPackageConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85C19C8ACA0000A3BCA /* CCPackageConstants.h */; }; - BC9F4E9819DB644600B25F01 /* CCPackageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85E19C8ACA0000A3BCA /* CCPackageManager.h */; }; - BC9F4E9919DB644900B25F01 /* CCPackageManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86019C8ACA0000A3BCA /* CCPackageManagerDelegate.h */; }; - BC9F4E9A19DB644B00B25F01 /* CCPackageTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86119C8ACA0000A3BCA /* CCPackageTypes.h */; }; - BC9F4E9B19DB644E00B25F01 /* CCPackageDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87019C8ACC1000A3BCA /* CCPackageDownload.h */; }; - BC9F4E9C19DB646000B25F01 /* CCPackageDownloadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87319C8ACC1000A3BCA /* CCPackageDownloadManager.h */; }; - BC9F4E9D19DB646300B25F01 /* CCPackageDownloadManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87519C8ACC1000A3BCA /* CCPackageDownloadManagerDelegate.h */; }; - BC9F4E9E19DB649800B25F01 /* CCPackageCocos2dEnabler.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87E19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.h */; }; - BC9F4E9F19DB649C00B25F01 /* CCPackageInstaller.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A88219C8ACDC000A3BCA /* CCPackageInstaller.h */; }; - BC9F4EA019DB649E00B25F01 /* CCPackageHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = E525FF8C7C018BF691F36044 /* CCPackageHelper.h */; }; - BC9F4EA119DB64A200B25F01 /* CCPackage_private.h in Headers */ = {isa = PBXBuildFile; fileRef = E525FE4C98BCF1228ECC9623 /* CCPackage_private.h */; }; D22907AE1A2F5E440038FF61 /* CCEffectOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = D22907AC1A2F5E440038FF61 /* CCEffectOutline.h */; }; - D22907AF1A2F5E440038FF61 /* CCEffectOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = D22907AC1A2F5E440038FF61 /* CCEffectOutline.h */; }; D22907B01A2F5E440038FF61 /* CCEffectOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = D22907AC1A2F5E440038FF61 /* CCEffectOutline.h */; }; D22907B11A2F5E440038FF61 /* CCEffectOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = D22907AD1A2F5E440038FF61 /* CCEffectOutline.m */; }; - D22907B21A2F5E440038FF61 /* CCEffectOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = D22907AD1A2F5E440038FF61 /* CCEffectOutline.m */; }; D22907B31A2F5E440038FF61 /* CCEffectOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = D22907AD1A2F5E440038FF61 /* CCEffectOutline.m */; }; D23C5CB4194BC108007CA669 /* CCTouchIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CB2194BC108007CA669 /* CCTouchIOS.h */; }; D23C5CB5194BC108007CA669 /* CCTouchIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = D23C5CB3194BC108007CA669 /* CCTouchIOS.m */; }; - D23C5CBC194BC500007CA669 /* CCTouchAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CBA194BC500007CA669 /* CCTouchAndroid.h */; }; D24160FD1958F6EE003673BD /* CCAnimationManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F61958F6EE003673BD /* CCAnimationManager_Private.h */; }; D24160FE1958F6EE003673BD /* CCAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F71958F6EE003673BD /* CCAnimationManager.h */; }; D24160FF1958F6EE003673BD /* CCAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160F81958F6EE003673BD /* CCAnimationManager.m */; }; @@ -623,20 +555,10 @@ D24161021958F6EE003673BD /* CCBAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160FB1958F6EE003673BD /* CCBAnimationManager.h */; }; D24161031958F6EE003673BD /* CCBAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160FC1958F6EE003673BD /* CCBAnimationManager.m */; }; D24161091958F72B003673BD /* CCEffectRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161041958F72B003673BD /* CCEffectRenderer.h */; }; - D241610A1958F72B003673BD /* CCEffectRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161041958F72B003673BD /* CCEffectRenderer.h */; }; D241610B1958F72B003673BD /* CCEffectRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D24161051958F72B003673BD /* CCEffectRenderer.m */; }; - D241610C1958F72B003673BD /* CCEffectRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D24161051958F72B003673BD /* CCEffectRenderer.m */; }; D241610D1958F72B003673BD /* CCEffectSaturation.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161061958F72B003673BD /* CCEffectSaturation.h */; }; - D241610E1958F72B003673BD /* CCEffectSaturation.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161061958F72B003673BD /* CCEffectSaturation.h */; }; D241610F1958F72B003673BD /* CCEffectSaturation.m in Sources */ = {isa = PBXBuildFile; fileRef = D24161071958F72B003673BD /* CCEffectSaturation.m */; }; - D24161101958F72B003673BD /* CCEffectSaturation.m in Sources */ = {isa = PBXBuildFile; fileRef = D24161071958F72B003673BD /* CCEffectSaturation.m */; }; D24161111958F72B003673BD /* CCEffectStackProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161081958F72B003673BD /* CCEffectStackProtocol.h */; }; - D24161121958F72B003673BD /* CCEffectStackProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161081958F72B003673BD /* CCEffectStackProtocol.h */; }; - D24161131958F738003673BD /* CCAnimationManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F61958F6EE003673BD /* CCAnimationManager_Private.h */; }; - D24161141958F738003673BD /* CCAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F71958F6EE003673BD /* CCAnimationManager.h */; }; - D24161151958F738003673BD /* CCAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160F81958F6EE003673BD /* CCAnimationManager.m */; }; - D24161161958F738003673BD /* CCAnimationManager+FrameAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F91958F6EE003673BD /* CCAnimationManager+FrameAnimation.h */; }; - D24161171958F738003673BD /* CCAnimationManager+FrameAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160FA1958F6EE003673BD /* CCAnimationManager+FrameAnimation.m */; }; D24FAEEC198014B90043E27D /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D24FAEEB198014B90043E27D /* GLKit.framework */; }; D25B4F4B194A499700DA9D60 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; D25B4F4C194A499700DA9D60 /* CCTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = D25B4F4A194A499700DA9D60 /* CCTouch.m */; }; @@ -649,23 +571,10 @@ D268FE13198078FF00ECBCD0 /* CCEffectReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE0B198078FF00ECBCD0 /* CCEffectReflection.h */; }; D268FE14198078FF00ECBCD0 /* CCEffectReflection.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE0C198078FF00ECBCD0 /* CCEffectReflection.m */; }; D268FE191980791400ECBCD0 /* CCEffectRefraction.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE151980791300ECBCD0 /* CCEffectRefraction.h */; }; - D268FE1A1980791400ECBCD0 /* CCEffectRefraction.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE151980791300ECBCD0 /* CCEffectRefraction.h */; }; D268FE1B1980791400ECBCD0 /* CCEffectRefraction.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE161980791300ECBCD0 /* CCEffectRefraction.m */; }; - D268FE1C1980791400ECBCD0 /* CCEffectRefraction.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE161980791300ECBCD0 /* CCEffectRefraction.m */; }; D268FE1D1980791400ECBCD0 /* CCEffectUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE171980791300ECBCD0 /* CCEffectUtils.h */; }; - D268FE1E1980791400ECBCD0 /* CCEffectUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE171980791300ECBCD0 /* CCEffectUtils.h */; }; D268FE1F1980791400ECBCD0 /* CCEffectUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE181980791300ECBCD0 /* CCEffectUtils.m */; }; - D268FE201980791400ECBCD0 /* CCEffectUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE181980791300ECBCD0 /* CCEffectUtils.m */; }; D268FE231980791C00ECBCD0 /* CCEffectStack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671A191AE2CC00573093 /* CCEffectStack_Private.h */; }; - D268FE241980791D00ECBCD0 /* CCEffectBloom.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE05198078FF00ECBCD0 /* CCEffectBloom.h */; }; - D268FE251980791D00ECBCD0 /* CCEffectBloom.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE06198078FF00ECBCD0 /* CCEffectBloom.m */; }; - D268FE261980791D00ECBCD0 /* CCEffectGlass.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE07198078FF00ECBCD0 /* CCEffectGlass.h */; }; - D268FE271980791D00ECBCD0 /* CCEffectGlass.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE08198078FF00ECBCD0 /* CCEffectGlass.m */; }; - D268FE281980791D00ECBCD0 /* CCEffectHue.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE09198078FF00ECBCD0 /* CCEffectHue.h */; }; - D268FE291980791D00ECBCD0 /* CCEffectHue.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE0A198078FF00ECBCD0 /* CCEffectHue.m */; }; - D268FE2A1980791D00ECBCD0 /* CCEffectReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE0B198078FF00ECBCD0 /* CCEffectReflection.h */; }; - D268FE2B1980791D00ECBCD0 /* CCEffectReflection.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE0C198078FF00ECBCD0 /* CCEffectReflection.m */; }; - D268FE2E1980791D00ECBCD0 /* CCEffectStack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671A191AE2CC00573093 /* CCEffectStack_Private.h */; }; D26A042A194B815500503BEC /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; D26A042B194B815500503BEC /* CCTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = D26A0429194B815500503BEC /* CCTouchEvent.m */; }; D272032418FC89A000B100FF /* CCEffect_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031718FC89A000B100FF /* CCEffect_Private.h */; }; @@ -676,264 +585,17 @@ D272032D18FC89A000B100FF /* CCEffectStack.h in Headers */ = {isa = PBXBuildFile; fileRef = D272032018FC89A000B100FF /* CCEffectStack.h */; }; D272032E18FC89A000B100FF /* CCEffectStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D272032118FC89A000B100FF /* CCEffectStack.m */; }; D27451AA19AD430A006DA0A1 /* CCEffectDropShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451A819AD430A006DA0A1 /* CCEffectDropShadow.h */; }; - D27451AB19AD430A006DA0A1 /* CCEffectDropShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451A819AD430A006DA0A1 /* CCEffectDropShadow.h */; }; D27451AC19AD430A006DA0A1 /* CCEffectDropShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451A919AD430A006DA0A1 /* CCEffectDropShadow.m */; }; - D27451AD19AD430A006DA0A1 /* CCEffectDropShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451A919AD430A006DA0A1 /* CCEffectDropShadow.m */; }; D27451B719AE5517006DA0A1 /* CCEffectDistanceField.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451B519AE5517006DA0A1 /* CCEffectDistanceField.h */; }; D27451B819AE5517006DA0A1 /* CCEffectDistanceField.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451B619AE5517006DA0A1 /* CCEffectDistanceField.m */; }; - D27451BD19AEC84C006DA0A1 /* CCEffectDistanceField.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451B619AE5517006DA0A1 /* CCEffectDistanceField.m */; }; - D27451BE19AEC84F006DA0A1 /* CCEffectDistanceField.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451B519AE5517006DA0A1 /* CCEffectDistanceField.h */; }; D27451C619B111A9006DA0A1 /* CCEffectDFOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451C419B111A9006DA0A1 /* CCEffectDFOutline.h */; }; - D27451C719B111A9006DA0A1 /* CCEffectDFOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451C419B111A9006DA0A1 /* CCEffectDFOutline.h */; }; D27451C819B111A9006DA0A1 /* CCEffectDFOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451C519B111A9006DA0A1 /* CCEffectDFOutline.m */; }; - D27451C919B111A9006DA0A1 /* CCEffectDFOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451C519B111A9006DA0A1 /* CCEffectDFOutline.m */; }; - D285ECF0192EA92A009F4E88 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = D285ECEE192EA92A009F4E88 /* CCGLView.h */; }; - D285ECF1192EA92A009F4E88 /* CCGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = D285ECEF192EA92A009F4E88 /* CCGLView.m */; }; - D285ECF8192EF5B2009F4E88 /* CCDirectorAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D285ECF6192EF5B2009F4E88 /* CCDirectorAndroid.h */; }; - D285ECF9192EF5B2009F4E88 /* CCDirectorAndroid.m in Sources */ = {isa = PBXBuildFile; fileRef = D285ECF7192EF5B2009F4E88 /* CCDirectorAndroid.m */; }; D28A2E161954F66E00ADC03D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E151954F66E00ADC03D /* UIKit.framework */; }; D28A2E1B1954F68D00ADC03D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E1A1954F68D00ADC03D /* QuartzCore.framework */; }; D28A2E1D1954F7E000ADC03D /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E1C1954F7E000ADC03D /* OpenGLES.framework */; }; D28A2E211954F85700ADC03D /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E201954F85700ADC03D /* AVFoundation.framework */; }; - D28B2E7A19CBA89A00DC6E08 /* CCEffectColorChannelOffset.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DBCA31319B68BE400EFE96D /* CCEffectColorChannelOffset.m */; }; D299CE7A19C2910B00519CBB /* CCEffectDFInnerGlow.h in Headers */ = {isa = PBXBuildFile; fileRef = D299CE7819C2910B00519CBB /* CCEffectDFInnerGlow.h */; }; - D299CE7B19C2910B00519CBB /* CCEffectDFInnerGlow.h in Headers */ = {isa = PBXBuildFile; fileRef = D299CE7819C2910B00519CBB /* CCEffectDFInnerGlow.h */; }; D299CE7C19C2910B00519CBB /* CCEffectDFInnerGlow.m in Sources */ = {isa = PBXBuildFile; fileRef = D299CE7919C2910B00519CBB /* CCEffectDFInnerGlow.m */; }; - D299CE7D19C2910B00519CBB /* CCEffectDFInnerGlow.m in Sources */ = {isa = PBXBuildFile; fileRef = D299CE7919C2910B00519CBB /* CCEffectDFInnerGlow.m */; }; - D2DDB09319805E8400233D80 /* CCMathUtilsAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08819805E8400233D80 /* CCMathUtilsAndroid.h */; }; - D2DDB09419805E8400233D80 /* CCMathUtilsAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08819805E8400233D80 /* CCMathUtilsAndroid.h */; }; - D2DDB09519805E8400233D80 /* CCMatrix3.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08919805E8400233D80 /* CCMatrix3.h */; }; - D2DDB09619805E8400233D80 /* CCMatrix3.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08919805E8400233D80 /* CCMatrix3.h */; }; - D2DDB09719805E8400233D80 /* CCMatrix4.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08A19805E8400233D80 /* CCMatrix4.h */; }; - D2DDB09819805E8400233D80 /* CCMatrix4.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08A19805E8400233D80 /* CCMatrix4.h */; }; - D2DDB09919805E8400233D80 /* CCQuaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08B19805E8400233D80 /* CCQuaternion.h */; }; - D2DDB09A19805E8400233D80 /* CCQuaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08B19805E8400233D80 /* CCQuaternion.h */; }; - D2DDB09B19805E8400233D80 /* CCMathTypesAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08C19805E8400233D80 /* CCMathTypesAndroid.h */; }; - D2DDB09C19805E8400233D80 /* CCMathTypesAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08C19805E8400233D80 /* CCMathTypesAndroid.h */; }; - D2DDB09D19805E8400233D80 /* CCMatrix4.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB08D19805E8400233D80 /* CCMatrix4.m */; }; - D2DDB09E19805E8400233D80 /* CCMatrix4.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB08D19805E8400233D80 /* CCMatrix4.m */; }; - D2DDB09F19805E8400233D80 /* CCVector3.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08E19805E8400233D80 /* CCVector3.h */; }; - D2DDB0A019805E8400233D80 /* CCVector3.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08E19805E8400233D80 /* CCVector3.h */; }; - D2DDB0A119805E8400233D80 /* CCVector4.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08F19805E8400233D80 /* CCVector4.h */; }; - D2DDB0A219805E8400233D80 /* CCVector4.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB08F19805E8400233D80 /* CCVector4.h */; }; - D2DDB0A319805E8400233D80 /* CCVector2.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB09019805E8400233D80 /* CCVector2.h */; }; - D2DDB0A419805E8400233D80 /* CCVector2.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DDB09019805E8400233D80 /* CCVector2.h */; }; - D2DDB0A519805E8400233D80 /* CCQuaternion.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB09119805E8400233D80 /* CCQuaternion.m */; }; - D2DDB0A619805E8400233D80 /* CCQuaternion.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB09119805E8400233D80 /* CCQuaternion.m */; }; - D2DDB0A719805E8400233D80 /* CCMatrix3.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB09219805E8400233D80 /* CCMatrix3.m */; }; - D2DDB0A819805E8400233D80 /* CCMatrix3.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB09219805E8400233D80 /* CCMatrix3.m */; }; - D2FEB611194F6C9E00FC0574 /* CCBLocalizationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273041822F4AA0054849B /* CCBLocalizationManager.h */; }; - D2FEB612194F6C9E00FC0574 /* CCAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2520DFDEAFF00C013A5 /* CCAction.h */; }; - D2FEB613194F6C9E00FC0574 /* CCNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2540DFDEAFF00C013A5 /* CCNode.h */; }; - D2FEB614194F6C9E00FC0574 /* CCDirector.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2560DFDEAFF00C013A5 /* CCDirector.h */; }; - D2FEB616194F6C9E00FC0574 /* CCActionInstant.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2580DFDEAFF00C013A5 /* CCActionInstant.h */; }; - D2FEB618194F6C9E00FC0574 /* CCActionInterval.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25A0DFDEAFF00C013A5 /* CCActionInterval.h */; }; - D2FEB619194F6C9E00FC0574 /* CCLabelTTF.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25C0DFDEAFF00C013A5 /* CCLabelTTF.h */; }; - D2FEB61A194F6C9E00FC0574 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; - D2FEB61B194F6C9E00FC0574 /* CCScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2600DFDEAFF00C013A5 /* CCScene.h */; }; - D2FEB61C194F6C9E00FC0574 /* CCTextureCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2670DFDEAFF00C013A5 /* CCTextureCache.h */; }; - D2FEB61E194F6C9E00FC0574 /* CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D38058181889AD6000822437 /* CCRenderer.h */; }; - D2FEB622194F6C9E00FC0574 /* CCParticleSystemBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 5038B6B00E196CD8009A621E /* CCParticleSystemBase.h */; }; - D2FEB625194F6C9E00FC0574 /* CCEffectContrast.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671F191B019900573093 /* CCEffectContrast.h */; }; - D2FEB627194F6C9E00FC0574 /* ccTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F9E8160E1AA34E000E7616 /* ccTypes.h */; }; - D2FEB628194F6C9E00FC0574 /* CCPhysicsShape.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A2E7D0181E12750033614C /* CCPhysicsShape.h */; }; - D2FEB629194F6C9E00FC0574 /* CCParticleExamples.h in Headers */ = {isa = PBXBuildFile; fileRef = 504055AE0E3230BD00213FEF /* CCParticleExamples.h */; }; - D2FEB62A194F6C9E00FC0574 /* CCScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5066020F0E38A70D000B500E /* CCScheduler.h */; }; - D2FEB62F194F6C9E00FC0574 /* cocos2d.h in Headers */ = {isa = PBXBuildFile; fileRef = 50305AF30E40E33200F63373 /* cocos2d.h */; }; - D2FEB630194F6C9E00FC0574 /* CCDirectorAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D285ECF6192EF5B2009F4E88 /* CCDirectorAndroid.h */; }; - D2FEB633194F6C9E00FC0574 /* TGAlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 501CCFAC0E99657C00B86F68 /* TGAlib.h */; }; - D2FEB636194F6C9E00FC0574 /* CCActionEase.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F7B2760F28DE7C00057537 /* CCActionEase.h */; }; - D2FEB637194F6C9E00FC0574 /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; - D2FEB638194F6C9E00FC0574 /* ccMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BAF3970F33CCD8003F654C /* ccMacros.h */; }; - D2FEB639194F6C9E00FC0574 /* CCNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D13C181F2E4500E7BFCD /* CCNode_Private.h */; }; - D2FEB63A194F6C9E00FC0574 /* CCSprite.h in Headers */ = {isa = PBXBuildFile; fileRef = 509A79950F6188420032F449 /* CCSprite.h */; }; - D2FEB63B194F6C9E00FC0574 /* CCFileUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C508C40F7C194400799124 /* CCFileUtils.h */; }; - D2FEB63E194F6C9E00FC0574 /* CGPointExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 503798C40F912C2000986724 /* CGPointExtension.h */; }; - D2FEB63F194F6C9E00FC0574 /* CCParticleSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D413240F9A3FE00040C3C8 /* CCParticleSystem.h */; }; - D2FEB640194F6C9E00FC0574 /* CCParallaxNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C6C6A0FB87970002BF3C2 /* CCParallaxNode.h */; }; - D2FEB641194F6C9E00FC0574 /* CCTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B706B19718209A8300B27A2C /* CCTexture_Private.h */; }; - D2FEB644194F6C9E00FC0574 /* CCLayoutBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE69DE1819E75700B983FE /* CCLayoutBox.h */; }; - D2FEB645194F6C9E00FC0574 /* CCTouchIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CB2194BC108007CA669 /* CCTouchIOS.h */; }; - D2FEB646194F6C9E00FC0574 /* CCEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031818FC89A000B100FF /* CCEffect.h */; }; - D2FEB647194F6C9E00FC0574 /* CCEffect_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031718FC89A000B100FF /* CCEffect_Private.h */; }; - D2FEB648194F6C9E00FC0574 /* CCEffectStack.h in Headers */ = {isa = PBXBuildFile; fileRef = D272032018FC89A000B100FF /* CCEffectStack.h */; }; - D2FEB64A194F6C9E00FC0574 /* CCTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E260D618171D2000A0E872 /* CCTextField.h */; }; - D2FEB64B194F6C9E00FC0574 /* CCBReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273061822F4AA0054849B /* CCBReader.h */; }; - D2FEB64C194F6C9E00FC0574 /* CCEffectPixellate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF3761F191C594A00C6D27A /* CCEffectPixellate.h */; }; - D2FEB64D194F6C9E00FC0574 /* CCActionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */; }; - D2FEB64E194F6C9E00FC0574 /* CCTiledMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 509D0816101E4FCE007E1749 /* CCTiledMap.h */; }; - D2FEB64F194F6C9E00FC0574 /* base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F29F6E102053370046CA73 /* base64.h */; }; - D2FEB650194F6C9E00FC0574 /* ZipUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F2A103102094550046CA73 /* ZipUtils.h */; }; - D2FEB652194F6C9E00FC0574 /* CCTMXXMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CFAC371023660000175934 /* CCTMXXMLParser.h */; }; - D2FEB653194F6C9E00FC0574 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; - D2FEB654194F6C9E00FC0574 /* CCBSequenceProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D2730A1822F4AA0054849B /* CCBSequenceProperty.h */; }; - D2FEB655194F6C9E00FC0574 /* CCMotionStreak.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AD21029A126003ACFE7 /* CCMotionStreak.h */; }; - D2FEB656194F6C9E00FC0574 /* CCCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D380581E1889CE7700822437 /* CCCache.h */; }; - D2FEB657194F6C9E00FC0574 /* CCRenderer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D309054F18AC23110081BF11 /* CCRenderer_Private.h */; }; - D2FEB659194F6C9E00FC0574 /* ccConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 505462FB1062768000AB7C52 /* ccConfig.h */; }; - D2FEB65A194F6C9E00FC0574 /* CCSpriteFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E2A14E10A45E7F00D894CE /* CCSpriteFrame.h */; }; - D2FEB65B194F6C9E00FC0574 /* CCColor.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E7761F1857A159004221AA /* CCColor.h */; }; - D2FEB65C194F6C9E00FC0574 /* CCProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E2A25110A46CC600D894CE /* CCProtocols.h */; }; - D2FEB65D194F6C9E00FC0574 /* CCSpriteFrameCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C8BDE10A661E200D137BA /* CCSpriteFrameCache.h */; }; - D2FEB65E194F6C9E00FC0574 /* CCTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = B79F905817FE2A2E00908504 /* CCTableView.h */; }; - D2FEB65F194F6C9E00FC0574 /* CCTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E1357110ADEB1B00C9E7FA /* CCTexture.h */; }; - D2FEB660194F6C9E00FC0574 /* CCTiledMapLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D2AC9110E90DFA0068ECEB /* CCTiledMapLayer.h */; }; - D2FEB664194F6C9E00FC0574 /* CCTiledMapObjectGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D2AC9310E90DFA0068ECEB /* CCTiledMapObjectGroup.h */; }; - D2FEB665194F6C9E00FC0574 /* CCBSequence.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273081822F4AA0054849B /* CCBSequence.h */; }; - D2FEB666194F6C9E00FC0574 /* CCProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = 0529445911098D6F00E500F3 /* CCProfiling.h */; }; - D2FEB667194F6C9E00FC0574 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = D285ECEE192EA92A009F4E88 /* CCGLView.h */; }; - D2FEB668194F6C9E00FC0574 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; - D2FEB66B194F6C9E00FC0574 /* CCActionTween.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FBB2D8117613F500150761 /* CCActionTween.h */; }; - D2FEB66D194F6C9E00FC0574 /* uthash.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D898EF1192CB7500458C29 /* uthash.h */; }; - D2FEB66E194F6C9E00FC0574 /* utlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 508EAC2F1193F8B0007F058D /* utlist.h */; }; - D2FEB670194F6C9E00FC0574 /* CCSpriteBatchNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C3655911F0AE9B001C08F9 /* CCSpriteBatchNode.h */; }; - D2FEB671194F6C9E00FC0574 /* ccUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C54DC911F9CF2700B9E4CB /* ccUtils.h */; }; - D2FEB673194F6C9E00FC0574 /* CCTouchAndroid.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CBA194BC500007CA669 /* CCTouchAndroid.h */; }; - D2FEB674194F6C9E00FC0574 /* CCLabelBMFont.h in Headers */ = {isa = PBXBuildFile; fileRef = E01E6D8A121F130E001A484F /* CCLabelBMFont.h */; }; - D2FEB678194F6C9E00FC0574 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD0F3121F4B4600B0C81C /* CCGLView.h */; }; - D2FEB679194F6C9E00FC0574 /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; - D2FEB67D194F6C9E00FC0574 /* CCGL.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD19C121F4D7300B0C81C /* CCGL.h */; }; - D2FEB67E194F6C9E00FC0574 /* CCConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD1F0121F522A00B0C81C /* CCConfiguration.h */; }; - D2FEB67F194F6C9E00FC0574 /* CCEffectBrightness.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671B191B018200573093 /* CCEffectBrightness.h */; }; - D2FEB680194F6C9E00FC0574 /* CCEffectNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031E18FC89A000B100FF /* CCEffectNode.h */; }; - D2FEB682194F6C9E00FC0574 /* CCTexturePVR.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F9246F1224140400EF2362 /* CCTexturePVR.h */; }; - D2FEB683194F6C9E00FC0574 /* CCNS.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F92AC31224559800EF2362 /* CCNS.h */; }; - D2FEB684194F6C9E00FC0574 /* CCAnimationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E02BB6D4126CA93A006E46A2 /* CCAnimationCache.h */; }; - D2FEB685194F6C9E00FC0574 /* CCAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = E02BB702126CADEA006E46A2 /* CCAnimation.h */; }; - D2FEB686194F6C9E00FC0574 /* CCBuilderReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D2730C1822F4AA0054849B /* CCBuilderReader.h */; }; - D2FEB687194F6C9E00FC0574 /* CCAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E775CE18527EF0004221AA /* CCAppDelegate.h */; }; - D2FEB688194F6C9E00FC0574 /* CCShader.h in Headers */ = {isa = PBXBuildFile; fileRef = E0BC7D9B1342CE7B001B4DCC /* CCShader.h */; }; - D2FEB68C194F6C9E00FC0574 /* CCShader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D39FA9C718C1BC6B00441627 /* CCShader_Private.h */; }; - D2FEB68E194F6C9E00FC0574 /* CCParticleBatchNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C20AC6144FDAF700D84B47 /* CCParticleBatchNode.h */; }; - D2FEB690194F6C9E00FC0574 /* CCDirectorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E28B14C1DB7D0005BBF2 /* CCDirectorMac.h */; }; - D2FEB691194F6C9E00FC0574 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E28F14C1DB7D0005BBF2 /* CCGLView.h */; }; - D2FEB692194F6C9E00FC0574 /* CCWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E29114C1DB7D0005BBF2 /* CCWindow.h */; }; - D2FEB693194F6C9E00FC0574 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; - D2FEB694194F6C9E00FC0574 /* CCLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE69DC1819E75700B983FE /* CCLayout.h */; }; - D2FEB695194F6C9E00FC0574 /* NSThread+performBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C87D1814F9A3A100C0E8B2 /* NSThread+performBlock.h */; }; - D2FEB696194F6C9E00FC0574 /* CCTiledMapLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E849182064BF00DAE1D7 /* CCTiledMapLayer_Private.h */; }; - D2FEB69A194F6C9E00FC0574 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; - D2FEB69B194F6C9E00FC0574 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; - D2FEB69D194F6C9E00FC0574 /* CCParticleSystemBase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D14C18204BEC00E7BFCD /* CCParticleSystemBase_Private.h */; }; - D2FEB69F194F6C9E00FC0574 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; - D2FEB6A0194F6C9E00FC0574 /* CCActionCatmullRom.h in Headers */ = {isa = PBXBuildFile; fileRef = A0A7A53A1514F27D00C8BD16 /* CCActionCatmullRom.h */; }; - D2FEB6A2194F6C9E00FC0574 /* CCNode+Debug.h in Headers */ = {isa = PBXBuildFile; fileRef = A039EBFD155C686B0061EE37 /* CCNode+Debug.h */; }; - D2FEB6A3194F6C9E00FC0574 /* CCDrawNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DA0BC115BCDCA200E80A92 /* CCDrawNode.h */; }; - D2FEB6A4194F6C9E00FC0574 /* CCClippingNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B192833163361B10049A044 /* CCClippingNode.h */; }; - D2FEB6A6194F6C9E00FC0574 /* CCSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE6A1C181AE34600B983FE /* CCSlider.h */; }; - D2FEB6A7194F6C9E00FC0574 /* ccFPSImages.h in Headers */ = {isa = PBXBuildFile; fileRef = A003AC8B1657071100C7B792 /* ccFPSImages.h */; }; - D2FEB6A8194F6C9E00FC0574 /* CCSprite9Slice.h in Headers */ = {isa = PBXBuildFile; fileRef = B74C2B9917BDA63A00A829C0 /* CCSprite9Slice.h */; }; - D2FEB6A9194F6C9E00FC0574 /* CCBReader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B77060CE18341AD50043CC67 /* CCBReader_Private.h */; }; - D2FEB6AA194F6C9E00FC0574 /* NSAttributedString+CCAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B75C2E7A17C5908B002B0E0D /* NSAttributedString+CCAdditions.h */; }; - D2FEB6AB194F6C9E00FC0574 /* CCResponderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734317C788EB004343C8 /* CCResponderManager.h */; }; - D2FEB6AC194F6C9E00FC0574 /* CCResponder.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734817C78EF3004343C8 /* CCResponder.h */; }; - D2FEB6AD194F6C9E00FC0574 /* CCButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45A17E7AF1C0028BE0B /* CCButton.h */; }; - D2FEB6AE194F6C9E00FC0574 /* CCParticleSystem_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D15218205EFB00E7BFCD /* CCParticleSystem_Private.h */; }; - D2FEB6AF194F6C9E00FC0574 /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; - D2FEB6B1194F6C9E00FC0574 /* CCControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45C17E7AF1C0028BE0B /* CCControl.h */; }; - D2FEB6B2194F6C9E00FC0574 /* CCControlTextureFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45E17E7AF1C0028BE0B /* CCControlTextureFactory.h */; }; - D2FEB6B4194F6C9E00FC0574 /* CCScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46017E7AF1C0028BE0B /* CCScrollView.h */; }; - D2FEB6B6194F6C9E00FC0574 /* UITouch+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */; }; - D2FEB6B7194F6C9E00FC0574 /* CCBKeyframe.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273021822F4AA0054849B /* CCBKeyframe.h */; }; - D2FEB6B9194F6C9E00FC0574 /* CCAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2530DFDEAFF00C013A5 /* CCAction.m */; }; - D2FEB6BA194F6C9E00FC0574 /* CCNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2550DFDEAFF00C013A5 /* CCNode.m */; }; - D2FEB6BB194F6C9E00FC0574 /* CCDirector.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2570DFDEAFF00C013A5 /* CCDirector.m */; }; - D2FEB6BC194F6C9E00FC0574 /* CCActionInstant.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2590DFDEAFF00C013A5 /* CCActionInstant.m */; }; - D2FEB6BD194F6C9E00FC0574 /* CCActionInterval.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25B0DFDEAFF00C013A5 /* CCActionInterval.m */; }; - D2FEB6C0194F6C9E00FC0574 /* CCPhysicsJoint.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E9180331A90072D8FE /* CCPhysicsJoint.m */; }; - D2FEB6C2194F6C9E00FC0574 /* CCTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = D26A0429194B815500503BEC /* CCTouchEvent.m */; }; - D2FEB6C3194F6C9E00FC0574 /* CCLabelTTF.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25D0DFDEAFF00C013A5 /* CCLabelTTF.m */; }; - D2FEB6C4194F6C9E00FC0574 /* CCEffectContrast.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D856720191B019900573093 /* CCEffectContrast.m */; }; - D2FEB6C5194F6C9E00FC0574 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */; }; - D2FEB6C7194F6C9E00FC0574 /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2610DFDEAFF00C013A5 /* CCScene.m */; }; - D2FEB6C8194F6C9E00FC0574 /* CCTextureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2680DFDEAFF00C013A5 /* CCTextureCache.m */; }; - D2FEB6CA194F6C9E00FC0574 /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 5038B6B10E196CD8009A621E /* CCParticleSystemBase.m */; }; - D2FEB6CB194F6C9E00FC0574 /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 504055AF0E3230BD00213FEF /* CCParticleExamples.m */; }; - D2FEB6CC194F6C9E00FC0574 /* CCScheduler.m in Sources */ = {isa = PBXBuildFile; fileRef = 506602100E38A70D000B500E /* CCScheduler.m */; }; - D2FEB6CD194F6C9E00FC0574 /* cocos2d.m in Sources */ = {isa = PBXBuildFile; fileRef = 50A07B7A0E4CBCD300AAF0BB /* cocos2d.m */; }; - D2FEB6CF194F6C9E00FC0574 /* CCBSequenceProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D2730B1822F4AA0054849B /* CCBSequenceProperty.m */; }; - D2FEB6D0194F6C9E00FC0574 /* TGAlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 501CCFAB0E99657C00B86F68 /* TGAlib.m */; }; - D2FEB6D1194F6C9E00FC0574 /* CCTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E260D718171D2000A0E872 /* CCTextField.m */; }; - D2FEB6D2194F6C9E00FC0574 /* CCActionEase.m in Sources */ = {isa = PBXBuildFile; fileRef = 50F7B2770F28DE7C00057537 /* CCActionEase.m */; }; - D2FEB6D3194F6C9E00FC0574 /* CCPhysicsShape.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A2E7D1181E12750033614C /* CCPhysicsShape.m */; }; - D2FEB6D5194F6C9E00FC0574 /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; - D2FEB6D6194F6C9E00FC0574 /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CFAC381023660000175934 /* CCTMXXMLParser.m */; }; - D2FEB6D7194F6C9E00FC0574 /* CCSprite.m in Sources */ = {isa = PBXBuildFile; fileRef = 509A79960F6188420032F449 /* CCSprite.m */; }; - D2FEB6D8194F6C9E00FC0574 /* CCTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 509D0817101E4FCE007E1749 /* CCTiledMap.m */; }; - D2FEB6D9194F6C9E00FC0574 /* CCFileUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 50C508C50F7C194400799124 /* CCFileUtils.m */; }; - D2FEB6DB194F6C9E00FC0574 /* CCTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = D25B4F4A194A499700DA9D60 /* CCTouch.m */; }; - D2FEB6DC194F6C9E00FC0574 /* CCEffectNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D272031F18FC89A000B100FF /* CCEffectNode.m */; }; - D2FEB6DD194F6C9E00FC0574 /* CCTiledMapObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D2AC9410E90DFA0068ECEB /* CCTiledMapObjectGroup.m */; }; - D2FEB6DE194F6C9E00FC0574 /* CGPointExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 503798C50F912C2000986724 /* CGPointExtension.m */; }; - D2FEB6DF194F6C9E00FC0574 /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D413250F9A3FE00040C3C8 /* CCParticleSystem.m */; }; - D2FEB6E0194F6C9E00FC0574 /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */; }; - D2FEB6E1194F6C9E00FC0574 /* CCActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */; }; - D2FEB6E2194F6C9E00FC0574 /* CCAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E775CF18527EF0004221AA /* CCAppDelegate.m */; }; - D2FEB6E3194F6C9E00FC0574 /* CCBReader.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273071822F4AA0054849B /* CCBReader.m */; }; - D2FEB6E5194F6C9E00FC0574 /* base64.c in Sources */ = {isa = PBXBuildFile; fileRef = 50F29F5510204FD60046CA73 /* base64.c */; }; - D2FEB6E7194F6C9E00FC0574 /* ZipUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 50F2A102102094550046CA73 /* ZipUtils.m */; }; - D2FEB6EA194F6C9E00FC0574 /* CCEffectStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D272032118FC89A000B100FF /* CCEffectStack.m */; }; - D2FEB6EC194F6C9E00FC0574 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AA510291280003ACFE7 /* CCRenderTexture.m */; }; - D2FEB6ED194F6C9E00FC0574 /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AD31029A126003ACFE7 /* CCMotionStreak.m */; }; - D2FEB6EE194F6C9E00FC0574 /* CCSpriteFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E2A14F10A45E7F00D894CE /* CCSpriteFrame.m */; }; - D2FEB6EF194F6C9E00FC0574 /* CCSpriteFrameCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C8BDF10A661E200D137BA /* CCSpriteFrameCache.m */; }; - D2FEB6F0194F6C9E00FC0574 /* CCTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E1357210ADEB1B00C9E7FA /* CCTexture.m */; }; - D2FEB6F1194F6C9E00FC0574 /* CCConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 503862D911007181005D2C92 /* CCConfiguration.m */; }; - D2FEB6F2194F6C9E00FC0574 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; - D2FEB6F3194F6C9E00FC0574 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50150436113300F900A9CA65 /* CCActionProgressTimer.m */; }; - D2FEB6F4194F6C9E00FC0574 /* CCTiledMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D2AC9210E90DFA0068ECEB /* CCTiledMapLayer.m */; }; - D2FEB6F5194F6C9E00FC0574 /* CCEffect.m in Sources */ = {isa = PBXBuildFile; fileRef = D272031918FC89A000B100FF /* CCEffect.m */; }; - D2FEB6F7194F6C9E00FC0574 /* CCActionTween.m in Sources */ = {isa = PBXBuildFile; fileRef = 50FBB2D9117613F500150761 /* CCActionTween.m */; }; - D2FEB6F9194F6C9E00FC0574 /* CCSpriteBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C3655A11F0AE9B001C08F9 /* CCSpriteBatchNode.m */; }; - D2FEB6FA194F6C9E00FC0574 /* ccUtils.c in Sources */ = {isa = PBXBuildFile; fileRef = E0C54DC811F9CF2700B9E4CB /* ccUtils.c */; }; - D2FEB6FB194F6C9E00FC0574 /* CCTouchAndroid.m in Sources */ = {isa = PBXBuildFile; fileRef = D23C5CBB194BC500007CA669 /* CCTouchAndroid.m */; }; - D2FEB6FC194F6C9E00FC0574 /* CCPhysicsNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E518032F390072D8FE /* CCPhysicsNode.m */; }; - D2FEB6FD194F6C9E00FC0574 /* CCGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = D285ECEF192EA92A009F4E88 /* CCGLView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D2FEB6FE194F6C9E00FC0574 /* CCLabelBMFont.m in Sources */ = {isa = PBXBuildFile; fileRef = E01E6D8B121F130E001A484F /* CCLabelBMFont.m */; }; - D2FEB701194F6C9E00FC0574 /* CCDirectorAndroid.m in Sources */ = {isa = PBXBuildFile; fileRef = D285ECF7192EF5B2009F4E88 /* CCDirectorAndroid.m */; }; - D2FEB702194F6C9E00FC0574 /* CCGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = E0EAD0F4121F4B4600B0C81C /* CCGLView.m */; }; - D2FEB703194F6C9E00FC0574 /* CCEffectBrightness.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D85671C191B018200573093 /* CCEffectBrightness.m */; }; - D2FEB705194F6C9E00FC0574 /* CCBKeyframe.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273031822F4AA0054849B /* CCBKeyframe.m */; }; - D2FEB706194F6C9E00FC0574 /* CCTexturePVR.m in Sources */ = {isa = PBXBuildFile; fileRef = E0F924701224140400EF2362 /* CCTexturePVR.m */; }; - D2FEB708194F6C9E00FC0574 /* CCAnimationCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E02BB6D5126CA93A006E46A2 /* CCAnimationCache.m */; }; - D2FEB709194F6C9E00FC0574 /* CCAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = E02BB703126CADEA006E46A2 /* CCAnimation.m */; }; - D2FEB70A194F6C9E00FC0574 /* CCShader.m in Sources */ = {isa = PBXBuildFile; fileRef = E0BC7D9C1342CE7B001B4DCC /* CCShader.m */; }; - D2FEB70F194F6C9E00FC0574 /* CCParticleBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C20AC7144FDAF700D84B47 /* CCParticleBatchNode.m */; }; - D2FEB710194F6C9E00FC0574 /* CCDirectorMac.m in Sources */ = {isa = PBXBuildFile; fileRef = A046E28C14C1DB7D0005BBF2 /* CCDirectorMac.m */; }; - D2FEB711194F6C9E00FC0574 /* CCGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = A046E29014C1DB7D0005BBF2 /* CCGLView.m */; }; - D2FEB712194F6C9E00FC0574 /* CCWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = A046E29214C1DB7D0005BBF2 /* CCWindow.m */; }; - D2FEB714194F6C9E00FC0574 /* CCBLocalizationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273051822F4AA0054849B /* CCBLocalizationManager.m */; }; - D2FEB716194F6C9E00FC0574 /* NSThread+performBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C87D1914F9A3A100C0E8B2 /* NSThread+performBlock.m */; }; - D2FEB719194F6C9E00FC0574 /* CCBsequence.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273091822F4AA0054849B /* CCBsequence.m */; }; - D2FEB71A194F6C9E00FC0574 /* CCEffectPixellate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF37620191C594A00C6D27A /* CCEffectPixellate.m */; }; - D2FEB71B194F6C9E00FC0574 /* CCActionCatmullRom.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A7A53B1514F27D00C8BD16 /* CCActionCatmullRom.m */; }; - D2FEB71D194F6C9E00FC0574 /* CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D38058191889AD6000822437 /* CCRenderer.m */; }; - D2FEB71F194F6C9E00FC0574 /* CCNode+Debug.m in Sources */ = {isa = PBXBuildFile; fileRef = A039EBFE155C686B0061EE37 /* CCNode+Debug.m */; }; - D2FEB720194F6C9E00FC0574 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; - D2FEB722194F6C9E00FC0574 /* CCDrawNode.m in Sources */ = {isa = PBXBuildFile; fileRef = A0DA0BC215BCDCA200E80A92 /* CCDrawNode.m */; }; - D2FEB727194F6C9E00FC0574 /* CCLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69DD1819E75700B983FE /* CCLayout.m */; }; - D2FEB729194F6C9E00FC0574 /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B192834163361B10049A044 /* CCClippingNode.m */; }; - D2FEB72B194F6C9E00FC0574 /* ccFPSImages.m in Sources */ = {isa = PBXBuildFile; fileRef = A003AC8E16572D6000C7B792 /* ccFPSImages.m */; }; - D2FEB72C194F6C9E00FC0574 /* CCTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B79F905917FE2A2E00908504 /* CCTableView.m */; }; - D2FEB72D194F6C9E00FC0574 /* CCSprite9Slice.m in Sources */ = {isa = PBXBuildFile; fileRef = B74C2B9A17BDA63A00A829C0 /* CCSprite9Slice.m */; }; - D2FEB72E194F6C9E00FC0574 /* NSAttributedString+CCAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B75C2E7B17C5908B002B0E0D /* NSAttributedString+CCAdditions.m */; }; - D2FEB72F194F6C9E00FC0574 /* CCLayoutBox.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69DF1819E75700B983FE /* CCLayoutBox.m */; }; - D2FEB731194F6C9E00FC0574 /* CCColor.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E776201857A159004221AA /* CCColor.m */; }; - D2FEB732194F6C9E00FC0574 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; - D2FEB734194F6C9E00FC0574 /* CCResponderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734417C788EB004343C8 /* CCResponderManager.m */; }; - D2FEB735194F6C9E00FC0574 /* CCTouchIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = D23C5CB3194BC108007CA669 /* CCTouchIOS.m */; }; - D2FEB736194F6C9E00FC0574 /* CCResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734917C78EF3004343C8 /* CCResponder.m */; }; - D2FEB737194F6C9E00FC0574 /* CCButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45B17E7AF1C0028BE0B /* CCButton.m */; }; - D2FEB738194F6C9E00FC0574 /* CCControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45D17E7AF1C0028BE0B /* CCControl.m */; }; - D2FEB739194F6C9E00FC0574 /* CCControlTextureFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45F17E7AF1C0028BE0B /* CCControlTextureFactory.m */; }; - D2FEB73A194F6C9E00FC0574 /* CCCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D380581F1889CE7700822437 /* CCCache.m */; }; - D2FEB73C194F6C9E00FC0574 /* CCScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46117E7AF1C0028BE0B /* CCScrollView.m */; }; - D2FEB73D194F6C9E00FC0574 /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */; }; - D2FEB73F194F6C9E00FC0574 /* CCPhysicsBody.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E218032ECE0072D8FE /* CCPhysicsBody.m */; }; - D2FEB745194F6C9E00FC0574 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A06D9C131728D5F600704732 /* CoreText.framework */; }; - D2FEB747194F6C9E00FC0574 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - D2FEB749194F6C9E00FC0574 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; }; - D3027C8719D33FFB00006004 /* NSValue+CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6219C3A0FD009BED7A /* NSValue+CCRenderer.m */; }; D309055018AC23110081BF11 /* CCRenderer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D309054F18AC23110081BF11 /* CCRenderer_Private.h */; }; D31C795019994126007921E1 /* CCMetalSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C794F19994126007921E1 /* CCMetalSupport.m */; }; D31C795219994197007921E1 /* CCMetalSupport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D31C795119994197007921E1 /* CCMetalSupport_Private.h */; }; @@ -962,16 +624,12 @@ D3903B11199528A0003AA81A /* CCRenderDispatch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0F199528A0003AA81A /* CCRenderDispatch.m */; }; D3903B14199528B6003AA81A /* CCMetalView.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B12199528B6003AA81A /* CCMetalView.h */; }; D3903B15199528B6003AA81A /* CCMetalView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B13199528B6003AA81A /* CCMetalView.m */; }; - D3903B16199528DB003AA81A /* CCNoARC.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0C1995288D003AA81A /* CCNoARC.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D3903B17199528DF003AA81A /* CCRenderDispatch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0F199528A0003AA81A /* CCRenderDispatch.m */; }; - D3903B18199528F3003AA81A /* CCEffectBlur.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B091995285B003AA81A /* CCEffectBlur.m */; }; D3903B1A19952ABD003AA81A /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3903B1919952ABD003AA81A /* Metal.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; D395DB2B183D739E0024997E /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E3877010446C6E00150883 /* OpenAL.framework */; }; D395DB2C183D73A70024997E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E3876E10446C6E00150883 /* AudioToolbox.framework */; }; D39FA9C818C1BC6B00441627 /* CCShader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D39FA9C718C1BC6B00441627 /* CCShader_Private.h */; }; D3A2E7D2181E12750033614C /* CCPhysicsShape.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A2E7D0181E12750033614C /* CCPhysicsShape.h */; }; D3A2E7D3181E12750033614C /* CCPhysicsShape.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A2E7D1181E12750033614C /* CCPhysicsShape.m */; }; - D3BEEFA419CFE8730055B624 /* CCRendererBasicTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6819C3A7B3009BED7A /* CCRendererBasicTypes.m */; }; D3E3752F19CC842A0076CDBB /* CCRendererSharedTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D3E3752E19CC842A0076CDBB /* CCRendererSharedTypes.h */; }; E01E6D8C121F130E001A484F /* CCLabelBMFont.h in Headers */ = {isa = PBXBuildFile; fileRef = E01E6D8A121F130E001A484F /* CCLabelBMFont.h */; }; E01E6D8D121F130E001A484F /* CCLabelBMFont.m in Sources */ = {isa = PBXBuildFile; fileRef = E01E6D8B121F130E001A484F /* CCLabelBMFont.m */; }; @@ -1022,13 +680,6 @@ remoteGlobalIDString = 7A59495B19E38BE500F65F90; remoteInfo = SSZipArchiveMac; }; - 7A9790D019E61DDB001FFC4D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 7A4036C319DE3DF6007B6E8F; - remoteInfo = SSZipArchiveAndroid; - }; 83409E3119D5B791004B7EB9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */; @@ -1143,14 +794,10 @@ 0E0094971B3ACC4B006EA7FC /* templates */ = {isa = PBXFileReference; lastKnownFileType = folder; path = templates; sourceTree = ""; }; 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRendererGLSupport.m; sourceTree = ""; }; 1435EB821A37BA7000BD04D4 /* GLActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLActivityKit.framework; path = "../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/GLActivityKit.framework"; sourceTree = ""; }; - 143F32D71A3A2E8A0019FD3C /* CoreJava.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreJava.framework; path = "../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/CoreJava.framework"; sourceTree = ""; }; - 14C4C33D1A37E39E00DD3957 /* AndroidKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AndroidKit.framework; path = "../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/AndroidKit.framework"; sourceTree = ""; }; - 14EF47A91A37F11C00A45BE4 /* JavaKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaKit.framework; path = "../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/JavaKit.framework"; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 2B192833163361B10049A044 /* CCClippingNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCClippingNode.h; sourceTree = ""; }; 2B192834163361B10049A044 /* CCClippingNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCClippingNode.m; sourceTree = ""; }; - 462D9B7E1A427E130040C5F2 /* JavaFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaFoundation.framework; path = "../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/JavaFoundation.framework"; sourceTree = ""; }; 50150435113300F900A9CA65 /* CCActionProgressTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionProgressTimer.h; sourceTree = ""; }; 50150436113300F900A9CA65 /* CCActionProgressTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionProgressTimer.m; sourceTree = ""; }; 5018F24D0DFDEAC400C013A5 /* libcocos2d.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libcocos2d.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1233,22 +880,14 @@ 50F9E8160E1AA34E000E7616 /* ccTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ccTypes.h; sourceTree = ""; }; 50FBB2D8117613F500150761 /* CCActionTween.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionTween.h; sourceTree = ""; }; 50FBB2D9117613F500150761 /* CCActionTween.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionTween.m; sourceTree = ""; }; - 571CD01C19649E03003D460C /* CCPlatformTextFieldAndroid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPlatformTextFieldAndroid.h; sourceTree = ""; }; - 571CD01D19649E03003D460C /* CCPlatformTextFieldAndroid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPlatformTextFieldAndroid.m; sourceTree = ""; }; 571CD01E19649E03003D460C /* CCPlatformTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPlatformTextField.h; sourceTree = ""; }; 571CD01F19649E03003D460C /* CCPlatformTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPlatformTextField.m; sourceTree = ""; }; 571CD02119649E03003D460C /* CCPlatformTextFieldIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPlatformTextFieldIOS.h; sourceTree = ""; }; 571CD02219649E03003D460C /* CCPlatformTextFieldIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPlatformTextFieldIOS.m; sourceTree = ""; }; 571CD02419649E03003D460C /* CCPlatformTextFieldMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPlatformTextFieldMac.h; sourceTree = ""; }; 571CD02519649E03003D460C /* CCPlatformTextFieldMac.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPlatformTextFieldMac.m; sourceTree = ""; }; - 57BFF2B71991937C00A3FE9C /* CCEditText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCEditText.h; path = java/CCEditText.h; sourceTree = ""; }; - 57BFF2B81991937C00A3FE9C /* CCEditText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCEditText.m; path = java/CCEditText.m; sourceTree = ""; }; 5BC1DE281A2E2099009C2E67 /* NSEvent+CC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSEvent+CC.h"; sourceTree = ""; }; 5BC1DE291A2E2099009C2E67 /* NSEvent+CC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSEvent+CC.m"; sourceTree = ""; }; - 5BC3CB5719626FA000C4F0D0 /* CCGestureListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCGestureListener.h; path = Android/CCGestureListener.h; sourceTree = ""; }; - 5BC3CB5819626FA000C4F0D0 /* CCGestureListener.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCGestureListener.m; path = Android/CCGestureListener.m; sourceTree = ""; }; - 5BF32696195F947800D9A51A /* CCActivity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCActivity.h; path = Android/CCActivity.h; sourceTree = ""; }; - 5BF32697195F947800D9A51A /* CCActivity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCActivity.m; path = Android/CCActivity.m; sourceTree = ""; }; 7A4037A819E37038007B6E8F /* libcocos2d-mac.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libcocos2d-mac.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7A4037C119E37117007B6E8F /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/GLKit.framework; sourceTree = DEVELOPER_DIR; }; 7A4037C319E3711D007B6E8F /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework; sourceTree = DEVELOPER_DIR; }; @@ -1396,8 +1035,6 @@ D22907AD1A2F5E440038FF61 /* CCEffectOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectOutline.m; sourceTree = ""; }; D23C5CB2194BC108007CA669 /* CCTouchIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouchIOS.h; sourceTree = ""; }; D23C5CB3194BC108007CA669 /* CCTouchIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouchIOS.m; sourceTree = ""; }; - D23C5CBA194BC500007CA669 /* CCTouchAndroid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTouchAndroid.h; path = Android/CCTouchAndroid.h; sourceTree = ""; }; - D23C5CBB194BC500007CA669 /* CCTouchAndroid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTouchAndroid.m; path = Android/CCTouchAndroid.m; sourceTree = ""; }; D24160F61958F6EE003673BD /* CCAnimationManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCAnimationManager_Private.h; path = "cocos2d-ui/CCBReader/CCAnimationManager_Private.h"; sourceTree = ""; }; D24160F71958F6EE003673BD /* CCAnimationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCAnimationManager.h; path = "cocos2d-ui/CCBReader/CCAnimationManager.h"; sourceTree = ""; }; D24160F81958F6EE003673BD /* CCAnimationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCAnimationManager.m; path = "cocos2d-ui/CCBReader/CCAnimationManager.m"; sourceTree = ""; }; @@ -1440,10 +1077,6 @@ D27451B619AE5517006DA0A1 /* CCEffectDistanceField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDistanceField.m; sourceTree = ""; }; D27451C419B111A9006DA0A1 /* CCEffectDFOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDFOutline.h; sourceTree = ""; }; D27451C519B111A9006DA0A1 /* CCEffectDFOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDFOutline.m; sourceTree = ""; }; - D285ECEE192EA92A009F4E88 /* CCGLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCGLView.h; path = Android/CCGLView.h; sourceTree = ""; }; - D285ECEF192EA92A009F4E88 /* CCGLView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCGLView.m; path = Android/CCGLView.m; sourceTree = ""; }; - D285ECF6192EF5B2009F4E88 /* CCDirectorAndroid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCDirectorAndroid.h; path = Android/CCDirectorAndroid.h; sourceTree = ""; }; - D285ECF7192EF5B2009F4E88 /* CCDirectorAndroid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCDirectorAndroid.m; path = Android/CCDirectorAndroid.m; sourceTree = ""; }; D28A2E151954F66E00ADC03D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; D28A2E1A1954F68D00ADC03D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; D28A2E1C1954F7E000ADC03D /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; @@ -1451,18 +1084,6 @@ D299CE7819C2910B00519CBB /* CCEffectDFInnerGlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDFInnerGlow.h; sourceTree = ""; }; D299CE7919C2910B00519CBB /* CCEffectDFInnerGlow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDFInnerGlow.m; sourceTree = ""; }; D2B840C31909F447008063EA /* CCRenderTexture_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCRenderTexture_Private.h; sourceTree = ""; }; - D2DDB08819805E8400233D80 /* CCMathUtilsAndroid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCMathUtilsAndroid.h; path = Platforms/Android/CCMathUtilsAndroid.h; sourceTree = ""; }; - D2DDB08919805E8400233D80 /* CCMatrix3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCMatrix3.h; path = Platforms/Android/CCMatrix3.h; sourceTree = ""; }; - D2DDB08A19805E8400233D80 /* CCMatrix4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCMatrix4.h; path = Platforms/Android/CCMatrix4.h; sourceTree = ""; }; - D2DDB08B19805E8400233D80 /* CCQuaternion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCQuaternion.h; path = Platforms/Android/CCQuaternion.h; sourceTree = ""; }; - D2DDB08C19805E8400233D80 /* CCMathTypesAndroid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCMathTypesAndroid.h; path = Platforms/Android/CCMathTypesAndroid.h; sourceTree = ""; }; - D2DDB08D19805E8400233D80 /* CCMatrix4.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCMatrix4.m; path = Platforms/Android/CCMatrix4.m; sourceTree = ""; }; - D2DDB08E19805E8400233D80 /* CCVector3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCVector3.h; path = Platforms/Android/CCVector3.h; sourceTree = ""; }; - D2DDB08F19805E8400233D80 /* CCVector4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCVector4.h; path = Platforms/Android/CCVector4.h; sourceTree = ""; }; - D2DDB09019805E8400233D80 /* CCVector2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCVector2.h; path = Platforms/Android/CCVector2.h; sourceTree = ""; }; - D2DDB09119805E8400233D80 /* CCQuaternion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCQuaternion.m; path = Platforms/Android/CCQuaternion.m; sourceTree = ""; }; - D2DDB09219805E8400233D80 /* CCMatrix3.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCMatrix3.m; path = Platforms/Android/CCMatrix3.m; sourceTree = ""; }; - D2FEB74F194F6C9E00FC0574 /* libcocos2dAndroid.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libcocos2dAndroid.a; sourceTree = BUILT_PRODUCTS_DIR; }; D309054F18AC23110081BF11 /* CCRenderer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderer_Private.h; sourceTree = ""; }; D31C794F19994126007921E1 /* CCMetalSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMetalSupport.m; sourceTree = ""; }; D31C795119994197007921E1 /* CCMetalSupport_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMetalSupport_Private.h; sourceTree = ""; }; @@ -1578,21 +1199,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D2FEB740194F6C9E00FC0574 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 462D9B7F1A427E130040C5F2 /* JavaFoundation.framework in Frameworks */, - 14EF47AA1A37F11C00A45BE4 /* JavaKit.framework in Frameworks */, - 14C4C33E1A37E39E00DD3957 /* AndroidKit.framework in Frameworks */, - 1435EB831A37BA7000BD04D4 /* GLActivityKit.framework in Frameworks */, - 7A97912B19E646F9001FFC4D /* libSSZipArchiveAndroid.a in Frameworks */, - D2FEB745194F6C9E00FC0574 /* CoreText.framework in Frameworks */, - D2FEB747194F6C9E00FC0574 /* Foundation.framework in Frameworks */, - D2FEB749194F6C9E00FC0574 /* CoreGraphics.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -1609,7 +1215,6 @@ isa = PBXGroup; children = ( 5018F24D0DFDEAC400C013A5 /* libcocos2d.a */, - D2FEB74F194F6C9E00FC0574 /* libcocos2dAndroid.a */, 7A4037A819E37038007B6E8F /* libcocos2d-mac.a */, B7E7DE341A76DB7D004234B7 /* cocos2dMacFramework.framework */, ); @@ -1653,10 +1258,6 @@ B7E7DE741A76EBF0004234B7 /* GLKit.framework */, B7E7DE721A76EBEA004234B7 /* OpenGL.framework */, B77582CD1A76CDB200C8589F /* libz.dylib */, - 462D9B7E1A427E130040C5F2 /* JavaFoundation.framework */, - 143F32D71A3A2E8A0019FD3C /* CoreJava.framework */, - 14EF47A91A37F11C00A45BE4 /* JavaKit.framework */, - 14C4C33D1A37E39E00DD3957 /* AndroidKit.framework */, 1435EB821A37BA7000BD04D4 /* GLActivityKit.framework */, 7A4037C719E3712A007B6E8F /* OpenGL.framework */, 7A4037C519E37126007B6E8F /* QuartzCore.framework */, @@ -1943,7 +1544,6 @@ 571CD01A19649E03003D460C /* Platform */ = { isa = PBXGroup; children = ( - 571CD01B19649E03003D460C /* Android */, 571CD01E19649E03003D460C /* CCPlatformTextField.h */, 571CD01F19649E03003D460C /* CCPlatformTextField.m */, 571CD02019649E03003D460C /* iOS */, @@ -1953,17 +1553,6 @@ path = "cocos2d-ui/Platform"; sourceTree = ""; }; - 571CD01B19649E03003D460C /* Android */ = { - isa = PBXGroup; - children = ( - 571CD01C19649E03003D460C /* CCPlatformTextFieldAndroid.h */, - 571CD01D19649E03003D460C /* CCPlatformTextFieldAndroid.m */, - 57BFF2B71991937C00A3FE9C /* CCEditText.h */, - 57BFF2B81991937C00A3FE9C /* CCEditText.m */, - ); - path = Android; - sourceTree = ""; - }; 571CD02019649E03003D460C /* iOS */ = { isa = PBXGroup; children = ( @@ -2273,43 +1862,6 @@ name = DistanceField; sourceTree = ""; }; - D285ECED192E7E06009F4E88 /* Android */ = { - isa = PBXGroup; - children = ( - D2A3CFA51947B51D003B7D0B /* Math */, - 5BF32696195F947800D9A51A /* CCActivity.h */, - 5BF32697195F947800D9A51A /* CCActivity.m */, - D285ECEE192EA92A009F4E88 /* CCGLView.h */, - D285ECEF192EA92A009F4E88 /* CCGLView.m */, - D285ECF6192EF5B2009F4E88 /* CCDirectorAndroid.h */, - D285ECF7192EF5B2009F4E88 /* CCDirectorAndroid.m */, - D23C5CBA194BC500007CA669 /* CCTouchAndroid.h */, - D23C5CBB194BC500007CA669 /* CCTouchAndroid.m */, - 5BC3CB5719626FA000C4F0D0 /* CCGestureListener.h */, - 5BC3CB5819626FA000C4F0D0 /* CCGestureListener.m */, - ); - name = Android; - sourceTree = ""; - }; - D2A3CFA51947B51D003B7D0B /* Math */ = { - isa = PBXGroup; - children = ( - D2DDB08819805E8400233D80 /* CCMathUtilsAndroid.h */, - D2DDB08919805E8400233D80 /* CCMatrix3.h */, - D2DDB08A19805E8400233D80 /* CCMatrix4.h */, - D2DDB08B19805E8400233D80 /* CCQuaternion.h */, - D2DDB08C19805E8400233D80 /* CCMathTypesAndroid.h */, - D2DDB08D19805E8400233D80 /* CCMatrix4.m */, - D2DDB08E19805E8400233D80 /* CCVector3.h */, - D2DDB08F19805E8400233D80 /* CCVector4.h */, - D2DDB09019805E8400233D80 /* CCVector2.h */, - D2DDB09119805E8400233D80 /* CCQuaternion.m */, - D2DDB09219805E8400233D80 /* CCMatrix3.m */, - ); - name = Math; - path = ..; - sourceTree = ""; - }; D34CAD5E19C3A070009BED7A /* Rendering */ = { isa = PBXGroup; children = ( @@ -2361,7 +1913,6 @@ E0EAD0E8121F4B4600B0C81C /* Platforms */ = { isa = PBXGroup; children = ( - D285ECED192E7E06009F4E88 /* Android */, E0EAD0E9121F4B4600B0C81C /* iOS */, E0E9749E1237E4EA00E3E64B /* Mac */, E0EAD19C121F4D7300B0C81C /* CCGL.h */, @@ -2409,7 +1960,6 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D2DDB09919805E8400233D80 /* CCQuaternion.h in Headers */, B7D273111822F4AA0054849B /* CCBLocalizationManager.h in Headers */, 5018F2690DFDEAFF00C013A5 /* CCAction.h in Headers */, 5018F26B0DFDEAFF00C013A5 /* CCNode.h in Headers */, @@ -2423,7 +1973,6 @@ 5018F27D0DFDEAFF00C013A5 /* CCTextureCache.h in Headers */, D380581A1889AD6000822437 /* CCRenderer.h in Headers */, 5038B6B20E196CD8009A621E /* CCParticleSystemBase.h in Headers */, - D2DDB09B19805E8400233D80 /* CCMathTypesAndroid.h in Headers */, 9D856721191B019900573093 /* CCEffectContrast.h in Headers */, 50F9E8170E1AA34E000E7616 /* ccTypes.h in Headers */, D3A2E7D2181E12750033614C /* CCPhysicsShape.h in Headers */, @@ -2435,7 +1984,6 @@ 83E1A86419C8ACA0000A3BCA /* CCPackageConstants.h in Headers */, D24160FE1958F6EE003673BD /* CCAnimationManager.h in Headers */, 50305AF40E40E33200F63373 /* cocos2d.h in Headers */, - D285ECF8192EF5B2009F4E88 /* CCDirectorAndroid.h in Headers */, 501CCFB50E99657C00B86F68 /* TGAlib.h in Headers */, 50F7B2780F28DE7C00057537 /* CCActionEase.h in Headers */, 571CD02819649E03003D460C /* CCPlatformTextField.h in Headers */, @@ -2454,13 +2002,11 @@ 502C6C6C0FB87970002BF3C2 /* CCParallaxNode.h in Headers */, 571CD02A19649E03003D460C /* CCPlatformTextFieldIOS.h in Headers */, B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */, - D2DDB09719805E8400233D80 /* CCMatrix4.h in Headers */, D24161111958F72B003673BD /* CCEffectStackProtocol.h in Headers */, B7EE69E21819E75700B983FE /* CCLayoutBox.h in Headers */, D23C5CB4194BC108007CA669 /* CCTouchIOS.h in Headers */, D272032518FC89A000B100FF /* CCEffect.h in Headers */, D268FE191980791400ECBCD0 /* CCEffectRefraction.h in Headers */, - D2DDB09F19805E8400233D80 /* CCVector3.h in Headers */, 9D1B4A991A02E90300B2DD9B /* CCLightGroups.h in Headers */, D3903B10199528A0003AA81A /* CCRenderDispatch.h in Headers */, D272032418FC89A000B100FF /* CCEffect_Private.h in Headers */, @@ -2488,7 +2034,6 @@ 83E1A87619C8ACC1000A3BCA /* CCPackageDownload.h in Headers */, 505462FC1062768000AB7C52 /* ccConfig.h in Headers */, 50E2A15010A45E7F00D894CE /* CCSpriteFrame.h in Headers */, - D2DDB0A319805E8400233D80 /* CCVector2.h in Headers */, B7E776211857A159004221AA /* CCColor.h in Headers */, 50E2A25210A46CC600D894CE /* CCProtocols.h in Headers */, 502C8BE010A661E200D137BA /* CCSpriteFrameCache.h in Headers */, @@ -2501,21 +2046,16 @@ B7D273151822F4AA0054849B /* CCBSequence.h in Headers */, 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */, 9D2773B51AB77F3800D19A11 /* CCEffectStereo.h in Headers */, - D285ECF0192EA92A009F4E88 /* CCGLView.h in Headers */, 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */, D24161091958F72B003673BD /* CCEffectRenderer.h in Headers */, 83E1A88619C8ACDC000A3BCA /* CCPackageCocos2dEnabler.h in Headers */, 50FBB2DA117613F500150761 /* CCActionTween.h in Headers */, - D2DDB0A119805E8400233D80 /* CCVector4.h in Headers */, 50D898F31192CB7500458C29 /* uthash.h in Headers */, 508EAC311193F8B0007F058D /* utlist.h in Headers */, E0C3655B11F0AE9B001C08F9 /* CCSpriteBatchNode.h in Headers */, E0C54DCB11F9CF2700B9E4CB /* ccUtils.h in Headers */, - D23C5CBC194BC500007CA669 /* CCTouchAndroid.h in Headers */, E01E6D8C121F130E001A484F /* CCLabelBMFont.h in Headers */, - 1426D9951A38D24A00A579AF /* CCGestureListener.h in Headers */, 83E1A86D19C8ACAF000A3BCA /* CCPackageUnzipper.h in Headers */, - D2DDB09519805E8400233D80 /* CCMatrix3.h in Headers */, E0EAD0FF121F4B4600B0C81C /* CCDirectorIOS.h in Headers */, 83E1A86219C8ACA0000A3BCA /* CCPackage.h in Headers */, E0EAD108121F4B4600B0C81C /* CCGLView.h in Headers */, @@ -2536,7 +2076,6 @@ D3E3752F19CC842A0076CDBB /* CCRendererSharedTypes.h in Headers */, B7E775D018527EF0004221AA /* CCAppDelegate.h in Headers */, E0BC7D9F1342CE7B001B4DCC /* CCShader.h in Headers */, - D2DDB09319805E8400233D80 /* CCMathUtilsAndroid.h in Headers */, D39FA9C818C1BC6B00441627 /* CCShader_Private.h in Headers */, A0C20AC8144FDAF700D84B47 /* CCParticleBatchNode.h in Headers */, A046E29314C1DB7D0005BBF2 /* CCDirectorMac.h in Headers */, @@ -2577,7 +2116,6 @@ B78AE46417E7AF1C0028BE0B /* CCControl.h in Headers */, 9DDD047E19DE154400687820 /* CCEffectLighting.h in Headers */, B78AE46617E7AF1C0028BE0B /* CCControlTextureFactory.h in Headers */, - 571CD02619649E03003D460C /* CCPlatformTextFieldAndroid.h in Headers */, B78AE46817E7AF1C0028BE0B /* CCScrollView.h in Headers */, B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */, B7D2730F1822F4AA0054849B /* CCBKeyframe.h in Headers */, @@ -2725,18 +2263,6 @@ 7A59471819E3730100F65F90 /* CCRenderer.h in Headers */, 7A59471919E3730100F65F90 /* CCRenderer_Private.h in Headers */, 7A59471A19E3730200F65F90 /* CCRenderer.m in Headers */, - 7A59471C19E3730200F65F90 /* CCMathUtilsAndroid.h in Headers */, - 7A59471D19E3730200F65F90 /* CCMatrix3.h in Headers */, - 7A59471E19E3730300F65F90 /* CCMatrix4.h in Headers */, - 7A59471F19E3730300F65F90 /* CCQuaternion.h in Headers */, - 7A59472019E3730300F65F90 /* CCMathTypesAndroid.h in Headers */, - 7A59472219E3730400F65F90 /* CCVector3.h in Headers */, - 7A59472319E3730400F65F90 /* CCVector4.h in Headers */, - 7A59472419E3730400F65F90 /* CCVector2.h in Headers */, - 7A59472A19E3730500F65F90 /* CCActivity.h in Headers */, - 7A59472E19E3730600F65F90 /* CCDirectorAndroid.h in Headers */, - 7A59473019E3730700F65F90 /* CCTouchAndroid.h in Headers */, - 7A59473219E3730800F65F90 /* CCGestureListener.h in Headers */, 7A59473519E3730800F65F90 /* CCMetalView.h in Headers */, 7A59473719E3730900F65F90 /* UITouch+CC.h in Headers */, 7A59473919E3730900F65F90 /* CCDirectorIOS.h in Headers */, @@ -2794,173 +2320,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D2FEB610194F6C9E00FC0574 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - D2FEB611194F6C9E00FC0574 /* CCBLocalizationManager.h in Headers */, - D2FEB612194F6C9E00FC0574 /* CCAction.h in Headers */, - D2FEB613194F6C9E00FC0574 /* CCNode.h in Headers */, - D2FEB614194F6C9E00FC0574 /* CCDirector.h in Headers */, - D2FEB616194F6C9E00FC0574 /* CCActionInstant.h in Headers */, - D2FEB618194F6C9E00FC0574 /* CCActionInterval.h in Headers */, - D268FE281980791D00ECBCD0 /* CCEffectHue.h in Headers */, - D2FEB619194F6C9E00FC0574 /* CCLabelTTF.h in Headers */, - BC9F4E9E19DB649800B25F01 /* CCPackageCocos2dEnabler.h in Headers */, - D2FEB61A194F6C9E00FC0574 /* CCNodeColor.h in Headers */, - D2FEB61B194F6C9E00FC0574 /* CCScene.h in Headers */, - D2FEB61C194F6C9E00FC0574 /* CCTextureCache.h in Headers */, - 5BC3CB5919626FA000C4F0D0 /* CCGestureListener.h in Headers */, - D2FEB61E194F6C9E00FC0574 /* CCRenderer.h in Headers */, - D2DDB09619805E8400233D80 /* CCMatrix3.h in Headers */, - D268FE1A1980791400ECBCD0 /* CCEffectRefraction.h in Headers */, - D2FEB622194F6C9E00FC0574 /* CCParticleSystemBase.h in Headers */, - D2FEB625194F6C9E00FC0574 /* CCEffectContrast.h in Headers */, - D2FEB627194F6C9E00FC0574 /* ccTypes.h in Headers */, - D2DDB0A219805E8400233D80 /* CCVector4.h in Headers */, - D2FEB628194F6C9E00FC0574 /* CCPhysicsShape.h in Headers */, - D2FEB629194F6C9E00FC0574 /* CCParticleExamples.h in Headers */, - BC9F4E9F19DB649C00B25F01 /* CCPackageInstaller.h in Headers */, - D268FE2E1980791D00ECBCD0 /* CCEffectStack_Private.h in Headers */, - D2FEB62A194F6C9E00FC0574 /* CCScheduler.h in Headers */, - D241610A1958F72B003673BD /* CCEffectRenderer.h in Headers */, - D2FEB62F194F6C9E00FC0574 /* cocos2d.h in Headers */, - D2FEB630194F6C9E00FC0574 /* CCDirectorAndroid.h in Headers */, - 9D1B4A9A1A02E90300B2DD9B /* CCLightGroups.h in Headers */, - D2FEB633194F6C9E00FC0574 /* TGAlib.h in Headers */, - D2FEB636194F6C9E00FC0574 /* CCActionEase.h in Headers */, - D2FEB637194F6C9E00FC0574 /* CCSprite_Private.h in Headers */, - 7A59493E19E3803200F65F90 /* CCEffectBlur.h in Headers */, - D2FEB638194F6C9E00FC0574 /* ccMacros.h in Headers */, - D2FEB639194F6C9E00FC0574 /* CCNode_Private.h in Headers */, - D268FE241980791D00ECBCD0 /* CCEffectBloom.h in Headers */, - D2FEB63A194F6C9E00FC0574 /* CCSprite.h in Headers */, - D24161131958F738003673BD /* CCAnimationManager_Private.h in Headers */, - 9D9205D31A0173D600FF2D6D /* CCLightCollection.h in Headers */, - D2FEB63B194F6C9E00FC0574 /* CCFileUtils.h in Headers */, - D2FEB63E194F6C9E00FC0574 /* CGPointExtension.h in Headers */, - D2FEB63F194F6C9E00FC0574 /* CCParticleSystem.h in Headers */, - BC9F4E9719DB643F00B25F01 /* CCPackageConstants.h in Headers */, - 9D2773B61AB77F3800D19A11 /* CCEffectStereo.h in Headers */, - D2DDB09C19805E8400233D80 /* CCMathTypesAndroid.h in Headers */, - D268FE261980791D00ECBCD0 /* CCEffectGlass.h in Headers */, - D2FEB640194F6C9E00FC0574 /* CCParallaxNode.h in Headers */, - D2FEB641194F6C9E00FC0574 /* CCTexture_Private.h in Headers */, - D2FEB644194F6C9E00FC0574 /* CCLayoutBox.h in Headers */, - D2FEB645194F6C9E00FC0574 /* CCTouchIOS.h in Headers */, - 9D03A5EC1A02F61A00C651C8 /* CCLightNode_Private.h in Headers */, - D2FEB646194F6C9E00FC0574 /* CCEffect.h in Headers */, - D27451C719B111A9006DA0A1 /* CCEffectDFOutline.h in Headers */, - D24161141958F738003673BD /* CCAnimationManager.h in Headers */, - D2FEB647194F6C9E00FC0574 /* CCEffect_Private.h in Headers */, - BC9F4EA019DB649E00B25F01 /* CCPackageHelper.h in Headers */, - D2FEB648194F6C9E00FC0574 /* CCEffectStack.h in Headers */, - D2FEB64A194F6C9E00FC0574 /* CCTextField.h in Headers */, - D2FEB64B194F6C9E00FC0574 /* CCBReader.h in Headers */, - D2FEB64C194F6C9E00FC0574 /* CCEffectPixellate.h in Headers */, - D2FEB64D194F6C9E00FC0574 /* CCActionManager.h in Headers */, - D2FEB64E194F6C9E00FC0574 /* CCTiledMap.h in Headers */, - D2FEB64F194F6C9E00FC0574 /* base64.h in Headers */, - BC9F4E9819DB644600B25F01 /* CCPackageManager.h in Headers */, - BC9F4E9919DB644900B25F01 /* CCPackageManagerDelegate.h in Headers */, - D2FEB650194F6C9E00FC0574 /* ZipUtils.h in Headers */, - D22907AF1A2F5E440038FF61 /* CCEffectOutline.h in Headers */, - D2FEB652194F6C9E00FC0574 /* CCTMXXMLParser.h in Headers */, - D2FEB653194F6C9E00FC0574 /* CCRenderTexture.h in Headers */, - D2FEB654194F6C9E00FC0574 /* CCBSequenceProperty.h in Headers */, - D2FEB655194F6C9E00FC0574 /* CCMotionStreak.h in Headers */, - D2FEB656194F6C9E00FC0574 /* CCCache.h in Headers */, - D2FEB657194F6C9E00FC0574 /* CCRenderer_Private.h in Headers */, - D2FEB659194F6C9E00FC0574 /* ccConfig.h in Headers */, - D2FEB65A194F6C9E00FC0574 /* CCSpriteFrame.h in Headers */, - D2FEB65B194F6C9E00FC0574 /* CCColor.h in Headers */, - D2FEB65C194F6C9E00FC0574 /* CCProtocols.h in Headers */, - D2FEB65D194F6C9E00FC0574 /* CCSpriteFrameCache.h in Headers */, - D2FEB65E194F6C9E00FC0574 /* CCTableView.h in Headers */, - D268FE2A1980791D00ECBCD0 /* CCEffectReflection.h in Headers */, - D2FEB65F194F6C9E00FC0574 /* CCTexture.h in Headers */, - D2FEB660194F6C9E00FC0574 /* CCTiledMapLayer.h in Headers */, - BC9F4E9C19DB646000B25F01 /* CCPackageDownloadManager.h in Headers */, - D24161161958F738003673BD /* CCAnimationManager+FrameAnimation.h in Headers */, - D27451AB19AD430A006DA0A1 /* CCEffectDropShadow.h in Headers */, - D2FEB664194F6C9E00FC0574 /* CCTiledMapObjectGroup.h in Headers */, - 5BF32698195F947800D9A51A /* CCActivity.h in Headers */, - D2FEB665194F6C9E00FC0574 /* CCBSequence.h in Headers */, - D2FEB666194F6C9E00FC0574 /* CCProfiling.h in Headers */, - D2DDB09819805E8400233D80 /* CCMatrix4.h in Headers */, - D2FEB667194F6C9E00FC0574 /* CCGLView.h in Headers */, - D2FEB668194F6C9E00FC0574 /* CCActionProgressTimer.h in Headers */, - D2FEB66B194F6C9E00FC0574 /* CCActionTween.h in Headers */, - BC9F4E9B19DB644E00B25F01 /* CCPackageDownload.h in Headers */, - D2DDB0A019805E8400233D80 /* CCVector3.h in Headers */, - D2FEB66D194F6C9E00FC0574 /* uthash.h in Headers */, - D2FEB66E194F6C9E00FC0574 /* utlist.h in Headers */, - D2FEB670194F6C9E00FC0574 /* CCSpriteBatchNode.h in Headers */, - D2FEB671194F6C9E00FC0574 /* ccUtils.h in Headers */, - D2FEB673194F6C9E00FC0574 /* CCTouchAndroid.h in Headers */, - D2FEB674194F6C9E00FC0574 /* CCLabelBMFont.h in Headers */, - D2FEB678194F6C9E00FC0574 /* CCGLView.h in Headers */, - D2FEB679194F6C9E00FC0574 /* CCLabelBMFont_Private.h in Headers */, - D2FEB67D194F6C9E00FC0574 /* CCGL.h in Headers */, - D2FEB67E194F6C9E00FC0574 /* CCConfiguration.h in Headers */, - D2FEB67F194F6C9E00FC0574 /* CCEffectBrightness.h in Headers */, - D2FEB680194F6C9E00FC0574 /* CCEffectNode.h in Headers */, - D24161121958F72B003673BD /* CCEffectStackProtocol.h in Headers */, - D2FEB682194F6C9E00FC0574 /* CCTexturePVR.h in Headers */, - D2FEB683194F6C9E00FC0574 /* CCNS.h in Headers */, - D2FEB684194F6C9E00FC0574 /* CCAnimationCache.h in Headers */, - D2FEB685194F6C9E00FC0574 /* CCAnimation.h in Headers */, - D2DDB0A419805E8400233D80 /* CCVector2.h in Headers */, - BC9F4E9A19DB644B00B25F01 /* CCPackageTypes.h in Headers */, - D2FEB686194F6C9E00FC0574 /* CCBuilderReader.h in Headers */, - BC9F4EA119DB64A200B25F01 /* CCPackage_private.h in Headers */, - D2FEB687194F6C9E00FC0574 /* CCAppDelegate.h in Headers */, - D2FEB688194F6C9E00FC0574 /* CCShader.h in Headers */, - D27451BE19AEC84F006DA0A1 /* CCEffectDistanceField.h in Headers */, - D268FE1E1980791400ECBCD0 /* CCEffectUtils.h in Headers */, - D2FEB68C194F6C9E00FC0574 /* CCShader_Private.h in Headers */, - BC9F4E9619DB643C00B25F01 /* CCPackage.h in Headers */, - D2FEB68E194F6C9E00FC0574 /* CCParticleBatchNode.h in Headers */, - D2FEB690194F6C9E00FC0574 /* CCDirectorMac.h in Headers */, - D2FEB691194F6C9E00FC0574 /* CCGLView.h in Headers */, - D2FEB692194F6C9E00FC0574 /* CCWindow.h in Headers */, - D2FEB693194F6C9E00FC0574 /* CCProgressNode.h in Headers */, - 9DC780B71A1175F000DD5A4B /* CCLightNode.h in Headers */, - D2DDB09419805E8400233D80 /* CCMathUtilsAndroid.h in Headers */, - D2FEB694194F6C9E00FC0574 /* CCLayout.h in Headers */, - D299CE7B19C2910B00519CBB /* CCEffectDFInnerGlow.h in Headers */, - 9D03A5F31A02F8C100C651C8 /* CCEffectLighting.h in Headers */, - D2FEB695194F6C9E00FC0574 /* NSThread+performBlock.h in Headers */, - D2FEB696194F6C9E00FC0574 /* CCTiledMapLayer_Private.h in Headers */, - D2FEB69A194F6C9E00FC0574 /* CCTransition.h in Headers */, - D2FEB69B194F6C9E00FC0574 /* CCProgressNode_Private.h in Headers */, - D2FEB69D194F6C9E00FC0574 /* CCParticleSystemBase_Private.h in Headers */, - D2FEB69F194F6C9E00FC0574 /* CCTouch.h in Headers */, - D2FEB6A0194F6C9E00FC0574 /* CCActionCatmullRom.h in Headers */, - D2FEB6A2194F6C9E00FC0574 /* CCNode+Debug.h in Headers */, - D2FEB6A3194F6C9E00FC0574 /* CCDrawNode.h in Headers */, - D2FEB6A4194F6C9E00FC0574 /* CCClippingNode.h in Headers */, - D2FEB6A6194F6C9E00FC0574 /* CCSlider.h in Headers */, - D2FEB6A7194F6C9E00FC0574 /* ccFPSImages.h in Headers */, - D2FEB6A8194F6C9E00FC0574 /* CCSprite9Slice.h in Headers */, - D2FEB6A9194F6C9E00FC0574 /* CCBReader_Private.h in Headers */, - D2FEB6AA194F6C9E00FC0574 /* NSAttributedString+CCAdditions.h in Headers */, - D2FEB6AB194F6C9E00FC0574 /* CCResponderManager.h in Headers */, - D2DDB09A19805E8400233D80 /* CCQuaternion.h in Headers */, - D2FEB6AC194F6C9E00FC0574 /* CCResponder.h in Headers */, - D2FEB6AD194F6C9E00FC0574 /* CCButton.h in Headers */, - D2FEB6AE194F6C9E00FC0574 /* CCParticleSystem_Private.h in Headers */, - BC9F4E9D19DB646300B25F01 /* CCPackageDownloadManagerDelegate.h in Headers */, - D2FEB6AF194F6C9E00FC0574 /* CCTouchEvent.h in Headers */, - D2FEB6B1194F6C9E00FC0574 /* CCControl.h in Headers */, - D241610E1958F72B003673BD /* CCEffectSaturation.h in Headers */, - D2FEB6B2194F6C9E00FC0574 /* CCControlTextureFactory.h in Headers */, - D2FEB6B4194F6C9E00FC0574 /* CCScrollView.h in Headers */, - D2FEB6B6194F6C9E00FC0574 /* UITouch+CC.h in Headers */, - D2FEB6B7194F6C9E00FC0574 /* CCBKeyframe.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -3020,24 +2379,6 @@ productReference = B7E7DE341A76DB7D004234B7 /* cocos2dMacFramework.framework */; productType = "com.apple.product-type.framework"; }; - D2FEB60D194F6C9E00FC0574 /* cocos2dAndroid */ = { - isa = PBXNativeTarget; - buildConfigurationList = D2FEB74C194F6C9E00FC0574 /* Build configuration list for PBXNativeTarget "cocos2dAndroid" */; - buildPhases = ( - D2FEB610194F6C9E00FC0574 /* Headers */, - D2FEB740194F6C9E00FC0574 /* Frameworks */, - D2FEB6B8194F6C9E00FC0574 /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - 7A9790D119E61DDB001FFC4D /* PBXTargetDependency */, - ); - name = cocos2dAndroid; - productName = cocos2d; - productReference = D2FEB74F194F6C9E00FC0574 /* libcocos2dAndroid.a */; - productType = "com.apple.product-type.library.static"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -3086,7 +2427,6 @@ targets = ( 5018F24C0DFDEAC400C013A5 /* cocos2d-ios */, B772F6B118120CC9005C069B /* appledoc */, - D2FEB60D194F6C9E00FC0574 /* cocos2dAndroid */, 7A4037A719E37038007B6E8F /* cocos2d-mac */, B7E7DE331A76DB7D004234B7 /* cocos2dMacFramework */, ); @@ -3245,11 +2585,9 @@ 9D2773B81AB77F3800D19A11 /* CCEffectStereo.m in Sources */, 5018F27E0DFDEAFF00C013A5 /* CCTextureCache.m in Sources */, D31C795019994126007921E1 /* CCMetalSupport.m in Sources */, - D2DDB09D19805E8400233D80 /* CCMatrix4.m in Sources */, 5038B6B30E196CD8009A621E /* CCParticleSystemBase.m in Sources */, 504055B10E3230BD00213FEF /* CCParticleExamples.m in Sources */, 506602120E38A70D000B500E /* CCScheduler.m in Sources */, - D2DDB0A719805E8400233D80 /* CCMatrix3.m in Sources */, D24161031958F6EE003673BD /* CCBAnimationManager.m in Sources */, 50A07B7B0E4CBCD300AAF0BB /* cocos2d.m in Sources */, B7D273181822F4AA0054849B /* CCBSequenceProperty.m in Sources */, @@ -3302,12 +2640,10 @@ D268FE1F1980791400ECBCD0 /* CCEffectUtils.m in Sources */, D33803E618032F390072D8FE /* CCPhysicsNode.m in Sources */, D24160FF1958F6EE003673BD /* CCAnimationManager.m in Sources */, - D285ECF1192EA92A009F4E88 /* CCGLView.m in Sources */, 9DDD047F19DE154400687820 /* CCEffectLighting.m in Sources */, E01E6D8D121F130E001A484F /* CCLabelBMFont.m in Sources */, E0EAD100121F4B4600B0C81C /* CCDirectorIOS.m in Sources */, D24161011958F6EE003673BD /* CCAnimationManager+FrameAnimation.m in Sources */, - D285ECF9192EF5B2009F4E88 /* CCDirectorAndroid.m in Sources */, D268FE0E198078FF00ECBCD0 /* CCEffectBloom.m in Sources */, E0EAD109121F4B4600B0C81C /* CCGLView.m in Sources */, 9D85671E191B018200573093 /* CCEffectBrightness.m in Sources */, @@ -3330,7 +2666,6 @@ D380581B1889AD6000822437 /* CCRenderer.m in Sources */, D369415F19CFDF170092A0BD /* CCRendererBasicTypes.m in Sources */, A039EC00155C686B0061EE37 /* CCNode+Debug.m in Sources */, - D2DDB0A519805E8400233D80 /* CCQuaternion.m in Sources */, D36D31B718BD3CAA00E45F08 /* CCProgressNode.m in Sources */, 83E1A86719C8ACA0000A3BCA /* CCPackageManager.m in Sources */, D27451B819AE5517006DA0A1 /* CCEffectDistanceField.m in Sources */, @@ -3469,13 +2804,7 @@ 7A59486019E375AE00F65F90 /* CCShader.m in Sources */, 7A59486219E375AE00F65F90 /* NSValue+CCRenderer.m in Sources */, 7A59486519E375AE00F65F90 /* CCRenderer.m in Sources */, - 7A59486C19E375AF00F65F90 /* CCMatrix4.m in Sources */, - 7A59487019E375B000F65F90 /* CCQuaternion.m in Sources */, D22907B31A2F5E440038FF61 /* CCEffectOutline.m in Sources */, - 7A59487119E375B000F65F90 /* CCMatrix3.m in Sources */, - 7A59487619E375B000F65F90 /* CCActivity.m in Sources */, - 7A59487A19E375B100F65F90 /* CCDirectorAndroid.m in Sources */, - 7A59487E19E375B100F65F90 /* CCGestureListener.m in Sources */, 7A59488119E375B200F65F90 /* CCMetalView.m in Sources */, 7A59488319E375B200F65F90 /* UITouch+CC.m in Sources */, 7A59488519E375B200F65F90 /* CCDirectorIOS.m in Sources */, @@ -3519,151 +2848,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D2FEB6B8194F6C9E00FC0574 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D3027C8719D33FFB00006004 /* NSValue+CCRenderer.m in Sources */, - 57202D391970776100238D56 /* CCPlatformTextFieldAndroid.m in Sources */, - 839CE58A19FFB145003369F0 /* CCEffectInvert.m in Sources */, - D2FEB6B9194F6C9E00FC0574 /* CCAction.m in Sources */, - D299CE7D19C2910B00519CBB /* CCEffectDFInnerGlow.m in Sources */, - D2FEB6BA194F6C9E00FC0574 /* CCNode.m in Sources */, - D2FEB6BB194F6C9E00FC0574 /* CCDirector.m in Sources */, - D2FEB6BC194F6C9E00FC0574 /* CCActionInstant.m in Sources */, - D2FEB6BD194F6C9E00FC0574 /* CCActionInterval.m in Sources */, - D2FEB6C0194F6C9E00FC0574 /* CCPhysicsJoint.m in Sources */, - D268FE2B1980791D00ECBCD0 /* CCEffectReflection.m in Sources */, - D3BEEFA419CFE8730055B624 /* CCRendererBasicTypes.m in Sources */, - D2FEB6C2194F6C9E00FC0574 /* CCTouchEvent.m in Sources */, - D2FEB6C3194F6C9E00FC0574 /* CCLabelTTF.m in Sources */, - D2FEB6C4194F6C9E00FC0574 /* CCEffectContrast.m in Sources */, - D2FEB6C5194F6C9E00FC0574 /* CCNodeColor.m in Sources */, - D2FEB6C7194F6C9E00FC0574 /* CCScene.m in Sources */, - 9D2773B91AB77F3800D19A11 /* CCEffectStereo.m in Sources */, - D24161101958F72B003673BD /* CCEffectSaturation.m in Sources */, - D2FEB6C8194F6C9E00FC0574 /* CCTextureCache.m in Sources */, - D2FEB6CA194F6C9E00FC0574 /* CCParticleSystemBase.m in Sources */, - D2FEB6CB194F6C9E00FC0574 /* CCParticleExamples.m in Sources */, - D2FEB6CC194F6C9E00FC0574 /* CCScheduler.m in Sources */, - D2FEB6CD194F6C9E00FC0574 /* cocos2d.m in Sources */, - D2FEB6CF194F6C9E00FC0574 /* CCBSequenceProperty.m in Sources */, - D2FEB6D0194F6C9E00FC0574 /* TGAlib.m in Sources */, - D2FEB6D1194F6C9E00FC0574 /* CCTextField.m in Sources */, - D2FEB6D2194F6C9E00FC0574 /* CCActionEase.m in Sources */, - BC9F4E8E19DB632800B25F01 /* CCPackageConstants.m in Sources */, - 57BFF2BA1991937C00A3FE9C /* CCEditText.m in Sources */, - D2FEB6D3194F6C9E00FC0574 /* CCPhysicsShape.m in Sources */, - 577D72D11970AC59005ABDC0 /* CCPlatformTextField.m in Sources */, - D2FEB6D5194F6C9E00FC0574 /* CCSlider.m in Sources */, - D2FEB6D6194F6C9E00FC0574 /* CCTMXXMLParser.m in Sources */, - D2FEB6D7194F6C9E00FC0574 /* CCSprite.m in Sources */, - D2FEB6D8194F6C9E00FC0574 /* CCTiledMap.m in Sources */, - D2FEB6D9194F6C9E00FC0574 /* CCFileUtils.m in Sources */, - D2FEB6DB194F6C9E00FC0574 /* CCTouch.m in Sources */, - D27451C919B111A9006DA0A1 /* CCEffectDFOutline.m in Sources */, - D2FEB6DC194F6C9E00FC0574 /* CCEffectNode.m in Sources */, - D2FEB6DD194F6C9E00FC0574 /* CCTiledMapObjectGroup.m in Sources */, - D2FEB6DE194F6C9E00FC0574 /* CGPointExtension.m in Sources */, - D2FEB6DF194F6C9E00FC0574 /* CCParticleSystem.m in Sources */, - D2FEB6E0194F6C9E00FC0574 /* CCParallaxNode.m in Sources */, - D2FEB6E1194F6C9E00FC0574 /* CCActionManager.m in Sources */, - D2FEB6E2194F6C9E00FC0574 /* CCAppDelegate.m in Sources */, - D27451BD19AEC84C006DA0A1 /* CCEffectDistanceField.m in Sources */, - D2FEB6E3194F6C9E00FC0574 /* CCBReader.m in Sources */, - D2FEB6E5194F6C9E00FC0574 /* base64.c in Sources */, - BC9F4E9219DB633B00B25F01 /* CCPackageDownloadManager.m in Sources */, - D3903B17199528DF003AA81A /* CCRenderDispatch.m in Sources */, - D2FEB6E7194F6C9E00FC0574 /* ZipUtils.m in Sources */, - D2FEB6EA194F6C9E00FC0574 /* CCEffectStack.m in Sources */, - 9D9205D61A0173D600FF2D6D /* CCLightCollection.m in Sources */, - D2FEB6EC194F6C9E00FC0574 /* CCRenderTexture.m in Sources */, - D28B2E7A19CBA89A00DC6E08 /* CCEffectColorChannelOffset.m in Sources */, - D2FEB6ED194F6C9E00FC0574 /* CCMotionStreak.m in Sources */, - D2FEB6EE194F6C9E00FC0574 /* CCSpriteFrame.m in Sources */, - D2FEB6EF194F6C9E00FC0574 /* CCSpriteFrameCache.m in Sources */, - D2FEB6F0194F6C9E00FC0574 /* CCTexture.m in Sources */, - D2FEB6F1194F6C9E00FC0574 /* CCConfiguration.m in Sources */, - D2FEB6F2194F6C9E00FC0574 /* CCProfiling.m in Sources */, - BC9F4E8819DB632400B25F01 /* CCPackage.m in Sources */, - D2FEB6F3194F6C9E00FC0574 /* CCActionProgressTimer.m in Sources */, - D24161151958F738003673BD /* CCAnimationManager.m in Sources */, - BC9F4E9019DB633100B25F01 /* CCPackageHelper.m in Sources */, - D2FEB6F4194F6C9E00FC0574 /* CCTiledMapLayer.m in Sources */, - D2FEB6F5194F6C9E00FC0574 /* CCEffect.m in Sources */, - D268FE251980791D00ECBCD0 /* CCEffectBloom.m in Sources */, - D2FEB6F7194F6C9E00FC0574 /* CCActionTween.m in Sources */, - BC9F4E9519DB635200B25F01 /* CCPackageInstaller.m in Sources */, - D268FE271980791D00ECBCD0 /* CCEffectGlass.m in Sources */, - D2FEB6F9194F6C9E00FC0574 /* CCSpriteBatchNode.m in Sources */, - D2FEB6FA194F6C9E00FC0574 /* ccUtils.c in Sources */, - D2FEB6FB194F6C9E00FC0574 /* CCTouchAndroid.m in Sources */, - 9DC780BB1A11760A00DD5A4B /* CCLightNode.m in Sources */, - BC9F4E9119DB633500B25F01 /* CCPackageDownload.m in Sources */, - D3903B16199528DB003AA81A /* CCNoARC.m in Sources */, - D268FE1C1980791400ECBCD0 /* CCEffectRefraction.m in Sources */, - BC9F4E9319DB633F00B25F01 /* CCPackageUnzipper.m in Sources */, - D2FEB6FC194F6C9E00FC0574 /* CCPhysicsNode.m in Sources */, - D2FEB6FD194F6C9E00FC0574 /* CCGLView.m in Sources */, - D2FEB6FE194F6C9E00FC0574 /* CCLabelBMFont.m in Sources */, - D2FEB701194F6C9E00FC0574 /* CCDirectorAndroid.m in Sources */, - BC9F4E9419DB635000B25F01 /* CCPackageCocos2dEnabler.m in Sources */, - D2FEB702194F6C9E00FC0574 /* CCGLView.m in Sources */, - D3903B18199528F3003AA81A /* CCEffectBlur.m in Sources */, - D2FEB703194F6C9E00FC0574 /* CCEffectBrightness.m in Sources */, - D24161171958F738003673BD /* CCAnimationManager+FrameAnimation.m in Sources */, - D2FEB705194F6C9E00FC0574 /* CCBKeyframe.m in Sources */, - D2FEB706194F6C9E00FC0574 /* CCTexturePVR.m in Sources */, - D2FEB708194F6C9E00FC0574 /* CCAnimationCache.m in Sources */, - D2FEB709194F6C9E00FC0574 /* CCAnimation.m in Sources */, - D2FEB70A194F6C9E00FC0574 /* CCShader.m in Sources */, - D2FEB70F194F6C9E00FC0574 /* CCParticleBatchNode.m in Sources */, - D2FEB710194F6C9E00FC0574 /* CCDirectorMac.m in Sources */, - D2FEB711194F6C9E00FC0574 /* CCGLView.m in Sources */, - D2FEB712194F6C9E00FC0574 /* CCWindow.m in Sources */, - D2FEB714194F6C9E00FC0574 /* CCBLocalizationManager.m in Sources */, - D2FEB716194F6C9E00FC0574 /* NSThread+performBlock.m in Sources */, - D2FEB719194F6C9E00FC0574 /* CCBsequence.m in Sources */, - D2FEB71A194F6C9E00FC0574 /* CCEffectPixellate.m in Sources */, - D2FEB71B194F6C9E00FC0574 /* CCActionCatmullRom.m in Sources */, - 5BF32699195F947800D9A51A /* CCActivity.m in Sources */, - D2FEB71D194F6C9E00FC0574 /* CCRenderer.m in Sources */, - D2DDB09E19805E8400233D80 /* CCMatrix4.m in Sources */, - D2FEB71F194F6C9E00FC0574 /* CCNode+Debug.m in Sources */, - D2FEB720194F6C9E00FC0574 /* CCProgressNode.m in Sources */, - D2DDB0A619805E8400233D80 /* CCQuaternion.m in Sources */, - D2FEB722194F6C9E00FC0574 /* CCDrawNode.m in Sources */, - D268FE201980791400ECBCD0 /* CCEffectUtils.m in Sources */, - D2DDB0A819805E8400233D80 /* CCMatrix3.m in Sources */, - D2FEB727194F6C9E00FC0574 /* CCLayout.m in Sources */, - D27451AD19AD430A006DA0A1 /* CCEffectDropShadow.m in Sources */, - D2FEB729194F6C9E00FC0574 /* CCClippingNode.m in Sources */, - D2FEB72B194F6C9E00FC0574 /* ccFPSImages.m in Sources */, - D2FEB72C194F6C9E00FC0574 /* CCTableView.m in Sources */, - D268FE291980791D00ECBCD0 /* CCEffectHue.m in Sources */, - D2FEB72D194F6C9E00FC0574 /* CCSprite9Slice.m in Sources */, - D2FEB72E194F6C9E00FC0574 /* NSAttributedString+CCAdditions.m in Sources */, - D2FEB72F194F6C9E00FC0574 /* CCLayoutBox.m in Sources */, - D2FEB731194F6C9E00FC0574 /* CCColor.m in Sources */, - D2FEB732194F6C9E00FC0574 /* CCTransition.m in Sources */, - D2FEB734194F6C9E00FC0574 /* CCResponderManager.m in Sources */, - 5BC3CB5A19626FA000C4F0D0 /* CCGestureListener.m in Sources */, - BC9F4E8F19DB632B00B25F01 /* CCPackageManager.m in Sources */, - D2FEB735194F6C9E00FC0574 /* CCTouchIOS.m in Sources */, - 9D03A5F71A02F8C500C651C8 /* CCEffectLighting.m in Sources */, - D2FEB736194F6C9E00FC0574 /* CCResponder.m in Sources */, - D2FEB737194F6C9E00FC0574 /* CCButton.m in Sources */, - D2FEB738194F6C9E00FC0574 /* CCControl.m in Sources */, - D22907B21A2F5E440038FF61 /* CCEffectOutline.m in Sources */, - D2FEB739194F6C9E00FC0574 /* CCControlTextureFactory.m in Sources */, - D2FEB73A194F6C9E00FC0574 /* CCCache.m in Sources */, - D2FEB73C194F6C9E00FC0574 /* CCScrollView.m in Sources */, - D2FEB73D194F6C9E00FC0574 /* UITouch+CC.m in Sources */, - D2FEB73F194F6C9E00FC0574 /* CCPhysicsBody.m in Sources */, - D241610C1958F72B003673BD /* CCEffectRenderer.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -3672,11 +2856,6 @@ name = SSZipArchiveMac; targetProxy = 7A59497E19E38C8300F65F90 /* PBXContainerItemProxy */; }; - 7A9790D119E61DDB001FFC4D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SSZipArchiveAndroid; - targetProxy = 7A9790D019E61DDB001FFC4D /* PBXContainerItemProxy */; - }; 83409E4D19D5E8A1004B7EB9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SSZipArchive; @@ -4047,108 +3226,6 @@ }; name = Release; }; - D2FEB74D194F6C9E00FC0574 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "CD_DEBUG=1", - DEBUG, - "COCOS2D_DEBUG=1", - COCOS2D_ANDROID, - ); - "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ( - "CD_DEBUG=1", - DEBUG, - "COCOS2D_DEBUG=1", - COCOS2D_ANDROID, - ); - GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = ""; - GCC_THUMB_SUPPORT = NO; - GCC_TREAT_WARNINGS_AS_ERRORS = NO; - GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; - GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; - GCC_WARN_SHADOW = YES; - HEADER_SEARCH_PATHS = ( - "$(SRCROOT)/external/kazmath/include", - "cocos2d/**", - "cocos2d-ui/**", - "cocos2d-ui-tests/**", - "$(SRCROOT)/external/Chipmunk/include", - "$(SRCROOT)/external/Chipmunk/objectivec/include", - "$(SRCROOT)/external/ObjectAL/ObjectAL/ObjectAL/**", - "$(SRCROOT)/external/SSZipArchive/**", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\\\\\\\"$(SRCROOT)/build/Debug-iphonesimulator\\\\\\\"", - "$(SDKROOT)/usr/lib/armeabi", - "$(SDKROOT)/usr/lib/armv7a", - "$(SDKROOT)/usr/lib/x86", - "$(PROJECT_DIR)/external/ogg/android/ogg/build/Debug-android", - ); - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = ""; - PRODUCT_NAME = cocos2dAndroid; - SDKROOT = sbandroid; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - D2FEB74E194F6C9E00FC0574 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_PREPROCESSOR_DEFINITIONS = ( - NS_BLOCK_ASSERTIONS, - NDEBUG, - COCOS2D_ANDROID, - ); - GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = ""; - GCC_THUMB_SUPPORT = NO; - GCC_TREAT_WARNINGS_AS_ERRORS = NO; - GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; - GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; - GCC_WARN_SHADOW = YES; - HEADER_SEARCH_PATHS = ( - "$(SRCROOT)/external/kazmath/include", - "cocos2d/**", - "cocos2d-ui/**", - "cocos2d-ui-tests/**", - "$(SRCROOT)/external/Chipmunk/include", - "$(SRCROOT)/external/Chipmunk/objectivec/include", - "$(SRCROOT)/external/ObjectAL/ObjectAL/ObjectAL/**", - "$(SRCROOT)/external/SSZipArchive/**", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\\\\\\\"$(SRCROOT)/build/Debug-iphonesimulator\\\\\\\"", - "$(SDKROOT)/usr/lib/armeabi", - "$(SDKROOT)/usr/lib/armv7a", - "$(SDKROOT)/usr/lib/x86", - "$(PROJECT_DIR)/external/ogg/android/ogg/build/Debug-android", - ); - OTHER_LDFLAGS = ""; - PRODUCT_NAME = cocos2dAndroid; - SDKROOT = sbandroid; - SKIP_INSTALL = YES; - ZERO_LINK = NO; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -4197,15 +3274,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D2FEB74C194F6C9E00FC0574 /* Build configuration list for PBXNativeTarget "cocos2dAndroid" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D2FEB74D194F6C9E00FC0574 /* Debug */, - D2FEB74E194F6C9E00FC0574 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; diff --git a/cocos2d/Platforms/Android/CCActivity.h b/cocos2d/Platforms/Android/CCActivity.h deleted file mode 100644 index cb9f78ff3be..00000000000 --- a/cocos2d/Platforms/Android/CCActivity.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// CCActivity.h -// Cocos2d -// -// Created by Philippe Hausler on 6/12/14. -// Copyright (c) 2014 Apportable. All rights reserved. -// - -#import "ccMacros.h" -#if __CC_PLATFORM_ANDROID - -#import -#import "../../Platforms/CCGL.h" -#import "CCProtocols.h" - -@class CCScene; -@class AndroidAbsoluteLayout; - -@interface CCActivity : GLActivity -@property (readonly, nonatomic) AndroidAbsoluteLayout *layout; -+ (instancetype)currentActivity; - - -- (void)runOnGameThread:(dispatch_block_t)block; -- (void)runOnGameThread:(dispatch_block_t)block waitUntilDone:(BOOL)waitUntilDone; - -- (void)setupPaths; -- (CCScene *)startScene; - -- (EGLContext)pushApplicationContext; -- (void)popApplicationContext:(EGLContext)ctx; - -@end - -#endif - diff --git a/cocos2d/Platforms/Android/CCActivity.m b/cocos2d/Platforms/Android/CCActivity.m deleted file mode 100644 index ee30ae6a13b..00000000000 --- a/cocos2d/Platforms/Android/CCActivity.m +++ /dev/null @@ -1,455 +0,0 @@ -// -// CCActivity.m -// Cocos2d -// -// Created by Philippe Hausler on 6/12/14. -// Copyright (c) 2014 Apportable. All rights reserved. -// - -#import "CCActivity.h" - -#if __CC_PLATFORM_ANDROID - -#import -#import -#import - -#import "cocos2d.h" -#import "CCBReader.h" -#import "CCGLView.h" -#import "CCScene.h" - -#import "CCPackageManager.h" - -#import -#import -#import -#import -#import - -#define USE_MAIN_THREAD 0 // enable to run on OpenGL/Cocos2D on the android main thread - -// Provided from foundation -@interface NSValue (NSValueGeometryExtensions) - -+ (NSValue *)valueWithCGPoint:(CGPoint)point; -+ (NSValue *)valueWithCGSize:(CGSize)size; -+ (NSValue *)valueWithCGRect:(CGRect)rect; -+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform; - -- (CGPoint)CGPointValue; -- (CGSize)CGSizeValue; -- (CGRect)CGRectValue; -- (CGAffineTransform)CGAffineTransformValue; - -@end - -extern ANativeWindow *ANativeWindow_fromSurface(JNIEnv *env, jobject surface); - -static CCActivity *currentActivity = nil; -const CGSize FIXED_SIZE = {568, 384}; - -@implementation CCActivity { - CCGLView *_glView; - NSThread *_thread; - BOOL _running; - NSRunLoop *_gameLoop; - NSMutableDictionary *_cocos2dSetupConfig; -} -@synthesize layout=_layout; - - -- (void)dealloc -{ - currentActivity = nil; - [_glView release]; - [_layout release]; - [_thread release]; - [_cocos2dSetupConfig release]; - [super dealloc]; -} - -+ (instancetype)currentActivity -{ - return currentActivity; -} - -static void handler(NSException *e) -{ - NSLog(@"Unhandled exception %@", e); -} - -static CGFloat FindLinearScale(CGFloat size, CGFloat fixedSize) -{ - int scale = 1; - while(fixedSize*scale < size) scale++; - - return scale; -} - -- (void)run -{ - if (_running) { - return; - } - NSSetUncaughtExceptionHandler(&handler); - currentActivity = self; - _running = YES; - _layout = [[AndroidAbsoluteLayout alloc] initWithContext:self]; - AndroidDisplayMetrics *metrics = [[AndroidDisplayMetrics alloc] init]; - [self.windowManager.defaultDisplay metricsForDisplayMetrics:metrics]; - - // Configure Cocos2d with the options set in SpriteBuilder - NSString* configPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Published-Android"]; - - configPath = [configPath stringByAppendingPathComponent:@"configCocos2d.plist"]; - - _cocos2dSetupConfig = [[NSMutableDictionary dictionaryWithContentsOfFile:configPath] retain]; - - enum CCAndroidScreenMode screenMode = CCNativeScreenMode; - - if([_cocos2dSetupConfig[CCSetupScreenMode] isEqual:CCScreenModeFlexible] || - [_cocos2dSetupConfig[CCSetupScreenMode] isEqual:CCScreenModeFixed]) - { - screenMode = CCScreenScaledAspectFitEmulationMode; - } - - - if([_cocos2dSetupConfig[CCSetupScreenOrientation] isEqual:CCScreenOrientationPortrait]) - { - self.requestedOrientation = AndroidActivityInfoScreenOrientationSensorPortrait; - } - else if([_cocos2dSetupConfig[CCSetupScreenOrientation] isEqual:CCScreenOrientationLandscape]) - { - self.requestedOrientation = AndroidActivityInfoScreenOrientationSensorLandscape; - } - else - { - self.requestedOrientation = AndroidActivityInfoScreenOrientationUnspecified; - } - - _glView = [[CCGLView alloc] initWithContext:self screenMode:screenMode scaleFactor:metrics.density]; - [metrics release]; - [_glView.holder addCallback:self]; - [self.layout addView:_glView]; - [self setContentView:_layout]; - - AndroidLooper *looper = [AndroidLooper currentLooper]; - [looper scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; -} - -- (void)onDestroy -{ - [[CCDirector sharedDirector] end]; - exit(0); -} - -- (void)onResume -{ -#if USE_MAIN_THREAD - [self handleResume]; -#else - if(_thread == nil) - { - return; - } - - [self performSelector:@selector(handleResume) onThread:_thread withObject:nil waitUntilDone:YES modes:@[NSDefaultRunLoopMode]]; -#endif -} - -- (void)handleResume -{ - [[CCDirector sharedDirector] setNextDeltaTimeZero:YES]; - [[CCDirector sharedDirector] resume]; -} - -- (void)onPause -{ -#if USE_MAIN_THREAD - [self handlePause]; -#else - if(_thread == nil) - { - return; - } - - [self performSelector:@selector(handlePause) onThread:_thread withObject:nil waitUntilDone:YES modes:@[NSDefaultRunLoopMode]]; -#endif -} - -- (void)handlePause -{ - [[CCDirector sharedDirector] pause]; - [[CCPackageManager sharedManager] savePackages]; -} - - -- (void)onLowMemory -{ -#if USE_MAIN_THREAD - [self handleLowMemory]; -#else - if(_thread == nil) - { - return; - } - - [self performSelector:@selector(handleLowMemory) onThread:_thread withObject:nil waitUntilDone:YES modes:@[NSDefaultRunLoopMode]]; -#endif -} - -- (void)handleLowMemory -{ - [[CCDirector sharedDirector] purgeCachedData]; - [[CCPackageManager sharedManager] savePackages]; -} - -- (void)reshape:(NSValue *)value -{ - CCDirectorAndroid *director = (CCDirectorAndroid*)[CCDirector sharedDirector]; - [director reshapeProjection:value.CGSizeValue]; // crashes sometimes.. -} - -- (void)surfaceChanged:(JavaObject *)holder format:(int)format width:(int)width height:(int)height -{ - if(_glView == nil) - return; - - _glView.bounds = CGRectMake(0, 0, width/_glView.contentScaleFactor, height/_glView.contentScaleFactor); - -#if USE_MAIN_THREAD - [self reshape:[NSValue valueWithCGSize:CGSizeMake(width, height)]]; -#else - [self performSelector:@selector(reshape:) onThread:_thread withObject:[NSValue valueWithCGSize:CGSizeMake(width, height)] waitUntilDone:YES modes:@[NSDefaultRunLoopMode]]; -#endif -} - -- (void)setupView:(JavaObject *)holder -{ - ANativeWindow* window = holder.surface.nativeWindow; - [_glView setupView:window]; -} - -- (void)setupPaths -{ - [CCBReader configureCCFileUtils]; -} - -- (void)startGL:(JavaObject *)holder -{ - @autoreleasepool { - - _gameLoop = [NSRunLoop currentRunLoop]; - - [_gameLoop addPort:[NSPort port] forMode:NSDefaultRunLoopMode]; // Ensure that _gameLoop always has a source. - - [self setupView:holder]; - - [self setupPaths]; - - CCDirectorAndroid *director = (CCDirectorAndroid*)[CCDirector sharedDirector]; - director.delegate = self; - [CCTexture setDefaultAlphaPixelFormat:CCTexturePixelFormat_RGBA8888]; - [director setView:_glView]; - - if([_cocos2dSetupConfig[CCSetupScreenMode] isEqual:CCScreenModeFixed]) - { - [self setupFixedScreenMode]; - } - else - { - [self setupFlexibleScreenMode]; - } - - [[CCPackageManager sharedManager] loadPackages]; - - - - [director runWithScene:[self startScene]]; - [director setAnimationInterval:1.0/60.0]; - [director startAnimation]; -#if !USE_MAIN_THREAD - [_gameLoop runUntilDate:[NSDate distantFuture]]; -#endif - } -} - -- (void)setupFlexibleScreenMode -{ - CCDirectorAndroid *director = (CCDirectorAndroid*)[CCDirector sharedDirector]; - - NSInteger device = [[CCConfiguration sharedConfiguration] runningDevice]; - BOOL tablet = device == CCDeviceiPad || device == CCDeviceiPadRetinaDisplay; - - if(tablet && [_cocos2dSetupConfig[CCSetupTabletScale2X] boolValue]) - { - // Set the UI scale factor to show things at "native" size. - director.UIScaleFactor = 0.5; - - // Let CCFileUtils know that "-ipad" textures should be treated as having a contentScale of 2.0. - [[CCFileUtils sharedFileUtils] setiPadContentScaleFactor:2.0]; - } - - director.contentScaleFactor *= 1.83; - - [director setProjection:CCDirectorProjection2D]; -} - -- (void)setupFixedScreenMode -{ - CCDirectorAndroid *director = (CCDirectorAndroid*)[CCDirector sharedDirector]; - - CGSize size = [CCDirector sharedDirector].viewSizeInPixels; - - NSLog(@"pixel width = %f, pixel height = %f", size.width, size.height); - - CGSize fixed = FIXED_SIZE; - if([_cocos2dSetupConfig[CCSetupScreenOrientation] isEqualToString:CCScreenOrientationPortrait]) - { - CC_SWAP(fixed.width, fixed.height); - } - - CGFloat scaleFactor = MAX(size.width/ fixed.width, size.height/ fixed.height); - - director.contentScaleFactor = scaleFactor; - director.UIScaleFactor = 1; - - [[CCFileUtils sharedFileUtils] setiPadContentScaleFactor:2.0]; - - director.designSize = fixed; - [director setProjection:CCDirectorProjectionCustom]; -} - -- (CCScene *)startScene -{ - NSAssert([self class] != [CCActivity class], @"%s requires a subclass implementation", sel_getName(_cmd)); - return nil; -} - -- (void)runOnGameThread:(dispatch_block_t)block -{ - [self runOnGameThread:block waitUntilDone:NO]; -} - -- (void)runOnGameThread:(dispatch_block_t)block waitUntilDone:(BOOL)waitUntilDone -{ -#if !USE_MAIN_THREAD - if (!waitUntilDone) - { - CFRunLoopPerformBlock([_gameLoop getCFRunLoop], kCFRunLoopDefaultMode, block); - } - else - { - [[Block_copy(block) autorelease] performSelector:@selector(invoke) onThread:_thread withObject:nil waitUntilDone:YES]; - } -#else - EGLContext ctx = [self pushApplicationContext]; - block(); - [self popApplicationContext:ctx]; - -#endif -} - -- (void)surfaceCreated:(JavaObject *)holder -{ -#if USE_MAIN_THREAD - [self startGL:holder]; -#else - if (_thread == nil) - { - _thread = [[NSThread alloc] initWithTarget:self selector:@selector(startGL:) object:holder]; - [_thread start]; - } - else - { - [self performSelector:@selector(setupView:) onThread:_thread withObject:holder waitUntilDone:YES modes:@[NSDefaultRunLoopMode]]; - CCDirectorAndroid *director = (CCDirectorAndroid*)[CCDirector sharedDirector]; - [director performSelector:@selector(startAnimation) onThread:_thread withObject:nil waitUntilDone:YES modes:@[NSDefaultRunLoopMode]]; - } -#endif -} - -- (void)surfaceDestroyed:(JavaObject *)holder -{ -#if USE_MAIN_THREAD - [self handleDestroy]; -#else - [self performSelector:@selector(handleDestroy) onThread:_thread withObject:nil waitUntilDone:NO modes:@[NSDefaultRunLoopMode]]; -#endif -} - -- (void)handleDestroy -{ - [[CCDirector sharedDirector] stopAnimation]; -} - -- (BOOL)onKeyDown:(int32_t)keyCode keyEvent:(AndroidKeyEvent *)event -{ - return NO; -} - -- (BOOL)onKeyUp:(int32_t)keyCode keyEvent:(AndroidKeyEvent *)event -{ - return NO; -} - -- (EGLContext)pushApplicationContext -{ - EGLDisplay display; - EGLSurface surfaceR; - EGLSurface surfaceD; - - EGLContext ctx = eglGetCurrentContext(); - - EGLContext appContext = _glView.eglContext; - if (appContext != ctx) - { - display = eglGetCurrentDisplay(); - surfaceD = eglGetCurrentSurface(EGL_DRAW); - surfaceR = eglGetCurrentSurface(EGL_READ); - - EGLSurface surface = _glView.eglSurface; - - eglMakeCurrent(_glView.eglDisplay, surface, surface, appContext); - return ctx; - } - - return NULL; -} - -- (void)popApplicationContext:(EGLContext)ctx -{ - if (ctx != NULL) - { - EGLDisplay display; - EGLSurface surfaceR; - EGLSurface surfaceD; - - display = eglGetCurrentDisplay(); - surfaceD = eglGetCurrentSurface(EGL_DRAW); - surfaceR = eglGetCurrentSurface(EGL_READ); - - eglMakeCurrent(display, surfaceD, surfaceR, ctx); - } -} - -#pragma mark CCDirector Delegate - -// Projection delegate is only used if the fixed resolution mode is enabled --(GLKMatrix4)updateProjection -{ - CGSize sizePoint = [CCDirector sharedDirector].viewSize; - CGSize fixed = [CCDirector sharedDirector].designSize; - - // Half of the extra size that will be cut off - CGPoint offset = ccpMult(ccp(fixed.width - sizePoint.width, fixed.height - sizePoint.height), 0.5); - - return CCMatrix4MakeOrtho(offset.x, sizePoint.width + offset.x, offset.y, sizePoint.height + offset.y, -1024, 1024); -} - -@end - -#endif - - diff --git a/cocos2d/Platforms/Android/CCDirectorAndroid.h b/cocos2d/Platforms/Android/CCDirectorAndroid.h deleted file mode 100644 index 481df2f0d34..00000000000 --- a/cocos2d/Platforms/Android/CCDirectorAndroid.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// CCDirectorAndroid.h -// cocos2d-ios -// -// Created by Oleg Osin on 5/22/14. -// -// - -#import "../../ccMacros.h" - -#if __CC_PLATFORM_ANDROID - -#import "../../CCDirector.h" - - -@interface CCDirector (AndroidExtension) - -@end - -@interface CCDirectorAndroid : CCDirector - -@end - -/* DisplayLinkDirector is a Director that synchronizes timers with the refresh rate of the display. - * - * Features and Limitations: - * - Scheduled timers & drawing are synchronizes with the refresh rate of the display - * - Only supports animation intervals of 1/60 1/30 & 1/15 - * - */ - -@interface CCDirectorDisplayLink : CCDirectorAndroid -{ - NSTimer* _displayLink; - CFTimeInterval _lastDisplayTime; -} - --(void) mainLoop:(id)sender; - -@end - - -#endif - diff --git a/cocos2d/Platforms/Android/CCDirectorAndroid.m b/cocos2d/Platforms/Android/CCDirectorAndroid.m deleted file mode 100644 index 1e2b3d13890..00000000000 --- a/cocos2d/Platforms/Android/CCDirectorAndroid.m +++ /dev/null @@ -1,230 +0,0 @@ -// -// CCDirectorAndroid.m -// cocos2d-ios -// -// Created by Oleg Osin on 5/22/14. -// -// - -#import "CCDirectorAndroid.h" - -#if __CC_PLATFORM_ANDROID - -#import "CCDirector_Private.h" - -#import "../../CCScheduler.h" -#import "../../CCActionManager.h" -#import "../../CCTextureCache.h" -#import "../../ccMacros.h" -#import "../../CCScene.h" -#import "../../CCShader.h" -#import "../../ccFPSImages.h" -#import "../../CCConfiguration.h" -#import "CCRenderer_Private.h" -#import "CCTouch.h" - - -#pragma mark - -#pragma mark Director - -@interface CCDirector () --(void) setNextScene; --(void) showStats; --(void) calculateDeltaTime; --(void) calculateMPF; -@end - - - -#pragma mark - -#pragma mark CCDirectorAndroid - -@implementation CCDirectorAndroid - -- (id) init -{ - if( (self=[super init]) ) { - // main thread - _runningThread = [NSThread currentThread]; - } - - return self; -} - - --(void) setViewport -{ - CGSize size = _winSizeInPixels; - glViewport(0, 0, size.width, size.height ); -} - --(void) setProjection:(CCDirectorProjection)projection -{ - CGSize sizePoint = _winSizeInPoints; - - [self setViewport]; - - switch (projection) { - case CCDirectorProjection2D: - _projectionMatrix = GLKMatrix4MakeOrtho(0, sizePoint.width, 0, sizePoint.height, -1024, 1024 ); - break; - - case CCDirectorProjection3D: { - float zeye = sizePoint.height*sqrtf(3.0f)/2.0f; - _projectionMatrix = GLKMatrix4Multiply( - GLKMatrix4MakePerspective(CC_DEGREES_TO_RADIANS(60), (float)sizePoint.width/sizePoint.height, 0.1f, zeye*2), - GLKMatrix4MakeTranslation(-sizePoint.width/2.0, -sizePoint.height/2, -zeye) - ); - break; - } - - case CCDirectorProjectionCustom: - if( [_delegate respondsToSelector:@selector(updateProjection)] ) - _projectionMatrix = [_delegate updateProjection]; - break; - - default: - CCLOG(@"cocos2d: Director: unrecognized projection"); - break; - } - - _projection = projection; - [self createStatsLabel]; -} - -// override default logic -- (void) runWithScene:(CCScene*) scene -{ - NSAssert( scene != nil, @"Argument must be non-nil"); - NSAssert(_runningScene == nil, @"This command can only be used to start the CCDirector. There is already a scene present."); - - [self pushScene:scene]; - - NSThread *thread = [self runningThread]; - [self performSelector:@selector(drawScene) onThread:thread withObject:nil waitUntilDone:YES]; -} - --(void)end -{ - [super end]; -} - --(void) setView:(CCGLView *)view -{ - [super setView:view]; - if( view ) { - // set size - CGFloat scale = view.contentScaleFactor; - CGSize size = view.bounds.size; - _winSizeInPixels = CGSizeMake(size.width * scale, size.height * scale); - } -} - -- (void)runBlock:(dispatch_block_t)block -{ - [[CCActivity currentActivity] runOnGameThread:block]; -} - -@end - - -#pragma mark - -#pragma mark DirectorDisplayLink - -@implementation CCDirectorDisplayLink - --(void) mainLoop:(id)sender -{ - EGLContext *ctx = [[CCActivity currentActivity] pushApplicationContext]; - - [self drawScene]; - - [[CCActivity currentActivity] popApplicationContext:ctx]; -} - -- (void)setAnimationInterval:(NSTimeInterval)interval -{ - _animationInterval = interval; - if(_displayLink) - { - [self stopAnimation]; - [self startAnimation]; - } -} - -- (void) startAnimation -{ - [super startAnimation]; - - if(_animating) - return; - - gettimeofday( &_lastUpdate, NULL); - - // approximate frame rate - // assumes device refreshes at 60 fps - - CCLOG(@"cocos2d: animation started with frame interval: %d", (int)floorf(_animationInterval * 60.0)); - - _displayLink = [NSTimer scheduledTimerWithTimeInterval:_animationInterval - target:self - selector:@selector(mainLoop:) - userInfo:nil repeats:YES]; - - _animating = YES; -} - -- (void) stopAnimation -{ - if(!_animating) - return; - - if([_delegate respondsToSelector:@selector(stopAnimation)]) - { - [_delegate stopAnimation]; - } - - CCLOG(@"cocos2d: animation stopped"); - - [_displayLink invalidate]; - _displayLink = nil; - _animating = NO; -} - -// Overriden in order to use a more stable delta time --(void) calculateDeltaTime -{ - static unsigned long long last = 0; - struct timespec t; - clock_gettime(CLOCK_MONOTONIC, &t); - unsigned long long now = t.tv_sec * 1e9 + t.tv_nsec; - if (now != last) - { - if (last != 0) - { - _dt = (now - last) / (double)NSEC_PER_SEC; - } - last = now; - } -} - - -#pragma mark Director Thread - -// -// Director has its own thread -// --(void) threadMainLoop -{ - @autoreleasepool { - [[NSRunLoop currentRunLoop] addTimer:_displayLink forMode:NSRunLoopCommonModes]; - - // start the run loop - [[NSRunLoop currentRunLoop] run]; - } -} - -@end - -#endif //__CC_PLATFORM_ANDROID - diff --git a/cocos2d/Platforms/Android/CCGLView.h b/cocos2d/Platforms/Android/CCGLView.h deleted file mode 100644 index 6ecff24b231..00000000000 --- a/cocos2d/Platforms/Android/CCGLView.h +++ /dev/null @@ -1,69 +0,0 @@ -// -// CCGLView.h -// cocos2d-ios -// -// Created by Oleg Osin on 5/22/14. -// -// - -#import "ccMacros.h" - -#if __CC_PLATFORM_ANDROID - - -#import -#import -#import - -#import "../../Platforms/CCGL.h" -#import "CCDirectorView.h" - -@class AndroidGestureDetector; - -enum CCAndroidScreenMode { - - /* - NOTE: Emulation modes are not ideal and are only inteded for quick prototyping, - because emulation modes force a an aspect ratio that is not intended for the device. - */ - - /* - Keeps true to the device resolution and calculates a content scale - based on AndroidDisplayMetrics density property - */ - CCNativeScreenMode, - - /* - Provides a screen that is 320pt wide and has the aspect ratio of the - device. The screen size in pixels matches the native - resolution. - */ - CCScreenScaledAspectFitEmulationMode -}; - -BRIDGE_CLASS("com.apportable.GLView") -@interface CCGLView : GLView - - -- (id)initWithContext:(AndroidContext *)context screenMode:(enum CCAndroidScreenMode)screenMode scaleFactor:(float)scaleFactor; - -- (BOOL)setupView:(ANativeWindow*)window; -- (void)swapBuffers; - -@property (nonatomic) CGFloat contentScaleFactor; -@property (nonatomic) CGRect bounds; -@property (nonatomic, readonly) EGLDisplay eglDisplay; -@property (nonatomic, readonly) EGLSurface eglSurface; -@property (nonatomic, readonly) EGLContext eglContext; -@property (nonatomic, readonly) EGLConfig eglConfiguration; -@property (nonatomic, readonly) enum CCAndroidScreenMode screenMode; - -- (void)addGestureDetector:(AndroidGestureDetector *)detector; -- (void)removeGestureDetector:(AndroidGestureDetector *)detector; - --(GLuint)fbo; - -@end -#endif // __CC_PLATFORM_ANDROID - - diff --git a/cocos2d/Platforms/Android/CCGLView.m b/cocos2d/Platforms/Android/CCGLView.m deleted file mode 100644 index 3dc163b882a..00000000000 --- a/cocos2d/Platforms/Android/CCGLView.m +++ /dev/null @@ -1,589 +0,0 @@ -// -// CCGLView.m -// cocos2d-ios -// -// Created by Oleg Osin on 5/22/14. -// -// - -#import "cocos2d.h" -#import "CCGLView.h" - -#if __CC_PLATFORM_ANDROID - -#import -#import -#import "CCTouchEvent.h" -#import "CCTouch.h" -#import "CCActivity.h" -#import "CCResponderManager.h" -#import "CCTouchAndroid.h" -#import - -#import -#import - -static const CGSize FIXED_SIZE = {586, 384}; - -static NSMutableDictionary *touches = nil; -static CCTouchEvent *currentEvent = nil; - -@implementation CCGLView { - NSMutableSet *_gestureDetectors; -} - - -- (id)initWithContext:(AndroidContext *)context screenMode:(enum CCAndroidScreenMode)screenMode scaleFactor:(float)scaleFactor -{ - self = [self initWithContext:context]; - if (self) - { - _contentScaleFactor = scaleFactor; - _screenMode = screenMode; - } - return self; -} - -- (void)dealloc -{ - [_gestureDetectors release]; - [super dealloc]; -} - -- (void)addGestureDetector:(AndroidGestureDetector *)detector -{ - if (_gestureDetectors == nil) { - _gestureDetectors = [[NSMutableSet alloc] init]; - } - - [_gestureDetectors addObject:detector]; -} - -- (void)removeGestureDetector:(AndroidGestureDetector *)detector -{ - [_gestureDetectors removeObject:detector]; -} - -- (BOOL)onTouchEvent:(AndroidMotionEvent *)event -{ - assert(pthread_main_np()); - @autoreleasepool { - BOOL cancelTouch = NO; - for (AndroidGestureDetector *detector in _gestureDetectors) { - cancelTouch = [detector onTouchEvent:event]; - } - - - static dispatch_once_t once = 0L; - dispatch_once(&once, ^{ - touches = [[NSMutableDictionary alloc] init]; - currentEvent = [[CCTouchEvent alloc] init]; - }); - - CCTouchEvent *ev = nil; - CCTouchPhase phase = CCTouchPhaseStationary; - switch (event.action & AndroidMotionEventActionMask) { - case AndroidMotionEventActionPointerDown: - case AndroidMotionEventActionDown: - phase = CCTouchPhaseBegan; - break; - case AndroidMotionEventActionMove: - phase = CCTouchPhaseMoved; - break; - case AndroidMotionEventActionPointerUp: - case AndroidMotionEventActionUp: - phase = CCTouchPhaseEnded; - break; - case AndroidMotionEventActionCancel: - phase = CCTouchPhaseCancelled; - break; - default: - return NO; - } - - if(cancelTouch) - { - phase = CCTouchPhaseCancelled; - } - - NSTimeInterval timestamp = event.eventTime * 1000.0; - currentEvent.timestamp = timestamp; - NSMutableSet *eventTouches = [NSMutableSet set]; - int32_t pointerIndex = -1; - if (phase == CCTouchPhaseBegan || - phase == CCTouchPhaseEnded) { - pointerIndex = event.actionIndex; - } - for (int32_t i = 0; i < event.pointerCount; i++) { - if ((phase == CCTouchPhaseBegan || - phase == CCTouchPhaseEnded) && i != pointerIndex) { - continue; - } - NSNumber *identifier = @([event pointerIdForPointerIndex:i]); - CGPoint pt; - pt.x = [event xForPointerIndex:i] / _contentScaleFactor; - pt.y = [event yForPointerIndex:i] / _contentScaleFactor; - CCTouchAndroid *touch = touches[identifier]; - if (touch == nil) { - touch = [[CCTouchAndroid alloc] init]; - touches[identifier] = touch; - [touch release]; - } - - [touch update:pt phase:phase timestamp:timestamp]; - [eventTouches addObject:touch]; - } - - - switch (phase) { - case CCTouchPhaseBegan: - [currentEvent updateTouchesBegan:eventTouches]; - break; - case CCTouchPhaseMoved: - [currentEvent updateTouchesMoved:eventTouches]; - break; - case CCTouchPhaseEnded: - [currentEvent updateTouchesEnded:eventTouches]; - break; - case CCTouchPhaseCancelled: - [currentEvent updateTouchesCancelled:eventTouches]; - break; - default: - break; - } - - [[CCActivity currentActivity] runOnGameThread:^{ - CCResponderManager *mgr = [[CCDirector sharedDirector] responderManager]; - switch (phase) { - case CCTouchPhaseBegan: - [mgr touchesBegan:eventTouches withEvent:currentEvent]; - break; - case CCTouchPhaseMoved: - [mgr touchesMoved:eventTouches withEvent:currentEvent]; - break; - case CCTouchPhaseEnded: - [mgr touchesEnded:eventTouches withEvent:currentEvent]; - break; - case CCTouchPhaseCancelled: - [mgr touchesCancelled:eventTouches withEvent:currentEvent]; - break; - default: - break; - } - - } waitUntilDone:YES]; - } - - return YES; -} - -static inline void logConfig(EGLDisplay display, EGLConfig conf) { - EGLint value; - - eglGetConfigAttrib(display, conf, EGL_RED_SIZE, &value); - NSLog(@"EGL_RED_SIZE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_GREEN_SIZE, &value); - NSLog(@"EGL_GREEN_SIZE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_BLUE_SIZE, &value); - NSLog(@"EGL_BLUE_SIZE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_ALPHA_SIZE, &value); - NSLog(@"EGL_ALPHA_SIZE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_DEPTH_SIZE, &value); - NSLog(@"EGL_DEPTH_SIZE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_STENCIL_SIZE, &value); - NSLog(@"EGL_STENCIL_SIZE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_BUFFER_SIZE, &value); - NSLog(@"EGL_BUFFER_SIZE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_CONFIG_ID, &value); - NSLog(@"EGL_CONFIG_ID = %d", value); - - eglGetConfigAttrib(display, conf, EGL_LEVEL, &value); - NSLog(@"EGL_LEVEL = %d", value); - - eglGetConfigAttrib(display, conf, EGL_MAX_PBUFFER_WIDTH, &value); - NSLog(@"EGL_MAX_PBUFFER_WIDTH = %d", value); - - eglGetConfigAttrib(display, conf, EGL_MAX_PBUFFER_HEIGHT, &value); - NSLog(@"EGL_MAX_PBUFFER_HEIGHT = %d", value); - - eglGetConfigAttrib(display, conf, EGL_MAX_PBUFFER_PIXELS, &value); - NSLog(@"EGL_MAX_PBUFFER_PIXELS = %d", value); - - eglGetConfigAttrib(display, conf, EGL_NATIVE_VISUAL_ID, &value); - NSLog(@"EGL_NATIVE_VISUAL_ID = %d", value); - - eglGetConfigAttrib(display, conf, EGL_NATIVE_VISUAL_TYPE, &value); - NSLog(@"EGL_NATIVE_VISUAL_TYPE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_SAMPLE_BUFFERS, &value); - NSLog(@"EGL_SAMPLE_BUFFERS = %d", value); - - eglGetConfigAttrib(display, conf, EGL_SAMPLES, &value); - NSLog(@"EGL_SAMPLES = %d", value); - - eglGetConfigAttrib(display, conf, EGL_TRANSPARENT_TYPE, &value); - NSLog(@"EGL_TRANSPARENT_TYPE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_CONFIG_CAVEAT, &value); - NSLog(@"EGL_CONFIG_CAVEAT = %d (%d,%d,%d)", value, EGL_NONE, EGL_SLOW_CONFIG, EGL_NON_CONFORMANT_CONFIG); - - eglGetConfigAttrib(display, conf, EGL_NATIVE_RENDERABLE, &value); - NSLog(@"EGL_NATIVE_RENDERABLE = %d", value); - - eglGetConfigAttrib(display, conf, EGL_SURFACE_TYPE, &value); - NSLog(@"EGL_SURFACE_TYPE = %d EGL_WINDOW_BIT=%d EGL_PBUFFER_BIT=%d EGL_PIXMAP_BIT=%d", value, EGL_WINDOW_BIT, EGL_PBUFFER_BIT, EGL_PIXMAP_BIT); -} - -- (BOOL)setupView:(ANativeWindow*)window -{ - const EGLint configAttribs[] = { - EGL_SURFACE_TYPE, EGL_WINDOW_BIT, - EGL_BLUE_SIZE, 8, - EGL_GREEN_SIZE, 8, - EGL_RED_SIZE, 8, - EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, -// EGL_CONTEXT_CLIENT_VERSION, 2, - EGL_NONE - }; - - const EGLint contextAttribs[] = { - EGL_CONTEXT_CLIENT_VERSION, 2, - EGL_NONE - }; - - EGLint numConfigs; - EGLint format; - EGLint width; - EGLint height; - GLfloat ratio; - - if(!eglBindAPI(EGL_OPENGL_ES_API)) - NSLog(@"EGL ERROR - Failed to bind egl API"); - - _eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY); - if(_eglDisplay == EGL_NO_DISPLAY) - { - NSLog(@"eglGetDisplay() returned error %d", eglGetError()); - return NO; - } - - if(eglGetError() != EGL_SUCCESS) { NSLog(@"EGL ERROR: %i", eglGetError()); }; - - if(!eglInitialize(_eglDisplay, NULL, NULL)) - { - NSLog(@"eglInitialize() returned error %d", eglGetError()); - return NO; - } - - if(eglGetError() != EGL_SUCCESS) { NSLog(@"EGL ERROR: %i", eglGetError()); }; - - eglGetConfigs(_eglDisplay, nil, 0, &numConfigs); - - EGLConfig *configs = alloca(numConfigs * sizeof(EGLConfig)); - eglGetConfigs(_eglDisplay, configs, numConfigs, &numConfigs); - - // TODO: Fixme, these values should be more easily configured - BOOL depthBuffer = YES; - BOOL stencilBuffer = YES; - static EGLint colorSizes[4] = { 8, 8, 8, 8 }; - switch ([CCTexture defaultAlphaPixelFormat]) - { - case CCTexturePixelFormat_RGBA8888: - colorSizes[0] = 8; - colorSizes[1] = 8; - colorSizes[2] = 8; - colorSizes[3] = 8; - break; - case CCTexturePixelFormat_RGB565: - colorSizes[0] = 5; - colorSizes[1] = 6; - colorSizes[2] = 5; - colorSizes[3] = 0; - break; - case CCTexturePixelFormat_RGBA4444: - colorSizes[0] = 4; - colorSizes[1] = 4; - colorSizes[2] = 4; - colorSizes[3] = 4; - break; - } - BOOL isATC = NO; - - - qsort_b(configs, numConfigs, sizeof(EGLConfig), ^int(const void *A, const void *B) { - EGLConfig configA = *(EGLConfig *)A; - EGLConfig configB = *(EGLConfig *)B; - - int result = 0; - EGLint value = 0; - EGLint sizeA = 0; - EGLint sizeB = 0; - EGLint colorSizesA[4]; - EGLint colorSizesB[4]; - BOOL nonConformantA = NO, slowA = NO, nonWindowA = NO; - BOOL nonConformantB = NO, slowB = NO, nonWindowB = NO; - - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configA, EGL_CONFIG_CAVEAT, &value); - if (value == EGL_NON_CONFORMANT_CONFIG) { - nonConformantA = YES; - } else if (value == EGL_SLOW_CONFIG) { - slowA = YES; - } - - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configB, EGL_CONFIG_CAVEAT, &value); - if (value == EGL_NON_CONFORMANT_CONFIG) { - nonConformantB = YES; - } else if (value == EGL_SLOW_CONFIG) { - slowB = YES; - } - - if (nonConformantA && nonConformantB) { - return 0; - } else if (nonConformantA) { - return 1; - } else if (nonConformantB) { - return -1; - } - - if (slowA && slowB) { - return 0; - } else if (slowA && !isATC) { - return 1; - } else if (slowB && !isATC) { - return -1; - } else if (slowA && isATC) { - result--; - } else if (slowB && isATC) { - result++; - } - - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configA, EGL_SURFACE_TYPE, &value); - if ((value & EGL_WINDOW_BIT) == 0) { - nonWindowA = YES; - } - - if ((value & EGL_PBUFFER_BIT) == 0) { - result -= 2; - } - - if ((value & EGL_PIXMAP_BIT) == 0) { - result -= 2; - } - - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configB, EGL_SURFACE_TYPE, &value); - if ((value & EGL_WINDOW_BIT) == 0) { - nonWindowB = YES; - } - if ((value & EGL_PBUFFER_BIT) == 0) { - result += 2; - } - - if ((value & EGL_PIXMAP_BIT) == 0) { - result += 2; - } - - if (nonWindowA && nonWindowB) { - return 0; - } else if (nonWindowA) { - return 1; - } else if (nonWindowB) { - return -1; - } - - if (depthBuffer) { - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configA, EGL_DEPTH_SIZE, &sizeA); - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configB, EGL_DEPTH_SIZE, &sizeB); - - if (sizeA <= 0 && sizeB <= 0) { - return 0; - } else if (sizeA <= 0) { - return 1; - } else if (sizeB <= 0) { - return -1; - } - } - - if (stencilBuffer) { - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configA, EGL_STENCIL_SIZE, &sizeA); - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configB, EGL_STENCIL_SIZE, &sizeB); - - if (sizeA <= 0 && sizeB <= 0) { - return 0; - } else if (sizeA <= 0) { - return 1; - } else if (sizeB <= 0) { - return -1; - } - } - - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configA, EGL_NATIVE_RENDERABLE, &value); - - if (value > 0) { - result -= isATC ? 64 : 8; - } - - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configB, EGL_NATIVE_RENDERABLE, &value); - - if (value > 0) { - result += isATC ? 64 : 8; - } - - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configA, EGL_RED_SIZE, &colorSizesA[0]); - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configA, EGL_GREEN_SIZE, &colorSizesA[1]); - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configA, EGL_BLUE_SIZE, &colorSizesA[2]); - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configA, EGL_ALPHA_SIZE, &colorSizesA[3]); - - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configB, EGL_RED_SIZE, &colorSizesB[0]); - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configB, EGL_GREEN_SIZE, &colorSizesB[1]); - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configB, EGL_BLUE_SIZE, &colorSizesB[2]); - eglGetConfigAttrib(_eglDisplay, (EGLConfig)configB, EGL_ALPHA_SIZE, &colorSizesB[3]); - - if (colorSizesA[0] == colorSizes[0] && - colorSizesA[1] == colorSizes[1] && - colorSizesA[2] == colorSizes[2] && - colorSizesA[3] == colorSizes[3]) { - result -= 4; - } - - if (colorSizesB[0] == colorSizes[0] && - colorSizesB[1] == colorSizes[1] && - colorSizesB[2] == colorSizes[2] && - colorSizesB[3] == colorSizes[3]) { - result += 4; - } - - return result; - }); - - _eglConfiguration = configs[0]; - - logConfig(_eglDisplay, _eglConfiguration); - - if(!eglChooseConfig(_eglDisplay, configAttribs, &_eglConfiguration, 1, &numConfigs)) - { - NSLog(@"eglChooseConfig() returned error %d", eglGetError()); - return NO; - } - - if(eglGetError() != EGL_SUCCESS) { NSLog(@"EGL ERROR: %i", eglGetError()); }; - - if(!eglGetConfigAttrib(_eglDisplay, _eglConfiguration, EGL_NATIVE_VISUAL_ID, &format)) - { - NSLog(@"eglGetConfigAttrib() returned error %d", eglGetError()); - return NO; - } - - if(eglGetError() != EGL_SUCCESS) { NSLog(@"EGL ERROR: %i", eglGetError()); }; - - ANativeWindow_setBuffersGeometry(window, 0, 0, format); - - if(!(_eglSurface = eglCreateWindowSurface(_eglDisplay, _eglConfiguration, window, 0))) - { - NSLog(@"eglCreateWindowSurface() returned error %d", eglGetError()); - return NO; - } - - if(eglGetError() != EGL_SUCCESS) { NSLog(@"EGL ERROR: %i", eglGetError()); }; - - if(_eglContext == nil) - { - if(!(_eglContext = eglCreateContext(_eglDisplay, _eglConfiguration, 0, contextAttribs))) - { - NSLog(@"eglCreateContext() returned error %d", eglGetError()); - return NO; - - } - } - - if(eglGetError() != EGL_SUCCESS) { NSLog(@"EGL ERROR: %i", eglGetError()); }; - - if(!eglMakeCurrent(_eglDisplay, _eglSurface, _eglSurface, _eglContext)) - { - NSLog(@"eglMakeCurrent() returned error %d", eglGetError()); - return NO; - } - - if(eglGetError() != EGL_SUCCESS) { NSLog(@"EGL ERROR: %i", eglGetError()); }; - - if(!eglQuerySurface(_eglDisplay, _eglSurface, EGL_WIDTH, &width) || - !eglQuerySurface(_eglDisplay, _eglSurface, EGL_HEIGHT, &height)) - { - NSLog(@"eglQuerySurface() returned error %d", eglGetError()); - return NO; - } - - CCLOG(@"cocos2d: surface size: %dx%d", (int)width, (int)height); - - switch (_screenMode) - { - case CCNativeScreenMode: - { - width /= _contentScaleFactor; - height /= _contentScaleFactor; - } - break; - - case CCScreenScaledAspectFitEmulationMode: - { - CGSize size = CGSizeMake(width, height); - if (width > height) - size = CGSizeMake(height, width); - - _contentScaleFactor = size.width / FIXED_SIZE.width; - - width /= _contentScaleFactor; - height /= _contentScaleFactor; - } - break; - - - default: - CCLOGWARN(@"WARNING: Failed to identify screen mode"); - break; - - } - - - if(eglGetError() != EGL_SUCCESS) { NSLog(@"EGL ERROR: %i", eglGetError()); }; - - _bounds = CGRectMake(0, 0, width, height); - - return YES; -} - -- (void)swapBuffers -{ - eglSwapBuffers(_eglDisplay, _eglSurface); -} - -#warning TODO temporary --(void)addFrameCompletionHandler:(dispatch_block_t)handler -{ - handler(); -} - --(void)beginFrame {} - -#warning TODO temporary --(void)presentFrame -{ - [self swapBuffers]; -} - --(GLuint)fbo -{ - return 0; -} - -@end -#endif // __CC_PLATFORM_ANDROID - - - diff --git a/cocos2d/Platforms/Android/CCGestureListener.h b/cocos2d/Platforms/Android/CCGestureListener.h deleted file mode 100644 index 5eae5497224..00000000000 --- a/cocos2d/Platforms/Android/CCGestureListener.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// CCGestureListener.h -// cocos2d-ios -// -// Created by Philippe Hausler on 6/30/14. -// -// - -#import "ccMacros.h" -#if __CC_PLATFORM_ANDROID - -#import - -@protocol CCGestureListenerDelegate -@optional -- (BOOL)onDoubleTap:(AndroidMotionEvent *)e; -- (BOOL)onDown:(AndroidMotionEvent *)e; -- (BOOL)onFling:(AndroidMotionEvent *)start end:(AndroidMotionEvent *)end velocityX:(float)velocityX velocityY:(float)velocityY; -- (void)onLongPress:(AndroidMotionEvent *)e; -- (BOOL)onScroll:(AndroidMotionEvent *)start end:(AndroidMotionEvent *)end distanceX:(float)dx distanceY:(float)dy; -@end - -BRIDGE_CLASS("com.apportable.GLGestureListener") -@interface CCGestureListener : GLGestureListener - -@property (nonatomic, assign) id delegate; - -@end - -#endif diff --git a/cocos2d/Platforms/Android/CCGestureListener.m b/cocos2d/Platforms/Android/CCGestureListener.m deleted file mode 100644 index 5fb5beff837..00000000000 --- a/cocos2d/Platforms/Android/CCGestureListener.m +++ /dev/null @@ -1,91 +0,0 @@ -// -// CCGestureListener.m -// cocos2d-ios -// -// Created by Philippe Hausler on 6/30/14. -// -// - -#import "CCGestureListener.h" - -#if __CC_PLATFORM_ANDROID - - -@implementation CCGestureListener { - id _delegate; - struct { - int onDoubleTap:1; - int onDown:1; - int onFling:1; - int onLongPress:1; - int onScroll:1; - int reserved:3; - } _flags; -} - -- (void)setDelegate:(id)delegate -{ - if (_delegate != delegate) - { - _flags.onDoubleTap = [delegate respondsToSelector:@selector(onDoubleTap:)]; - _flags.onDown = [delegate respondsToSelector:@selector(onDown:)]; - _flags.onFling = [delegate respondsToSelector:@selector(onFling:end:velocityX:velocityY:)]; - _flags.onLongPress = [delegate respondsToSelector:@selector(onLongPress:)]; - _flags.onScroll = [delegate respondsToSelector:@selector(onScroll:end:distanceX:distanceY:)]; - _delegate = delegate; - } -} - -- (id)delegate -{ - return _delegate; -} - -- (BOOL)onDoubleTap:(AndroidMotionEvent *)e -{ - if (!_flags.onDoubleTap) { - return NO; - } - - return [_delegate onDoubleTap:e]; -} - -- (BOOL)onDown:(AndroidMotionEvent *)e -{ - if (!_flags.onDown) { - return NO; - } - - return [_delegate onDown:e]; -} - -- (BOOL)onFling:(AndroidMotionEvent *)start end:(AndroidMotionEvent *)end velocityX:(float)velocityX velocityY:(float)velocityY -{ - if (!_flags.onFling) { - return NO; - } - - return [_delegate onFling:start end:end velocityX:velocityX velocityY:velocityY]; -} - -- (void)onLongPress:(AndroidMotionEvent *)e -{ - if (!_flags.onLongPress) { - return; - } - - [_delegate onLongPress:e]; -} - -- (BOOL)onScroll:(AndroidMotionEvent *)start end:(AndroidMotionEvent *)end distanceX:(float)dx distanceY:(float)dy -{ - if (!_flags.onScroll) { - return NO; - } - - return [_delegate onScroll:start end:end distanceX:dx distanceY:dy]; -} - -@end - -#endif diff --git a/cocos2d/Platforms/Android/CCMathTypesAndroid.h b/cocos2d/Platforms/Android/CCMathTypesAndroid.h deleted file mode 100644 index 5511aca488a..00000000000 --- a/cocos2d/Platforms/Android/CCMathTypesAndroid.h +++ /dev/null @@ -1,167 +0,0 @@ -// -// CCMathTypesAndroid.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/10/14. -// -// - -#ifndef __CC_MATH_TYPES_H -#define __CC_MATH_TYPES_H - -#import "ccMacros.h" - -#if __CC_PLATFORM_ANDROID - -#if defined(__STRICT_ANSI__) -struct _CCMatrix2 -{ - float m[4]; -}; -typedef struct _CCMatrix2 CCMatrix2; -#else -union _CCMatrix2 -{ - struct - { - float m00, m01; - float m10, m11; - }; - float m2[2][2]; - float m[4]; -}; -typedef union _CCMatrix2 CCMatrix2; -#endif - -#if defined(__STRICT_ANSI__) -struct _CCMatrix3 -{ - float m[9]; -}; -typedef struct _CCMatrix3 CCMatrix3; -#else -union _CCMatrix3 -{ - struct - { - float m00, m01, m02; - float m10, m11, m12; - float m20, m21, m22; - }; - float m[9]; -}; -typedef union _CCMatrix3 CCMatrix3; -#endif - -/* - m30, m31, and m32 correspond to the translation values tx, ty, and tz, respectively. - m[12], m[13], and m[14] correspond to the translation values tx, ty, and tz, respectively. - */ -#if defined(__STRICT_ANSI__) -struct _CCMatrix4 -{ - float m[16]; -} __attribute__((aligned(16))); -typedef struct _CCMatrix4 CCMatrix4; -#else -union _CCMatrix4 -{ - struct - { - float m00, m01, m02, m03; - float m10, m11, m12, m13; - float m20, m21, m22, m23; - float m30, m31, m32, m33; - }; - float m[16]; -} __attribute__((aligned(16))); -typedef union _CCMatrix4 CCMatrix4; -#endif - -#if defined(__STRICT_ANSI__) -struct _CCVector2 -{ - float v[2]; -}; -typedef struct _CCVector2 CCVector2; -#else -union _CCVector2 -{ - struct { float x, y; }; - struct { float s, t; }; - float v[2]; -}; -typedef union _CCVector2 CCVector2; -#endif - -#if defined(__STRICT_ANSI__) -struct _CCVector3 -{ - float v[3]; -}; -typedef struct _CCVector3 CCVector3; -#else -union _CCVector3 -{ - struct { float x, y, z; }; - struct { float r, g, b; }; - struct { float s, t, p; }; - float v[3]; -}; -typedef union _CCVector3 CCVector3; -#endif - -#if defined(__STRICT_ANSI__) -struct _CCVector4 -{ - float v[4]; -} __attribute__((aligned(16))); -typedef struct _CCVector4 CCVector4; -#else -union _CCVector4 -{ - struct { float x, y, z, w; }; - struct { float r, g, b, a; }; - struct { float s, t, p, q; }; - float v[4]; -} __attribute__((aligned(16))); -typedef union _CCVector4 CCVector4; -#endif - -/* - x, y, and z represent the imaginary values. - Vector v represents the imaginary values. - q[0], q[1], and q[2] represent the imaginary values. - */ -#if defined(__STRICT_ANSI__) -struct _CCQuaternion -{ - float q[4]; -} __attribute__((aligned(16))); -typedef struct _CCQuaternion CCQuaternion; -#else -union _CCQuaternion -{ - struct { CCVector3 v; float s; }; - struct { float x, y, z, w; }; - float q[4]; -} __attribute__((aligned(16))); -typedef union _CCQuaternion CCQuaternion; -#endif - -//#ifdef __cplusplus -//} -//#endif - -#define GLKMatrix4 CCMatrix4 -#define GLKMatrix3 CCMatrix3 -#define GLKMatrix2 CCMatrix2 -#define GLKVector2 CCVector2 -#define GLKVector3 CCVector3 -#define GLKVector4 CCVector4 -#define CCQuaternion CCQuaternion - -#endif - -#endif // __CC_MATH_TYPES_H - diff --git a/cocos2d/Platforms/Android/CCMathUtilsAndroid.h b/cocos2d/Platforms/Android/CCMathUtilsAndroid.h deleted file mode 100644 index 6054aa5cc60..00000000000 --- a/cocos2d/Platforms/Android/CCMathUtilsAndroid.h +++ /dev/null @@ -1,58 +0,0 @@ -// -// CCMathUtilsAndroid -// cocos2d-ios -// -// Created by Oleg Osin on 6/10/14. -// -// - -#ifndef __CC_MATH_UTILS_H -#define __CC_MATH_UTILS_H - -#include -#include - -#import "CCMathTypesAndroid.h" - -#if __CC_PLATFORM_ANDROID - -#ifdef __OBJC__ -#import -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - static inline float CCMathDegreesToRadians(float degrees) { return degrees * (M_PI / 180); }; - static inline float CCMathRadiansToDegrees(float radians) { return radians * (180 / M_PI); }; - - GLKVector3 CCMathProject(GLKVector3 object, GLKMatrix4 model, GLKMatrix4 projection, int *viewport); - GLKVector3 CCMathUnproject(GLKVector3 window, GLKMatrix4 model, GLKMatrix4 projection, int *viewport, bool *success); - -#if defined(__OBJC__) && __CC_PLATFORM_ANDROID - NSString *NSStringFromCCMatrix2(GLKMatrix2 matrix); - NSString *NSStringFromCCMatrix3(GLKMatrix3 matrix); - NSString *NSStringFromCCMatrix4(GLKMatrix4 matrix); - - NSString *NSStringFromCCVector2(GLKVector2 vector); - NSString *NSStringFromCCVector3(GLKVector3 vector); - NSString *NSStringFromCCVector4(GLKVector4 vector); - - #define NSStringFromGLKVector2 NSStringFromCCVector2 - #define NSStringFromGLKVector3 NSStringFromCCVector3 - #define NSStringFromGLKVector4 NSStringFromCCVector4 - - #define NSStringFromGLKMatrix2 NSStringFromCCMatrix2 - #define NSStringFromGLKMatrix3 NSStringFromCCMatrix3 - #define NSStringFromGLKMatrix4 NSStringFromCCMatrix4 - -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -#endif /* __CC_MATH_UTILS_H */ diff --git a/cocos2d/Platforms/Android/CCMatrix3.h b/cocos2d/Platforms/Android/CCMatrix3.h deleted file mode 100644 index 11c1c3757ac..00000000000 --- a/cocos2d/Platforms/Android/CCMatrix3.h +++ /dev/null @@ -1,498 +0,0 @@ -// -// CCMatrix3.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/10/14. -// -// -#ifndef __CC_MATRIX_3_H -#define __CC_MATRIX_3_H - -#include -#include -#include - -#if defined(__ARM_NEON__) -#include -#endif - -#import "CCMathTypesAndroid.h" -#import "CCVector3.h" -#import "CCQuaternion.h" - -#if __CC_PLATFORM_ANDROID - -#ifdef __cplusplus -extern "C" { -#endif - -#pragma mark - -#pragma mark Prototypes -#pragma mark - - - static const CCMatrix3 CCMatrix3Identity = { {1, 0, 0, - 0, 1, 0, - 0, 0, 1} }; - - CCMatrix3 CCMatrix3Invert(CCMatrix3 matrix, bool *isInvertible); - CCMatrix3 CCMatrix3InvertAndTranspose(CCMatrix3 matrix, bool *isInvertible); - -#pragma mark - -#pragma mark Implementations -#pragma mark - - - static inline CCMatrix3 CCMatrix3Make(float m00, float m01, float m02, - float m10, float m11, float m12, - float m20, float m21, float m22) - { - CCMatrix3 m = { { m00, m01, m02, - m10, m11, m12, - m20, m21, m22 } }; - return m; - } - - static inline CCMatrix3 CCMatrix3MakeAndTranspose(float m00, float m01, float m02, - float m10, float m11, float m12, - float m20, float m21, float m22) - { - CCMatrix3 m = { { m00, m10, m20, - m01, m11, m21, - m02, m12, m22} }; - return m; - } - - static inline CCMatrix3 CCMatrix3MakeWithArray(float values[9]) - { - CCMatrix3 m = { { values[0], values[1], values[2], - values[3], values[4], values[5], - values[6], values[7], values[8] } }; - return m; - } - - static inline CCMatrix3 CCMatrix3MakeWithArrayAndTranspose(float values[9]) - { - CCMatrix3 m = { { values[0], values[3], values[6], - values[1], values[4], values[7], - values[2], values[5], values[8] } }; - return m; - } - - static inline CCMatrix3 CCMatrix3MakeWithRows(CCVector3 row0, - CCVector3 row1, - CCVector3 row2) - { - CCMatrix3 m = { { row0.v[0], row1.v[0], row2.v[0], - row0.v[1], row1.v[1], row2.v[1], - row0.v[2], row1.v[2], row2.v[2] } }; - return m; - } - - static inline CCMatrix3 CCMatrix3MakeWithColumns(CCVector3 column0, - CCVector3 column1, - CCVector3 column2) - { - CCMatrix3 m = { { column0.v[0], column0.v[1], column0.v[2], - column1.v[0], column1.v[1], column1.v[2], - column2.v[0], column2.v[1], column2.v[2] } }; - return m; - } - - /* - The quaternion will be normalized before conversion. - */ - static inline CCMatrix3 CCMatrix3MakeWithQuaternion(CCQuaternion quaternion) - { - quaternion = CCQuaternionNormalize(quaternion); - - float x = quaternion.q[0]; - float y = quaternion.q[1]; - float z = quaternion.q[2]; - float w = quaternion.q[3]; - - float _2x = x + x; - float _2y = y + y; - float _2z = z + z; - float _2w = w + w; - - CCMatrix3 m = { { 1.0f - _2y * y - _2z * z, - _2x * y + _2w * z, - _2x * z - _2w * y, - - _2x * y - _2w * z, - 1.0f - _2x * x - _2z * z, - _2y * z + _2w * x, - - _2x * z + _2w * y, - _2y * z - _2w * x, - 1.0f - _2x * x - _2y * y } }; - - return m; - } - - static inline CCMatrix3 CCMatrix3MakeScale(float sx, float sy, float sz) - { - CCMatrix3 m = CCMatrix3Identity; - m.m[0] = sx; - m.m[4] = sy; - m.m[8] = sz; - return m; - } - - static inline CCMatrix3 CCMatrix3MakeRotation(float radians, float x, float y, float z) - { - CCVector3 v = CCVector3Normalize(CCVector3Make(x, y, z)); - float cos = cosf(radians); - float cosp = 1.0f - cos; - float sin = sinf(radians); - - CCMatrix3 m = { { cos + cosp * v.v[0] * v.v[0], - cosp * v.v[0] * v.v[1] + v.v[2] * sin, - cosp * v.v[0] * v.v[2] - v.v[1] * sin, - - cosp * v.v[0] * v.v[1] - v.v[2] * sin, - cos + cosp * v.v[1] * v.v[1], - cosp * v.v[1] * v.v[2] + v.v[0] * sin, - - cosp * v.v[0] * v.v[2] + v.v[1] * sin, - cosp * v.v[1] * v.v[2] - v.v[0] * sin, - cos + cosp * v.v[2] * v.v[2] } }; - - return m; - } - - static inline CCMatrix3 CCMatrix3MakeXRotation(float radians) - { - float cos = cosf(radians); - float sin = sinf(radians); - - CCMatrix3 m = { { 1.0f, 0.0f, 0.0f, - 0.0f, cos, sin, - 0.0f, -sin, cos } }; - - return m; - } - - static inline CCMatrix3 CCMatrix3MakeYRotation(float radians) - { - float cos = cosf(radians); - float sin = sinf(radians); - - CCMatrix3 m = { { cos, 0.0f, -sin, - 0.0f, 1.0f, 0.0f, - sin, 0.0f, cos } }; - - return m; - } - - static inline CCMatrix3 CCMatrix3MakeZRotation(float radians) - { - float cos = cosf(radians); - float sin = sinf(radians); - - CCMatrix3 m = { { cos, sin, 0.0f, - -sin, cos, 0.0f, - 0.0f, 0.0f, 1.0f } }; - - return m; - } - - /* - Returns the upper left 2x2 portion of the 3x3 matrix. - */ - static inline CCMatrix2 CCMatrix3GetMatrix2(CCMatrix3 matrix) - { - CCMatrix2 m = { { matrix.m[0], matrix.m[1], - matrix.m[3], matrix.m[4] } }; - return m; - } - - static inline CCVector3 CCMatrix3GetRow(CCMatrix3 matrix, int row) - { - CCVector3 v = { { matrix.m[row], matrix.m[3 + row], matrix.m[6 + row] } }; - return v; - } - - static inline CCVector3 CCMatrix3GetColumn(CCMatrix3 matrix, int column) - { -#if defined(__ARM_NEON__) - CCVector3 v; - *((float32x2_t *)&v) = vld1_f32(&(matrix.m[column * 3])); - v.v[2] = matrix.m[column * 3 + 2]; - return v; -#else - CCVector3 v = { { matrix.m[column * 3 + 0], matrix.m[column * 3 + 1], matrix.m[column * 3 + 2] } }; - return v; -#endif - } - - static inline CCMatrix3 CCMatrix3SetRow(CCMatrix3 matrix, int row, CCVector3 vector) - { - matrix.m[row] = vector.v[0]; - matrix.m[row + 3] = vector.v[1]; - matrix.m[row + 6] = vector.v[2]; - - return matrix; - } - - static inline CCMatrix3 CCMatrix3SetColumn(CCMatrix3 matrix, int column, CCVector3 vector) - { -#if defined(__ARM_NEON__) - float *dst = &(matrix.m[column * 3]); - vst1_f32(dst, vld1_f32(vector.v)); - dst[2] = vector.v[2]; - return matrix; -#else - matrix.m[column * 3 + 0] = vector.v[0]; - matrix.m[column * 3 + 1] = vector.v[1]; - matrix.m[column * 3 + 2] = vector.v[2]; - - return matrix; -#endif - } - - static inline CCMatrix3 CCMatrix3Transpose(CCMatrix3 matrix) - { - CCMatrix3 m = { { matrix.m[0], matrix.m[3], matrix.m[6], - matrix.m[1], matrix.m[4], matrix.m[7], - matrix.m[2], matrix.m[5], matrix.m[8] } }; - return m; - } - - static inline CCMatrix3 CCMatrix3Multiply(CCMatrix3 matrixLeft, CCMatrix3 matrixRight) - { -#if defined(__ARM_NEON__) - CCMatrix3 m; - float32x4x3_t iMatrixLeft; - float32x4x3_t iMatrixRight; - float32x4x3_t mm; - - iMatrixLeft.val[0] = *(float32x4_t *)&matrixLeft.m[0]; // 0 1 2 3 - iMatrixLeft.val[1] = *(float32x4_t *)&matrixLeft.m[3]; // 3 4 5 6 - iMatrixLeft.val[2] = *(float32x4_t *)&matrixLeft.m[5]; // 5 6 7 8 - - iMatrixRight.val[0] = *(float32x4_t *)&matrixRight.m[0]; - iMatrixRight.val[1] = *(float32x4_t *)&matrixRight.m[3]; - iMatrixRight.val[2] = *(float32x4_t *)&matrixRight.m[5]; - - iMatrixLeft.val[2] = vextq_f32(iMatrixLeft.val[2], iMatrixLeft.val[2], 1); // 6 7 8 x - - mm.val[0] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[0], 0)); - mm.val[1] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[0], 3)); - mm.val[2] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[1], 3)); - - mm.val[0] = vmlaq_n_f32(mm.val[0], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[0], 1)); - mm.val[1] = vmlaq_n_f32(mm.val[1], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[1], 1)); - mm.val[2] = vmlaq_n_f32(mm.val[2], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[2], 2)); - - mm.val[0] = vmlaq_n_f32(mm.val[0], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[0], 2)); - mm.val[1] = vmlaq_n_f32(mm.val[1], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[1], 2)); - mm.val[2] = vmlaq_n_f32(mm.val[2], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[2], 3)); - - *(float32x4_t *)&m.m[0] = mm.val[0]; - *(float32x4_t *)&m.m[3] = mm.val[1]; - *(float32x2_t *)&m.m[6] = vget_low_f32(mm.val[2]); - m.m[8] = vgetq_lane_f32(mm.val[2], 2); - - return m; -#else - CCMatrix3 m; - - m.m[0] = matrixLeft.m[0] * matrixRight.m[0] + matrixLeft.m[3] * matrixRight.m[1] + matrixLeft.m[6] * matrixRight.m[2]; - m.m[3] = matrixLeft.m[0] * matrixRight.m[3] + matrixLeft.m[3] * matrixRight.m[4] + matrixLeft.m[6] * matrixRight.m[5]; - m.m[6] = matrixLeft.m[0] * matrixRight.m[6] + matrixLeft.m[3] * matrixRight.m[7] + matrixLeft.m[6] * matrixRight.m[8]; - - m.m[1] = matrixLeft.m[1] * matrixRight.m[0] + matrixLeft.m[4] * matrixRight.m[1] + matrixLeft.m[7] * matrixRight.m[2]; - m.m[4] = matrixLeft.m[1] * matrixRight.m[3] + matrixLeft.m[4] * matrixRight.m[4] + matrixLeft.m[7] * matrixRight.m[5]; - m.m[7] = matrixLeft.m[1] * matrixRight.m[6] + matrixLeft.m[4] * matrixRight.m[7] + matrixLeft.m[7] * matrixRight.m[8]; - - m.m[2] = matrixLeft.m[2] * matrixRight.m[0] + matrixLeft.m[5] * matrixRight.m[1] + matrixLeft.m[8] * matrixRight.m[2]; - m.m[5] = matrixLeft.m[2] * matrixRight.m[3] + matrixLeft.m[5] * matrixRight.m[4] + matrixLeft.m[8] * matrixRight.m[5]; - m.m[8] = matrixLeft.m[2] * matrixRight.m[6] + matrixLeft.m[5] * matrixRight.m[7] + matrixLeft.m[8] * matrixRight.m[8]; - - return m; -#endif - } - - static inline CCMatrix3 CCMatrix3Add(CCMatrix3 matrixLeft, CCMatrix3 matrixRight) - { -#if defined(__ARM_NEON__) - CCMatrix3 m; - - *(float32x4_t *)&(m.m[0]) = vaddq_f32(*(float32x4_t *)&(matrixLeft.m[0]), *(float32x4_t *)&(matrixRight.m[0])); - *(float32x4_t *)&(m.m[4]) = vaddq_f32(*(float32x4_t *)&(matrixLeft.m[4]), *(float32x4_t *)&(matrixRight.m[4])); - m.m[8] = matrixLeft.m[8] + matrixRight.m[8]; - - return m; -#else - CCMatrix3 m; - - m.m[0] = matrixLeft.m[0] + matrixRight.m[0]; - m.m[1] = matrixLeft.m[1] + matrixRight.m[1]; - m.m[2] = matrixLeft.m[2] + matrixRight.m[2]; - - m.m[3] = matrixLeft.m[3] + matrixRight.m[3]; - m.m[4] = matrixLeft.m[4] + matrixRight.m[4]; - m.m[5] = matrixLeft.m[5] + matrixRight.m[5]; - - m.m[6] = matrixLeft.m[6] + matrixRight.m[6]; - m.m[7] = matrixLeft.m[7] + matrixRight.m[7]; - m.m[8] = matrixLeft.m[8] + matrixRight.m[8]; - - return m; -#endif - } - - static inline CCMatrix3 CCMatrix3Subtract(CCMatrix3 matrixLeft, CCMatrix3 matrixRight) - { -#if defined(__ARM_NEON__) - CCMatrix3 m; - - *(float32x4_t *)&(m.m[0]) = vsubq_f32(*(float32x4_t *)&(matrixLeft.m[0]), *(float32x4_t *)&(matrixRight.m[0])); - *(float32x4_t *)&(m.m[4]) = vsubq_f32(*(float32x4_t *)&(matrixLeft.m[4]), *(float32x4_t *)&(matrixRight.m[4])); - m.m[8] = matrixLeft.m[8] - matrixRight.m[8]; - - return m; -#else - CCMatrix3 m; - - m.m[0] = matrixLeft.m[0] - matrixRight.m[0]; - m.m[1] = matrixLeft.m[1] - matrixRight.m[1]; - m.m[2] = matrixLeft.m[2] - matrixRight.m[2]; - - m.m[3] = matrixLeft.m[3] - matrixRight.m[3]; - m.m[4] = matrixLeft.m[4] - matrixRight.m[4]; - m.m[5] = matrixLeft.m[5] - matrixRight.m[5]; - - m.m[6] = matrixLeft.m[6] - matrixRight.m[6]; - m.m[7] = matrixLeft.m[7] - matrixRight.m[7]; - m.m[8] = matrixLeft.m[8] - matrixRight.m[8]; - - return m; -#endif - } - - static inline CCMatrix3 CCMatrix3Scale(CCMatrix3 matrix, float sx, float sy, float sz) - { - CCMatrix3 m = { { matrix.m[0] * sx, matrix.m[1] * sx, matrix.m[2] * sx, - matrix.m[3] * sy, matrix.m[4] * sy, matrix.m[5] * sy, - matrix.m[6] * sz, matrix.m[7] * sz, matrix.m[8] * sz } }; - return m; - } - - static inline CCMatrix3 CCMatrix3ScaleWithVector3(CCMatrix3 matrix, CCVector3 scaleVector) - { - CCMatrix3 m = { { matrix.m[0] * scaleVector.v[0], matrix.m[1] * scaleVector.v[0], matrix.m[2] * scaleVector.v[0], - matrix.m[3] * scaleVector.v[1], matrix.m[4] * scaleVector.v[1], matrix.m[5] * scaleVector.v[1], - matrix.m[6] * scaleVector.v[2], matrix.m[7] * scaleVector.v[2], matrix.m[8] * scaleVector.v[2] } }; - return m; - } - - /* - The last component of the CCVector4, scaleVector, is ignored. - */ - static inline CCMatrix3 CCMatrix3ScaleWithVector4(CCMatrix3 matrix, CCVector4 scaleVector) - { - CCMatrix3 m = { { matrix.m[0] * scaleVector.v[0], matrix.m[1] * scaleVector.v[0], matrix.m[2] * scaleVector.v[0], - matrix.m[3] * scaleVector.v[1], matrix.m[4] * scaleVector.v[1], matrix.m[5] * scaleVector.v[1], - matrix.m[6] * scaleVector.v[2], matrix.m[7] * scaleVector.v[2], matrix.m[8] * scaleVector.v[2] } }; - return m; - } - - static inline CCMatrix3 CCMatrix3Rotate(CCMatrix3 matrix, float radians, float x, float y, float z) - { - CCMatrix3 rm = CCMatrix3MakeRotation(radians, x, y, z); - return CCMatrix3Multiply(matrix, rm); - } - - static inline CCMatrix3 CCMatrix3RotateWithVector3(CCMatrix3 matrix, float radians, CCVector3 axisVector) - { - CCMatrix3 rm = CCMatrix3MakeRotation(radians, axisVector.v[0], axisVector.v[1], axisVector.v[2]); - return CCMatrix3Multiply(matrix, rm); - } - - /* - The last component of the CCVector4, axisVector, is ignored. - */ - static inline CCMatrix3 CCMatrix3RotateWithVector4(CCMatrix3 matrix, float radians, CCVector4 axisVector) - { - CCMatrix3 rm = CCMatrix3MakeRotation(radians, axisVector.v[0], axisVector.v[1], axisVector.v[2]); - return CCMatrix3Multiply(matrix, rm); - } - - static inline CCMatrix3 CCMatrix3RotateX(CCMatrix3 matrix, float radians) - { - CCMatrix3 rm = CCMatrix3MakeXRotation(radians); - return CCMatrix3Multiply(matrix, rm); - } - - static inline CCMatrix3 CCMatrix3RotateY(CCMatrix3 matrix, float radians) - { - CCMatrix3 rm = CCMatrix3MakeYRotation(radians); - return CCMatrix3Multiply(matrix, rm); - } - - static inline CCMatrix3 CCMatrix3RotateZ(CCMatrix3 matrix, float radians) - { - CCMatrix3 rm = CCMatrix3MakeZRotation(radians); - return CCMatrix3Multiply(matrix, rm); - } - - static inline CCVector3 CCMatrix3MultiplyVector3(CCMatrix3 matrixLeft, CCVector3 vectorRight) - { - CCVector3 v = { { matrixLeft.m[0] * vectorRight.v[0] + matrixLeft.m[3] * vectorRight.v[1] + matrixLeft.m[6] * vectorRight.v[2], - matrixLeft.m[1] * vectorRight.v[0] + matrixLeft.m[4] * vectorRight.v[1] + matrixLeft.m[7] * vectorRight.v[2], - matrixLeft.m[2] * vectorRight.v[0] + matrixLeft.m[5] * vectorRight.v[1] + matrixLeft.m[8] * vectorRight.v[2] } }; - return v; - } - - static inline void CCMatrix3MultiplyVector3Array(CCMatrix3 matrix, CCVector3 *vectors, size_t vectorCount) - { - int i; - for (i=0; i < vectorCount; i++) - vectors[i] = CCMatrix3MultiplyVector3(matrix, vectors[i]); - } - -#ifdef __cplusplus -} -#endif - -#define GLKMatrix3Identity CCMatrix3Identity -#define GLKMatrix3Invert CCMatrix3Invert -#define GLKMatrix3InvertAndTranspose CCMatrix3InvertAndTranspose -#define GLKMatrix3Make CCMatrix3Make -#define GLKMatrix3MakeAndTranspose CCMatrix3MakeAndTranspose -#define GLKMatrix3MakeWithArray CCMatrix3MakeWithArray -#define GLKMatrix3MakeWithArrayAndTranspose CCMatrix3MakeWithArrayAndTranspose -#define GLKMatrix3MakeWithRows CCMatrix3MakeWithRows -#define GLKMatrix3MakeWithColumns CCMatrix3MakeWithColumns -#define GLKMatrix3MakeWithQuaternion CCMatrix3MakeWithQuaternion -#define GLKMatrix3MakeScale CCMatrix3MakeScale -#define GLKMatrix3MakeRotation CCMatrix3MakeRotation -#define GLKMatrix3MakeXRotation CCMatrix3MakeXRotation -#define GLKMatrix3MakeYRotation CCMatrix3MakeYRotation -#define GLKMatrix3MakeZRotation CCMatrix3MakeZRotation -#define GLKMatrix3GetMatrix2 CCMatrix3GetMatrix2 -#define GLKMatrix3GetRow CCMatrix3GetRow -#define GLKMatrix3GetColumn CCMatrix3GetColumn -#define GLKMatrix3SetRow CCMatrix3SetRow -#define GLKMatrix3SetColumn CCMatrix3SetColumn -#define GLKMatrix3Transpose CCMatrix3Transpose -#define GLKMatrix3Multiply CCMatrix3Multiply -#define GLKMatrix3Add CCMatrix3Add -#define GLKMatrix3Subtract CCMatrix3Subtract -#define GLKMatrix3Scale CCMatrix3Scale -#define GLKMatrix3ScaleWithVector3 CCMatrix3ScaleWithVector3 -#define GLKMatrix3ScaleWithVector4 CCMatrix3ScaleWithVector4 -#define GLKMatrix3Rotate CCMatrix3Rotate -#define GLKMatrix3RotateWithVector3 CCMatrix3RotateWithVector3 -#define GLKMatrix3RotateWithVector4 CCMatrix3RotateWithVector4 -#define GLKMatrix3RotateX CCMatrix3RotateX -#define GLKMatrix3RotateY CCMatrix3RotateY -#define GLKMatrix3RotateZ CCMatrix3RotateZ -#define GLKMatrix3MultiplyVector3 CCMatrix3MultiplyVector3 -#define GLKMatrix3MultiplyVector3Array CCMatrix3MultiplyVector3Array - - -#endif - -#endif /* __CC_MATRIX_3_H */ diff --git a/cocos2d/Platforms/Android/CCMatrix3.m b/cocos2d/Platforms/Android/CCMatrix3.m deleted file mode 100644 index 1312a71ac41..00000000000 --- a/cocos2d/Platforms/Android/CCMatrix3.m +++ /dev/null @@ -1,58 +0,0 @@ -#import "CCMatrix3.h" - -#if __CC_PLATFORM_ANDROID - -static inline float CCMatrixDeterminant(CCMatrix3 matrix) { - float det = 0.0f; - - det += matrix.m[0] * matrix.m[4] * matrix.m[8]; - det += matrix.m[1] * matrix.m[5] * matrix.m[6]; - det += matrix.m[2] * matrix.m[3] * matrix.m[7]; - det -= matrix.m[2] * matrix.m[4] * matrix.m[6]; - det -= matrix.m[0] * matrix.m[5] * matrix.m[7]; - det -= matrix.m[1] * matrix.m[3] * matrix.m[8]; - - return det; -} - -static inline CCMatrix3 CCMatrixAdjugate(CCMatrix3 matrix) { - CCMatrix3 adjugate; - - adjugate.m[0] = matrix.m[4] * matrix.m[8] - matrix.m[5] * matrix.m[7]; - adjugate.m[1] = matrix.m[2] * matrix.m[7] - matrix.m[1] * matrix.m[8]; - adjugate.m[2] = matrix.m[1] * matrix.m[5] - matrix.m[2] * matrix.m[4]; - adjugate.m[3] = matrix.m[5] * matrix.m[6] - matrix.m[3] * matrix.m[8]; - adjugate.m[4] = matrix.m[0] * matrix.m[8] - matrix.m[2] * matrix.m[6]; - adjugate.m[5] = matrix.m[2] * matrix.m[3] - matrix.m[0] * matrix.m[5]; - adjugate.m[6] = matrix.m[3] * matrix.m[7] - matrix.m[4] * matrix.m[6]; - adjugate.m[7] = matrix.m[1] * matrix.m[6] - matrix.m[0] * matrix.m[7]; - adjugate.m[8] = matrix.m[0] * matrix.m[4] - matrix.m[1] * matrix.m[3]; - - return adjugate; -} - - - -CCMatrix3 CCMatrix3Invert(CCMatrix3 matrix, bool *isInvertible) { - float det = CCMatrixDeterminant(matrix); - if (det == 0.0f) { - return CCMatrix3Identity; - } - - float detInv = 1.0 / det; - CCMatrix3 adjugate = CCMatrixAdjugate(matrix); - return CCMatrix3Multiply(adjugate, matrix); -} - -CCMatrix3 CCMatrix3InvertAndTranspose(CCMatrix3 matrix, bool *isInvertible) { - float det = CCMatrixDeterminant(matrix); - if (det == 0.0f) { - return CCMatrix3Identity; - } - - float detInv = 1.0 / det; - CCMatrix3 adjugate = CCMatrixAdjugate(matrix); - return CCMatrix3Transpose(CCMatrix3Multiply(adjugate, matrix)); -} - -#endif diff --git a/cocos2d/Platforms/Android/CCMatrix4.h b/cocos2d/Platforms/Android/CCMatrix4.h deleted file mode 100644 index 1edd04193b7..00000000000 --- a/cocos2d/Platforms/Android/CCMatrix4.h +++ /dev/null @@ -1,859 +0,0 @@ -// -// CCMatrix4.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/10/14. -// -// - -#ifndef __CC_MATRIX_4_H -#define __CC_MATRIX_4_H - -#include -#include -#include - -#if defined(__ARM_NEON__) -#include -#endif - -#import "CCMathTypesAndroid.h" - -#if __CC_PLATFORM_ANDROID - -#import "CCVector3.h" -#import "CCVector4.h" -#import "CCQuaternion.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#pragma mark - -#pragma mark Prototypes -#pragma mark - - - static const CCMatrix4 CCMatrix4Identity = { {1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1} }; - - CCMatrix4 CCMatrix4Invert(CCMatrix4 matrix, bool *isInvertible); - - - /* - m30, m31, and m32 correspond to the translation values tx, ty, tz, respectively. - */ - static inline CCMatrix4 CCMatrix4Make(float m00, float m01, float m02, float m03, - float m10, float m11, float m12, float m13, - float m20, float m21, float m22, float m23, - float m30, float m31, float m32, float m33) - { - CCMatrix4 m = { .m = { m00, m01, m02, m03, - m10, m11, m12, m13, - m20, m21, m22, m23, - m30, m31, m32, m33 } }; - return m; - } - - /* - m03, m13, and m23 correspond to the translation values tx, ty, tz, respectively. - */ - static inline CCMatrix4 CCMatrix4MakeAndTranspose(float m00, float m01, float m02, float m03, - float m10, float m11, float m12, float m13, - float m20, float m21, float m22, float m23, - float m30, float m31, float m32, float m33) - { - CCMatrix4 m = { { m00, m10, m20, m30, - m01, m11, m21, m31, - m02, m12, m22, m32, - m03, m13, m23, m33 } }; - return m; - } - - /* - m[12], m[13], and m[14] correspond to the translation values tx, ty, and tz, respectively. - */ - static inline CCMatrix4 CCMatrix4MakeWithArray(float values[16]) - { - CCMatrix4 m = { { values[0], values[1], values[2], values[3], - values[4], values[5], values[6], values[7], - values[8], values[9], values[10], values[11], - values[12], values[13], values[14], values[15] } }; - return m; - } - - /* - m[3], m[7], and m[11] correspond to the translation values tx, ty, and tz, respectively. - */ - static inline CCMatrix4 CCMatrix4MakeWithArrayAndTranspose(float values[16]) - { -#if defined(__ARM_NEON__) - float32x4x4_t m = vld4q_f32(values); - return *(CCMatrix4 *)&m; -#else - CCMatrix4 m = { { values[0], values[4], values[8], values[12], - values[1], values[5], values[9], values[13], - values[2], values[6], values[10], values[14], - values[3], values[7], values[11], values[15] } }; - return m; -#endif - } - - /* - row0, row1, and row2's last component should correspond to the translation values tx, ty, and tz, respectively. - */ - static inline CCMatrix4 CCMatrix4MakeWithRows(CCVector4 row0, - CCVector4 row1, - CCVector4 row2, - CCVector4 row3) - { - CCMatrix4 m = { { row0.v[0], row1.v[0], row2.v[0], row3.v[0], - row0.v[1], row1.v[1], row2.v[1], row3.v[1], - row0.v[2], row1.v[2], row2.v[2], row3.v[2], - row0.v[3], row1.v[3], row2.v[3], row3.v[3] } }; - return m; - } - - /* - column3's first three components should correspond to the translation values tx, ty, and tz. - */ - static inline CCMatrix4 CCMatrix4MakeWithColumns(CCVector4 column0, - CCVector4 column1, - CCVector4 column2, - CCVector4 column3) - { -#if defined(__ARM_NEON__) - float32x4x4_t m; - m.val[0] = vld1q_f32(column0.v); - m.val[1] = vld1q_f32(column1.v); - m.val[2] = vld1q_f32(column2.v); - m.val[3] = vld1q_f32(column3.v); - return *(CCMatrix4 *)&m; -#else - CCMatrix4 m = { { column0.v[0], column0.v[1], column0.v[2], column0.v[3], - column1.v[0], column1.v[1], column1.v[2], column1.v[3], - column2.v[0], column2.v[1], column2.v[2], column2.v[3], - column3.v[0], column3.v[1], column3.v[2], column3.v[3] } }; - return m; -#endif - } - - /* - The quaternion will be normalized before conversion. - */ - static inline CCMatrix4 CCMatrix4MakeWithQuaternion(CCQuaternion quaternion) - { - quaternion = CCQuaternionNormalize(quaternion); - - float x = quaternion.q[0]; - float y = quaternion.q[1]; - float z = quaternion.q[2]; - float w = quaternion.q[3]; - - float _2x = x + x; - float _2y = y + y; - float _2z = z + z; - float _2w = w + w; - - CCMatrix4 m = { { 1.0f - _2y * y - _2z * z, - _2x * y + _2w * z, - _2x * z - _2w * y, - 0.0f, - _2x * y - _2w * z, - 1.0f - _2x * x - _2z * z, - _2y * z + _2w * x, - 0.0f, - _2x * z + _2w * y, - _2y * z - _2w * x, - 1.0f - _2x * x - _2y * y, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 1.0f } }; - - return m; - } - - static inline CCMatrix4 CCMatrix4MakeTranslation(float tx, float ty, float tz) - { - CCMatrix4 m = CCMatrix4Identity; - m.m[12] = tx; - m.m[13] = ty; - m.m[14] = tz; - return m; - } - - static inline CCMatrix4 CCMatrix4MakeScale(float sx, float sy, float sz) - { - CCMatrix4 m = CCMatrix4Identity; - m.m[0] = sx; - m.m[5] = sy; - m.m[10] = sz; - return m; - } - - static inline CCMatrix4 CCMatrix4MakeRotation(float radians, float x, float y, float z) - { - CCVector3 v = CCVector3Normalize(CCVector3Make(x, y, z)); - float cos = cosf(radians); - float cosp = 1.0f - cos; - float sin = sinf(radians); - - CCMatrix4 m = { { cos + cosp * v.v[0] * v.v[0], - cosp * v.v[0] * v.v[1] + v.v[2] * sin, - cosp * v.v[0] * v.v[2] - v.v[1] * sin, - 0.0f, - cosp * v.v[0] * v.v[1] - v.v[2] * sin, - cos + cosp * v.v[1] * v.v[1], - cosp * v.v[1] * v.v[2] + v.v[0] * sin, - 0.0f, - cosp * v.v[0] * v.v[2] + v.v[1] * sin, - cosp * v.v[1] * v.v[2] - v.v[0] * sin, - cos + cosp * v.v[2] * v.v[2], - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 1.0f } }; - - return m; - } - - static inline CCMatrix4 CCMatrix4MakeXRotation(float radians) - { - float cos = cosf(radians); - float sin = sinf(radians); - - CCMatrix4 m = { { 1.0f, 0.0f, 0.0f, 0.0f, - 0.0f, cos, sin, 0.0f, - 0.0f, -sin, cos, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f } }; - - return m; - } - - static inline CCMatrix4 CCMatrix4MakeYRotation(float radians) - { - float cos = cosf(radians); - float sin = sinf(radians); - - CCMatrix4 m = { { cos, 0.0f, -sin, 0.0f, - 0.0f, 1.0f, 0.0f, 0.0f, - sin, 0.0f, cos, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f } }; - - return m; - } - - static inline CCMatrix4 CCMatrix4MakeZRotation(float radians) - { - float cos = cosf(radians); - float sin = sinf(radians); - - CCMatrix4 m = { { cos, sin, 0.0f, 0.0f, - -sin, cos, 0.0f, 0.0f, - 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f } }; - - return m; - } - - /* - Equivalent to gluPerspective. - */ - static inline CCMatrix4 CCMatrix4MakePerspective(float fovyRadians, float aspect, float nearZ, float farZ) - { - float cotan = 1.0f / tanf(fovyRadians / 2.0f); - - CCMatrix4 m = { { cotan / aspect, 0.0f, 0.0f, 0.0f, - 0.0f, cotan, 0.0f, 0.0f, - 0.0f, 0.0f, (farZ + nearZ) / (nearZ - farZ), -1.0f, - 0.0f, 0.0f, (2.0f * farZ * nearZ) / (nearZ - farZ), 0.0f } }; - - return m; - } - - /* - Equivalent to glFrustum. - */ - static inline CCMatrix4 CCMatrix4MakeFrustum(float left, float right, - float bottom, float top, - float nearZ, float farZ) - { - float ral = right + left; - float rsl = right - left; - float tsb = top - bottom; - float tab = top + bottom; - float fan = farZ + nearZ; - float fsn = farZ - nearZ; - - CCMatrix4 m = { { 2.0f * nearZ / rsl, 0.0f, 0.0f, 0.0f, - 0.0f, 2.0f * nearZ / tsb, 0.0f, 0.0f, - ral / rsl, tab / tsb, -fan / fsn, -1.0f, - 0.0f, 0.0f, (-2.0f * farZ * nearZ) / fsn, 0.0f } }; - - return m; - } - - /* - Equivalent to glOrtho. - */ - static inline CCMatrix4 CCMatrix4MakeOrtho(float left, float right, - float bottom, float top, - float nearZ, float farZ) - { - float ral = right + left; - float rsl = right - left; - float tab = top + bottom; - float tsb = top - bottom; - float fan = farZ + nearZ; - float fsn = farZ - nearZ; - - CCMatrix4 m = { { 2.0f / rsl, 0.0f, 0.0f, 0.0f, - 0.0f, 2.0f / tsb, 0.0f, 0.0f, - 0.0f, 0.0f, -2.0f / fsn, 0.0f, - -ral / rsl, -tab / tsb, -fan / fsn, 1.0f } }; - - return m; - } - - /* - Equivalent to gluLookAt. - */ - static inline CCMatrix4 CCMatrix4MakeLookAt(float eyeX, float eyeY, float eyeZ, - float centerX, float centerY, float centerZ, - float upX, float upY, float upZ) - { - CCVector3 ev = { { eyeX, eyeY, eyeZ } }; - CCVector3 cv = { { centerX, centerY, centerZ } }; - CCVector3 uv = { { upX, upY, upZ } }; - CCVector3 n = CCVector3Normalize(CCVector3Add(ev, CCVector3Negate(cv))); - CCVector3 u = CCVector3Normalize(CCVector3CrossProduct(uv, n)); - CCVector3 v = CCVector3CrossProduct(n, u); - - CCMatrix4 m = { { u.v[0], v.v[0], n.v[0], 0.0f, - u.v[1], v.v[1], n.v[1], 0.0f, - u.v[2], v.v[2], n.v[2], 0.0f, - CCVector3DotProduct(CCVector3Negate(u), ev), - CCVector3DotProduct(CCVector3Negate(v), ev), - CCVector3DotProduct(CCVector3Negate(n), ev), - 1.0f } }; - - return m; - } - - /* - Returns the upper left 3x3 portion of the 4x4 matrix. - */ - static inline CCMatrix3 CCMatrix4GetMatrix3(CCMatrix4 matrix) - { - CCMatrix3 m = { { matrix.m[0], matrix.m[1], matrix.m[2], - matrix.m[4], matrix.m[5], matrix.m[6], - matrix.m[8], matrix.m[9], matrix.m[10] } }; - return m; - } - - /* - Returns the upper left 2x2 portion of the 4x4 matrix. - */ - static inline CCMatrix2 CCMatrix4GetMatrix2(CCMatrix4 matrix) - { - CCMatrix2 m = { { matrix.m[0], matrix.m[1], - matrix.m[4], matrix.m[5] } }; - return m; - } - - /* - CCMatrix4GetRow returns vectors for rows 0, 1, and 2 whose last component will be the translation value tx, ty, and tz, respectively. - Valid row values range from 0 to 3, inclusive. - */ - static inline CCVector4 CCMatrix4GetRow(CCMatrix4 matrix, int row) - { - CCVector4 v = { { matrix.m[row], matrix.m[4 + row], matrix.m[8 + row], matrix.m[12 + row] } }; - return v; - } - - /* - CCMatrix4GetColumn returns a vector for column 3 whose first three components will be the translation values tx, ty, and tz. - Valid column values range from 0 to 3, inclusive. - */ - static inline CCVector4 CCMatrix4GetColumn(CCMatrix4 matrix, int column) - { -#if defined(__ARM_NEON__) - float32x4_t v = vld1q_f32(&(matrix.m[column * 4])); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { matrix.m[column * 4 + 0], matrix.m[column * 4 + 1], matrix.m[column * 4 + 2], matrix.m[column * 4 + 3] } }; - return v; -#endif - } - - /* - CCMatrix4SetRow expects that the vector for row 0, 1, and 2 will have a translation value as its last component. - Valid row values range from 0 to 3, inclusive. - */ - static inline CCMatrix4 CCMatrix4SetRow(CCMatrix4 matrix, int row, CCVector4 vector) - { - matrix.m[row] = vector.v[0]; - matrix.m[row + 4] = vector.v[1]; - matrix.m[row + 8] = vector.v[2]; - matrix.m[row + 12] = vector.v[3]; - - return matrix; - } - - /* - CCMatrix4SetColumn expects that the vector for column 3 will contain the translation values tx, ty, and tz as its first three components, respectively. - Valid column values range from 0 to 3, inclusive. - */ - static inline CCMatrix4 CCMatrix4SetColumn(CCMatrix4 matrix, int column, CCVector4 vector) - { -#if defined(__ARM_NEON__) - float *dst = &(matrix.m[column * 4]); - vst1q_f32(dst, vld1q_f32(vector.v)); - return matrix; -#else - matrix.m[column * 4 + 0] = vector.v[0]; - matrix.m[column * 4 + 1] = vector.v[1]; - matrix.m[column * 4 + 2] = vector.v[2]; - matrix.m[column * 4 + 3] = vector.v[3]; - - return matrix; -#endif - } - - static inline CCMatrix4 CCMatrix4Transpose(CCMatrix4 matrix) - { -#if defined(__ARM_NEON__) - float32x4x4_t m = vld4q_f32(matrix.m); - return *(CCMatrix4 *)&m; -#else - CCMatrix4 m = { { matrix.m[0], matrix.m[4], matrix.m[8], matrix.m[12], - matrix.m[1], matrix.m[5], matrix.m[9], matrix.m[13], - matrix.m[2], matrix.m[6], matrix.m[10], matrix.m[14], - matrix.m[3], matrix.m[7], matrix.m[11], matrix.m[15] } }; - return m; -#endif - } - - static inline CCMatrix4 CCMatrix4Multiply(CCMatrix4 matrixLeft, CCMatrix4 matrixRight) - { -#if defined(__ARM_NEON__) - float32x4x4_t iMatrixLeft = *(float32x4x4_t *)&matrixLeft; - float32x4x4_t iMatrixRight = *(float32x4x4_t *)&matrixRight; - float32x4x4_t m; - - m.val[0] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[0], 0)); - m.val[1] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[1], 0)); - m.val[2] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[2], 0)); - m.val[3] = vmulq_n_f32(iMatrixLeft.val[0], vgetq_lane_f32(iMatrixRight.val[3], 0)); - - m.val[0] = vmlaq_n_f32(m.val[0], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[0], 1)); - m.val[1] = vmlaq_n_f32(m.val[1], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[1], 1)); - m.val[2] = vmlaq_n_f32(m.val[2], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[2], 1)); - m.val[3] = vmlaq_n_f32(m.val[3], iMatrixLeft.val[1], vgetq_lane_f32(iMatrixRight.val[3], 1)); - - m.val[0] = vmlaq_n_f32(m.val[0], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[0], 2)); - m.val[1] = vmlaq_n_f32(m.val[1], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[1], 2)); - m.val[2] = vmlaq_n_f32(m.val[2], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[2], 2)); - m.val[3] = vmlaq_n_f32(m.val[3], iMatrixLeft.val[2], vgetq_lane_f32(iMatrixRight.val[3], 2)); - - m.val[0] = vmlaq_n_f32(m.val[0], iMatrixLeft.val[3], vgetq_lane_f32(iMatrixRight.val[0], 3)); - m.val[1] = vmlaq_n_f32(m.val[1], iMatrixLeft.val[3], vgetq_lane_f32(iMatrixRight.val[1], 3)); - m.val[2] = vmlaq_n_f32(m.val[2], iMatrixLeft.val[3], vgetq_lane_f32(iMatrixRight.val[2], 3)); - m.val[3] = vmlaq_n_f32(m.val[3], iMatrixLeft.val[3], vgetq_lane_f32(iMatrixRight.val[3], 3)); - - return *(CCMatrix4 *)&m; -#else - CCMatrix4 m; - - m.m[0] = matrixLeft.m[0] * matrixRight.m[0] + matrixLeft.m[4] * matrixRight.m[1] + matrixLeft.m[8] * matrixRight.m[2] + matrixLeft.m[12] * matrixRight.m[3]; - m.m[4] = matrixLeft.m[0] * matrixRight.m[4] + matrixLeft.m[4] * matrixRight.m[5] + matrixLeft.m[8] * matrixRight.m[6] + matrixLeft.m[12] * matrixRight.m[7]; - m.m[8] = matrixLeft.m[0] * matrixRight.m[8] + matrixLeft.m[4] * matrixRight.m[9] + matrixLeft.m[8] * matrixRight.m[10] + matrixLeft.m[12] * matrixRight.m[11]; - m.m[12] = matrixLeft.m[0] * matrixRight.m[12] + matrixLeft.m[4] * matrixRight.m[13] + matrixLeft.m[8] * matrixRight.m[14] + matrixLeft.m[12] * matrixRight.m[15]; - - m.m[1] = matrixLeft.m[1] * matrixRight.m[0] + matrixLeft.m[5] * matrixRight.m[1] + matrixLeft.m[9] * matrixRight.m[2] + matrixLeft.m[13] * matrixRight.m[3]; - m.m[5] = matrixLeft.m[1] * matrixRight.m[4] + matrixLeft.m[5] * matrixRight.m[5] + matrixLeft.m[9] * matrixRight.m[6] + matrixLeft.m[13] * matrixRight.m[7]; - m.m[9] = matrixLeft.m[1] * matrixRight.m[8] + matrixLeft.m[5] * matrixRight.m[9] + matrixLeft.m[9] * matrixRight.m[10] + matrixLeft.m[13] * matrixRight.m[11]; - m.m[13] = matrixLeft.m[1] * matrixRight.m[12] + matrixLeft.m[5] * matrixRight.m[13] + matrixLeft.m[9] * matrixRight.m[14] + matrixLeft.m[13] * matrixRight.m[15]; - - m.m[2] = matrixLeft.m[2] * matrixRight.m[0] + matrixLeft.m[6] * matrixRight.m[1] + matrixLeft.m[10] * matrixRight.m[2] + matrixLeft.m[14] * matrixRight.m[3]; - m.m[6] = matrixLeft.m[2] * matrixRight.m[4] + matrixLeft.m[6] * matrixRight.m[5] + matrixLeft.m[10] * matrixRight.m[6] + matrixLeft.m[14] * matrixRight.m[7]; - m.m[10] = matrixLeft.m[2] * matrixRight.m[8] + matrixLeft.m[6] * matrixRight.m[9] + matrixLeft.m[10] * matrixRight.m[10] + matrixLeft.m[14] * matrixRight.m[11]; - m.m[14] = matrixLeft.m[2] * matrixRight.m[12] + matrixLeft.m[6] * matrixRight.m[13] + matrixLeft.m[10] * matrixRight.m[14] + matrixLeft.m[14] * matrixRight.m[15]; - - m.m[3] = matrixLeft.m[3] * matrixRight.m[0] + matrixLeft.m[7] * matrixRight.m[1] + matrixLeft.m[11] * matrixRight.m[2] + matrixLeft.m[15] * matrixRight.m[3]; - m.m[7] = matrixLeft.m[3] * matrixRight.m[4] + matrixLeft.m[7] * matrixRight.m[5] + matrixLeft.m[11] * matrixRight.m[6] + matrixLeft.m[15] * matrixRight.m[7]; - m.m[11] = matrixLeft.m[3] * matrixRight.m[8] + matrixLeft.m[7] * matrixRight.m[9] + matrixLeft.m[11] * matrixRight.m[10] + matrixLeft.m[15] * matrixRight.m[11]; - m.m[15] = matrixLeft.m[3] * matrixRight.m[12] + matrixLeft.m[7] * matrixRight.m[13] + matrixLeft.m[11] * matrixRight.m[14] + matrixLeft.m[15] * matrixRight.m[15]; - - return m; -#endif - } - - static inline CCMatrix4 CCMatrix4Add(CCMatrix4 matrixLeft, CCMatrix4 matrixRight) - { -#if defined(__ARM_NEON__) - float32x4x4_t iMatrixLeft = *(float32x4x4_t *)&matrixLeft; - float32x4x4_t iMatrixRight = *(float32x4x4_t *)&matrixRight; - float32x4x4_t m; - - m.val[0] = vaddq_f32(iMatrixLeft.val[0], iMatrixRight.val[0]); - m.val[1] = vaddq_f32(iMatrixLeft.val[1], iMatrixRight.val[1]); - m.val[2] = vaddq_f32(iMatrixLeft.val[2], iMatrixRight.val[2]); - m.val[3] = vaddq_f32(iMatrixLeft.val[3], iMatrixRight.val[3]); - - return *(CCMatrix4 *)&m; -#else - CCMatrix4 m; - - m.m[0] = matrixLeft.m[0] + matrixRight.m[0]; - m.m[1] = matrixLeft.m[1] + matrixRight.m[1]; - m.m[2] = matrixLeft.m[2] + matrixRight.m[2]; - m.m[3] = matrixLeft.m[3] + matrixRight.m[3]; - - m.m[4] = matrixLeft.m[4] + matrixRight.m[4]; - m.m[5] = matrixLeft.m[5] + matrixRight.m[5]; - m.m[6] = matrixLeft.m[6] + matrixRight.m[6]; - m.m[7] = matrixLeft.m[7] + matrixRight.m[7]; - - m.m[8] = matrixLeft.m[8] + matrixRight.m[8]; - m.m[9] = matrixLeft.m[9] + matrixRight.m[9]; - m.m[10] = matrixLeft.m[10] + matrixRight.m[10]; - m.m[11] = matrixLeft.m[11] + matrixRight.m[11]; - - m.m[12] = matrixLeft.m[12] + matrixRight.m[12]; - m.m[13] = matrixLeft.m[13] + matrixRight.m[13]; - m.m[14] = matrixLeft.m[14] + matrixRight.m[14]; - m.m[15] = matrixLeft.m[15] + matrixRight.m[15]; - - return m; -#endif - } - - static inline CCMatrix4 CCMatrix4Subtract(CCMatrix4 matrixLeft, CCMatrix4 matrixRight) - { -#if defined(__ARM_NEON__) - float32x4x4_t iMatrixLeft = *(float32x4x4_t *)&matrixLeft; - float32x4x4_t iMatrixRight = *(float32x4x4_t *)&matrixRight; - float32x4x4_t m; - - m.val[0] = vsubq_f32(iMatrixLeft.val[0], iMatrixRight.val[0]); - m.val[1] = vsubq_f32(iMatrixLeft.val[1], iMatrixRight.val[1]); - m.val[2] = vsubq_f32(iMatrixLeft.val[2], iMatrixRight.val[2]); - m.val[3] = vsubq_f32(iMatrixLeft.val[3], iMatrixRight.val[3]); - - return *(CCMatrix4 *)&m; -#else - CCMatrix4 m; - - m.m[0] = matrixLeft.m[0] - matrixRight.m[0]; - m.m[1] = matrixLeft.m[1] - matrixRight.m[1]; - m.m[2] = matrixLeft.m[2] - matrixRight.m[2]; - m.m[3] = matrixLeft.m[3] - matrixRight.m[3]; - - m.m[4] = matrixLeft.m[4] - matrixRight.m[4]; - m.m[5] = matrixLeft.m[5] - matrixRight.m[5]; - m.m[6] = matrixLeft.m[6] - matrixRight.m[6]; - m.m[7] = matrixLeft.m[7] - matrixRight.m[7]; - - m.m[8] = matrixLeft.m[8] - matrixRight.m[8]; - m.m[9] = matrixLeft.m[9] - matrixRight.m[9]; - m.m[10] = matrixLeft.m[10] - matrixRight.m[10]; - m.m[11] = matrixLeft.m[11] - matrixRight.m[11]; - - m.m[12] = matrixLeft.m[12] - matrixRight.m[12]; - m.m[13] = matrixLeft.m[13] - matrixRight.m[13]; - m.m[14] = matrixLeft.m[14] - matrixRight.m[14]; - m.m[15] = matrixLeft.m[15] - matrixRight.m[15]; - - return m; -#endif - } - - static inline CCMatrix4 CCMatrix4Translate(CCMatrix4 matrix, float tx, float ty, float tz) - { - CCMatrix4 m = { { matrix.m[0], matrix.m[1], matrix.m[2], matrix.m[3], - matrix.m[4], matrix.m[5], matrix.m[6], matrix.m[7], - matrix.m[8], matrix.m[9], matrix.m[10], matrix.m[11], - matrix.m[0] * tx + matrix.m[4] * ty + matrix.m[8] * tz + matrix.m[12], - matrix.m[1] * tx + matrix.m[5] * ty + matrix.m[9] * tz + matrix.m[13], - matrix.m[2] * tx + matrix.m[6] * ty + matrix.m[10] * tz + matrix.m[14], - matrix.m[15] } }; - return m; - } - - static inline CCMatrix4 CCMatrix4TranslateWithVector3(CCMatrix4 matrix, CCVector3 translationVector) - { - CCMatrix4 m = { { matrix.m[0], matrix.m[1], matrix.m[2], matrix.m[3], - matrix.m[4], matrix.m[5], matrix.m[6], matrix.m[7], - matrix.m[8], matrix.m[9], matrix.m[10], matrix.m[11], - matrix.m[0] * translationVector.v[0] + matrix.m[4] * translationVector.v[1] + matrix.m[8] * translationVector.v[2] + matrix.m[12], - matrix.m[1] * translationVector.v[0] + matrix.m[5] * translationVector.v[1] + matrix.m[9] * translationVector.v[2] + matrix.m[13], - matrix.m[2] * translationVector.v[0] + matrix.m[6] * translationVector.v[1] + matrix.m[10] * translationVector.v[2] + matrix.m[14], - matrix.m[15] } }; - return m; - } - - /* - The last component of the CCVector4, translationVector, is ignored. - */ - static inline CCMatrix4 CCMatrix4TranslateWithVector4(CCMatrix4 matrix, CCVector4 translationVector) - { - CCMatrix4 m = { { matrix.m[0], matrix.m[1], matrix.m[2], matrix.m[3], - matrix.m[4], matrix.m[5], matrix.m[6], matrix.m[7], - matrix.m[8], matrix.m[9], matrix.m[10], matrix.m[11], - matrix.m[0] * translationVector.v[0] + matrix.m[4] * translationVector.v[1] + matrix.m[8] * translationVector.v[2] + matrix.m[12], - matrix.m[1] * translationVector.v[0] + matrix.m[5] * translationVector.v[1] + matrix.m[9] * translationVector.v[2] + matrix.m[13], - matrix.m[2] * translationVector.v[0] + matrix.m[6] * translationVector.v[1] + matrix.m[10] * translationVector.v[2] + matrix.m[14], - matrix.m[15] } }; - return m; - } - - static inline CCMatrix4 CCMatrix4Scale(CCMatrix4 matrix, float sx, float sy, float sz) - { -#if defined(__ARM_NEON__) - float32x4x4_t iMatrix = *(float32x4x4_t *)&matrix; - float32x4x4_t m; - - m.val[0] = vmulq_n_f32(iMatrix.val[0], (float32_t)sx); - m.val[1] = vmulq_n_f32(iMatrix.val[1], (float32_t)sy); - m.val[2] = vmulq_n_f32(iMatrix.val[2], (float32_t)sz); - m.val[3] = iMatrix.val[3]; - - return *(CCMatrix4 *)&m; -#else - CCMatrix4 m = { { matrix.m[0] * sx, matrix.m[1] * sx, matrix.m[2] * sx, matrix.m[3] * sx, - matrix.m[4] * sy, matrix.m[5] * sy, matrix.m[6] * sy, matrix.m[7] * sy, - matrix.m[8] * sz, matrix.m[9] * sz, matrix.m[10] * sz, matrix.m[11] * sz, - matrix.m[12], matrix.m[13], matrix.m[14], matrix.m[15] } }; - return m; -#endif - } - - static inline CCMatrix4 CCMatrix4ScaleWithVector3(CCMatrix4 matrix, CCVector3 scaleVector) - { -#if defined(__ARM_NEON__) - float32x4x4_t iMatrix = *(float32x4x4_t *)&matrix; - float32x4x4_t m; - - m.val[0] = vmulq_n_f32(iMatrix.val[0], (float32_t)scaleVector.v[0]); - m.val[1] = vmulq_n_f32(iMatrix.val[1], (float32_t)scaleVector.v[1]); - m.val[2] = vmulq_n_f32(iMatrix.val[2], (float32_t)scaleVector.v[2]); - m.val[3] = iMatrix.val[3]; - - return *(CCMatrix4 *)&m; -#else - CCMatrix4 m = { { matrix.m[0] * scaleVector.v[0], matrix.m[1] * scaleVector.v[0], matrix.m[2] * scaleVector.v[0], matrix.m[3] * scaleVector.v[0], - matrix.m[4] * scaleVector.v[1], matrix.m[5] * scaleVector.v[1], matrix.m[6] * scaleVector.v[1], matrix.m[7] * scaleVector.v[1], - matrix.m[8] * scaleVector.v[2], matrix.m[9] * scaleVector.v[2], matrix.m[10] * scaleVector.v[2], matrix.m[11] * scaleVector.v[2], - matrix.m[12], matrix.m[13], matrix.m[14], matrix.m[15] } }; - return m; -#endif - } - - /* - The last component of the CCVector4, scaleVector, is ignored. - */ - static inline CCMatrix4 CCMatrix4ScaleWithVector4(CCMatrix4 matrix, CCVector4 scaleVector) - { -#if defined(__ARM_NEON__) - float32x4x4_t iMatrix = *(float32x4x4_t *)&matrix; - float32x4x4_t m; - - m.val[0] = vmulq_n_f32(iMatrix.val[0], (float32_t)scaleVector.v[0]); - m.val[1] = vmulq_n_f32(iMatrix.val[1], (float32_t)scaleVector.v[1]); - m.val[2] = vmulq_n_f32(iMatrix.val[2], (float32_t)scaleVector.v[2]); - m.val[3] = iMatrix.val[3]; - - return *(CCMatrix4 *)&m; -#else - CCMatrix4 m = { { matrix.m[0] * scaleVector.v[0], matrix.m[1] * scaleVector.v[0], matrix.m[2] * scaleVector.v[0], matrix.m[3] * scaleVector.v[0], - matrix.m[4] * scaleVector.v[1], matrix.m[5] * scaleVector.v[1], matrix.m[6] * scaleVector.v[1], matrix.m[7] * scaleVector.v[1], - matrix.m[8] * scaleVector.v[2], matrix.m[9] * scaleVector.v[2], matrix.m[10] * scaleVector.v[2], matrix.m[11] * scaleVector.v[2], - matrix.m[12], matrix.m[13], matrix.m[14], matrix.m[15] } }; - return m; -#endif - } - - static inline CCMatrix4 CCMatrix4Rotate(CCMatrix4 matrix, float radians, float x, float y, float z) - { - CCMatrix4 rm = CCMatrix4MakeRotation(radians, x, y, z); - return CCMatrix4Multiply(matrix, rm); - } - - static inline CCMatrix4 CCMatrix4RotateWithVector3(CCMatrix4 matrix, float radians, CCVector3 axisVector) - { - CCMatrix4 rm = CCMatrix4MakeRotation(radians, axisVector.v[0], axisVector.v[1], axisVector.v[2]); - return CCMatrix4Multiply(matrix, rm); - } - - /* - The last component of the CCVector4, axisVector, is ignored. - */ - static inline CCMatrix4 CCMatrix4RotateWithVector4(CCMatrix4 matrix, float radians, CCVector4 axisVector) - { - CCMatrix4 rm = CCMatrix4MakeRotation(radians, axisVector.v[0], axisVector.v[1], axisVector.v[2]); - return CCMatrix4Multiply(matrix, rm); - } - - static inline CCMatrix4 CCMatrix4RotateX(CCMatrix4 matrix, float radians) - { - CCMatrix4 rm = CCMatrix4MakeXRotation(radians); - return CCMatrix4Multiply(matrix, rm); - } - - static inline CCMatrix4 CCMatrix4RotateY(CCMatrix4 matrix, float radians) - { - CCMatrix4 rm = CCMatrix4MakeYRotation(radians); - return CCMatrix4Multiply(matrix, rm); - } - - static inline CCMatrix4 CCMatrix4RotateZ(CCMatrix4 matrix, float radians) - { - CCMatrix4 rm = CCMatrix4MakeZRotation(radians); - return CCMatrix4Multiply(matrix, rm); - } - - static inline CCVector4 CCMatrix4MultiplyVector4(CCMatrix4 matrixLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON__) - float32x4x4_t iMatrix = *(float32x4x4_t *)&matrixLeft; - float32x4_t v; - - iMatrix.val[0] = vmulq_n_f32(iMatrix.val[0], (float32_t)vectorRight.v[0]); - iMatrix.val[1] = vmulq_n_f32(iMatrix.val[1], (float32_t)vectorRight.v[1]); - iMatrix.val[2] = vmulq_n_f32(iMatrix.val[2], (float32_t)vectorRight.v[2]); - iMatrix.val[3] = vmulq_n_f32(iMatrix.val[3], (float32_t)vectorRight.v[3]); - - iMatrix.val[0] = vaddq_f32(iMatrix.val[0], iMatrix.val[1]); - iMatrix.val[2] = vaddq_f32(iMatrix.val[2], iMatrix.val[3]); - - v = vaddq_f32(iMatrix.val[0], iMatrix.val[2]); - - return *(CCVector4 *)&v; -#else - CCVector4 v = { { matrixLeft.m[0] * vectorRight.v[0] + matrixLeft.m[4] * vectorRight.v[1] + matrixLeft.m[8] * vectorRight.v[2] + matrixLeft.m[12] * vectorRight.v[3], - matrixLeft.m[1] * vectorRight.v[0] + matrixLeft.m[5] * vectorRight.v[1] + matrixLeft.m[9] * vectorRight.v[2] + matrixLeft.m[13] * vectorRight.v[3], - matrixLeft.m[2] * vectorRight.v[0] + matrixLeft.m[6] * vectorRight.v[1] + matrixLeft.m[10] * vectorRight.v[2] + matrixLeft.m[14] * vectorRight.v[3], - matrixLeft.m[3] * vectorRight.v[0] + matrixLeft.m[7] * vectorRight.v[1] + matrixLeft.m[11] * vectorRight.v[2] + matrixLeft.m[15] * vectorRight.v[3] } }; - return v; -#endif - } - - /* - Assumes 0 in the w component. - */ - static inline CCVector3 CCMatrix4MultiplyVector3(CCMatrix4 matrixLeft, CCVector3 vectorRight) - { - CCVector4 v4 = CCMatrix4MultiplyVector4(matrixLeft, CCVector4Make(vectorRight.v[0], vectorRight.v[1], vectorRight.v[2], 0.0f)); - return CCVector3Make(v4.v[0], v4.v[1], v4.v[2]); - } - - /* - Assumes 1 in the w component. - */ - static inline CCVector3 CCMatrix4MultiplyVector3WithTranslation(CCMatrix4 matrixLeft, CCVector3 vectorRight) - { - CCVector4 v4 = CCMatrix4MultiplyVector4(matrixLeft, CCVector4Make(vectorRight.v[0], vectorRight.v[1], vectorRight.v[2], 1.0f)); - return CCVector3Make(v4.v[0], v4.v[1], v4.v[2]); - } - - /* - Assumes 1 in the w component and divides the resulting vector by w before returning. - */ - static inline CCVector3 CCMatrix4MultiplyAndProjectVector3(CCMatrix4 matrixLeft, CCVector3 vectorRight) - { - CCVector4 v4 = CCMatrix4MultiplyVector4(matrixLeft, CCVector4Make(vectorRight.v[0], vectorRight.v[1], vectorRight.v[2], 1.0f)); - return CCVector3MultiplyScalar(CCVector3Make(v4.v[0], v4.v[1], v4.v[2]), 1.0f / v4.v[3]); - } - - /* - Assumes 0 in the w component. - */ - static inline void CCMatrix4MultiplyVector3Array(CCMatrix4 matrix, CCVector3 *vectors, size_t vectorCount) - { - int i; - for (i=0; i < vectorCount; i++) - vectors[i] = CCMatrix4MultiplyVector3(matrix, vectors[i]); - } - - /* - Assumes 1 in the w component. - */ - static inline void CCMatrix4MultiplyVector3ArrayWithTranslation(CCMatrix4 matrix, CCVector3 *vectors, size_t vectorCount) - { - int i; - for (i=0; i < vectorCount; i++) - vectors[i] = CCMatrix4MultiplyVector3WithTranslation(matrix, vectors[i]); - } - - /* - Assumes 1 in the w component and divides the resulting vector by w before returning. - */ - static inline void CCMatrix4MultiplyAndProjectVector3Array(CCMatrix4 matrix, CCVector3 *vectors, size_t vectorCount) - { - int i; - for (i=0; i < vectorCount; i++) - vectors[i] = CCMatrix4MultiplyAndProjectVector3(matrix, vectors[i]); - } - - static inline void CCMatrix4MultiplyVector4Array(CCMatrix4 matrix, CCVector4 *vectors, size_t vectorCount) - { - int i; - for (i=0; i < vectorCount; i++) - vectors[i] = CCMatrix4MultiplyVector4(matrix, vectors[i]); - } - -#ifdef __cplusplus -} -#endif - -#define GLKMatrix4Make CCMatrix4Make -#define GLKMatrix4Identity CCMatrix4Identity -#define GLKMatrix4Invert CCMatrix4Invert -#define GLKMatrix4InvertAndTranspose CCMatrix4InvertAndTranspose -#define GLKMatrix4MakeAndTranspose CCMatrix4MakeAndTranspose -#define GLKMatrix4MakeWithArray CCMatrix4MakeWithArray -#define GLKMatrix4MakeWithArrayAndTranspose CCMatrix4MakeWithArrayAndTranspose -#define GLKMatrix4MakeWithRows CCMatrix4MakeWithRows -#define GLKMatrix4MakeWithColumns CCMatrix4MakeWithColumns -#define GLKMatrix4MakeWithQuaternion CCMatrix4MakeWithQuaternion -#define GLKMatrix4MakeScale CCMatrix4MakeScale -#define GLKMatrix4MakeRotation CCMatrix4MakeRotation -#define GLKMatrix4MakeXRotation CCMatrix4MakeXRotation -#define GLKMatrix4MakeYRotation CCMatrix4MakeYRotation -#define GLKMatrix4MakeZRotation CCMatrix4MakeZRotation -#define GLKMatrix4GetMatrix2 CCMatrix4GetMatrix2 -#define GLKMatrix4GetRow CCMatrix4GetRow -#define GLKMatrix4GetColumn CCMatrix4GetColumn -#define GLKMatrix4SetRow CCMatrix4SetRow -#define GLKMatrix4SetColumn CCMatrix4SetColumn -#define GLKMatrix4Transpose CCMatrix4Transpose -#define GLKMatrix4Multiply CCMatrix4Multiply -#define GLKMatrix4Add CCMatrix4Add -#define GLKMatrix4Subtract CCMatrix4Subtract -#define GLKMatrix4Scale CCMatrix4Scale -#define GLKMatrix4ScaleWithVector3 CCMatrix4ScaleWithVector3 -#define GLKMatrix4ScaleWithVector4 CCMatrix4ScaleWithVector4 -#define GLKMatrix4Rotate CCMatrix4Rotate -#define GLKMatrix4RotateWithVector3 CCMatrix4RotateWithVector3 -#define GLKMatrix4RotateWithVector4 CCMatrix4RotateWithVector4 -#define GLKMatrix4RotateX CCMatrix4RotateX -#define GLKMatrix4RotateY CCMatrix4RotateY -#define GLKMatrix4RotateZ CCMatrix4RotateZ -#define GLKMatrix4MultiplyVector3 CCMatrix4MultiplyVector3 -#define GLKMatrix4MultiplyVector3Array CCMatrix4MultiplyVector3Array -#define GLKMatrix4MultiplyAndProjectVector3 CCMatrix4MultiplyAndProjectVector3 -#define GLKMatrix4MultiplyAndProjectVector3Array CCMatrix4MultiplyAndProjectVector3Array -#define GLKMatrix4MakeTranslation CCMatrix4MakeTranslation -#define GLKMatrix4MakeOrtho CCMatrix4MakeOrtho -#define GLKMatrix4MakePerspective CCMatrix4MakePerspective -#define GLKMatrix4MultiplyVector4 CCMatrix4MultiplyVector4 - -#endif - -#endif /* __CC_MATRIX_4_H */ - diff --git a/cocos2d/Platforms/Android/CCMatrix4.m b/cocos2d/Platforms/Android/CCMatrix4.m deleted file mode 100644 index 1960d6e1cf8..00000000000 --- a/cocos2d/Platforms/Android/CCMatrix4.m +++ /dev/null @@ -1,117 +0,0 @@ -#import "CCMatrix4.h" - -#if __CC_PLATFORM_ANDROID - -#include - - - -static inline float get(const CCMatrix4 *pIn, int row, int col) -{ - return pIn->m[row + 4*col]; -} - -static inline void set(CCMatrix4 *pIn, int row, int col, float value) -{ - pIn->m[row + 4*col] = value; -} - -static inline void swap(CCMatrix4 *pIn, int r1, int c1, int r2, int c2) -{ - float tmp = get(pIn,r1,c1); - set(pIn,r1,c1,get(pIn,r2,c2)); - set(pIn,r2,c2, tmp); -} - -static inline bool gaussj(CCMatrix4 *a, CCMatrix4 *b) -{ - int i, icol = 0, irow = 0, j, k, l, ll, n = 4, m = 4; - float big, dum, pivinv; - int indxc[n]; - int indxr[n]; - int ipiv[n]; - - for (j = 0; j < n; j++) { - ipiv[j] = 0; - } - - for (i = 0; i < n; i++) { - big = 0.0f; - for (j = 0; j < n; j++) { - if (ipiv[j] != 1) { - for (k = 0; k < n; k++) { - if (ipiv[k] == 0) { - if (fabs(get(a,j, k)) >= big) { - big = fabs(get(a,j, k)); - irow = j; - icol = k; - } - } - } - } - } - ++(ipiv[icol]); - if (irow != icol) { - for (l = 0; l < n; l++) { - swap(a,irow, l, icol, l); - } - for (l = 0; l < m; l++) { - swap(b,irow, l, icol, l); - } - } - indxr[i] = irow; - indxc[i] = icol; - if (get(a,icol, icol) == 0.0) { - return false; - } - pivinv = 1.0f / get(a,icol, icol); - set(a,icol, icol, 1.0f); - for (l = 0; l < n; l++) { - set(a,icol, l, get(a,icol, l) * pivinv); - } - for (l = 0; l < m; l++) { - set(b,icol, l, get(b,icol, l) * pivinv); - } - - for (ll = 0; ll < n; ll++) { - if (ll != icol) { - dum = get(a,ll, icol); - set(a,ll, icol, 0.0f); - for (l = 0; l < n; l++) { - set(a,ll, l, get(a,ll, l) - get(a,icol, l) * dum); - } - for (l = 0; l < m; l++) { - set(b,ll, l, get(a,ll, l) - get(b,icol, l) * dum); - } - } - } - } - - for (l = n - 1; l >= 0; l--) { - if (indxr[l] != indxc[l]) { - for (k = 0; k < n; k++) { - swap(a,k, indxr[l], k, indxc[l]); - } - } - } - return true; -} - -CCMatrix4 CCMatrix4Invert(CCMatrix4 matrix, bool *isInvertible) { - CCMatrix4 inv; - CCMatrix4 tmp; - - memcpy(&inv, &matrix, sizeof(CCMatrix4)); - memcpy(&tmp, &CCMatrix4Identity, sizeof(CCMatrix4)); - - bool invertable = gaussj(&inv, &tmp); - if (isInvertible) - { - *isInvertible = invertable; - } - - return inv; -} - -#endif - diff --git a/cocos2d/Platforms/Android/CCQuaternion.h b/cocos2d/Platforms/Android/CCQuaternion.h deleted file mode 100644 index b5ac5c09eee..00000000000 --- a/cocos2d/Platforms/Android/CCQuaternion.h +++ /dev/null @@ -1,290 +0,0 @@ -// -// CCQuaternion.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/10/14. -// -// - -#ifndef __CC_QUATERNION_H -#define __CC_QUATERNION_H - -#include -#include - -#import "CCMathTypesAndroid.h" - -#if __CC_PLATFORM_ANDROID - -#import "CCVector3.h" -#import "CCVector4.h" - -#ifdef __cplusplus -extern "C" { -#endif - - static const CCQuaternion CCQuaternionIdentity = { .x = 0, .y = 0, .z = 0, .w = 1 }; - - CCQuaternion CCQuaternionMakeWithMatrix3(CCMatrix3 matrix); - /* - Calculate and return the angle component of the angle and axis form. - */ - float CCQuaternionAngle(CCQuaternion quaternion); - - /* - Calculate and return the axis component of the angle and axis form. - */ - CCVector3 CCQuaternionAxis(CCQuaternion quaternion); - - CCQuaternion CCQuaternionSlerp(CCQuaternion quaternionStart, CCQuaternion quaternionEnd, float t); - - void CCQuaternionRotateVector3Array(CCQuaternion quaternion, CCVector3 *vectors, size_t vectorCount); - - CCQuaternion CCQuaternionMakeWithMatrix4(CCMatrix4 matrix); - - void CCQuaternionRotateVector4Array(CCQuaternion quaternion, CCVector4 *vectors, size_t vectorCount); - - /* - x, y, and z represent the imaginary values. - */ - static inline CCQuaternion CCQuaternionMake(float x, float y, float z, float w) - { - CCQuaternion q = { {{{x, y, z}}, w} }; - return q; - } - - /* - vector represents the imaginary values. - */ - static inline CCQuaternion CCQuaternionMakeWithVector3(CCVector3 vector, float scalar) - { - CCQuaternion q = { { {{vector.v[0], vector.v[1], vector.v[2]}}, scalar } }; - return q; - } - - /* - values[0], values[1], and values[2] represent the imaginary values. - */ - static inline CCQuaternion CCQuaternionMakeWithArray(float values[4]) - { - CCQuaternion q = { { {{values[0], values[1], values[2]}}, values[3] } }; - return q; - } - - /* - Assumes the axis is already normalized. - */ - static inline CCQuaternion CCQuaternionMakeWithAngleAndAxis(float radians, float x, float y, float z) - { - float halfAngle = radians * 0.5f; - float scale = sinf(halfAngle); - CCQuaternion q = { { {{scale * x, scale * y, scale * z}}, cosf(halfAngle) } }; - return q; - } - - /* - Assumes the axis is already normalized. - */ - static inline CCQuaternion CCQuaternionMakeWithAngleAndVector3Axis(float radians, CCVector3 axisVector) - { - return CCQuaternionMakeWithAngleAndAxis(radians, axisVector.v[0], axisVector.v[1], axisVector.v[2]); - } - - static inline CCQuaternion CCQuaternionAdd(CCQuaternion quaternionLeft, CCQuaternion quaternionRight) - { -#if defined(__ARM_NEON__) - float32x4_t v = vaddq_f32(*(float32x4_t *)&quaternionLeft, - *(float32x4_t *)&quaternionRight); - return *(CCQuaternion *)&v; -#else - CCQuaternion q = { - .x = quaternionLeft.q[0] + quaternionRight.q[0], - .y = quaternionLeft.q[1] + quaternionRight.q[1], - .z = quaternionLeft.q[2] + quaternionRight.q[2], - .w = quaternionLeft.q[3] + quaternionRight.q[3] - }; - return q; -#endif - } - - static inline CCQuaternion CCQuaternionSubtract(CCQuaternion quaternionLeft, CCQuaternion quaternionRight) - { -#if defined(__ARM_NEON__) - float32x4_t v = vsubq_f32(*(float32x4_t *)&quaternionLeft, - *(float32x4_t *)&quaternionRight); - return *(CCQuaternion *)&v; -#else - CCQuaternion q = { - .x = quaternionLeft.q[0] - quaternionRight.q[0], - .y = quaternionLeft.q[1] - quaternionRight.q[1], - .z = quaternionLeft.q[2] - quaternionRight.q[2], - .w = quaternionLeft.q[3] - quaternionRight.q[3] - }; - return q; -#endif - } - - static inline CCQuaternion CCQuaternionMultiply(CCQuaternion quaternionLeft, CCQuaternion quaternionRight) - { - CCQuaternion q = { - .x = quaternionLeft.q[3] * quaternionRight.q[0] + - quaternionLeft.q[0] * quaternionRight.q[3] + - quaternionLeft.q[1] * quaternionRight.q[2] - - quaternionLeft.q[2] * quaternionRight.q[1], - - .y = quaternionLeft.q[3] * quaternionRight.q[1] + - quaternionLeft.q[1] * quaternionRight.q[3] + - quaternionLeft.q[2] * quaternionRight.q[0] - - quaternionLeft.q[0] * quaternionRight.q[2], - - .z = quaternionLeft.q[3] * quaternionRight.q[2] + - quaternionLeft.q[2] * quaternionRight.q[3] + - quaternionLeft.q[0] * quaternionRight.q[1] - - quaternionLeft.q[1] * quaternionRight.q[0], - - .w = quaternionLeft.q[3] * quaternionRight.q[3] - - quaternionLeft.q[0] * quaternionRight.q[0] - - quaternionLeft.q[1] * quaternionRight.q[1] - - quaternionLeft.q[2] * quaternionRight.q[2] }; - return q; - } - - static inline float CCQuaternionLength(CCQuaternion quaternion) - { -#if defined(__ARM_NEON__) - float32x4_t v = vmulq_f32(*(float32x4_t *)&quaternion, - *(float32x4_t *)&quaternion); - float32x2_t v2 = vpadd_f32(vget_low_f32(v), vget_high_f32(v)); - v2 = vpadd_f32(v2, v2); - return sqrt(vget_lane_f32(v2, 0)); -#else - return sqrt(quaternion.q[0] * quaternion.q[0] + - quaternion.q[1] * quaternion.q[1] + - quaternion.q[2] * quaternion.q[2] + - quaternion.q[3] * quaternion.q[3]); -#endif - } - - static inline CCQuaternion CCQuaternionConjugate(CCQuaternion quaternion) - { -#if defined(__ARM_NEON__) - float32x4_t *q = (float32x4_t *)&quaternion; - - uint32_t signBit = 0x80000000; - uint32_t zeroBit = 0x0; - uint32x4_t mask = vdupq_n_u32(signBit); - mask = vsetq_lane_u32(zeroBit, mask, 3); - *q = vreinterpretq_f32_u32(veorq_u32(vreinterpretq_u32_f32(*q), mask)); - - return *(CCQuaternion *)q; -#else - CCQuaternion q = { - .x = -quaternion.q[0], - .y = -quaternion.q[1], - .z = -quaternion.q[2], - .w = quaternion.q[3] - }; - return q; -#endif - } - - static inline CCQuaternion CCQuaternionInvert(CCQuaternion quaternion) - { -#if defined(__ARM_NEON__) - float32x4_t *q = (float32x4_t *)&quaternion; - float32x4_t v = vmulq_f32(*q, *q); - float32x2_t v2 = vpadd_f32(vget_low_f32(v), vget_high_f32(v)); - v2 = vpadd_f32(v2, v2); - float32_t scale = 1.0f / vget_lane_f32(v2, 0); - v = vmulq_f32(*q, vdupq_n_f32(scale)); - - uint32_t signBit = 0x80000000; - uint32_t zeroBit = 0x0; - uint32x4_t mask = vdupq_n_u32(signBit); - mask = vsetq_lane_u32(zeroBit, mask, 3); - v = vreinterpretq_f32_u32(veorq_u32(vreinterpretq_u32_f32(v), mask)); - - return *(CCQuaternion *)&v; -#else - float scale = 1.0f / (quaternion.q[0] * quaternion.q[0] + - quaternion.q[1] * quaternion.q[1] + - quaternion.q[2] * quaternion.q[2] + - quaternion.q[3] * quaternion.q[3]); - CCQuaternion q = { - .x = -quaternion.q[0] * scale, - .y = -quaternion.q[1] * scale, - .z = -quaternion.q[2] * scale, - .w = quaternion.q[3] * scale - }; - return q; -#endif - } - - static inline CCQuaternion CCQuaternionNormalize(CCQuaternion quaternion) - { - float scale = 1.0f / CCQuaternionLength(quaternion); -#if defined(__ARM_NEON__) - float32x4_t v = vmulq_f32(*(float32x4_t *)&quaternion, - vdupq_n_f32((float32_t)scale)); - return *(CCQuaternion *)&v; -#else - CCQuaternion q = { - .x = quaternion.q[0] * scale, - .y = quaternion.q[1] * scale, - .z = quaternion.q[2] * scale, - .w = quaternion.q[3] * scale - }; - return q; -#endif - } - - static inline CCVector3 CCQuaternionRotateVector3(CCQuaternion quaternion, CCVector3 vector) - { - CCQuaternion rotatedQuaternion = CCQuaternionMake(vector.v[0], vector.v[1], vector.v[2], 0.0f); - rotatedQuaternion = CCQuaternionMultiply(CCQuaternionMultiply(quaternion, rotatedQuaternion), CCQuaternionInvert(quaternion)); - - return CCVector3Make(rotatedQuaternion.q[0], rotatedQuaternion.q[1], rotatedQuaternion.q[2]); - } - - /* - The fourth component of the vector is ignored when calculating the rotation. - */ - static inline CCVector4 CCQuaternionRotateVector4(CCQuaternion quaternion, CCVector4 vector) - { - CCQuaternion rotatedQuaternion = CCQuaternionMake(vector.v[0], vector.v[1], vector.v[2], 0.0f); - rotatedQuaternion = CCQuaternionMultiply(CCQuaternionMultiply(quaternion, rotatedQuaternion), CCQuaternionInvert(quaternion)); - - return CCVector4Make(rotatedQuaternion.q[0], rotatedQuaternion.q[1], rotatedQuaternion.q[2], vector.v[3]); - } - -#ifdef __cplusplus -} -#endif - -#define GLKQuaternionIdentity CCQuaternionIdentity -#define GLKQuaternionMakeWithMatrix3 CCQuaternionMakeWithMatrix3 -#define GLKQuaternionAngle CCQuaternionAngle -#define GLKQuaternionAxis CCQuaternionAxis -#define GLKQuaternionSlerp CCQuaternionSlerp -#define GLKQuaternionRotateVector3Array CCQuaternionRotateVector3Array -#define GLKQuaternionMakeWithMatrix4 CCQuaternionMakeWithMatrix4 -#define GLKQuaternionRotateVector4Array CCQuaternionRotateVector4Array -#define GLKQuaternionMake CCQuaternionMake -#define GLKQuaternionMakeWithVector3 CCQuaternionMakeWithVector3 -#define GLKQuaternionMakeWithArray CCQuaternionMakeWithArray -#define GLKQuaternionMakeWithAngleAndAxis CCQuaternionMakeWithAngleAndAxis -#define GLKQuaternionIdentity CCQuaternionIdentity -#define GLKQuaternionMakeWithAngleAndVector3Axis CCQuaternionMakeWithAngleAndVector3Axis -#define GLKQuaternionAdd CCQuaternionAdd -#define GLKQuaternionSubtract CCQuaternionSubtract -#define GLKQuaternionMultiply CCQuaternionMultiply -#define GLKQuaternionLength CCQuaternionLength -#define GLKQuaternionConjugate CCQuaternionConjugate -#define GLKQuaternionInvert CCQuaternionInvert -#define GLKQuaternionNormalize CCQuaternionNormalize -#define GLKQuaternionRotateVector3 CCQuaternionRotateVector3 -#define GLKQuaternionRotateVector4 CCQuaternionRotateVector4 - -#endif - -#endif /* __CC_QUATERNION_H */ diff --git a/cocos2d/Platforms/Android/CCQuaternion.m b/cocos2d/Platforms/Android/CCQuaternion.m deleted file mode 100644 index a4b92a49844..00000000000 --- a/cocos2d/Platforms/Android/CCQuaternion.m +++ /dev/null @@ -1,124 +0,0 @@ -#import "CCQuaternion.h" -#import "CCMatrix4.h" - -#if __CC_PLATFORM_ANDROID - -#define kCCEpsilon 0.0001f - -CCQuaternion CCQuaternionMakeWithMatrix3(CCMatrix3 matrix) -{ - CCQuaternion quat; - quat.y = sqrtf(((1.0f - matrix.m[0]) / 2.0f - (1.0f - matrix.m[4]) / 2.0f + (1.0f - matrix.m[8]) / 2.0f) / 2.0f); - quat.x = sqrtf((1.0f - matrix.m[8]) / 2.0f - quat.y * quat.y); - quat.z = sqrtf((1.0f - matrix.m[4]) / 2.0f - quat.x * quat.x); - quat.w = (quat.x * quat.y - matrix.m[1] / 2.0f) / quat.z; - return quat; -} - -float CCQuaternionAngle(CCQuaternion quaternion) -{ - float angle = acosf(quaternion.w); - float scale = sqrtf(quaternion.x * quaternion.x + quaternion.y * quaternion.y + quaternion.z * quaternion.z); - - if (((scale > -kCCEpsilon) && scale < kCCEpsilon) - || (scale < 2.0f * M_PI + kCCEpsilon && scale > 2.0f * M_PI - kCCEpsilon)) - { - return 0.0f; - } - else - { - return angle * 2.0f; - } -} - -CCVector3 CCQuaternionAxis(CCQuaternion quaternion) -{ - float angle = acosf(quaternion.w); - float scale = sqrtf(quaternion.x * quaternion.x + quaternion.y * quaternion.y + quaternion.z * quaternion.z); - - if (((scale > -kCCEpsilon) && scale < kCCEpsilon) - || (scale < 2.0f * M_PI + kCCEpsilon && scale > 2.0f * M_PI - kCCEpsilon)) - { - return CCVector3Make(0.0f, 0.0f, 1.0f); - } - else - { - return CCVector3Make(quaternion.x / scale, quaternion.y / scale, quaternion.z / scale); - } -} - - -static inline float CCQuaternionDot(CCQuaternion q1, CCQuaternion q2) { - return (q1.w * q2.w + - q1.x * q2.x + - q1.y * q2.y + - q1.z * q2.z); -} - -static inline CCQuaternion CCQuaternionScale(CCQuaternion q1, float s) -{ - CCQuaternion q; - q.x = q1.x * s; - q.y = q1.y * s; - q.z = q1.z * s; - q.w = q1.w * s; - return q; -} - -CCQuaternion CCQuaternionSlerp(CCQuaternion q1, CCQuaternion q2, float t) -{ - CCQuaternion q; - - if (q1.x == q2.x && - q1.y == q2.y && - q1.z == q2.z && - q1.w == q2.w) - { - - q.x = q.x; - q.y = q.y; - q.z = q.z; - q.w = q.w; - - return q; - } - - float ct = CCQuaternionDot(q1, q2); - float theta = acosf(ct); - float st = sqrtf(1.0 - (ct * ct)); - float stt = sinf(t * theta) / st; - float somt = sinf((1.0 - t) * theta) / st; - - CCQuaternion temp, temp2; - - temp = CCQuaternionScale(q1, somt); - temp2 = CCQuaternionScale(q2, stt); - q = CCQuaternionAdd(temp, temp2); - - return q; -} - -void CCQuaternionRotateVector3Array(CCQuaternion quaternion, CCVector3 *vectors, size_t vectorCount) -{ - for (int idx = 0; idx < vectorCount; idx++) - { - CCQuaternionRotateVector3(quaternion, vectors[idx]); - } -} - -CCQuaternion CCQuaternionMakeWithMatrix4(CCMatrix4 matrix) -{ - return CCQuaternionMakeWithMatrix3(CCMatrix4GetMatrix3(matrix)); -} - -void CCQuaternionRotateVector4Array(CCQuaternion quaternion, CCVector4 *vectors, size_t vectorCount) -{ - for (int idx = 0; idx < vectorCount; idx++) - { - CCQuaternionRotateVector4(quaternion, vectors[idx]); - } -} - -#endif - - diff --git a/cocos2d/Platforms/Android/CCTouchAndroid.h b/cocos2d/Platforms/Android/CCTouchAndroid.h deleted file mode 100644 index df1f41de876..00000000000 --- a/cocos2d/Platforms/Android/CCTouchAndroid.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// CCTouchAndroid.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/13/14. -// -// - -#import "CCTouch.h" - -#if __CC_PLATFORM_ANDROID - -@interface CCTouchAndroid : CCTouch - -@property (nonatomic, readonly) CCTouchPhase phase; -@property (nonatomic, readonly) NSUInteger tapCount; -@property (nonatomic, readonly) NSTimeInterval timestamp; - -- (void)update:(CGPoint)pt phase:(CCTouchPhase)phase timestamp:(NSTimeInterval)timestamp; - -- (CGPoint)locationInView:(CCGLView *)view; -- (CGPoint)previousLocationInView:(CCGLView *)view; - - -@end - -#endif diff --git a/cocos2d/Platforms/Android/CCTouchAndroid.m b/cocos2d/Platforms/Android/CCTouchAndroid.m deleted file mode 100644 index f109e8ebe28..00000000000 --- a/cocos2d/Platforms/Android/CCTouchAndroid.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// CCTouchAndroid.m -// cocos2d-ios -// -// Created by Oleg Osin on 6/13/14. -// -// -#import "CCTouchAndroid.h" - -#if __CC_PLATFORM_ANDROID - -@implementation CCTouchAndroid { - CGPoint _location; - CGPoint _prevLoc; - CCTouchPhase _phase; - NSTimeInterval _timestamp; -} - -- (id)init -{ - self = [super initWithPlatformTouch:nil]; - return self; -} - -- (void)update:(CGPoint)pt phase:(CCTouchPhase)phase timestamp:(NSTimeInterval)timestamp -{ - _prevLoc = _location; - _location = pt; - _phase = phase; - _timestamp = timestamp; -} - -- (CCTouchPhase)phase -{ - return _phase; -} - -- (NSTimeInterval)timestamp -{ - return _timestamp; -} - -- (CGPoint)locationInView:(CCGLView *)view -{ - return _location; -} - -- (CGPoint)previousLocationInView:(CCGLView *)view -{ - return _prevLoc; -} -@end - -#endif \ No newline at end of file diff --git a/cocos2d/Platforms/Android/CCVector2.h b/cocos2d/Platforms/Android/CCVector2.h deleted file mode 100644 index 68fe4a69755..00000000000 --- a/cocos2d/Platforms/Android/CCVector2.h +++ /dev/null @@ -1,425 +0,0 @@ -// -// CCVector2.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/10/14. -// -// - -#ifndef __CC_VECTOR_2_H -#define __CC_VECTOR_2_H - -#include -#include - -#if defined(__ARM_NEON__) -#include -#endif - -#import "CCMathTypesAndroid.h" - -#if __CC_PLATFORM_ANDROID - -#ifdef __cplusplus -extern "C" { -#endif - - static inline CCVector2 CCVector2Make(float x, float y) - { - CCVector2 v = { { x, y } }; - return v; - } - - static inline CCVector2 CCVector2MakeWithArray(float values[2]) - { -#if defined(__ARM_NEON__) - float32x2_t v = vld1_f32(values); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { values[0], values[1] } }; - return v; -#endif - } - - static inline CCVector2 CCVector2Negate(CCVector2 vector) - { -#if defined(__ARM_NEON__) - float32x2_t v = vneg_f32(*(float32x2_t *)&vector); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { -vector.v[0] , -vector.v[1] } }; - return v; -#endif - } - - static inline CCVector2 CCVector2Add(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON__) - float32x2_t v = vadd_f32(*(float32x2_t *)&vectorLeft, - *(float32x2_t *)&vectorRight); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { vectorLeft.v[0] + vectorRight.v[0], - vectorLeft.v[1] + vectorRight.v[1] } }; - return v; -#endif - } - - static inline CCVector2 CCVector2Subtract(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON__) - float32x2_t v = vsub_f32(*(float32x2_t *)&vectorLeft, - *(float32x2_t *)&vectorRight); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { vectorLeft.v[0] - vectorRight.v[0], - vectorLeft.v[1] - vectorRight.v[1] } }; - return v; -#endif - } - - static inline CCVector2 CCVector2Multiply(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON__) - float32x2_t v = vmul_f32(*(float32x2_t *)&vectorLeft, - *(float32x2_t *)&vectorRight); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { vectorLeft.v[0] * vectorRight.v[0], - vectorLeft.v[1] * vectorRight.v[1] } }; - return v; -#endif - } - - static inline CCVector2 CCVector2Divide(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON__) - float32x2_t *vLeft = (float32x2_t *)&vectorLeft; - float32x2_t *vRight = (float32x2_t *)&vectorRight; - float32x2_t estimate = vrecpe_f32(*vRight); - estimate = vmul_f32(vrecps_f32(*vRight, estimate), estimate); - estimate = vmul_f32(vrecps_f32(*vRight, estimate), estimate); - float32x2_t v = vmul_f32(*vLeft, estimate); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { vectorLeft.v[0] / vectorRight.v[0], - vectorLeft.v[1] / vectorRight.v[1] } }; - return v; -#endif - } - - static inline CCVector2 CCVector2AddScalar(CCVector2 vector, float value) - { -#if defined(__ARM_NEON__) - float32x2_t v = vadd_f32(*(float32x2_t *)&vector, - vdup_n_f32((float32_t)value)); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { vector.v[0] + value, - vector.v[1] + value } }; - return v; -#endif - } - - static inline CCVector2 CCVector2SubtractScalar(CCVector2 vector, float value) - { -#if defined(__ARM_NEON__) - float32x2_t v = vsub_f32(*(float32x2_t *)&vector, - vdup_n_f32((float32_t)value)); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { vector.v[0] - value, - vector.v[1] - value } }; - return v; -#endif - } - - static inline CCVector2 CCVector2MultiplyScalar(CCVector2 vector, float value) - { -#if defined(__ARM_NEON__) - float32x2_t v = vmul_f32(*(float32x2_t *)&vector, - vdup_n_f32((float32_t)value)); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { vector.v[0] * value, - vector.v[1] * value } }; - return v; -#endif - } - - static inline CCVector2 CCVector2DivideScalar(CCVector2 vector, float value) - { -#if defined(__ARM_NEON__) - float32x2_t values = vdup_n_f32((float32_t)value); - float32x2_t estimate = vrecpe_f32(values); - estimate = vmul_f32(vrecps_f32(values, estimate), estimate); - estimate = vmul_f32(vrecps_f32(values, estimate), estimate); - float32x2_t v = vmul_f32(*(float32x2_t *)&vector, estimate); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { vector.v[0] / value, - vector.v[1] / value } }; - return v; -#endif - } - - /* - Returns a vector whose elements are the larger of the corresponding elements of the vector arguments. - */ - static inline CCVector2 CCVector2Maximum(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON__) - float32x2_t v = vmax_f32(*(float32x2_t *)&vectorLeft, - *(float32x2_t *)&vectorRight); - return *(CCVector2 *)&v; -#else - CCVector2 max = vectorLeft; - if (vectorRight.v[0] > vectorLeft.v[0]) - max.v[0] = vectorRight.v[0]; - if (vectorRight.v[1] > vectorLeft.v[1]) - max.v[1] = vectorRight.v[1]; - return max; -#endif - } - - /* - Returns a vector whose elements are the smaller of the corresponding elements of the vector arguments. - */ - static inline CCVector2 CCVector2Minimum(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON__) - float32x2_t v = vmin_f32(*(float32x2_t *)&vectorLeft, - *(float32x2_t *)&vectorRight); - return *(CCVector2 *)&v; -#else - CCVector2 min = vectorLeft; - if (vectorRight.v[0] < vectorLeft.v[0]) - min.v[0] = vectorRight.v[0]; - if (vectorRight.v[1] < vectorLeft.v[1]) - min.v[1] = vectorRight.v[1]; - return min; -#endif - } - - /* - Returns true if all of the first vector's elements are equal to all of the second vector's arguments. - */ - static inline bool CCVector2AllEqualToVector2(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON_) - float32x2_t v1 = *(float32x2_t *)&vectorLeft; - float32x2_t v2 = *(float32x2_t *)&vectorRight; - uint32x2_t vCmp = vceq_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vCmp, vext_u32(vCmp, vCmp, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vectorLeft.v[0] == vectorRight.v[0] && - vectorLeft.v[1] == vectorRight.v[1]) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the vector's elements are equal to the provided value. - */ - static inline bool CCVector2AllEqualToScalar(CCVector2 vector, float value) - { -#if defined(__ARM_NEON_) - float32x2_t v1 = *(float32x2_t *)&vector; - float32x2_t v2 = vdup_n_f32(value); - uint32x2_t vCmp = vceq_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vCmp, vext_u32(vCmp, vCmp, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vector.v[0] == value && - vector.v[1] == value) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the first vector's elements are greater than all of the second vector's arguments. - */ - static inline bool CCVector2AllGreaterThanVector2(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON_) - float32x2_t v1 = *(float32x2_t *)&vectorLeft; - float32x2_t v2 = *(float32x2_t *)&vectorRight; - uint32x2_t vCmp = vcgt_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vCmp, vext_u32(vCmp, vCmp, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vectorLeft.v[0] > vectorRight.v[0] && - vectorLeft.v[1] > vectorRight.v[1]) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the vector's elements are greater than the provided value. - */ - static inline bool CCVector2AllGreaterThanScalar(CCVector2 vector, float value) - { -#if defined(__ARM_NEON_) - float32x2_t v1 = *(float32x2_t *)&vector; - float32x2_t v2 = vdup_n_f32(value); - uint32x2_t vCmp = vcgt_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vCmp, vext_u32(vCmp, vCmp, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vector.v[0] > value && - vector.v[1] > value) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the first vector's elements are greater than or equal to all of the second vector's arguments. - */ - static inline bool CCVector2AllGreaterThanOrEqualToVector2(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON_) - float32x2_t v1 = *(float32x2_t *)&vectorLeft; - float32x2_t v2 = *(float32x2_t *)&vectorRight; - uint32x2_t vCmp = vcge_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vCmp, vext_u32(vCmp, vCmp, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vectorLeft.v[0] >= vectorRight.v[0] && - vectorLeft.v[1] >= vectorRight.v[1]) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the vector's elements are greater than or equal to the provided value. - */ - static inline bool CCVector2AllGreaterThanOrEqualToScalar(CCVector2 vector, float value) - { -#if defined(__ARM_NEON_) - float32x2_t v1 = *(float32x2_t *)&vector; - float32x2_t v2 = vdup_n_f32(value); - uint32x2_t vCmp = vcge_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vCmp, vext_u32(vCmp, vCmp, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vector.v[0] >= value && - vector.v[1] >= value) - compare = true; - return compare; -#endif - } - - static inline float CCVector2Length(CCVector2 vector) - { -#if defined(__ARM_NEON__) - float32x2_t v = vmul_f32(*(float32x2_t *)&vector, - *(float32x2_t *)&vector); - v = vpadd_f32(v, v); - return sqrt(vget_lane_f32(v, 0)); -#else - return sqrt(vector.v[0] * vector.v[0] + vector.v[1] * vector.v[1]); -#endif - } - - static inline CCVector2 CCVector2Normalize(CCVector2 vector) - { - float scale = 1.0f / CCVector2Length(vector); - CCVector2 v = CCVector2MultiplyScalar(vector, scale); - return v; - } - - static inline float CCVector2DotProduct(CCVector2 vectorLeft, CCVector2 vectorRight) - { -#if defined(__ARM_NEON__) - float32x2_t v = vmul_f32(*(float32x2_t *)&vectorLeft, - *(float32x2_t *)&vectorRight); - v = vpadd_f32(v, v); - return vget_lane_f32(v, 0); -#else - return vectorLeft.v[0] * vectorRight.v[0] + vectorLeft.v[1] * vectorRight.v[1]; -#endif - } - - static inline float CCVector2Distance(CCVector2 vectorStart, CCVector2 vectorEnd) - { - return CCVector2Length(CCVector2Subtract(vectorEnd, vectorStart)); - } - - static inline CCVector2 CCVector2Lerp(CCVector2 vectorStart, CCVector2 vectorEnd, float t) - { -#if defined(__ARM_NEON__) - float32x2_t vDiff = vsub_f32(*(float32x2_t *)&vectorEnd, - *(float32x2_t *)&vectorStart); - vDiff = vmul_f32(vDiff, vdup_n_f32((float32_t)t)); - float32x2_t v = vadd_f32(*(float32x2_t *)&vectorStart, vDiff); - return *(CCVector2 *)&v; -#else - CCVector2 v = { { vectorStart.v[0] + ((vectorEnd.v[0] - vectorStart.v[0]) * t), - vectorStart.v[1] + ((vectorEnd.v[1] - vectorStart.v[1]) * t) } }; - return v; -#endif - } - - /* - Project the vector, vectorToProject, onto the vector, projectionVector. - */ - static inline CCVector2 CCVector2Project(CCVector2 vectorToProject, CCVector2 projectionVector) - { - float scale = CCVector2DotProduct(projectionVector, vectorToProject) / CCVector2DotProduct(projectionVector, projectionVector); - CCVector2 v = CCVector2MultiplyScalar(projectionVector, scale); - return v; - } - -#ifdef __cplusplus -} -#endif - -#define GLKVector2Make CCVector2Make -#define GLKVector2MakeWithArray CCVector2MakeWithArray -#define GLKVector2Negate CCVector2Negate -#define GLKVector2Add CCVector2Add -#define GLKVector2Subtract CCVector2Subtract -#define GLKVector2Multiply CCVector2Multiply -#define GLKVector2Divide CCVector2Divide -#define GLKVector2AddScalar CCVector2AddScalar -#define GLKVector2SubtractScalar CCVector2SubtractScalar -#define GLKVector2MultiplyScalar CCVector2MultiplyScalar -#define GLKVector2DivideScalar CCVector2DivideScalar -#define GLKVector2Maximum CCVector2Maximum -#define GLKVector2Minimum CCVector2Minimum -#define GLKVector2AllEqualToVector2 CCVector2AllEqualToVector2 -#define GLKVector2AllEqualToScalar CCVector2AllEqualToScalar -#define GLKVector2AllGreaterThanVector2 CCVector2AllGreaterThanVector2 -#define GLKVector2AllGreaterThanScalar CCVector2AllGreaterThanScalar -#define GLKVector2AllGreaterThanOrEqualToVector2 CCVector2AllGreaterThanOrEqualToVector2 -#define GLKVector2AllGreaterThanOrEqualToScalar CCVector2AllGreaterThanOrEqualToScalar -#define GLKVector2Length CCVector2Length -#define GLKVector2Normalize CCVector2Normalize -#define GLKVector2DotProduct CCVector2DotProduct -#define GLKVector2Distance CCVector2Distance -#define GLKVector2Lerp CCVector2Lerp -#define GLKVector2Project CCVector2Project - -#endif - -#endif /* __CC_VECTOR_2_H */ - - diff --git a/cocos2d/Platforms/Android/CCVector3.h b/cocos2d/Platforms/Android/CCVector3.h deleted file mode 100644 index 036a9b67716..00000000000 --- a/cocos2d/Platforms/Android/CCVector3.h +++ /dev/null @@ -1,295 +0,0 @@ -// -// CCVector3.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/10/14. -// -// - -#ifndef __CC_VECTOR_3_H -#define __CC_VECTOR_3_H - -#include -#include - -#import "CCMathTypesAndroid.h" - -#if __CC_PLATFORM_ANDROID - -#ifdef __cplusplus -extern "C" { -#endif - - static inline CCVector3 CCVector3Make(float x, float y, float z) - { - CCVector3 v = { { x, y, z } }; - return v; - } - - static inline CCVector3 CCVector3MakeWithArray(float values[3]) - { - CCVector3 v = { { values[0], values[1], values[2] } }; - return v; - } - - static inline CCVector3 CCVector3Negate(CCVector3 vector) - { - CCVector3 v = { { -vector.v[0], -vector.v[1], -vector.v[2] } }; - return v; - } - - static inline CCVector3 CCVector3Add(CCVector3 vectorLeft, CCVector3 vectorRight) - { - CCVector3 v = { { vectorLeft.v[0] + vectorRight.v[0], - vectorLeft.v[1] + vectorRight.v[1], - vectorLeft.v[2] + vectorRight.v[2] } }; - return v; - } - - static inline CCVector3 CCVector3Subtract(CCVector3 vectorLeft, CCVector3 vectorRight) - { - CCVector3 v = { { vectorLeft.v[0] - vectorRight.v[0], - vectorLeft.v[1] - vectorRight.v[1], - vectorLeft.v[2] - vectorRight.v[2] } }; - return v; - } - - static inline CCVector3 CCVector3Multiply(CCVector3 vectorLeft, CCVector3 vectorRight) - { - CCVector3 v = { { vectorLeft.v[0] * vectorRight.v[0], - vectorLeft.v[1] * vectorRight.v[1], - vectorLeft.v[2] * vectorRight.v[2] } }; - return v; - } - - static inline CCVector3 CCVector3Divide(CCVector3 vectorLeft, CCVector3 vectorRight) - { - CCVector3 v = { { vectorLeft.v[0] / vectorRight.v[0], - vectorLeft.v[1] / vectorRight.v[1], - vectorLeft.v[2] / vectorRight.v[2] } }; - return v; - } - - static inline CCVector3 CCVector3AddScalar(CCVector3 vector, float value) - { - CCVector3 v = { { vector.v[0] + value, - vector.v[1] + value, - vector.v[2] + value } }; - return v; - } - - static inline CCVector3 CCVector3SubtractScalar(CCVector3 vector, float value) - { - CCVector3 v = { { vector.v[0] - value, - vector.v[1] - value, - vector.v[2] - value } }; - return v; - } - - static inline CCVector3 CCVector3MultiplyScalar(CCVector3 vector, float value) - { - CCVector3 v = { { vector.v[0] * value, - vector.v[1] * value, - vector.v[2] * value } }; - return v; - } - - static inline CCVector3 CCVector3DivideScalar(CCVector3 vector, float value) - { - CCVector3 v = { { vector.v[0] / value, - vector.v[1] / value, - vector.v[2] / value } }; - return v; - } - - /* - Returns a vector whose elements are the larger of the corresponding elements of the vector arguments. - */ - static inline CCVector3 CCVector3Maximum(CCVector3 vectorLeft, CCVector3 vectorRight) - { - CCVector3 max = vectorLeft; - if (vectorRight.v[0] > vectorLeft.v[0]) - max.v[0] = vectorRight.v[0]; - if (vectorRight.v[1] > vectorLeft.v[1]) - max.v[1] = vectorRight.v[1]; - if (vectorRight.v[2] > vectorLeft.v[2]) - max.v[2] = vectorRight.v[2]; - return max; - } - - /* - Returns a vector whose elements are the smaller of the corresponding elements of the vector arguments. - */ - static inline CCVector3 CCVector3Minimum(CCVector3 vectorLeft, CCVector3 vectorRight) - { - CCVector3 min = vectorLeft; - if (vectorRight.v[0] < vectorLeft.v[0]) - min.v[0] = vectorRight.v[0]; - if (vectorRight.v[1] < vectorLeft.v[1]) - min.v[1] = vectorRight.v[1]; - if (vectorRight.v[2] < vectorLeft.v[2]) - min.v[2] = vectorRight.v[2]; - return min; - } - - /* - Returns true if all of the first vector's elements are equal to all of the second vector's arguments. - */ - static inline bool CCVector3AllEqualToVector3(CCVector3 vectorLeft, CCVector3 vectorRight) - { - bool compare = false; - if (vectorLeft.v[0] == vectorRight.v[0] && - vectorLeft.v[1] == vectorRight.v[1] && - vectorLeft.v[2] == vectorRight.v[2]) - compare = true; - return compare; - } - - /* - Returns true if all of the vector's elements are equal to the provided value. - */ - static inline bool CCVector3AllEqualToScalar(CCVector3 vector, float value) - { - bool compare = false; - if (vector.v[0] == value && - vector.v[1] == value && - vector.v[2] == value) - compare = true; - return compare; - } - - /* - Returns true if all of the first vector's elements are greater than all of the second vector's arguments. - */ - static inline bool CCVector3AllGreaterThanVector3(CCVector3 vectorLeft, CCVector3 vectorRight) - { - bool compare = false; - if (vectorLeft.v[0] > vectorRight.v[0] && - vectorLeft.v[1] > vectorRight.v[1] && - vectorLeft.v[2] > vectorRight.v[2]) - compare = true; - return compare; - } - - /* - Returns true if all of the vector's elements are greater than the provided value. - */ - static inline bool CCVector3AllGreaterThanScalar(CCVector3 vector, float value) - { - bool compare = false; - if (vector.v[0] > value && - vector.v[1] > value && - vector.v[2] > value) - compare = true; - return compare; - } - - /* - Returns true if all of the first vector's elements are greater than or equal to all of the second vector's arguments. - */ - static inline bool CCVector3AllGreaterThanOrEqualToVector3(CCVector3 vectorLeft, CCVector3 vectorRight) - { - bool compare = false; - if (vectorLeft.v[0] >= vectorRight.v[0] && - vectorLeft.v[1] >= vectorRight.v[1] && - vectorLeft.v[2] >= vectorRight.v[2]) - compare = true; - return compare; - } - - /* - Returns true if all of the vector's elements are greater than or equal to the provided value. - */ - static inline bool CCVector3AllGreaterThanOrEqualToScalar(CCVector3 vector, float value) - { - bool compare = false; - if (vector.v[0] >= value && - vector.v[1] >= value && - vector.v[2] >= value) - compare = true; - return compare; - } - - static inline float CCVector3Length(CCVector3 vector) - { - return sqrtf(vector.v[0] * vector.v[0] + vector.v[1] * vector.v[1] + vector.v[2] * vector.v[2]); - } - - static inline CCVector3 CCVector3Normalize(CCVector3 vector) - { - float scale = 1.0f / CCVector3Length(vector); - CCVector3 v = { { vector.v[0] * scale, vector.v[1] * scale, vector.v[2] * scale } }; - return v; - } - - static inline float CCVector3DotProduct(CCVector3 vectorLeft, CCVector3 vectorRight) - { - return vectorLeft.v[0] * vectorRight.v[0] + vectorLeft.v[1] * vectorRight.v[1] + vectorLeft.v[2] * vectorRight.v[2]; - } - - static inline float CCVector3Distance(CCVector3 vectorStart, CCVector3 vectorEnd) - { - return CCVector3Length(CCVector3Subtract(vectorEnd, vectorStart)); - } - - static inline CCVector3 CCVector3Lerp(CCVector3 vectorStart, CCVector3 vectorEnd, float t) - { - CCVector3 v = { { vectorStart.v[0] + ((vectorEnd.v[0] - vectorStart.v[0]) * t), - vectorStart.v[1] + ((vectorEnd.v[1] - vectorStart.v[1]) * t), - vectorStart.v[2] + ((vectorEnd.v[2] - vectorStart.v[2]) * t) } }; - return v; - } - - static inline CCVector3 CCVector3CrossProduct(CCVector3 vectorLeft, CCVector3 vectorRight) - { - CCVector3 v = { { vectorLeft.v[1] * vectorRight.v[2] - vectorLeft.v[2] * vectorRight.v[1], - vectorLeft.v[2] * vectorRight.v[0] - vectorLeft.v[0] * vectorRight.v[2], - vectorLeft.v[0] * vectorRight.v[1] - vectorLeft.v[1] * vectorRight.v[0] } }; - return v; - } - - /* - Project the vector, vectorToProject, onto the vector, projectionVector. - */ - static inline CCVector3 CCVector3Project(CCVector3 vectorToProject, CCVector3 projectionVector) - { - float scale = CCVector3DotProduct(projectionVector, vectorToProject) / CCVector3DotProduct(projectionVector, projectionVector); - CCVector3 v = CCVector3MultiplyScalar(projectionVector, scale); - return v; - } - -#ifdef __cplusplus -} -#endif - -#define GLKVector3Make CCVector3Make -#define GLKVector3MakeWithArray CCVector3MakeWithArray -#define GLKVector3Negate CCVector3Negate -#define GLKVector3Add CCVector3Add -#define GLKVector3Subtract CCVector3Subtract -#define GLKVector3Multiply CCVector3Multiply -#define GLKVector3Divide CCVector3Divide -#define GLKVector3AddScalar CCVector3AddScalar -#define GLKVector3SubtractScalar CCVector3SubtractScalar -#define GLKVector3MultiplyScalar CCVector3MultiplyScalar -#define GLKVector3DivideScalar CCVector3DivideScalar -#define GLKVector3Maximum CCVector3Maximum -#define GLKVector3Minimum CCVector3Minimum -#define GLKVector3AllEqualToVector2 CCVector3AllEqualToVector2 -#define GLKVector3AllEqualToScalar CCVector3AllEqualToScalar -#define GLKVector3AllGreaterThanVector2 CCVector3AllGreaterThanVector2 -#define GLKVector3AllGreaterThanScalar CCVector3AllGreaterThanScalar -#define GLKVector3AllGreaterThanOrEqualToVector2 CCVector3AllGreaterThanOrEqualToVector2 -#define GLKVector3AllGreaterThanOrEqualToScalar CCVector3AllGreaterThanOrEqualToScalar -#define GLKVector3Length CCVector3Length -#define GLKVector3Normalize CCVector3Normalize -#define GLKVector3DotProduct CCVector3DotProduct -#define GLKVector3Distance GLKVect -#define GLKVector3Lerp CCVector3Lerp -#define GLKVector3Project CCVector3Project - -#endif - -#endif /* __CC_VECTOR_3_H */ - - diff --git a/cocos2d/Platforms/Android/CCVector4.h b/cocos2d/Platforms/Android/CCVector4.h deleted file mode 100644 index e54b7c66d72..00000000000 --- a/cocos2d/Platforms/Android/CCVector4.h +++ /dev/null @@ -1,495 +0,0 @@ -// -// CCVector4.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/10/14. -// -// - -#ifndef __CC_VECTOR_4_H -#define __CC_VECTOR_4_H - -#include -#include - -#if defined(__ARM_NEON__) -#include -#endif - -#import "CCMathTypesAndroid.h" - -#if __CC_PLATFORM_ANDROID - -#ifdef __cplusplus -extern "C" { -#endif - - static inline CCVector4 CCVector4Make(float x, float y, float z, float w) - { - CCVector4 v = { { x, y, z, w } }; - return v; - } - - static inline CCVector4 CCVector4MakeWithArray(float values[4]) - { -#if defined(__ARM_NEON__) - float32x4_t v = vld1q_f32(values); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { values[0], values[1], values[2], values[3] } }; - return v; -#endif - } - - static inline CCVector4 CCVector4MakeWithVector3(CCVector3 vector, float w) - { - CCVector4 v = { { vector.v[0], vector.v[1], vector.v[2], w } }; - return v; - } - - static inline CCVector4 CCVector4Negate(CCVector4 vector) - { -#if defined(__ARM_NEON__) - float32x4_t v = vnegq_f32(*(float32x4_t *)&vector); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { -vector.v[0], -vector.v[1], -vector.v[2], -vector.v[3] } }; - return v; -#endif - } - - static inline CCVector4 CCVector4Add(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON__) - float32x4_t v = vaddq_f32(*(float32x4_t *)&vectorLeft, - *(float32x4_t *)&vectorRight); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { vectorLeft.v[0] + vectorRight.v[0], - vectorLeft.v[1] + vectorRight.v[1], - vectorLeft.v[2] + vectorRight.v[2], - vectorLeft.v[3] + vectorRight.v[3] } }; - return v; -#endif - } - - static inline CCVector4 CCVector4Subtract(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON__) - float32x4_t v = vsubq_f32(*(float32x4_t *)&vectorLeft, - *(float32x4_t *)&vectorRight); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { vectorLeft.v[0] - vectorRight.v[0], - vectorLeft.v[1] - vectorRight.v[1], - vectorLeft.v[2] - vectorRight.v[2], - vectorLeft.v[3] - vectorRight.v[3] } }; - return v; -#endif - } - - static inline CCVector4 CCVector4Multiply(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON__) - float32x4_t v = vmulq_f32(*(float32x4_t *)&vectorLeft, - *(float32x4_t *)&vectorRight); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { vectorLeft.v[0] * vectorRight.v[0], - vectorLeft.v[1] * vectorRight.v[1], - vectorLeft.v[2] * vectorRight.v[2], - vectorLeft.v[3] * vectorRight.v[3] } }; - return v; -#endif - } - - static inline CCVector4 CCVector4Divide(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON__) - float32x4_t *vLeft = (float32x4_t *)&vectorLeft; - float32x4_t *vRight = (float32x4_t *)&vectorRight; - float32x4_t estimate = vrecpeq_f32(*vRight); - estimate = vmulq_f32(vrecpsq_f32(*vRight, estimate), estimate); - estimate = vmulq_f32(vrecpsq_f32(*vRight, estimate), estimate); - float32x4_t v = vmulq_f32(*vLeft, estimate); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { vectorLeft.v[0] / vectorRight.v[0], - vectorLeft.v[1] / vectorRight.v[1], - vectorLeft.v[2] / vectorRight.v[2], - vectorLeft.v[3] / vectorRight.v[3] } }; - return v; -#endif - } - - static inline CCVector4 CCVector4AddScalar(CCVector4 vector, float value) - { -#if defined(__ARM_NEON__) - float32x4_t v = vaddq_f32(*(float32x4_t *)&vector, - vdupq_n_f32((float32_t)value)); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { vector.v[0] + value, - vector.v[1] + value, - vector.v[2] + value, - vector.v[3] + value } }; - return v; -#endif - } - - static inline CCVector4 CCVector4SubtractScalar(CCVector4 vector, float value) - { -#if defined(__ARM_NEON__) - float32x4_t v = vsubq_f32(*(float32x4_t *)&vector, - vdupq_n_f32((float32_t)value)); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { vector.v[0] - value, - vector.v[1] - value, - vector.v[2] - value, - vector.v[3] - value } }; - return v; -#endif - } - - static inline CCVector4 CCVector4MultiplyScalar(CCVector4 vector, float value) - { -#if defined(__ARM_NEON__) - float32x4_t v = vmulq_f32(*(float32x4_t *)&vector, - vdupq_n_f32((float32_t)value)); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { vector.v[0] * value, - vector.v[1] * value, - vector.v[2] * value, - vector.v[3] * value } }; - return v; -#endif - } - - static inline CCVector4 CCVector4DivideScalar(CCVector4 vector, float value) - { -#if defined(__ARM_NEON__) - float32x4_t values = vdupq_n_f32((float32_t)value); - float32x4_t estimate = vrecpeq_f32(values); - estimate = vmulq_f32(vrecpsq_f32(values, estimate), estimate); - estimate = vmulq_f32(vrecpsq_f32(values, estimate), estimate); - float32x4_t v = vmulq_f32(*(float32x4_t *)&vector, estimate); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { vector.v[0] / value, - vector.v[1] / value, - vector.v[2] / value, - vector.v[3] / value } }; - return v; -#endif - } - - /* - Returns a vector whose elements are the larger of the corresponding elements of the vector arguments. - */ - static inline CCVector4 CCVector4Maximum(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON__) - float32x4_t v = vmaxq_f32(*(float32x4_t *)&vectorLeft, - *(float32x4_t *)&vectorRight); - return *(CCVector4 *)&v; -#else - CCVector4 max = vectorLeft; - if (vectorRight.v[0] > vectorLeft.v[0]) - max.v[0] = vectorRight.v[0]; - if (vectorRight.v[1] > vectorLeft.v[1]) - max.v[1] = vectorRight.v[1]; - if (vectorRight.v[2] > vectorLeft.v[2]) - max.v[2] = vectorRight.v[2]; - if (vectorRight.v[3] > vectorLeft.v[3]) - max.v[3] = vectorRight.v[3]; - return max; -#endif - } - - /* - Returns a vector whose elements are the smaller of the corresponding elements of the vector arguments. - */ - static inline CCVector4 CCVector4Minimum(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON__) - float32x4_t v = vminq_f32(*(float32x4_t *)&vectorLeft, - *(float32x4_t *)&vectorRight); - return *(CCVector4 *)&v; -#else - CCVector4 min = vectorLeft; - if (vectorRight.v[0] < vectorLeft.v[0]) - min.v[0] = vectorRight.v[0]; - if (vectorRight.v[1] < vectorLeft.v[1]) - min.v[1] = vectorRight.v[1]; - if (vectorRight.v[2] < vectorLeft.v[2]) - min.v[2] = vectorRight.v[2]; - if (vectorRight.v[3] < vectorLeft.v[3]) - min.v[3] = vectorRight.v[3]; - return min; -#endif - } - - /* - Returns true if all of the first vector's elements are equal to all of the second vector's arguments. - */ - static inline bool CCVector4AllEqualToVector4(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON_) - float32x4_t v1 = *(float32x4_t *)&vectorLeft; - float32x4_t v2 = *(float32x4_t *)&vectorRight; - uint32x4_t vCmp = vceqq_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vget_low_u32(vCmp), vget_high_u32(vCmp)); - vAnd = vand_u32(vAnd, vext_u32(vAnd, vAnd, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vectorLeft.v[0] == vectorRight.v[0] && - vectorLeft.v[1] == vectorRight.v[1] && - vectorLeft.v[2] == vectorRight.v[2] && - vectorLeft.v[3] == vectorRight.v[3]) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the vector's elements are equal to the provided value. - */ - static inline bool CCVector4AllEqualToScalar(CCVector4 vector, float value) - { -#if defined(__ARM_NEON_) - float32x4_t v1 = *(float32x4_t *)&vector; - float32x4_t v2 = vdupq_n_f32(value); - uint32x4_t vCmp = vceqq_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vget_low_u32(vCmp), vget_high_u32(vCmp)); - vAnd = vand_u32(vAnd, vext_u32(vAnd, vAnd, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vector.v[0] == value && - vector.v[1] == value && - vector.v[2] == value && - vector.v[3] == value) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the first vector's elements are greater than all of the second vector's arguments. - */ - static inline bool CCVector4AllGreaterThanVector4(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON_) - float32x4_t v1 = *(float32x4_t *)&vectorLeft; - float32x4_t v2 = *(float32x4_t *)&vectorRight; - uint32x4_t vCmp = vcgtq_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vget_low_u32(vCmp), vget_high_u32(vCmp)); - vAnd = vand_u32(vAnd, vext_u32(vAnd, vAnd, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vectorLeft.v[0] > vectorRight.v[0] && - vectorLeft.v[1] > vectorRight.v[1] && - vectorLeft.v[2] > vectorRight.v[2] && - vectorLeft.v[3] > vectorRight.v[3]) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the vector's elements are greater than the provided value. - */ - static inline bool CCVector4AllGreaterThanScalar(CCVector4 vector, float value) - { -#if defined(__ARM_NEON_) - float32x4_t v1 = *(float32x4_t *)&vector; - float32x4_t v2 = vdupq_n_f32(value); - uint32x4_t vCmp = vcgtq_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vget_low_u32(vCmp), vget_high_u32(vCmp)); - vAnd = vand_u32(vAnd, vext_u32(vAnd, vAnd, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vector.v[0] > value && - vector.v[1] > value && - vector.v[2] > value && - vector.v[3] > value) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the first vector's elements are greater than or equal to all of the second vector's arguments. - */ - static inline bool CCVector4AllGreaterThanOrEqualToVector4(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON_) - float32x4_t v1 = *(float32x4_t *)&vectorLeft; - float32x4_t v2 = *(float32x4_t *)&vectorRight; - uint32x4_t vCmp = vcgeq_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vget_low_u32(vCmp), vget_high_u32(vCmp)); - vAnd = vand_u32(vAnd, vext_u32(vAnd, vAnd, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vectorLeft.v[0] >= vectorRight.v[0] && - vectorLeft.v[1] >= vectorRight.v[1] && - vectorLeft.v[2] >= vectorRight.v[2] && - vectorLeft.v[3] >= vectorRight.v[3]) - compare = true; - return compare; -#endif - } - - /* - Returns true if all of the vector's elements are greater than or equal to the provided value. - */ - static inline bool CCVector4AllGreaterThanOrEqualToScalar(CCVector4 vector, float value) - { -#if defined(__ARM_NEON_) - float32x4_t v1 = *(float32x4_t *)&vector; - float32x4_t v2 = vdupq_n_f32(value); - uint32x4_t vCmp = vcgeq_f32(v1, v2); - uint32x2_t vAnd = vand_u32(vget_low_u32(vCmp), vget_high_u32(vCmp)); - vAnd = vand_u32(vAnd, vext_u32(vAnd, vAnd, 1)); - vAnd = vand_u32(vAnd, vdup_n_u32(1)); - return (bool)vget_lane_u32(vAnd, 0); -#else - bool compare = false; - if (vector.v[0] >= value && - vector.v[1] >= value && - vector.v[2] >= value && - vector.v[3] >= value) - compare = true; - return compare; -#endif - } - - static inline float CCVector4Length(CCVector4 vector) - { -#if defined(__ARM_NEON__) - float32x4_t v = vmulq_f32(*(float32x4_t *)&vector, - *(float32x4_t *)&vector); - float32x2_t v2 = vpadd_f32(vget_low_f32(v), vget_high_f32(v)); - v2 = vpadd_f32(v2, v2); - return sqrt(vget_lane_f32(v2, 0)); -#else - return sqrt(vector.v[0] * vector.v[0] + - vector.v[1] * vector.v[1] + - vector.v[2] * vector.v[2] + - vector.v[3] * vector.v[3]); -#endif - } - - static inline CCVector4 CCVector4Normalize(CCVector4 vector) - { - float scale = 1.0f / CCVector4Length(vector); - CCVector4 v = CCVector4MultiplyScalar(vector, scale); - return v; - } - - static inline float CCVector4DotProduct(CCVector4 vectorLeft, CCVector4 vectorRight) - { -#if defined(__ARM_NEON__) - float32x4_t v = vmulq_f32(*(float32x4_t *)&vectorLeft, - *(float32x4_t *)&vectorRight); - float32x2_t v2 = vpadd_f32(vget_low_f32(v), vget_high_f32(v)); - v2 = vpadd_f32(v2, v2); - return vget_lane_f32(v2, 0); -#else - return vectorLeft.v[0] * vectorRight.v[0] + - vectorLeft.v[1] * vectorRight.v[1] + - vectorLeft.v[2] * vectorRight.v[2] + - vectorLeft.v[3] * vectorRight.v[3]; -#endif - } - - static inline float CCVector4Distance(CCVector4 vectorStart, CCVector4 vectorEnd) - { - return CCVector4Length(CCVector4Subtract(vectorEnd, vectorStart)); - } - - static inline CCVector4 CCVector4Lerp(CCVector4 vectorStart, CCVector4 vectorEnd, float t) - { -#if defined(__ARM_NEON__) - float32x4_t vDiff = vsubq_f32(*(float32x4_t *)&vectorEnd, - *(float32x4_t *)&vectorStart); - vDiff = vmulq_f32(vDiff, vdupq_n_f32((float32_t)t)); - float32x4_t v = vaddq_f32(*(float32x4_t *)&vectorStart, vDiff); - return *(CCVector4 *)&v; -#else - CCVector4 v = { { vectorStart.v[0] + ((vectorEnd.v[0] - vectorStart.v[0]) * t), - vectorStart.v[1] + ((vectorEnd.v[1] - vectorStart.v[1]) * t), - vectorStart.v[2] + ((vectorEnd.v[2] - vectorStart.v[2]) * t), - vectorStart.v[3] + ((vectorEnd.v[3] - vectorStart.v[3]) * t) } }; - return v; -#endif - } - - /* - Performs a 3D cross product. The last component of the resulting cross product will be zeroed out. - */ - static inline CCVector4 CCVector4CrossProduct(CCVector4 vectorLeft, CCVector4 vectorRight) - { - CCVector4 v = { { vectorLeft.v[1] * vectorRight.v[2] - vectorLeft.v[2] * vectorRight.v[1], - vectorLeft.v[2] * vectorRight.v[0] - vectorLeft.v[0] * vectorRight.v[2], - vectorLeft.v[0] * vectorRight.v[1] - vectorLeft.v[1] * vectorRight.v[0], - 0.0f } }; - return v; - } - - /* - Project the vector, vectorToProject, onto the vector, projectionVector. - */ - static inline CCVector4 CCVector4Project(CCVector4 vectorToProject, CCVector4 projectionVector) - { - float scale = CCVector4DotProduct(projectionVector, vectorToProject) / CCVector4DotProduct(projectionVector, projectionVector); - CCVector4 v = CCVector4MultiplyScalar(projectionVector, scale); - return v; - } - -#ifdef __cplusplus -} -#endif - -#define GLKVector4Make CCVector4Make -#define GLKVector4MakeWithArray CCVector4MakeWithArray -#define GLKVector4Negate CCVector4Negate -#define GLKVector4Add CCVector4Add -#define GLKVector4Subtract CCVector4Subtract -#define GLKVector4Multiply CCVector4Multiply -#define GLKVector4Divide CCVector4Divide -#define GLKVector4AddScalar CCVector4AddScalar -#define GLKVector4SubtractScalar CCVector4SubtractScalar -#define GLKVector4MultiplyScalar CCVector4MultiplyScalar -#define GLKVector4DivideScalar CCVector4DivideScalar -#define GLKVector4Maximum CCVector4Maximum -#define GLKVector4Minimum CCVector4Minimum -#define GLKVector4AllEqualToVector2 CCVector4AllEqualToVector2 -#define GLKVector4AllEqualToScalar CCVector4AllEqualToScalar -#define GLKVector4AllGreaterThanVector2 CCVector4AllGreaterThanVector2 -#define GLKVector4AllGreaterThanScalar CCVector4AllGreaterThanScalar -#define GLKVector4AllGreaterThanOrEqualToVector2 CCVector4AllGreaterThanOrEqualToVector2 -#define GLKVector4AllGreaterThanOrEqualToScalar CCVector4AllGreaterThanOrEqualToScalar -#define GLKVector4Length CCVector4Length -#define GLKVector4Normalize CCVector4Normalize -#define GLKVector4DotProduct CCVector4DotProduct -#define GLKVector4Distance GLKVect -#define GLKVector4Lerp CCVector4Lerp -#define GLKVector4Project CCVector4Project -#define GLKVector4CrossProduct CCVector4CrossProduct - -#endif /* __CC_VECTOR_4_H */ - -#endif - diff --git a/cocos2d/Platforms/Android/java/org/cocos2d/CCActivity.java b/cocos2d/Platforms/Android/java/org/cocos2d/CCActivity.java deleted file mode 100644 index 94ba002b62f..00000000000 --- a/cocos2d/Platforms/Android/java/org/cocos2d/CCActivity.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.cocos2d; - -import android.app.Activity; - -import android.os.Bundle; -import com.apportable.RuntimeService; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.os.MessageQueue; -import android.os.MessageQueue.IdleHandler; -import android.view.KeyEvent; -import android.view.SurfaceView; -import android.view.SurfaceHolder; -import android.view.WindowManager; -import java.util.TimerTask; - -import android.util.Log; - -public class CCActivity extends Activity implements SurfaceHolder.Callback, Runnable { - private Handler mHandler; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - new RuntimeService(this).loadLibraries(); - getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - run(); - } - - public native void runLoop(); - public native void run(); - - public native void onDestroy(); - public native void onResume(); - public native void onPause(); - - public native void onLowMemory(); - - public native void surfaceCreated(SurfaceHolder holder); - public native void surfaceChanged(SurfaceHolder holder, int format, int width, int height); - public native void surfaceDestroyed(SurfaceHolder holder); - - public native boolean onKeyDown(int keyCode, KeyEvent event); - public native boolean onKeyUp(int keyCode, KeyEvent event); -} - diff --git a/cocos2d/Platforms/Android/java/org/cocos2d/CCGestureListener.java b/cocos2d/Platforms/Android/java/org/cocos2d/CCGestureListener.java deleted file mode 100644 index 56220b0ed06..00000000000 --- a/cocos2d/Platforms/Android/java/org/cocos2d/CCGestureListener.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.cocos2d; - -import android.view.GestureDetector; -import android.view.MotionEvent; - -public class CCGestureListener extends GestureDetector.SimpleOnGestureListener { - - public CCGestureListener() { - super(); - } - - @Override - public native boolean onDoubleTap(MotionEvent e); - - @Override - public native boolean onDown(MotionEvent e); - - @Override - public native boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY); - - @Override - public native void onLongPress(MotionEvent e); - - @Override - public native boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY); -} \ No newline at end of file From 93de923111b100457a238f35f53b9ee90b53eaf8 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 6 Feb 2016 13:13:55 +0300 Subject: [PATCH 02/94] CCLayoutBox now takes into account a transform of a node issue #1333 --- cocos2d/CCLayoutBox.m | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) mode change 100644 => 100755 cocos2d/CCLayoutBox.m diff --git a/cocos2d/CCLayoutBox.m b/cocos2d/CCLayoutBox.m old mode 100644 new mode 100755 index d10cb856efe..ec5ebccfdb0 --- a/cocos2d/CCLayoutBox.m +++ b/cocos2d/CCLayoutBox.m @@ -44,7 +44,7 @@ - (void) layout float maxHeight = 0; for (CCNode* child in self.children) { - float height = child.contentSizeInPoints.height; + float height = [child boundingBox].size.height; if (height > maxHeight) maxHeight = height; } @@ -52,11 +52,11 @@ - (void) layout float width = 0; for (CCNode* child in self.children) { - CGSize childSize = child.contentSizeInPoints; + CGSize childSize = [child boundingBox].size; - CGPoint offset = child.anchorPointInPoints; + CGPoint offset = child.anchorPoint; CGPoint localPos = ccp(roundf(width), roundf((maxHeight-childSize.height)/2.0f)); - CGPoint position = ccpAdd(localPos, offset); + CGPoint position = ccpAdd(localPos, CGPointMake(offset.x * childSize.width, offset.y * childSize.height)); child.position = position; child.positionType = CCPositionTypePoints; @@ -78,7 +78,7 @@ - (void) layout float maxWidth = 0; for (CCNode* child in self.children) { - float width = child.contentSizeInPoints.width; + float width = [child boundingBox].size.width; if (width > maxWidth) maxWidth = width; } @@ -86,11 +86,11 @@ - (void) layout float height = 0; for (CCNode* child in self.children) { - CGSize childSize = child.contentSizeInPoints; + CGSize childSize = [child boundingBox].size; - CGPoint offset = child.anchorPointInPoints; + CGPoint offset = child.anchorPoint; CGPoint localPos = ccp(roundf((maxWidth-childSize.width)/2.0f), roundf(height)); - CGPoint position = ccpAdd(localPos, offset); + CGPoint position = ccpAdd(localPos, CGPointMake(offset.x * childSize.width, offset.y * childSize.height)); child.position = position; child.positionType = CCPositionTypePoints; From 86b74adbda1ad3c5bc50f8a2ab6001bb0f4fb3a1 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 6 Feb 2016 13:19:38 +0300 Subject: [PATCH 03/94] Compiles for Mac --- cocos2d.xcodeproj/project.pbxproj | 6 ++++-- cocos2d/CCDirector.m | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 011e028467b..578907c135e 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -23,6 +23,8 @@ /* Begin PBXBuildFile section */ 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = 0529445911098D6F00E500F3 /* CCProfiling.h */; }; 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; + 0899494A1C66000000ECC92C /* libObjectiveChipmunk-Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk-Mac.a */; }; + 0899494B1C66001900ECC92C /* libObjectAL (Mac).a in Frameworks */ = {isa = PBXBuildFile; fileRef = B15348371BE1E78C0022C4BB /* libObjectAL (Mac).a */; }; 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 2B192835163361B10049A044 /* CCClippingNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B192833163361B10049A044 /* CCClippingNode.h */; }; @@ -489,7 +491,6 @@ B75C2E7C17C5908B002B0E0D /* NSAttributedString+CCAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B75C2E7A17C5908B002B0E0D /* NSAttributedString+CCAdditions.h */; }; B75C2E7D17C5908B002B0E0D /* NSAttributedString+CCAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B75C2E7B17C5908B002B0E0D /* NSAttributedString+CCAdditions.m */; }; B77060CF18341AD50043CC67 /* CCBReader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B77060CE18341AD50043CC67 /* CCBReader_Private.h */; }; - B77582CE1A76CDB200C8589F /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = B77582CD1A76CDB200C8589F /* libz.dylib */; }; B78AE46217E7AF1C0028BE0B /* CCButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45A17E7AF1C0028BE0B /* CCButton.h */; }; B78AE46317E7AF1C0028BE0B /* CCButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45B17E7AF1C0028BE0B /* CCButton.m */; }; B78AE46417E7AF1C0028BE0B /* CCControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45C17E7AF1C0028BE0B /* CCControl.h */; }; @@ -1177,7 +1178,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B77582CE1A76CDB200C8589F /* libz.dylib in Frameworks */, + 0899494B1C66001900ECC92C /* libObjectAL (Mac).a in Frameworks */, + 0899494A1C66000000ECC92C /* libObjectiveChipmunk-Mac.a in Frameworks */, 7A59498319E38C9800F65F90 /* libSSZipArchiveMac.a in Frameworks */, 7A4037C819E3712A007B6E8F /* OpenGL.framework in Frameworks */, 7A4037C619E37126007B6E8F /* QuartzCore.framework in Frameworks */, diff --git a/cocos2d/CCDirector.m b/cocos2d/CCDirector.m index bb2bf76bc78..698225313f1 100644 --- a/cocos2d/CCDirector.m +++ b/cocos2d/CCDirector.m @@ -100,7 +100,11 @@ @implementation CCDirector { CCFrameBufferObject *_framebuffer; } +#if !__CC_PLATFORM_MAC @dynamic view; +#else +@synthesize view = _view; +#endif @synthesize animationInterval = _animationInterval; @synthesize runningScene = _runningScene; From 03cec7ec3a0179c8355f8d99895b157fadb179de Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 6 Feb 2016 20:27:08 +0300 Subject: [PATCH 04/94] Metal rendering works now --- cocos2d/CCNoARC.m | 2 +- cocos2d/CCShader.m | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cocos2d/CCNoARC.m b/cocos2d/CCNoARC.m index 6981955b029..bb7b21967d8 100644 --- a/cocos2d/CCNoARC.m +++ b/cocos2d/CCNoARC.m @@ -389,7 +389,7 @@ @implementation CCRenderStateMetal { pipelineStateDescriptor.colorAttachments[0] = colorDescriptor; NSError *err = nil; - self->_renderPipelineState = [[context.device newRenderPipelineStateWithDescriptor:pipelineStateDescriptor error:&err] retain]; + self->_renderPipelineState = [context.device newRenderPipelineStateWithDescriptor:pipelineStateDescriptor error:&err]; if(err) CCLOG(@"Error creating metal render pipeline state. %@", err); NSCAssert(self->_renderPipelineState, @"Could not create render pipeline state."); diff --git a/cocos2d/CCShader.m b/cocos2d/CCShader.m index 5aaf9bf2349..320cd7f792b 100644 --- a/cocos2d/CCShader.m +++ b/cocos2d/CCShader.m @@ -550,6 +550,9 @@ -(instancetype)initWithGLProgram:(GLuint)program uniformSetters:(NSDictionary *) MTLRenderPipelineDescriptor *descriptor = [MTLRenderPipelineDescriptor new]; descriptor.vertexFunction = vertexFunction; descriptor.fragmentFunction = fragmentFunction; + MTLRenderPipelineColorAttachmentDescriptor *colorDescriptor = [MTLRenderPipelineColorAttachmentDescriptor new]; + colorDescriptor.pixelFormat = MTLPixelFormatBGRA8Unorm; + descriptor.colorAttachments[0] = colorDescriptor; NSError *error = nil; MTLRenderPipelineReflection *reflection = nil; From 2e6cbc612a2072f849b70f1fcd5a4c5fc190ee6b Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 6 Feb 2016 20:43:02 +0300 Subject: [PATCH 05/94] TileMaps now server as an extension --- .../TileMaps}/CCTMXXMLParser.h | 0 .../TileMaps}/CCTMXXMLParser.m | 0 cocos2d-ext/TileMaps/CCTileMaps.h | 12 +++ .../TileMaps}/CCTiledMap.h | 0 .../TileMaps}/CCTiledMap.m | 0 .../TileMaps}/CCTiledMapLayer.h | 0 .../TileMaps}/CCTiledMapLayer.m | 0 .../TileMaps}/CCTiledMapLayer_Private.h | 0 .../TileMaps}/CCTiledMapObjectGroup.h | 0 .../TileMaps}/CCTiledMapObjectGroup.m | 0 cocos2d-tests.xcodeproj/project.pbxproj | 80 ++++++++++++++----- cocos2d-ui-tests/tests/ParallaxTest.m | 1 + cocos2d-ui-tests/tests/TilemapTest.m | 1 + cocos2d.xcodeproj/project.pbxproj | 74 +---------------- cocos2d/cocos2d.h | 6 +- 15 files changed, 79 insertions(+), 95 deletions(-) rename {cocos2d => cocos2d-ext/TileMaps}/CCTMXXMLParser.h (100%) rename {cocos2d => cocos2d-ext/TileMaps}/CCTMXXMLParser.m (100%) create mode 100644 cocos2d-ext/TileMaps/CCTileMaps.h rename {cocos2d => cocos2d-ext/TileMaps}/CCTiledMap.h (100%) rename {cocos2d => cocos2d-ext/TileMaps}/CCTiledMap.m (100%) rename {cocos2d => cocos2d-ext/TileMaps}/CCTiledMapLayer.h (100%) rename {cocos2d => cocos2d-ext/TileMaps}/CCTiledMapLayer.m (100%) rename {cocos2d => cocos2d-ext/TileMaps}/CCTiledMapLayer_Private.h (100%) rename {cocos2d => cocos2d-ext/TileMaps}/CCTiledMapObjectGroup.h (100%) rename {cocos2d => cocos2d-ext/TileMaps}/CCTiledMapObjectGroup.m (100%) diff --git a/cocos2d/CCTMXXMLParser.h b/cocos2d-ext/TileMaps/CCTMXXMLParser.h similarity index 100% rename from cocos2d/CCTMXXMLParser.h rename to cocos2d-ext/TileMaps/CCTMXXMLParser.h diff --git a/cocos2d/CCTMXXMLParser.m b/cocos2d-ext/TileMaps/CCTMXXMLParser.m similarity index 100% rename from cocos2d/CCTMXXMLParser.m rename to cocos2d-ext/TileMaps/CCTMXXMLParser.m diff --git a/cocos2d-ext/TileMaps/CCTileMaps.h b/cocos2d-ext/TileMaps/CCTileMaps.h new file mode 100644 index 00000000000..10c24eab2e0 --- /dev/null +++ b/cocos2d-ext/TileMaps/CCTileMaps.h @@ -0,0 +1,12 @@ +// +// CCTileMaps.h +// cocos2d-tests +// +// Created by Andrey Volodin on 06.02.16. +// Copyright © 2016 Cocos2d. All rights reserved. +// + +#import "CCTMXXMLParser.h" +#import "CCTiledMap.h" +#import "CCTiledMapLayer.h" +#import "CCTiledMapObjectGroup.h" \ No newline at end of file diff --git a/cocos2d/CCTiledMap.h b/cocos2d-ext/TileMaps/CCTiledMap.h similarity index 100% rename from cocos2d/CCTiledMap.h rename to cocos2d-ext/TileMaps/CCTiledMap.h diff --git a/cocos2d/CCTiledMap.m b/cocos2d-ext/TileMaps/CCTiledMap.m similarity index 100% rename from cocos2d/CCTiledMap.m rename to cocos2d-ext/TileMaps/CCTiledMap.m diff --git a/cocos2d/CCTiledMapLayer.h b/cocos2d-ext/TileMaps/CCTiledMapLayer.h similarity index 100% rename from cocos2d/CCTiledMapLayer.h rename to cocos2d-ext/TileMaps/CCTiledMapLayer.h diff --git a/cocos2d/CCTiledMapLayer.m b/cocos2d-ext/TileMaps/CCTiledMapLayer.m similarity index 100% rename from cocos2d/CCTiledMapLayer.m rename to cocos2d-ext/TileMaps/CCTiledMapLayer.m diff --git a/cocos2d/CCTiledMapLayer_Private.h b/cocos2d-ext/TileMaps/CCTiledMapLayer_Private.h similarity index 100% rename from cocos2d/CCTiledMapLayer_Private.h rename to cocos2d-ext/TileMaps/CCTiledMapLayer_Private.h diff --git a/cocos2d/CCTiledMapObjectGroup.h b/cocos2d-ext/TileMaps/CCTiledMapObjectGroup.h similarity index 100% rename from cocos2d/CCTiledMapObjectGroup.h rename to cocos2d-ext/TileMaps/CCTiledMapObjectGroup.h diff --git a/cocos2d/CCTiledMapObjectGroup.m b/cocos2d-ext/TileMaps/CCTiledMapObjectGroup.m similarity index 100% rename from cocos2d/CCTiledMapObjectGroup.m rename to cocos2d-ext/TileMaps/CCTiledMapObjectGroup.m diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index 00e215bb318..b8a9e0ec3a5 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -7,6 +7,18 @@ objects = { /* Begin PBXBuildFile section */ + 084782091C66669300C3817B /* CCTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782011C66669300C3817B /* CCTiledMap.m */; }; + 0847820A1C66669300C3817B /* CCTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782011C66669300C3817B /* CCTiledMap.m */; }; + 0847820B1C66669300C3817B /* CCTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782011C66669300C3817B /* CCTiledMap.m */; }; + 0847820C1C66669300C3817B /* CCTiledMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782041C66669300C3817B /* CCTiledMapLayer.m */; }; + 0847820D1C66669300C3817B /* CCTiledMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782041C66669300C3817B /* CCTiledMapLayer.m */; }; + 0847820E1C66669300C3817B /* CCTiledMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782041C66669300C3817B /* CCTiledMapLayer.m */; }; + 0847820F1C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782061C66669300C3817B /* CCTiledMapObjectGroup.m */; }; + 084782101C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782061C66669300C3817B /* CCTiledMapObjectGroup.m */; }; + 084782111C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782061C66669300C3817B /* CCTiledMapObjectGroup.m */; }; + 084782121C66669300C3817B /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; + 084782131C66669300C3817B /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; + 084782141C66669300C3817B /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; 0E28FE1A197FCE4500F78989 /* CCCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E28FE19197FCE4500F78989 /* CCCacheTest.m */; }; 75556A04185636F100ED1B0F /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75556A03185636F100ED1B0F /* XCTest.framework */; }; 75556A05185636F100ED1B0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605717E7D278007067F0 /* Foundation.framework */; }; @@ -284,13 +296,6 @@ remoteGlobalIDString = 5018F24D0DFDEAC400C013A5; remoteInfo = "cocos2d-ios"; }; - D3763BBA19E72F85006C050D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D3763BB019E72F85006C050D /* cocos2d.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D2FEB74F194F6C9E00FC0574; - remoteInfo = cocos2dAndroid; - }; D3763BBE19E72F85006C050D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D3763BB019E72F85006C050D /* cocos2d.xcodeproj */; @@ -315,6 +320,16 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 084782001C66669300C3817B /* CCTiledMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTiledMap.h; path = "cocos2d-ext/TileMaps/CCTiledMap.h"; sourceTree = SOURCE_ROOT; }; + 084782011C66669300C3817B /* CCTiledMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTiledMap.m; path = "cocos2d-ext/TileMaps/CCTiledMap.m"; sourceTree = SOURCE_ROOT; }; + 084782021C66669300C3817B /* CCTiledMapLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTiledMapLayer_Private.h; path = "cocos2d-ext/TileMaps/CCTiledMapLayer_Private.h"; sourceTree = SOURCE_ROOT; }; + 084782031C66669300C3817B /* CCTiledMapLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTiledMapLayer.h; path = "cocos2d-ext/TileMaps/CCTiledMapLayer.h"; sourceTree = SOURCE_ROOT; }; + 084782041C66669300C3817B /* CCTiledMapLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTiledMapLayer.m; path = "cocos2d-ext/TileMaps/CCTiledMapLayer.m"; sourceTree = SOURCE_ROOT; }; + 084782051C66669300C3817B /* CCTiledMapObjectGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTiledMapObjectGroup.h; path = "cocos2d-ext/TileMaps/CCTiledMapObjectGroup.h"; sourceTree = SOURCE_ROOT; }; + 084782061C66669300C3817B /* CCTiledMapObjectGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTiledMapObjectGroup.m; path = "cocos2d-ext/TileMaps/CCTiledMapObjectGroup.m"; sourceTree = SOURCE_ROOT; }; + 084782071C66669300C3817B /* CCTMXXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTMXXMLParser.h; path = "cocos2d-ext/TileMaps/CCTMXXMLParser.h"; sourceTree = SOURCE_ROOT; }; + 084782081C66669300C3817B /* CCTMXXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTMXXMLParser.m; path = "cocos2d-ext/TileMaps/CCTMXXMLParser.m"; sourceTree = SOURCE_ROOT; }; + 084782171C6667B000C3817B /* CCTileMaps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTileMaps.h; path = "cocos2d-ext/TileMaps/CCTileMaps.h"; sourceTree = SOURCE_ROOT; }; 0E28FE19197FCE4500F78989 /* CCCacheTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCCacheTest.m; path = "cocos2d-ui-tests/tests/CCCacheTest.m"; sourceTree = SOURCE_ROOT; }; 755569E31856361100ED1B0F /* CCFileUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtilTests.m; sourceTree = ""; }; 755569E41856361100ED1B0F /* CCNodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNodeTests.m; sourceTree = ""; }; @@ -535,6 +550,31 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 084781FF1C66666B00C3817B /* cocos2d-ext */ = { + isa = PBXGroup; + children = ( + 084782151C66669A00C3817B /* TileMaps */, + ); + name = "cocos2d-ext"; + sourceTree = ""; + }; + 084782151C66669A00C3817B /* TileMaps */ = { + isa = PBXGroup; + children = ( + 084782171C6667B000C3817B /* CCTileMaps.h */, + 084782001C66669300C3817B /* CCTiledMap.h */, + 084782011C66669300C3817B /* CCTiledMap.m */, + 084782021C66669300C3817B /* CCTiledMapLayer_Private.h */, + 084782031C66669300C3817B /* CCTiledMapLayer.h */, + 084782041C66669300C3817B /* CCTiledMapLayer.m */, + 084782051C66669300C3817B /* CCTiledMapObjectGroup.h */, + 084782061C66669300C3817B /* CCTiledMapObjectGroup.m */, + 084782071C66669300C3817B /* CCTMXXMLParser.h */, + 084782081C66669300C3817B /* CCTMXXMLParser.m */, + ); + name = TileMaps; + sourceTree = ""; + }; 755569EC1856361100ED1B0F /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -671,6 +711,7 @@ B7E2605F17E7D278007067F0 /* cocos2d-tests */ = { isa = PBXGroup; children = ( + 084781FF1C66666B00C3817B /* cocos2d-ext */, B7E2621E17E7D398007067F0 /* Testbed */, B7E2621D17E7D38D007067F0 /* AppDelegate */, B71B087F17EA5B500082EBC0 /* Tests */, @@ -736,7 +777,6 @@ isa = PBXGroup; children = ( D3763BB919E72F85006C050D /* libcocos2d.a */, - D3763BBB19E72F85006C050D /* libcocos2dAndroid.a */, D3763BBF19E72F85006C050D /* libcocos2d-mac.a */, 0E1D2C9C1B53AA6A00EB2D29 /* cocos2dMacFramework.framework */, ); @@ -944,7 +984,6 @@ TestTargetID = B7E2604717E7D278007067F0; }; B7E2604717E7D278007067F0 = { - DevelopmentTeam = 96LKF67VJA; SystemCapabilities = { com.apple.GameCenter = { enabled = 0; @@ -993,13 +1032,6 @@ remoteRef = D3763BB819E72F85006C050D /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - D3763BBB19E72F85006C050D /* libcocos2dAndroid.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libcocos2dAndroid.a; - remoteRef = D3763BBA19E72F85006C050D /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; D3763BBF19E72F85006C050D /* libcocos2d-mac.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1209,6 +1241,7 @@ buildActionMask = 2147483647; files = ( 92324E2A18EB635500D78D3F /* CCReaderTest.m in Sources */, + 0847820D1C66669300C3817B /* CCTiledMapLayer.m in Sources */, D32FDE8619B645CA0078CC16 /* CCTextureTests.m in Sources */, 9D96557319D6113500428E79 /* CCEffectTests.m in Sources */, 75556A161856370A00ED1B0F /* CCFileUtilTests.m in Sources */, @@ -1222,6 +1255,9 @@ E525F5DB1E3086DDE0296CEC /* CCPackageDownloadTests.m in Sources */, E525FA44681404CC22A3A8D9 /* CCPackageUnzipperTests.m in Sources */, E525F7C977339D17470FC149 /* CCPackageInstallerTests.m in Sources */, + 084782101C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, + 084782131C66669300C3817B /* CCTMXXMLParser.m in Sources */, + 0847820A1C66669300C3817B /* CCTiledMap.m in Sources */, E525FCAF2CC6D200B8065E2E /* CCPackageCocos2dEnablerTests.m in Sources */, E525FF2E8351476CDD7DEAC4 /* CCPackageManagerTests.m in Sources */, E525F033EECC363CA8EAF2A6 /* CCPackageDownloadManagerTests.m in Sources */, @@ -1237,6 +1273,7 @@ files = ( B71B087C17EA5B490082EBC0 /* TestBase.m in Sources */, D3870C6018B440150033D885 /* SpritePerformanceTest.m in Sources */, + 0847820C1C66669300C3817B /* CCTiledMapLayer.m in Sources */, B71B088217EA5B6A0082EBC0 /* CCScrollViewTest.m in Sources */, B7EE697918186D5200B983FE /* CCTextFieldTest.m in Sources */, B7E2620017E7D321007067F0 /* AppDelegate.m in Sources */, @@ -1246,6 +1283,9 @@ B7E2621C17E7D370007067F0 /* main.m in Sources */, B7EE69811818760700B983FE /* CCSprite9SliceTest.m in Sources */, B7EE6A28181B075E00B983FE /* CCSliderTest.m in Sources */, + 0847820F1C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, + 084782121C66669300C3817B /* CCTMXXMLParser.m in Sources */, + 084782091C66669300C3817B /* CCTiledMap.m in Sources */, A6167B93189A7D4D0044D391 /* VertexZTest.m in Sources */, B772F69F1811C8D9005C069B /* CCResponderTest.m in Sources */, D2B4894C1917EE6700C3443A /* CCEffectsTest.m in Sources */, @@ -1273,6 +1313,7 @@ files = ( D3763D3819E734C5006C050D /* MainMenu.m in Sources */, D3763D3919E734C5006C050D /* TestBase.m in Sources */, + 0847820E1C66669300C3817B /* CCTiledMapLayer.m in Sources */, D3763D3A19E734C5006C050D /* CCCacheTest.m in Sources */, D3763D3B19E734C5006C050D /* CCEffectsTest.m in Sources */, D3763D3C19E734C5006C050D /* CCRendererTest.m in Sources */, @@ -1282,6 +1323,9 @@ D3763D3F19E734C5006C050D /* CCSchedulerTest.m in Sources */, D3763D4019E734C5006C050D /* CCTableViewTest.m in Sources */, D3763D4119E734C5006C050D /* CCTransitionTest.m in Sources */, + 084782111C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, + 084782141C66669300C3817B /* CCTMXXMLParser.m in Sources */, + 0847820B1C66669300C3817B /* CCTiledMap.m in Sources */, D3763D4219E734C5006C050D /* CCResponderTest.m in Sources */, D3763D4319E734C5006C050D /* CCSprite9SliceTest.m in Sources */, D3763D4419E734C5006C050D /* CCTextFieldTest.m in Sources */, @@ -1567,7 +1611,7 @@ "-weak_framework", Metal, ); - PRODUCT_BUNDLE_IDENTIFIER = org2.cocos2d.Tests; + PRODUCT_BUNDLE_IDENTIFIER = org.cocos2d.Tests; PRODUCT_NAME = "cocos2d-tests-ios"; PROVISIONING_PROFILE = ""; WRAPPER_EXTENSION = app; @@ -1600,7 +1644,7 @@ "-weak_framework", Metal, ); - PRODUCT_BUNDLE_IDENTIFIER = org2.cocos2d.Tests; + PRODUCT_BUNDLE_IDENTIFIER = org.cocos2d.Tests; PRODUCT_NAME = "cocos2d-tests-ios"; PROVISIONING_PROFILE = ""; VALIDATE_PRODUCT = YES; diff --git a/cocos2d-ui-tests/tests/ParallaxTest.m b/cocos2d-ui-tests/tests/ParallaxTest.m index b74b8037cec..bb07262181a 100644 --- a/cocos2d-ui-tests/tests/ParallaxTest.m +++ b/cocos2d-ui-tests/tests/ParallaxTest.m @@ -7,6 +7,7 @@ // #import "cocos2d.h" +#import "CCTileMaps.h" // local import #import "TestBase.h" diff --git a/cocos2d-ui-tests/tests/TilemapTest.m b/cocos2d-ui-tests/tests/TilemapTest.m index 946ef9fa7c3..9209e1d04f3 100644 --- a/cocos2d-ui-tests/tests/TilemapTest.m +++ b/cocos2d-ui-tests/tests/TilemapTest.m @@ -9,6 +9,7 @@ #import "cocos2d.h" #import "TestBase.h" #import "CCTiledMapLayer_Private.h" +#import "CCTileMaps.h" @interface TilemapTest : TestBase @end @implementation TilemapTest { diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 578907c135e..5979f872c89 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -75,16 +75,12 @@ 508EAC311193F8B0007F058D /* utlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 508EAC2F1193F8B0007F058D /* utlist.h */; }; 509A79970F6188420032F449 /* CCSprite.h in Headers */ = {isa = PBXBuildFile; fileRef = 509A79950F6188420032F449 /* CCSprite.h */; }; 509A79980F6188420032F449 /* CCSprite.m in Sources */ = {isa = PBXBuildFile; fileRef = 509A79960F6188420032F449 /* CCSprite.m */; }; - 509D0818101E4FCE007E1749 /* CCTiledMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 509D0816101E4FCE007E1749 /* CCTiledMap.h */; }; 50A07B7B0E4CBCD300AAF0BB /* cocos2d.m in Sources */ = {isa = PBXBuildFile; fileRef = 50A07B7A0E4CBCD300AAF0BB /* cocos2d.m */; }; 50BAF3990F33CCD8003F654C /* ccMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BAF3970F33CCD8003F654C /* ccMacros.h */; }; 50C508C60F7C194400799124 /* CCFileUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C508C40F7C194400799124 /* CCFileUtils.h */; }; 50C508C70F7C194400799124 /* CCFileUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 50C508C50F7C194400799124 /* CCFileUtils.m */; }; 50CB3B0E100AC43A00B7A750 /* CCActionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */; }; 50CB3B0F100AC43A00B7A750 /* CCActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */; }; - 50CFAC391023660000175934 /* CCTMXXMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CFAC371023660000175934 /* CCTMXXMLParser.h */; }; - 50D2AC9510E90DFA0068ECEB /* CCTiledMapLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D2AC9110E90DFA0068ECEB /* CCTiledMapLayer.h */; }; - 50D2AC9710E90DFA0068ECEB /* CCTiledMapObjectGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D2AC9310E90DFA0068ECEB /* CCTiledMapObjectGroup.h */; }; 50D413260F9A3FE00040C3C8 /* CCParticleSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D413240F9A3FE00040C3C8 /* CCParticleSystem.h */; }; 50D413270F9A3FE00040C3C8 /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D413250F9A3FE00040C3C8 /* CCParticleSystem.m */; }; 50D898F31192CB7500458C29 /* uthash.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D898EF1192CB7500458C29 /* uthash.h */; }; @@ -163,15 +159,6 @@ 7A59469E19E372F100F65F90 /* CCParticleSystem_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D15218205EFB00E7BFCD /* CCParticleSystem_Private.h */; }; 7A59469F19E372F100F65F90 /* CCParallaxNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C6C6A0FB87970002BF3C2 /* CCParallaxNode.h */; }; 7A5946A019E372F100F65F90 /* CCParallaxNode.m in Headers */ = {isa = PBXBuildFile; fileRef = 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */; }; - 7A5946A119E372F100F65F90 /* CCTiledMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 509D0816101E4FCE007E1749 /* CCTiledMap.h */; }; - 7A5946A219E372F100F65F90 /* CCTiledMap.m in Headers */ = {isa = PBXBuildFile; fileRef = 509D0817101E4FCE007E1749 /* CCTiledMap.m */; }; - 7A5946A319E372F100F65F90 /* CCTiledMapLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D2AC9110E90DFA0068ECEB /* CCTiledMapLayer.h */; }; - 7A5946A419E372F100F65F90 /* CCTiledMapLayer.m in Headers */ = {isa = PBXBuildFile; fileRef = 50D2AC9210E90DFA0068ECEB /* CCTiledMapLayer.m */; }; - 7A5946A519E372F200F65F90 /* CCTiledMapObjectGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D2AC9310E90DFA0068ECEB /* CCTiledMapObjectGroup.h */; }; - 7A5946A619E372F200F65F90 /* CCTiledMapObjectGroup.m in Headers */ = {isa = PBXBuildFile; fileRef = 50D2AC9410E90DFA0068ECEB /* CCTiledMapObjectGroup.m */; }; - 7A5946A719E372F200F65F90 /* CCTMXXMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CFAC371023660000175934 /* CCTMXXMLParser.h */; }; - 7A5946A819E372F200F65F90 /* CCTMXXMLParser.m in Headers */ = {isa = PBXBuildFile; fileRef = 50CFAC381023660000175934 /* CCTMXXMLParser.m */; }; - 7A5946A919E372F200F65F90 /* CCTiledMapLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E849182064BF00DAE1D7 /* CCTiledMapLayer_Private.h */; }; 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2600DFDEAFF00C013A5 /* CCScene.h */; }; 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; 7A5946AE19E372F200F65F90 /* CCPhysicsBody.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803E418032F250072D8FE /* CCPhysicsBody.h */; }; @@ -323,10 +310,6 @@ 7A5947E519E375A000F65F90 /* CCParticleBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C20AC7144FDAF700D84B47 /* CCParticleBatchNode.m */; }; 7A5947E719E375A000F65F90 /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 504055AF0E3230BD00213FEF /* CCParticleExamples.m */; }; 7A5947EB19E375A100F65F90 /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */; }; - 7A5947ED19E375A100F65F90 /* CCTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 509D0817101E4FCE007E1749 /* CCTiledMap.m */; }; - 7A5947EF19E375A100F65F90 /* CCTiledMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D2AC9210E90DFA0068ECEB /* CCTiledMapLayer.m */; }; - 7A5947F119E375A100F65F90 /* CCTiledMapObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D2AC9410E90DFA0068ECEB /* CCTiledMapObjectGroup.m */; }; - 7A5947F319E375A200F65F90 /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CFAC381023660000175934 /* CCTMXXMLParser.m */; }; 7A5947F619E375A200F65F90 /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2610DFDEAFF00C013A5 /* CCScene.m */; }; 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; 7A5947FA19E375A200F65F90 /* CCPhysicsBody.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E218032ECE0072D8FE /* CCPhysicsBody.m */; }; @@ -501,7 +484,6 @@ B78AE46917E7AF1C0028BE0B /* CCScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46117E7AF1C0028BE0B /* CCScrollView.m */; }; B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */; }; B78AE46D17E7AF6C0028BE0B /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */; }; - B791E84A182064BF00DAE1D7 /* CCTiledMapLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E849182064BF00DAE1D7 /* CCTiledMapLayer_Private.h */; }; B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; B791E85E182074C500DAE1D7 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; B798D13D181F2E4500E7BFCD /* CCNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D13C181F2E4500E7BFCD /* CCNode_Private.h */; }; @@ -609,10 +591,6 @@ D34CAD6C19C3AA10009BED7A /* CCRendererBasicTypes_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD6A19C3AA10009BED7A /* CCRendererBasicTypes_Private.h */; }; D369415F19CFDF170092A0BD /* CCRendererBasicTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6819C3A7B3009BED7A /* CCRendererBasicTypes.m */; }; D36D31B718BD3CAA00E45F08 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; - D37D197718B6665700B23FDE /* CCTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 509D0817101E4FCE007E1749 /* CCTiledMap.m */; }; - D37D197818B6665700B23FDE /* CCTiledMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D2AC9210E90DFA0068ECEB /* CCTiledMapLayer.m */; }; - D37D197918B6665700B23FDE /* CCTiledMapObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D2AC9410E90DFA0068ECEB /* CCTiledMapObjectGroup.m */; }; - D37D197A18B6665700B23FDE /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CFAC381023660000175934 /* CCTMXXMLParser.m */; }; D37D197B18B6666E00B23FDE /* CCSpriteBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C3655A11F0AE9B001C08F9 /* CCSpriteBatchNode.m */; }; D380581A1889AD6000822437 /* CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D38058181889AD6000822437 /* CCRenderer.h */; }; D380581B1889AD6000822437 /* CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D38058191889AD6000822437 /* CCRenderer.m */; }; @@ -846,8 +824,6 @@ 508EAC2F1193F8B0007F058D /* utlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utlist.h; sourceTree = ""; }; 509A79950F6188420032F449 /* CCSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CCSprite.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 509A79960F6188420032F449 /* CCSprite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CCSprite.m; sourceTree = ""; }; - 509D0816101E4FCE007E1749 /* CCTiledMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTiledMap.h; sourceTree = ""; }; - 509D0817101E4FCE007E1749 /* CCTiledMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTiledMap.m; sourceTree = ""; }; 50A07B7A0E4CBCD300AAF0BB /* cocos2d.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = cocos2d.m; sourceTree = ""; }; 50AC0A500EC34DD400EB5EDC /* DONORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DONORS; sourceTree = ""; }; 50B2C9BF0E109A5900AE9530 /* CHANGELOG */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGELOG; sourceTree = ""; }; @@ -856,12 +832,6 @@ 50C508C50F7C194400799124 /* CCFileUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtils.m; sourceTree = ""; }; 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionManager.h; sourceTree = ""; }; 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionManager.m; sourceTree = ""; }; - 50CFAC371023660000175934 /* CCTMXXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTMXXMLParser.h; sourceTree = ""; }; - 50CFAC381023660000175934 /* CCTMXXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTMXXMLParser.m; sourceTree = ""; }; - 50D2AC9110E90DFA0068ECEB /* CCTiledMapLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTiledMapLayer.h; sourceTree = ""; }; - 50D2AC9210E90DFA0068ECEB /* CCTiledMapLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTiledMapLayer.m; sourceTree = ""; }; - 50D2AC9310E90DFA0068ECEB /* CCTiledMapObjectGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTiledMapObjectGroup.h; sourceTree = ""; }; - 50D2AC9410E90DFA0068ECEB /* CCTiledMapObjectGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTiledMapObjectGroup.m; sourceTree = ""; }; 50D413240F9A3FE00040C3C8 /* CCParticleSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystem.h; sourceTree = ""; }; 50D413250F9A3FE00040C3C8 /* CCParticleSystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleSystem.m; sourceTree = ""; }; 50D898EF1192CB7500458C29 /* uthash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uthash.h; sourceTree = ""; }; @@ -987,7 +957,6 @@ B78AE46117E7AF1C0028BE0B /* CCScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCScrollView.m; path = "cocos2d-ui/CCScrollView.m"; sourceTree = ""; }; B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITouch+CC.h"; sourceTree = ""; }; B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITouch+CC.m"; sourceTree = ""; }; - B791E849182064BF00DAE1D7 /* CCTiledMapLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTiledMapLayer_Private.h; sourceTree = ""; }; B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProgressNode_Private.h; sourceTree = ""; }; B791E85B182074C500DAE1D7 /* CCProgressNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProgressNode.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; B791E85C182074C500DAE1D7 /* CCProgressNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCProgressNode.m; sourceTree = ""; }; @@ -1305,7 +1274,6 @@ 506414C40F9C6792007A7B24 /* Sprite & Animation Nodes */, A6A0734717C78E55004343C8 /* Touch & Mouse Handling */, 50A24E890F378119007CAEB0 /* Particle Nodes */, - 50CFAC3B1023661B00175934 /* TileMap and Parallax Nodes */, 506414C30F9C6769007A7B24 /* Layers, Scenes, Transitions Nodes */, A0D7D9D415E2E737000CA0C4 /* Physics */, 50EA8DA011354A6000746D2A /* Misc Nodes */, @@ -1477,24 +1445,6 @@ name = "Base Nodes"; sourceTree = ""; }; - 50CFAC3B1023661B00175934 /* TileMap and Parallax Nodes */ = { - isa = PBXGroup; - children = ( - 502C6C6A0FB87970002BF3C2 /* CCParallaxNode.h */, - 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */, - 509D0816101E4FCE007E1749 /* CCTiledMap.h */, - 509D0817101E4FCE007E1749 /* CCTiledMap.m */, - 50D2AC9110E90DFA0068ECEB /* CCTiledMapLayer.h */, - 50D2AC9210E90DFA0068ECEB /* CCTiledMapLayer.m */, - 50D2AC9310E90DFA0068ECEB /* CCTiledMapObjectGroup.h */, - 50D2AC9410E90DFA0068ECEB /* CCTiledMapObjectGroup.m */, - 50CFAC371023660000175934 /* CCTMXXMLParser.h */, - 50CFAC381023660000175934 /* CCTMXXMLParser.m */, - B791E849182064BF00DAE1D7 /* CCTiledMapLayer_Private.h */, - ); - name = "TileMap and Parallax Nodes"; - sourceTree = ""; - }; 50D898FA1192CB8300458C29 /* Data Structures */ = { isa = PBXGroup; children = ( @@ -1521,6 +1471,8 @@ 50EA8DA011354A6000746D2A /* Misc Nodes */ = { isa = PBXGroup; children = ( + 502C6C6A0FB87970002BF3C2 /* CCParallaxNode.h */, + 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */, D272031E18FC89A000B100FF /* CCEffectNode.h */, D272031F18FC89A000B100FF /* CCEffectNode.m */, 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */, @@ -2020,13 +1972,11 @@ B7D273131822F4AA0054849B /* CCBReader.h in Headers */, 9DF37621191C594A00C6D27A /* CCEffectPixellate.h in Headers */, 50CB3B0E100AC43A00B7A750 /* CCActionManager.h in Headers */, - 509D0818101E4FCE007E1749 /* CCTiledMap.h in Headers */, 50F29F6F102053370046CA73 /* base64.h in Headers */, D31C795219994197007921E1 /* CCMetalSupport_Private.h in Headers */, D34CAD6719C3A7A5009BED7A /* CCRendererBasicTypes.h in Headers */, 50F2A105102094550046CA73 /* ZipUtils.h in Headers */, D27451B719AE5517006DA0A1 /* CCEffectDistanceField.h in Headers */, - 50CFAC391023660000175934 /* CCTMXXMLParser.h in Headers */, 50316AA610291280003ACFE7 /* CCRenderTexture.h in Headers */, B7D273171822F4AA0054849B /* CCBSequenceProperty.h in Headers */, 50316AD41029A126003ACFE7 /* CCMotionStreak.h in Headers */, @@ -2041,9 +1991,7 @@ 502C8BE010A661E200D137BA /* CCSpriteFrameCache.h in Headers */, B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */, 50E1357510ADEB1B00C9E7FA /* CCTexture.h in Headers */, - 50D2AC9510E90DFA0068ECEB /* CCTiledMapLayer.h in Headers */, 83E1A87919C8ACC1000A3BCA /* CCPackageDownloadManager.h in Headers */, - 50D2AC9710E90DFA0068ECEB /* CCTiledMapObjectGroup.h in Headers */, D268FE11198078FF00ECBCD0 /* CCEffectHue.h in Headers */, B7D273151822F4AA0054849B /* CCBSequence.h in Headers */, 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */, @@ -2088,7 +2036,6 @@ B7EE69E01819E75700B983FE /* CCLayout.h in Headers */, A0C87D1A14F9A3A100C0E8B2 /* NSThread+performBlock.h in Headers */, D3903B14199528B6003AA81A /* CCMetalView.h in Headers */, - B791E84A182064BF00DAE1D7 /* CCTiledMapLayer_Private.h in Headers */, 83E1A86F19C8ACAF000A3BCA /* CCPackageUnzipperDelegate.h in Headers */, 83E1A86919C8ACA0000A3BCA /* CCPackageTypes.h in Headers */, D27451C619B111A9006DA0A1 /* CCEffectDFOutline.h in Headers */, @@ -2185,15 +2132,6 @@ 7A59469E19E372F100F65F90 /* CCParticleSystem_Private.h in Headers */, 7A59469F19E372F100F65F90 /* CCParallaxNode.h in Headers */, 7A5946A019E372F100F65F90 /* CCParallaxNode.m in Headers */, - 7A5946A119E372F100F65F90 /* CCTiledMap.h in Headers */, - 7A5946A219E372F100F65F90 /* CCTiledMap.m in Headers */, - 7A5946A319E372F100F65F90 /* CCTiledMapLayer.h in Headers */, - 7A5946A419E372F100F65F90 /* CCTiledMapLayer.m in Headers */, - 7A5946A519E372F200F65F90 /* CCTiledMapObjectGroup.h in Headers */, - 7A5946A619E372F200F65F90 /* CCTiledMapObjectGroup.m in Headers */, - 7A5946A719E372F200F65F90 /* CCTMXXMLParser.h in Headers */, - 7A5946A819E372F200F65F90 /* CCTMXXMLParser.m in Headers */, - 7A5946A919E372F200F65F90 /* CCTiledMapLayer_Private.h in Headers */, 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */, 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */, 7A5946AE19E372F200F65F90 /* CCPhysicsBody.h in Headers */, @@ -2600,14 +2538,11 @@ 571CD02919649E03003D460C /* CCPlatformTextField.m in Sources */, D3A2E7D3181E12750033614C /* CCPhysicsShape.m in Sources */, B7EE6A1F181AE34600B983FE /* CCSlider.m in Sources */, - D37D197A18B6665700B23FDE /* CCTMXXMLParser.m in Sources */, 509A79980F6188420032F449 /* CCSprite.m in Sources */, - D37D197718B6665700B23FDE /* CCTiledMap.m in Sources */, D27451C819B111A9006DA0A1 /* CCEffectDFOutline.m in Sources */, 50C508C70F7C194400799124 /* CCFileUtils.m in Sources */, D25B4F4C194A499700DA9D60 /* CCTouch.m in Sources */, D272032C18FC89A000B100FF /* CCEffectNode.m in Sources */, - D37D197918B6665700B23FDE /* CCTiledMapObjectGroup.m in Sources */, 503798C70F912C2000986724 /* CGPointExtension.m in Sources */, D268FE1B1980791400ECBCD0 /* CCEffectRefraction.m in Sources */, 50D413270F9A3FE00040C3C8 /* CCParticleSystem.m in Sources */, @@ -2632,7 +2567,6 @@ 503862E6110072BC005D2C92 /* CCConfiguration.m in Sources */, 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */, 5015043C113300F900A9CA65 /* CCActionProgressTimer.m in Sources */, - D37D197818B6665700B23FDE /* CCTiledMapLayer.m in Sources */, D272032618FC89A000B100FF /* CCEffect.m in Sources */, 83E1A87719C8ACC1000A3BCA /* CCPackageDownload.m in Sources */, 50FBB2DB117613F500150761 /* CCActionTween.m in Sources */, @@ -2751,10 +2685,6 @@ 7A5947E519E375A000F65F90 /* CCParticleBatchNode.m in Sources */, 7A5947E719E375A000F65F90 /* CCParticleExamples.m in Sources */, 7A5947EB19E375A100F65F90 /* CCParallaxNode.m in Sources */, - 7A5947ED19E375A100F65F90 /* CCTiledMap.m in Sources */, - 7A5947EF19E375A100F65F90 /* CCTiledMapLayer.m in Sources */, - 7A5947F119E375A100F65F90 /* CCTiledMapObjectGroup.m in Sources */, - 7A5947F319E375A200F65F90 /* CCTMXXMLParser.m in Sources */, 7A5947F619E375A200F65F90 /* CCScene.m in Sources */, 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */, 7A5947FA19E375A200F65F90 /* CCPhysicsBody.m in Sources */, diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index dd66dc707bf..adf64fd6c9a 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -96,13 +96,9 @@ #import "CCSpriteBatchNode.h" #import "CCSpriteFrame.h" #import "CCSpriteFrameCache.h" -#import "CCTMXXMLParser.h" +#import "CCTransition.h" #import "CCTexture.h" #import "CCTexturePVR.h" -#import "CCTiledMap.h" -#import "CCTiledMapLayer.h" -#import "CCTiledMapObjectGroup.h" -#import "CCTransition.h" #if CC_EFFECTS_EXPERIMENTAL #import "CCEffectOutline.h" From 48ca679d1844dde60f8111ebdbee4963e50a092c Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 7 Feb 2016 18:30:02 +0300 Subject: [PATCH 06/94] CCScrollView improvements Clean up android, add triggering delegate calls during programming animations --- cocos2d-ui/CCScrollView.h | 7 + cocos2d-ui/CCScrollView.m | 297 ++------------------------------------ 2 files changed, 18 insertions(+), 286 deletions(-) mode change 100644 => 100755 cocos2d-ui/CCScrollView.m diff --git a/cocos2d-ui/CCScrollView.h b/cocos2d-ui/CCScrollView.h index 4735004df1c..be1a2c50be7 100644 --- a/cocos2d-ui/CCScrollView.h +++ b/cocos2d-ui/CCScrollView.h @@ -99,6 +99,13 @@ it captures user input, so one major issue would be to allow user interaction on the game world's contents and converting coordinates of touch input to the actual scroll location. For "correct" game world scrolling, please find a solution better suited to the purpose. For one such solution and more details about CCScrollView in general please refer to the [Learn SpriteBuilder book](http://www.apress.com/learn-spritebuilder-for-ios-game-development). */ + +// Enable this if you want your node to trigger delegate calls on start and end of progamming animations +// Maybe useful in single-axis scroll views, mainly in UI. +#ifndef CC_ENABLE_DELEGATE_CALLS_DURING_ANIMATIONS +#define CC_ENABLE_DELEGATE_CALLS_DURING_ANIMATIONS 0 +#endif + #if __CC_PLATFORM_IOS // Class definition for iOS diff --git a/cocos2d-ui/CCScrollView.m b/cocos2d-ui/CCScrollView.m old mode 100644 new mode 100755 index 79c61cafe3d..489e4c8938a --- a/cocos2d-ui/CCScrollView.m +++ b/cocos2d-ui/CCScrollView.m @@ -36,13 +36,6 @@ #import -#elif __CC_PLATFORM_ANDROID - -#import "CCActivity.h" -#import "CCGestureListener.h" -#import -#import - #elif __CC_PLATFORM_MAC #endif @@ -173,10 +166,6 @@ @implementation CCScrollView { #if __CC_PLATFORM_MAC CGPoint _lastPosition; -#elif __CC_PLATFORM_ANDROID - CCGestureListener *_listener; - AndroidGestureDetector *_detector; - CGPoint _rawScrollTranslation; #endif } @@ -219,14 +208,7 @@ - (id) initWithContentNode:(CCNode*)contentNode _panRecognizer.delegate = self; _tapRecognizer.delegate = self; -#elif __CC_PLATFORM_ANDROID - dispatch_async(dispatch_get_main_queue(), ^{ - _listener = [[CCGestureListener alloc] init]; - _listener.delegate = (id)self; - _detector = [[AndroidGestureDetector alloc] initWithContext:[CCActivity currentActivity] onGestureListener:_listener]; - }); #elif __CC_PLATFORM_MAC - // Use scroll wheel self.userInteractionEnabled = YES; #endif @@ -363,14 +345,15 @@ - (void) setScrollPosition:(CGPoint)newPos animated:(BOOL)animated // Check bounds newPos.x = MAX(MIN(newPos.x, self.maxScrollX), self.minScrollX); newPos.y = MAX(MIN(newPos.y, self.maxScrollY), self.minScrollY); - - [self updateAndroidScrollTranslation:newPos]; BOOL xMoved = (newPos.x != self.scrollPosition.x); BOOL yMoved = (newPos.y != self.scrollPosition.y); if (animated) { +#if CC_ENABLE_DELEGATE_CALLS_DURING_ANIMATIONS + [self scrollViewWillBeginDragging]; +#endif CGPoint oldPos = self.scrollPosition; float dist = ccpDistance(newPos, oldPos); @@ -390,6 +373,7 @@ - (void) setScrollPosition:(CGPoint)newPos animated:(BOOL)animated CCActionCallFunc* callFunc = [CCActionCallFunc actionWithTarget:self selector:@selector(xAnimationDone)]; action = [CCActionSequence actions:action, callFunc, nil]; action.tag = kCCScrollViewActionXTag; + [_contentNode stopActionByTag:kCCScrollViewActionXTag]; [_contentNode runAction:action]; } if (yMoved) @@ -406,8 +390,10 @@ - (void) setScrollPosition:(CGPoint)newPos animated:(BOOL)animated CCActionCallFunc* callFunc = [CCActionCallFunc actionWithTarget:self selector:@selector(yAnimationDone)]; action = [CCActionSequence actions:action, callFunc, nil]; action.tag = kCCScrollViewActionYTag; + [_contentNode stopActionByTag:kCCScrollViewActionYTag]; [_contentNode runAction:action]; } + } else { @@ -420,14 +406,6 @@ - (void) setScrollPosition:(CGPoint)newPos animated:(BOOL)animated } } -- (void)updateAndroidScrollTranslation:(CGPoint)worldPosition -{ -#if __CC_PLATFORM_ANDROID - _rawScrollTranslation = [self convertToWindowSpace:CGPointMake(-worldPosition.x, worldPosition.y)]; -#endif -} - - - (void) xAnimationDone { _animatingX = NO; @@ -491,7 +469,11 @@ - (void) update:(CCTime)df } else { #if __CC_PLATFORM_IOS - if ( _decelerating && !(_animatingX || _animatingY)) { + if ( _decelerating +#if !CC_ENABLE_DELEGATE_CALLS_DURING_ANIMATIONS + && !(_animatingX || _animatingY) +#endif + ) { [self scrollViewDidEndDecelerating]; _decelerating = NO; } @@ -510,8 +492,6 @@ - (void) update:(CCTime)df CGPoint delta = ccpMult(_velocity, df); _contentNode.position = ccpAdd(_contentNode.position, delta); - - [self updateAndroidScrollTranslation:CGPointMake(_contentNode.position.x * -1, _contentNode.position.y * -1)]; // Deaccelerate layer float deaccelerationX = kCCScrollViewDeacceleration; @@ -791,261 +771,6 @@ - (void) onExitTransitionDidStart [super onExitTransitionDidStart]; } -#elif __CC_PLATFORM_ANDROID - -- (void) onEnterTransitionDidFinish -{ - dispatch_async(dispatch_get_main_queue(), ^{ - if(_detector) - { - [[[CCDirector sharedDirector] view] addGestureDetector:_detector]; - } - }); - [super onEnterTransitionDidFinish]; -} - -- (void) onExitTransitionDidStart -{ - dispatch_async(dispatch_get_main_queue(), ^{ - if(_detector) - { - [[[CCDirector sharedDirector] view] removeGestureDetector:_detector]; - } - }); - - [super onExitTransitionDidStart]; -} - -- (CCTouchPhase)handleGestureEvent:(AndroidMotionEvent *)start end:(AndroidMotionEvent *)end -{ - CCTouchPhase phase = CCTouchPhaseStationary; - switch (start.action & AndroidMotionEventActionMask) { - case AndroidMotionEventActionPointerDown: - case AndroidMotionEventActionDown: - phase = CCTouchPhaseBegan; - break; - case AndroidMotionEventActionMove: - phase = CCTouchPhaseMoved; - break; - case AndroidMotionEventActionPointerUp: - case AndroidMotionEventActionUp: - phase = CCTouchPhaseEnded; - break; - case AndroidMotionEventActionCancel: - phase = CCTouchPhaseCancelled; - break; - default: - phase = CCTouchPhaseStationary; - } - switch (end.action & AndroidMotionEventActionMask) { - case AndroidMotionEventActionPointerDown: - case AndroidMotionEventActionDown: - phase = CCTouchPhaseBegan; - break; - case AndroidMotionEventActionMove: - phase = CCTouchPhaseMoved; - break; - case AndroidMotionEventActionPointerUp: - case AndroidMotionEventActionUp: - phase = CCTouchPhaseEnded; - break; - case AndroidMotionEventActionCancel: - phase = CCTouchPhaseCancelled; - break; - default: - phase = CCTouchPhaseStationary; - } - - return phase; -} - -- (BOOL)onScroll:(AndroidMotionEvent *)start end:(AndroidMotionEvent *)end distanceX:(float)dx distanceY:(float)dy -{ - _isPanning = YES; - _velocity = CGPointZero; - - // Note about start and end events: We will get a CCTouchPhaseBegan for the start event, followed by CCTouchPhaseMoved in the end event - CCTouchPhase phase = [self handleGestureEvent:start end:end]; - - if(phase == CCTouchPhaseCancelled || phase == CCTouchPhaseEnded) - _rawScrollTranslation = CGPointMake(0.0f, 0.0f); - - float scaleFactor = [[CCDirector sharedDirector] view].contentScaleFactor; - - dx /= scaleFactor; - dy /= scaleFactor; - - _rawScrollTranslation.x -= dx; - _rawScrollTranslation.y -= dy; - - CCDirector* dir = [CCDirector sharedDirector]; - [[CCActivity currentActivity] runOnGameThread:^{ - - CGPoint translation = [dir convertToGL:_rawScrollTranslation]; - translation = [self convertToNodeSpace:translation]; - - if (phase == CCTouchPhaseBegan) - { - [self scrollViewWillBeginDragging]; - _animatingX = NO; - _animatingY = NO; - _rawTranslationStart = translation; - _startScrollPos = self.scrollPosition; - - _isPanning = YES; - [_contentNode stopActionByTag:kCCScrollViewActionXTag]; - [_contentNode stopActionByTag:kCCScrollViewActionYTag]; - } - else if (phase == CCTouchPhaseMoved) - { - // Calculate the translation in node space - CGPoint trans = ccpSub(_rawTranslationStart, translation); - - // Check if scroll directions has been disabled - if (!_horizontalScrollEnabled) trans.x = 0; - if (!_verticalScrollEnabled) trans.y = 0; - - if (_flipYCoordinates) trans.y = -trans.y; - - // Check bounds - CGPoint newPos = ccpAdd(_startScrollPos, trans); - - // Update position - [self panLayerToTarget:newPos]; - - } - else if (phase == CCTouchPhaseEnded) - { - // stub - } - else if (phase == CCTouchPhaseCancelled) - { - _isPanning = NO; - _velocity = CGPointZero; - _animatingX = NO; - _animatingY = NO; - - [self setScrollPosition:self.scrollPosition animated:NO]; - } - } waitUntilDone:YES]; - return YES; -} - -- (BOOL)onFling:(AndroidMotionEvent *)start end:(AndroidMotionEvent *)end velocityX:(float)vx velocityY:(float)vy -{ - static CGPoint rawTranslationFling; - - CCTouchPhase phase = [self handleGestureEvent:start end:end]; - - if(phase == CCTouchPhaseCancelled || phase == CCTouchPhaseEnded) - rawTranslationFling = CGPointMake(0.0f, 0.0f); - - float scaleFactor = [[CCDirector sharedDirector] view].contentScaleFactor; - float x0 = [start xForPointerIndex:0] / scaleFactor; - float x1 = [end xForPointerIndex:0] / scaleFactor; - - float y0 = [start yForPointerIndex:0] / scaleFactor; - float y1 = [end yForPointerIndex:0] / scaleFactor; - - int64_t t0 = start.eventTime; - int64_t t1 = end.eventTime; - - vx /= scaleFactor; - vy /= scaleFactor; - - float dx = (x1 - x0) / scaleFactor; - float dy = (y1 - y0) / scaleFactor; - - CGPoint velocityRaw = CGPointMake(vx, vy); - rawTranslationFling.x -= dx / scaleFactor; - rawTranslationFling.y -= dy / scaleFactor; - - CCDirector* dir = [CCDirector sharedDirector]; - [[CCActivity currentActivity] runOnGameThread:^{ - - CGPoint translation = [dir convertToGL:rawTranslationFling]; - translation = [self convertToNodeSpace:translation]; - - if (phase == CCTouchPhaseBegan) - { - [self scrollViewWillBeginDragging]; - } - else if (phase == CCTouchPhaseMoved) - { - // stub - } - else if (phase == CCTouchPhaseEnded) - { - // Calculate the velocity in node space - CGPoint ref = [dir convertToGL:CGPointZero]; - ref = [self convertToNodeSpace:ref]; - - CGPoint velocity = [dir convertToGL:velocityRaw]; - velocity = [self convertToNodeSpace:velocity]; - - _velocity = ccpSub(velocity, ref); - if (_flipYCoordinates) _velocity.y = -_velocity.y; - - // Check if scroll directions has been disabled - if (!_horizontalScrollEnabled) _velocity.x = 0; - if (!_verticalScrollEnabled) _velocity.y = 0; - [self scrollViewDidEndDraggingAndWillDecelerate:!CGPointEqualToPoint(_velocity, CGPointZero)]; - - // Setup a target if paging is enabled - if (_pagingEnabled) - { - CGPoint posTarget = CGPointZero; - - // Calculate new horizontal page - int pageX = roundf(self.scrollPosition.x/self.contentSizeInPoints.width); - - if (fabs(_velocity.x) >= kCCScrollViewAutoPageSpeed && _horizontalPage == pageX) - { - if (_velocity.x < 0) pageX += 1; - else pageX -= 1; - } - - pageX = clampf(pageX, 0, self.numHorizontalPages -1); - _horizontalPage = pageX; - - posTarget.x = pageX * self.contentSizeInPoints.width; - - // Calculate new vertical page - int pageY = roundf(self.scrollPosition.y/self.contentSizeInPoints.height); - - if (fabs(_velocity.y) >= kCCScrollViewAutoPageSpeed && _verticalPage == pageY) - { - if (_velocity.y < 0) pageY += 1; - else pageY -= 1; - } - - pageY = clampf(pageY, 0, self.numVerticalPages -1); - _verticalPage = pageY; - - posTarget.y = pageY * self.contentSizeInPoints.height; - - [self setScrollPosition:posTarget animated:YES]; - - _velocity = CGPointZero; - } - [self scrollViewWillBeginDecelerating]; - - _decelerating = YES; - _isPanning = NO; - } - else if (phase == CCTouchPhaseCancelled) - { - _isPanning = NO; - _velocity = CGPointZero; - _animatingX = NO; - _animatingY = NO; - - [self setScrollPosition:self.scrollPosition animated:NO]; - } - } waitUntilDone:YES]; - return YES; -} - #elif __CC_PLATFORM_MAC #define kCCScrollViewMinPagingDelta 7 From 7153714f97b84f8c96006c2368bb79d29480dff5 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 7 Feb 2016 19:28:38 +0300 Subject: [PATCH 07/94] CCTransition mechanism refactoring It is possible now to create custom transitions without any objc-runtime hacks --- cocos2d-ui-tests/MainMenu.m | 4 +- cocos2d-ui-tests/TestBase.m | 2 +- cocos2d-ui-tests/tests/CCTransitionTest.m | 4 +- cocos2d/CCDirector.m | 12 +- cocos2d/CCDirector_Private.h | 2 +- cocos2d/CCTransition.h | 199 +++++++++-------- cocos2d/CCTransition.m | 249 ++++++++++------------ 7 files changed, 238 insertions(+), 234 deletions(-) diff --git a/cocos2d-ui-tests/MainMenu.m b/cocos2d-ui-tests/MainMenu.m index 02ec2de8b54..cb746098c81 100644 --- a/cocos2d-ui-tests/MainMenu.m +++ b/cocos2d-ui-tests/MainMenu.m @@ -119,7 +119,7 @@ - (id) init - (void)loadNext { CCScene* test = [TestBase sceneWithTestName:@"CCLabelTTFTest"]; - CCTransition* transition = [CCTransition transitionMoveInWithDirection:CCTransitionDirectionLeft duration:0.3]; + CCTransition* transition = [CCDefaultTransition transitionMoveInWithDirection:CCTransitionDirectionLeft duration:0.3]; [[CCDirector sharedDirector] replaceScene:test withTransition:transition]; } @@ -132,7 +132,7 @@ - (void) selectedRow:(id)sender NSString* className = [[self testClassNames] objectAtIndex:tableView.selectedRow]; CCScene* test = [TestBase sceneWithTestName:className]; - CCTransition* transition = [CCTransition transitionMoveInWithDirection:CCTransitionDirectionLeft duration:0.3]; + CCTransition* transition = [CCDefaultTransition transitionMoveInWithDirection:CCTransitionDirectionLeft duration:0.3]; [[CCDirector sharedDirector] replaceScene:test withTransition:transition]; } diff --git a/cocos2d-ui-tests/TestBase.m b/cocos2d-ui-tests/TestBase.m index fa3ad344a52..a05071bd0e4 100644 --- a/cocos2d-ui-tests/TestBase.m +++ b/cocos2d-ui-tests/TestBase.m @@ -163,7 +163,7 @@ - (void) setUp{ - (void) pressedBack:(id)sender { - CCTransition* transition = [CCTransition transitionMoveInWithDirection:CCTransitionDirectionRight duration:0.3]; + CCTransition* transition = [CCDefaultTransition transitionMoveInWithDirection:CCTransitionDirectionRight duration:0.3]; [[CCDirector sharedDirector] replaceScene:[MainMenu scene] withTransition:transition]; } diff --git a/cocos2d-ui-tests/tests/CCTransitionTest.m b/cocos2d-ui-tests/tests/CCTransitionTest.m index 35fa4b188d7..8cf428df493 100644 --- a/cocos2d-ui-tests/tests/CCTransitionTest.m +++ b/cocos2d-ui-tests/tests/CCTransitionTest.m @@ -27,7 +27,7 @@ - (NSArray*) testConstructors - (void) setupCrossFadeTest { self.subTitle = @"Cross fade"; - _nextTransition = [CCTransition transitionCrossFadeWithDuration:1]; + _nextTransition = [CCDefaultTransition transitionCrossFadeWithDuration:1]; CCNodeColor* bgLayer = [CCNodeColor nodeWithColor:[CCColor redColor]]; bgLayer.contentSize = CGSizeMake(1, 1); @@ -38,7 +38,7 @@ - (void) setupCrossFadeTest - (void) setupFadeWithColorTest { self.subTitle = @"Fade with Color"; - _nextTransition = [CCTransition transitionFadeWithColor:[CCColor blueColor] duration:1]; + _nextTransition = [CCDefaultTransition transitionFadeWithColor:[CCColor blueColor] duration:1]; CCNodeColor* bgLayer = [CCNodeColor nodeWithColor:[CCColor greenColor]]; bgLayer.contentSize = CGSizeMake(1, 1); diff --git a/cocos2d/CCDirector.m b/cocos2d/CCDirector.m index 698225313f1..07d1150d311 100644 --- a/cocos2d/CCDirector.m +++ b/cocos2d/CCDirector.m @@ -557,7 +557,8 @@ - (void)pushScene:(CCScene *)scene withTransition:(CCTransition *)transition [_scenesStack addObject:scene]; _sendCleanupToScene = NO; - [transition startTransition:scene]; + [transition prepareTransition:scene]; + [self startTransition:transition]; } -(void) popScene @@ -588,7 +589,8 @@ - (void)popSceneWithTransition:(CCTransition *)transition [_scenesStack removeLastObject]; CCScene * incomingScene = [_scenesStack lastObject]; _sendCleanupToScene = YES; - [transition startTransition:incomingScene]; + [transition prepareTransition:incomingScene]; + [self startTransition:transition]; } } @@ -600,7 +602,8 @@ -(void) popToRootScene -(void) popToRootSceneWithTransition:(CCTransition *)transition { [self popToRootScene]; _sendCleanupToScene = YES; - [transition startTransition:_nextScene]; + [transition prepareTransition:_nextScene]; + [self startTransition:transition]; } -(void) popToSceneStackLevel:(NSUInteger)level @@ -658,7 +661,8 @@ - (void)replaceScene:(CCScene *)scene withTransition:(CCTransition *)transition { // the transition gets to become the running scene _sendCleanupToScene = YES; - [transition startTransition:scene]; + [transition prepareTransition:scene]; + [self startTransition:transition]; } // ----------------------------------------------------------------- diff --git a/cocos2d/CCDirector_Private.h b/cocos2d/CCDirector_Private.h index c0ba9dc54b0..425d0264a1a 100644 --- a/cocos2d/CCDirector_Private.h +++ b/cocos2d/CCDirector_Private.h @@ -103,7 +103,7 @@ @interface CCTransition (Private) -- (void)startTransition:(CCScene *)scene; +- (void)prepareTransition:(CCScene *)scene; @end diff --git a/cocos2d/CCTransition.h b/cocos2d/CCTransition.h index 2e71d5c57c0..dcd13bcb3d9 100644 --- a/cocos2d/CCTransition.h +++ b/cocos2d/CCTransition.h @@ -29,6 +29,113 @@ #import "cocos2d.h" #import "CCScene.h" +/** + A transition animates the presentation of a new scene while moving the current scene out of view. + A transition is optionally played when calling one of the presentScene:withTransition: methods of CCDirector. + + @note Since both scenes remain in memory and are being rendered, a transition may raise performance issues or + memory warnings. If two complex scenes can not be reliably transitioned from/to it is best to not use transitions + or to introduce an in-between scene that is presented only for a short period of time (ie a loading scene or merely + a "fade to black" scene). + */ +@interface CCTransition : CCScene + +/** + * Creates a blank transition from outgoing to incoming scene. + * + * @param duration The duration of the transition in seconds. + * + * @return The CCTransition Object. + * @note Use this initializer only for implementing custom transitions. + */ +- (id)initWithDuration:(NSTimeInterval)duration; + +/// ----------------------------------------------------------------------- +/// @name Transition Performance Settings +/// ----------------------------------------------------------------------- + +/** + * Will downscale outgoing scene. + * Can be used as an effect, or to decrease render time on complex scenes. + * Default 1.0. + */ +@property (nonatomic, assign) float outgoingDownScale; + +/** + * Will downscale incoming scene. + * Can be used as an effect, or to decrease render time on complex scenes. + * Default 1.0. + */ +@property (nonatomic, assign) float incomingDownScale; + + +/** + Pixel format used for transition. + Default `CCTexturePixelFormat_RGBA8888`. + @see CCTexturePixelFormat + */ +@property (nonatomic, assign) CCTexturePixelFormat transitionPixelFormat; + +/** + * Depth/stencil format used for transition. + * Default `GL_DEPTH24_STENCIL8_OES`. + */ +@property (nonatomic, assign) GLuint transitionDepthStencilFormat; + +/// ----------------------------------------------------------------------- +/// @name Controlling Scene Animation during Transition +/// ----------------------------------------------------------------------- + +/** + * Defines whether outgoing scene will be animated during transition. + * Default NO. + */ +@property (nonatomic, getter = isOutgoingSceneAnimated) BOOL outgoingSceneAnimated; + +/** + * Defines whether incoming scene will be animated during transition. + * Default NO. + */ +@property (nonatomic, getter = isIncomingSceneAnimated) BOOL incomingSceneAnimated; + +/** + * Defines whether incoming scene will be animated during transition. + * Default NO. + */ +@property (nonatomic, assign) BOOL outgoingOverIncoming; + +/// ----------------------------------------------------------------------- +/// @name For use with Custom Transitions +/// ----------------------------------------------------------------------- + +/** + * CCRenderTexture, holding the incoming scene as a texture + * Only valid after prepareTransition has been called. + */ +@property (nonatomic, readonly) CCRenderTexture *incomingTexture; + +/** + * CCRenderTexture, holding the outgoing scene as a texture + * Only valid after prepareTransition has been called. + */ +@property (nonatomic, readonly) CCRenderTexture *outgoingTexture; + +/// ----------------------------------------------------------------------- +/// @name Transition Running Time and Progress +/// ----------------------------------------------------------------------- + +/** The actual transition runtime in seconds. */ +@property (nonatomic, readonly) NSTimeInterval runTime; + +/** Normalized (percentage) transition progress in the range 0.0 to 1.0. */ +@property (nonatomic, readonly) float progress; + +// Preparation step for transition. Override this to create custom transition. +// You can add any nodes here or start some actions. +- (void)prepareTransition:(CCScene *)scene; + +@end + /** * Defines the direction that a directional transition will move. Used by CCTransition. * @@ -52,17 +159,7 @@ typedef NS_ENUM(NSInteger, CCTransitionDirection) CCTransitionDirectionInvalid = -1, }; -/** - A transition animates the presentation of a new scene while moving the current scene out of view. - A transition is optionally played when calling one of the presentScene:withTransition: methods of CCDirector. - - @note Since both scenes remain in memory and are being rendered, a transition may raise performance issues or - memory warnings. If two complex scenes can not be reliably transitioned from/to it is best to not use transitions - or to introduce an in-between scene that is presented only for a short period of time (ie a loading scene or merely - a "fade to black" scene). - */ -@interface CCTransition : CCScene - +@interface CCDefaultTransition : CCTransition /// ----------------------------------------------------------------------- /// @name Creating a Fade Scene Transition @@ -134,85 +231,5 @@ typedef NS_ENUM(NSInteger, CCTransitionDirection) */ + (CCTransition *)transitionRevealWithDirection:(CCTransitionDirection)direction duration:(NSTimeInterval)duration; -/// ----------------------------------------------------------------------- -/// @name Transition Performance Settings -/// ----------------------------------------------------------------------- - -/** - * Will downscale outgoing scene. - * Can be used as an effect, or to decrease render time on complex scenes. - * Default 1.0. - */ -@property (nonatomic, assign) float outgoingDownScale; - -/** - * Will downscale incoming scene. - * Can be used as an effect, or to decrease render time on complex scenes. - * Default 1.0. - */ -@property (nonatomic, assign) float incomingDownScale; - -/** - * Transition will be performed in retina resolution. - * Will force outgoingDownScale and incomingDownScale to 1.0 on non retina devices, and 2.0 on retina devices if not set. - * Default YES. - */ -@property (nonatomic, getter = isRetinaTransition) BOOL retinaTransition; - -/** - Pixel format used for transition. - Default `CCTexturePixelFormat_RGBA8888`. - @see CCTexturePixelFormat - */ -@property (nonatomic, assign) CCTexturePixelFormat transitionPixelFormat; - -/** - * Depth/stencil format used for transition. - * Default `GL_DEPTH24_STENCIL8_OES`. - */ -@property (nonatomic, assign) GLuint transitionDepthStencilFormat; - -/// ----------------------------------------------------------------------- -/// @name Controlling Scene Animation during Transition -/// ----------------------------------------------------------------------- - -/** - * Defines whether outgoing scene will be animated during transition. - * Default NO. - */ -@property (nonatomic, getter = isOutgoingSceneAnimated) BOOL outgoingSceneAnimated; - -/** - * Defines whether incoming scene will be animated during transition. - * Default NO. - */ -@property (nonatomic, getter = isIncomingSceneAnimated) BOOL incomingSceneAnimated; - -/// ----------------------------------------------------------------------- -/// @name For use with Custom Transitions -/// ----------------------------------------------------------------------- - -/** - * CCRenderTexture, holding the incoming scene as a texture - * Only valid after StartTransition has been called. - */ -@property (nonatomic, readonly) CCRenderTexture *incomingTexture; - -/** - * CCRenderTexture, holding the outgoing scene as a texture - * Only valid after StartTransition has been called. - */ -@property (nonatomic, readonly) CCRenderTexture *outgoingTexture; - -/// ----------------------------------------------------------------------- -/// @name Transition Running Time and Progress -/// ----------------------------------------------------------------------- - -/** The actual transition runtime in seconds. */ -@property (nonatomic, readonly) NSTimeInterval runTime; - -/** Normalized (percentage) transition progress in the range 0.0 to 1.0. */ -@property (nonatomic, readonly) float progress; - @end diff --git a/cocos2d/CCTransition.m b/cocos2d/CCTransition.m index a0e6ab61e23..6305d8a7b43 100644 --- a/cocos2d/CCTransition.m +++ b/cocos2d/CCTransition.m @@ -34,18 +34,8 @@ // ----------------------------------------------------------------- const float CCTransitionDownScaleMin = 1.0f; // range for transition downscales -const float CCTransitionDownScaleRetina = 2.0f; const float CCTransitionDownScaleMax = 128.0f; -typedef NS_ENUM(NSInteger, CCTransitionFixedFunction) -{ - CCTransitionFixedFunctionCrossFade, - CCTransitionFixedFunctionFadeWithColor, - CCTransitionFixedFunctionMoveIn, - CCTransitionFixedFunctionPush, - CCTransitionFixedFunctionReveal, -}; - // ----------------------------------------------------------------- @implementation CCTransition @@ -56,92 +46,13 @@ @implementation CCTransition CCRenderTexture *_incomingTexture; CCRenderTexture *_outgoingTexture; BOOL _incomingPauseState; - // - CCTransitionFixedFunction _fixedFunction; - CCTransitionDirection _direction; - ccColor4F _color; - SEL _drawSelector; BOOL _outgoingOverIncoming; - CGPoint _outgoingDestination; -} - -// ----------------------------------------------------------------- - -+ (CCTransition *)transitionCrossFadeWithDuration:(NSTimeInterval)duration -{ - return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionCrossFade direction:CCTransitionDirectionInvalid color:ccBLACK]); -} - -+ (CCTransition *)transitionFadeWithColor:(CCColor*)color duration:(NSTimeInterval)duration -{ - return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionFadeWithColor direction:CCTransitionDirectionInvalid color:color.ccColor3b]); } -+ (CCTransition *)transitionFadeWithDuration:(NSTimeInterval)duration -{ - return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionFadeWithColor direction:CCTransitionDirectionInvalid color:ccBLACK]); -} - -+ (CCTransition *)transitionMoveInWithDirection:(CCTransitionDirection)direction duration:(NSTimeInterval)duration -{ - return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionMoveIn direction:direction color:ccBLACK]); -} - -+ (CCTransition *)transitionPushWithDirection:(CCTransitionDirection)direction duration:(NSTimeInterval)duration -{ - return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionPush direction:direction color:ccBLACK]); -} - -+ (CCTransition *)transitionRevealWithDirection:(CCTransitionDirection)direction duration:(NSTimeInterval)duration -{ - return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionReveal direction:direction color:ccBLACK]); -} +@synthesize outgoingOverIncoming = _outgoingOverIncoming; // ----------------------------------------------------------------- -- (id)initWithDuration:(NSTimeInterval)duration - fixedFunction:(CCTransitionFixedFunction)function - direction:(CCTransitionDirection)direction - color:(ccColor3B)color -{ - self = [self initWithDuration:duration]; - - // set up fixed function transition - _fixedFunction = function; - _direction = direction; - self.colorRGBA = [CCColor colorWithCcColor4f:(ccColor4F){(float)color.r / 255, (float)color.g / 255, (float)color.b / 255, 1}]; - _drawSelector = @selector(drawFixedFunction); - _outgoingOverIncoming = NO; - - // find out where the outgoing scene will end (if it is a transition with movement) - CGSize size = [CCDirector sharedDirector].viewportRect.size; - switch (direction) { - case CCTransitionDirectionDown: _outgoingDestination = CGPointMake(0, -size.height); break; - case CCTransitionDirectionLeft: _outgoingDestination = CGPointMake(-size.width, 0); break; - case CCTransitionDirectionRight: _outgoingDestination = CGPointMake(size.width, 0); break; - case CCTransitionDirectionUp: _outgoingDestination = CGPointMake(0, size.height); break; - case CCTransitionDirectionInvalid: _outgoingDestination = CGPointZero; break; - default: NSAssert(NO, @"Unknown fixed transition"); - } - - // start actions to move sprites into position (will not start until scene is started by director) - switch (_fixedFunction) { - case CCTransitionFixedFunctionCrossFade: - case CCTransitionFixedFunctionFadeWithColor: - break; - case CCTransitionFixedFunctionReveal: - _outgoingOverIncoming = YES; - break; - case CCTransitionFixedFunctionMoveIn: - case CCTransitionFixedFunctionPush: - break; - default: NSAssert(NO, @"Unknown fixed transition"); - } - - // done - return(self); -} - - (id)initWithDuration:(NSTimeInterval)duration { self = [super init]; @@ -178,7 +89,7 @@ - (id)initWithDuration:(NSTimeInterval)duration // ----------------------------------------------------------------- -- (void)startTransition:(CCScene *)scene +- (void)prepareTransition:(CCScene *)scene { CCDirector *director = [CCDirector sharedDirector]; @@ -194,32 +105,29 @@ - (void)startTransition:(CCScene *)scene // create render textures // get viewport size CGRect rect = director.viewportRect; - CGSize size = rect.size; - - // Make sure we aren't rounding down. - size.width = ceil(rect.size.width); - size.height = ceil(rect.size.height); + CGSize size = rect.size; + + // Make sure we aren't rounding down. + size.width = ceil(rect.size.width); + size.height = ceil(rect.size.height); // create texture for outgoing scene _outgoingTexture = [CCRenderTexture renderTextureWithWidth:size.width height:size.height pixelFormat:_transitionPixelFormat depthStencilFormat:_transitionDepthStencilFormat]; _outgoingTexture.position = CGPointMake(size.width * 0.5f + rect.origin.x, size.height * 0.5f + rect.origin.y); _outgoingTexture.contentScale /= _outgoingDownScale; - _outgoingTexture.projection = director.projectionMatrix; + _outgoingTexture.projection = director.projectionMatrix; [self addChild:_outgoingTexture z:_outgoingOverIncoming]; - // create texture for incoming scene + // create texture for incoming scene _incomingTexture = [CCRenderTexture renderTextureWithWidth:size.width height:size.height pixelFormat:_transitionPixelFormat depthStencilFormat:_transitionDepthStencilFormat]; _incomingTexture.position = CGPointMake(size.width * 0.5f + rect.origin.x, size.height * 0.5f + rect.origin.y); _incomingTexture.contentScale /= _incomingDownScale; - _incomingTexture.projection = director.projectionMatrix; + _incomingTexture.projection = director.projectionMatrix; [self addChild:_incomingTexture]; // make sure scene is rendered at least once at progress 0.0 [self renderOutgoing:0]; [self renderIncoming:0]; - - // switch to transition scene - [director startTransition:self]; } // ----------------------------------------------------------------- @@ -246,8 +154,7 @@ - (void)update:(CCTime)delta if ([CCDirector sharedDirector].sendCleanupToScene) [_outgoingScene cleanup]; _outgoingScene = nil; - - // Start incoming scene + // Start incoming scene [[CCDirector sharedDirector] replaceScene:_incomingScene]; [_incomingScene onEnterTransitionDidFinish]; [_incomingScene setPaused:NO]; @@ -258,15 +165,11 @@ - (void)update:(CCTime)delta // render the scenes if (_incomingSceneAnimated) - { - [self renderIncoming:_progress]; - } + if (_outgoingSceneAnimated) - { - [self renderOutgoing:_progress]; - } + } // ----------------------------------------------------------------- @@ -283,24 +186,12 @@ - (void)renderIncoming:(float)progress { GLKVector4 c = _outgoingScene.colorRGBA.glkVector4; [_incomingTexture beginWithClear:c.r g:c.g b:c.b a:c.a depth:1.0 stencil:0]; - [_incomingScene visit]; + [_incomingScene visit]; [_incomingTexture end]; } // ----------------------------------------------------------------- -- (void)setRetinaTransition:(BOOL)retinaTransition -{ - _retinaTransition = retinaTransition; - _incomingDownScale = CCTransitionDownScaleMin; - _outgoingDownScale = CCTransitionDownScaleMin; - if (!_retinaTransition && (__ccContentScaleFactor > 1.0)) - { - _incomingDownScale = CCTransitionDownScaleRetina; - _outgoingDownScale = CCTransitionDownScaleRetina; - } -} - - (void)setIncomingDownScale:(float)incomingDownScale { NSAssert((incomingDownScale >= CCTransitionDownScaleMin) && (incomingDownScale <= CCTransitionDownScaleMax),@"Invalid down scale"); @@ -313,8 +204,102 @@ - (void)setOutgoingDownScale:(float)outgoingDownScale _outgoingDownScale = outgoingDownScale; } +@end + + +typedef NS_ENUM(NSInteger, CCTransitionFixedFunction) +{ + CCTransitionFixedFunctionCrossFade, + CCTransitionFixedFunctionFadeWithColor, + CCTransitionFixedFunctionMoveIn, + CCTransitionFixedFunctionPush, + CCTransitionFixedFunctionReveal, +}; + +@implementation CCDefaultTransition { + // + CCTransitionFixedFunction _fixedFunction; + CCTransitionDirection _direction; + ccColor4F _color; + SEL _drawSelector; + CGPoint _outgoingDestination; +} + // ----------------------------------------------------------------- ++ (CCTransition *)transitionCrossFadeWithDuration:(NSTimeInterval)duration +{ + return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionCrossFade direction:CCTransitionDirectionInvalid color:ccBLACK]); +} + ++ (CCTransition *)transitionFadeWithColor:(CCColor*)color duration:(NSTimeInterval)duration +{ + return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionFadeWithColor direction:CCTransitionDirectionInvalid color:color.ccColor3b]); +} + ++ (CCTransition *)transitionFadeWithDuration:(NSTimeInterval)duration +{ + return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionFadeWithColor direction:CCTransitionDirectionInvalid color:ccBLACK]); +} + ++ (CCTransition *)transitionMoveInWithDirection:(CCTransitionDirection)direction duration:(NSTimeInterval)duration +{ + return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionMoveIn direction:direction color:ccBLACK]); +} + ++ (CCTransition *)transitionPushWithDirection:(CCTransitionDirection)direction duration:(NSTimeInterval)duration +{ + return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionPush direction:direction color:ccBLACK]); +} + ++ (CCTransition *)transitionRevealWithDirection:(CCTransitionDirection)direction duration:(NSTimeInterval)duration +{ + return([[self alloc] initWithDuration:duration fixedFunction:CCTransitionFixedFunctionReveal direction:direction color:ccBLACK]); +} + +- (id)initWithDuration:(NSTimeInterval)duration + fixedFunction:(CCTransitionFixedFunction)function + direction:(CCTransitionDirection)direction + color:(ccColor3B)color +{ + self = [self initWithDuration:duration]; + + // set up fixed function transition + _fixedFunction = function; + _direction = direction; + self.colorRGBA = [CCColor colorWithCcColor4f:(ccColor4F){(float)color.r / 255, (float)color.g / 255, (float)color.b / 255, 1}]; + _drawSelector = @selector(drawFixedFunction); + self.outgoingOverIncoming = NO; + + // find out where the outgoing scene will end (if it is a transition with movement) + CGSize size = [CCDirector sharedDirector].viewportRect.size; + switch (direction) { + case CCTransitionDirectionDown: _outgoingDestination = CGPointMake(0, -size.height); break; + case CCTransitionDirectionLeft: _outgoingDestination = CGPointMake(-size.width, 0); break; + case CCTransitionDirectionRight: _outgoingDestination = CGPointMake(size.width, 0); break; + case CCTransitionDirectionUp: _outgoingDestination = CGPointMake(0, size.height); break; + case CCTransitionDirectionInvalid: _outgoingDestination = CGPointZero; break; + default: NSAssert(NO, @"Unknown fixed transition"); + } + + // start actions to move sprites into position (will not start until scene is started by director) + switch (_fixedFunction) { + case CCTransitionFixedFunctionCrossFade: + case CCTransitionFixedFunctionFadeWithColor: + break; + case CCTransitionFixedFunctionReveal: + self.outgoingOverIncoming = YES; + break; + case CCTransitionFixedFunctionMoveIn: + case CCTransitionFixedFunctionPush: + break; + default: NSAssert(NO, @"Unknown fixed transition"); + } + + // done + return(self); +} + -(void)draw:(CCRenderer *)renderer transform:(const GLKMatrix4 *)transform { void (*Func)(id, SEL) = (void (*)(id, SEL)) objc_msgSend; @@ -326,28 +311,26 @@ - (void)drawFixedFunction switch (_fixedFunction) { case CCTransitionFixedFunctionCrossFade: - _incomingTexture.sprite.opacity = _progress; - _outgoingTexture.sprite.opacity = 1; + self.incomingTexture.sprite.opacity = self.progress; + self.outgoingTexture.sprite.opacity = 1; break; case CCTransitionFixedFunctionFadeWithColor: - _incomingTexture.sprite.opacity = clampf(2.0 * (_progress - 0.5), 0, 1); - _outgoingTexture.sprite.opacity = clampf(1.0 * (1 - (2 * _progress)), 0, 1); + self.incomingTexture.sprite.opacity = clampf(2.0 * (self.progress - 0.5), 0, 1); + self.outgoingTexture.sprite.opacity = clampf(1.0 * (1 - (2 * self.progress)), 0, 1); break; case CCTransitionFixedFunctionReveal: - _outgoingTexture.sprite.position = ccpMult(_outgoingDestination, _progress); + self.outgoingTexture.sprite.position = ccpMult(_outgoingDestination, self.progress); break; case CCTransitionFixedFunctionMoveIn: - _incomingTexture.sprite.position = ccpMult(_outgoingDestination, -1 + _progress); + self.incomingTexture.sprite.position = ccpMult(_outgoingDestination, -1 + self.progress); break; case CCTransitionFixedFunctionPush: - _outgoingTexture.sprite.position = ccpMult(_outgoingDestination, _progress); - _incomingTexture.sprite.position = ccpMult(_outgoingDestination, -1 + _progress); + self.outgoingTexture.sprite.position = ccpMult(_outgoingDestination, self.progress); + self.incomingTexture.sprite.position = ccpMult(_outgoingDestination, -1 + self.progress); break; default: break; } } -// ----------------------------------------------------------------- - @end From 91473239d983daaebef9d1aca0fce5711bf85791 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 8 Feb 2016 00:40:40 +0300 Subject: [PATCH 08/94] Move CCMotionStreak to -ext --- .../CCMotionStreak}/CCMotionStreak.h | 0 .../CCMotionStreak}/CCMotionStreak.m | 0 cocos2d-tests.xcodeproj/project.pbxproj | 19 +++++++++++++++++++ cocos2d-ui-tests/tests/CCRendererTest.m | 2 +- cocos2d.xcodeproj/project.pbxproj | 12 ------------ cocos2d/cocos2d.h | 1 - 6 files changed, 20 insertions(+), 14 deletions(-) rename {cocos2d => cocos2d-ext/CCMotionStreak}/CCMotionStreak.h (100%) rename {cocos2d => cocos2d-ext/CCMotionStreak}/CCMotionStreak.m (100%) diff --git a/cocos2d/CCMotionStreak.h b/cocos2d-ext/CCMotionStreak/CCMotionStreak.h similarity index 100% rename from cocos2d/CCMotionStreak.h rename to cocos2d-ext/CCMotionStreak/CCMotionStreak.h diff --git a/cocos2d/CCMotionStreak.m b/cocos2d-ext/CCMotionStreak/CCMotionStreak.m similarity index 100% rename from cocos2d/CCMotionStreak.m rename to cocos2d-ext/CCMotionStreak/CCMotionStreak.m diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index b8a9e0ec3a5..7bd674649dc 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -19,6 +19,9 @@ 084782121C66669300C3817B /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; 084782131C66669300C3817B /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; 084782141C66669300C3817B /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; + 089949641C67F10A00ECC92C /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; + 089949651C67F10A00ECC92C /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; + 089949661C67F10A00ECC92C /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; 0E28FE1A197FCE4500F78989 /* CCCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E28FE19197FCE4500F78989 /* CCCacheTest.m */; }; 75556A04185636F100ED1B0F /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75556A03185636F100ED1B0F /* XCTest.framework */; }; 75556A05185636F100ED1B0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605717E7D278007067F0 /* Foundation.framework */; }; @@ -330,6 +333,8 @@ 084782071C66669300C3817B /* CCTMXXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTMXXMLParser.h; path = "cocos2d-ext/TileMaps/CCTMXXMLParser.h"; sourceTree = SOURCE_ROOT; }; 084782081C66669300C3817B /* CCTMXXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTMXXMLParser.m; path = "cocos2d-ext/TileMaps/CCTMXXMLParser.m"; sourceTree = SOURCE_ROOT; }; 084782171C6667B000C3817B /* CCTileMaps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTileMaps.h; path = "cocos2d-ext/TileMaps/CCTileMaps.h"; sourceTree = SOURCE_ROOT; }; + 089949621C67F10A00ECC92C /* CCMotionStreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMotionStreak.h; sourceTree = ""; }; + 089949631C67F10A00ECC92C /* CCMotionStreak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMotionStreak.m; sourceTree = ""; }; 0E28FE19197FCE4500F78989 /* CCCacheTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCCacheTest.m; path = "cocos2d-ui-tests/tests/CCCacheTest.m"; sourceTree = SOURCE_ROOT; }; 755569E31856361100ED1B0F /* CCFileUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtilTests.m; sourceTree = ""; }; 755569E41856361100ED1B0F /* CCNodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNodeTests.m; sourceTree = ""; }; @@ -553,6 +558,7 @@ 084781FF1C66666B00C3817B /* cocos2d-ext */ = { isa = PBXGroup; children = ( + 089949611C67F10A00ECC92C /* CCMotionStreak */, 084782151C66669A00C3817B /* TileMaps */, ); name = "cocos2d-ext"; @@ -575,6 +581,16 @@ name = TileMaps; sourceTree = ""; }; + 089949611C67F10A00ECC92C /* CCMotionStreak */ = { + isa = PBXGroup; + children = ( + 089949621C67F10A00ECC92C /* CCMotionStreak.h */, + 089949631C67F10A00ECC92C /* CCMotionStreak.m */, + ); + name = CCMotionStreak; + path = "cocos2d-ext/CCMotionStreak"; + sourceTree = SOURCE_ROOT; + }; 755569EC1856361100ED1B0F /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -1250,6 +1266,7 @@ D3395F1A187F83E600F22C74 /* CCMemoryTests.m in Sources */, 75556A181856370A00ED1B0F /* CCPhysicsTests.m in Sources */, D34CD3C518ABF4AA00D8E537 /* CCRendererTests.m in Sources */, + 089949651C67F10A00ECC92C /* CCMotionStreak.m in Sources */, 75556A191856370A00ED1B0F /* CCSchedulerTests.m in Sources */, E525F81797DA5573FC26BEBB /* CCPackageTests.m in Sources */, E525F5DB1E3086DDE0296CEC /* CCPackageDownloadTests.m in Sources */, @@ -1284,6 +1301,7 @@ B7EE69811818760700B983FE /* CCSprite9SliceTest.m in Sources */, B7EE6A28181B075E00B983FE /* CCSliderTest.m in Sources */, 0847820F1C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, + 089949641C67F10A00ECC92C /* CCMotionStreak.m in Sources */, 084782121C66669300C3817B /* CCTMXXMLParser.m in Sources */, 084782091C66669300C3817B /* CCTiledMap.m in Sources */, A6167B93189A7D4D0044D391 /* VertexZTest.m in Sources */, @@ -1324,6 +1342,7 @@ D3763D4019E734C5006C050D /* CCTableViewTest.m in Sources */, D3763D4119E734C5006C050D /* CCTransitionTest.m in Sources */, 084782111C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, + 089949661C67F10A00ECC92C /* CCMotionStreak.m in Sources */, 084782141C66669300C3817B /* CCTMXXMLParser.m in Sources */, 0847820B1C66669300C3817B /* CCTiledMap.m in Sources */, D3763D4219E734C5006C050D /* CCResponderTest.m in Sources */, diff --git a/cocos2d-ui-tests/tests/CCRendererTest.m b/cocos2d-ui-tests/tests/CCRendererTest.m index 5919d87249f..17a03631328 100644 --- a/cocos2d-ui-tests/tests/CCRendererTest.m +++ b/cocos2d-ui-tests/tests/CCRendererTest.m @@ -1,7 +1,7 @@ #import "TestBase.h" #import "CCTextureCache.h" #import "CCNodeColor.h" -//#import "CCNode_Private.h" +#import "CCMotionStreak.h" @interface CustomSprite : CCNode @end @implementation CustomSprite diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 5979f872c89..1d5a22b1b9b 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -60,8 +60,6 @@ 50305AF40E40E33200F63373 /* cocos2d.h in Headers */ = {isa = PBXBuildFile; fileRef = 50305AF30E40E33200F63373 /* cocos2d.h */; }; 50316AA610291280003ACFE7 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; 50316AA710291280003ACFE7 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AA510291280003ACFE7 /* CCRenderTexture.m */; }; - 50316AD41029A126003ACFE7 /* CCMotionStreak.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AD21029A126003ACFE7 /* CCMotionStreak.h */; }; - 50316AD51029A126003ACFE7 /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AD31029A126003ACFE7 /* CCMotionStreak.m */; }; 503798C60F912C2000986724 /* CGPointExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 503798C40F912C2000986724 /* CGPointExtension.h */; }; 503798C70F912C2000986724 /* CGPointExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 503798C50F912C2000986724 /* CGPointExtension.m */; }; 503862E6110072BC005D2C92 /* CCConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 503862D911007181005D2C92 /* CCConfiguration.m */; }; @@ -170,7 +168,6 @@ 7A5946B719E372F300F65F90 /* CCEffectNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031E18FC89A000B100FF /* CCEffectNode.h */; }; 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; 7A5946BB19E372F400F65F90 /* CCClippingNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B192833163361B10049A044 /* CCClippingNode.h */; }; - 7A5946BD19E372F400F65F90 /* CCMotionStreak.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AD21029A126003ACFE7 /* CCMotionStreak.h */; }; 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; @@ -319,7 +316,6 @@ 7A59480319E375A300F65F90 /* CCEffectNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D272031F18FC89A000B100FF /* CCEffectNode.m */; }; 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */; }; 7A59480719E375A400F65F90 /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B192834163361B10049A044 /* CCClippingNode.m */; }; - 7A59480919E375A400F65F90 /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AD31029A126003ACFE7 /* CCMotionStreak.m */; }; 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AA510291280003ACFE7 /* CCRenderTexture.m */; }; 7A59481119E375A500F65F90 /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85B19C8ACA0000A3BCA /* CCPackage.m */; }; @@ -808,8 +804,6 @@ 50305AF30E40E33200F63373 /* cocos2d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cocos2d.h; sourceTree = ""; }; 50316AA410291280003ACFE7 /* CCRenderTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderTexture.h; sourceTree = ""; }; 50316AA510291280003ACFE7 /* CCRenderTexture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRenderTexture.m; sourceTree = ""; }; - 50316AD21029A126003ACFE7 /* CCMotionStreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMotionStreak.h; sourceTree = ""; }; - 50316AD31029A126003ACFE7 /* CCMotionStreak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMotionStreak.m; sourceTree = ""; }; 503798C40F912C2000986724 /* CGPointExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CGPointExtension.h; sourceTree = ""; }; 503798C50F912C2000986724 /* CGPointExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CGPointExtension.m; sourceTree = ""; }; 503862D911007181005D2C92 /* CCConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCConfiguration.m; sourceTree = ""; }; @@ -1479,8 +1473,6 @@ 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */, 2B192833163361B10049A044 /* CCClippingNode.h */, 2B192834163361B10049A044 /* CCClippingNode.m */, - 50316AD21029A126003ACFE7 /* CCMotionStreak.h */, - 50316AD31029A126003ACFE7 /* CCMotionStreak.m */, B791E85B182074C500DAE1D7 /* CCProgressNode.h */, B791E85C182074C500DAE1D7 /* CCProgressNode.m */, 50316AA410291280003ACFE7 /* CCRenderTexture.h */, @@ -1979,7 +1971,6 @@ D27451B719AE5517006DA0A1 /* CCEffectDistanceField.h in Headers */, 50316AA610291280003ACFE7 /* CCRenderTexture.h in Headers */, B7D273171822F4AA0054849B /* CCBSequenceProperty.h in Headers */, - 50316AD41029A126003ACFE7 /* CCMotionStreak.h in Headers */, 83E1A86819C8ACA0000A3BCA /* CCPackageManagerDelegate.h in Headers */, D38058201889CE7700822437 /* CCCache.h in Headers */, D309055018AC23110081BF11 /* CCRenderer_Private.h in Headers */, @@ -2143,7 +2134,6 @@ 7A5946B719E372F300F65F90 /* CCEffectNode.h in Headers */, 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */, 7A5946BB19E372F400F65F90 /* CCClippingNode.h in Headers */, - 7A5946BD19E372F400F65F90 /* CCMotionStreak.h in Headers */, 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */, 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */, 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */, @@ -2560,7 +2550,6 @@ 83E1A86519C8ACA0000A3BCA /* CCPackageConstants.m in Sources */, D272032E18FC89A000B100FF /* CCEffectStack.m in Sources */, 50316AA710291280003ACFE7 /* CCRenderTexture.m in Sources */, - 50316AD51029A126003ACFE7 /* CCMotionStreak.m in Sources */, 50E2A15110A45E7F00D894CE /* CCSpriteFrame.m in Sources */, 502C8BE110A661E200D137BA /* CCSpriteFrameCache.m in Sources */, 50E1357610ADEB1B00C9E7FA /* CCTexture.m in Sources */, @@ -2695,7 +2684,6 @@ 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */, 9D9205D71A0173D600FF2D6D /* CCLightCollection.m in Sources */, 7A59480719E375A400F65F90 /* CCClippingNode.m in Sources */, - 7A59480919E375A400F65F90 /* CCMotionStreak.m in Sources */, 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */, 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */, 7A59481119E375A500F65F90 /* CCPackage.m in Sources */, diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index adf64fd6c9a..12307dd3765 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -81,7 +81,6 @@ #import "CCLabelBMFont.h" #import "CCLabelTTF.h" #import "CCLightNode.h" -#import "CCMotionStreak.h" #import "CCNode+Debug.h" #import "CCNode.h" #import "CCNodeColor.h" From ba395a4bcbcaea2f6f942ea39d284416a9b3a1f1 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 8 Feb 2016 00:43:32 +0300 Subject: [PATCH 09/94] CCClippingNode moved to -ext --- .../CCClippingNode}/CCClippingNode.h | 0 .../CCClippingNode}/CCClippingNode.m | 0 cocos2d-tests.xcodeproj/project.pbxproj | 19 +++++++++++++++++++ cocos2d-ui-tests/tests/CCEffectsTest.m | 2 ++ cocos2d-ui-tests/tests/CCRendererTest.m | 1 + cocos2d.xcodeproj/project.pbxproj | 12 ------------ cocos2d/cocos2d.h | 1 - 7 files changed, 22 insertions(+), 13 deletions(-) rename {cocos2d => cocos2d-ext/CCClippingNode}/CCClippingNode.h (100%) rename {cocos2d => cocos2d-ext/CCClippingNode}/CCClippingNode.m (100%) diff --git a/cocos2d/CCClippingNode.h b/cocos2d-ext/CCClippingNode/CCClippingNode.h similarity index 100% rename from cocos2d/CCClippingNode.h rename to cocos2d-ext/CCClippingNode/CCClippingNode.h diff --git a/cocos2d/CCClippingNode.m b/cocos2d-ext/CCClippingNode/CCClippingNode.m similarity index 100% rename from cocos2d/CCClippingNode.m rename to cocos2d-ext/CCClippingNode/CCClippingNode.m diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index 7bd674649dc..a8a999b13de 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -22,6 +22,9 @@ 089949641C67F10A00ECC92C /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; 089949651C67F10A00ECC92C /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; 089949661C67F10A00ECC92C /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; + 0899496C1C67F1BE00ECC92C /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */; }; + 0899496D1C67F1BE00ECC92C /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */; }; + 0899496E1C67F1BE00ECC92C /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */; }; 0E28FE1A197FCE4500F78989 /* CCCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E28FE19197FCE4500F78989 /* CCCacheTest.m */; }; 75556A04185636F100ED1B0F /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75556A03185636F100ED1B0F /* XCTest.framework */; }; 75556A05185636F100ED1B0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605717E7D278007067F0 /* Foundation.framework */; }; @@ -335,6 +338,8 @@ 084782171C6667B000C3817B /* CCTileMaps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTileMaps.h; path = "cocos2d-ext/TileMaps/CCTileMaps.h"; sourceTree = SOURCE_ROOT; }; 089949621C67F10A00ECC92C /* CCMotionStreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMotionStreak.h; sourceTree = ""; }; 089949631C67F10A00ECC92C /* CCMotionStreak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMotionStreak.m; sourceTree = ""; }; + 0899496A1C67F1BE00ECC92C /* CCClippingNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCClippingNode.h; sourceTree = ""; }; + 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCClippingNode.m; sourceTree = ""; }; 0E28FE19197FCE4500F78989 /* CCCacheTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCCacheTest.m; path = "cocos2d-ui-tests/tests/CCCacheTest.m"; sourceTree = SOURCE_ROOT; }; 755569E31856361100ED1B0F /* CCFileUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtilTests.m; sourceTree = ""; }; 755569E41856361100ED1B0F /* CCNodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNodeTests.m; sourceTree = ""; }; @@ -558,6 +563,7 @@ 084781FF1C66666B00C3817B /* cocos2d-ext */ = { isa = PBXGroup; children = ( + 089949691C67F1BE00ECC92C /* CCClippingNode */, 089949611C67F10A00ECC92C /* CCMotionStreak */, 084782151C66669A00C3817B /* TileMaps */, ); @@ -591,6 +597,16 @@ path = "cocos2d-ext/CCMotionStreak"; sourceTree = SOURCE_ROOT; }; + 089949691C67F1BE00ECC92C /* CCClippingNode */ = { + isa = PBXGroup; + children = ( + 0899496A1C67F1BE00ECC92C /* CCClippingNode.h */, + 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */, + ); + name = CCClippingNode; + path = "cocos2d-ext/CCClippingNode"; + sourceTree = SOURCE_ROOT; + }; 755569EC1856361100ED1B0F /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -1275,6 +1291,7 @@ 084782101C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, 084782131C66669300C3817B /* CCTMXXMLParser.m in Sources */, 0847820A1C66669300C3817B /* CCTiledMap.m in Sources */, + 0899496D1C67F1BE00ECC92C /* CCClippingNode.m in Sources */, E525FCAF2CC6D200B8065E2E /* CCPackageCocos2dEnablerTests.m in Sources */, E525FF2E8351476CDD7DEAC4 /* CCPackageManagerTests.m in Sources */, E525F033EECC363CA8EAF2A6 /* CCPackageDownloadManagerTests.m in Sources */, @@ -1317,6 +1334,7 @@ D340E10F185660BE006E605C /* TilemapTest.m in Sources */, B7E2622117E7D3B2007067F0 /* MainMenu.m in Sources */, D3D6CF5F18BD5F0500A51531 /* CCRendererTest.m in Sources */, + 0899496C1C67F1BE00ECC92C /* CCClippingNode.m in Sources */, B70AFC30180F2D7400516435 /* CCTransitionTest.m in Sources */, 758A6C7B18440D5C00D1A8D2 /* ParticleTest.m in Sources */, B7C6238C17ECDF6A00928F91 /* CCTableViewTest.m in Sources */, @@ -1358,6 +1376,7 @@ D3763D5619E73513006C050D /* AppDelegate.m in Sources */, D3763D4C19E734C5006C050D /* CCPhysicsTest.m in Sources */, D3763D4D19E734C5006C050D /* TilemapTest.m in Sources */, + 0899496E1C67F1BE00ECC92C /* CCClippingNode.m in Sources */, D3763D4E19E734C5006C050D /* TextureTest.m in Sources */, D3763D4F19E734C5006C050D /* ColorTest.m in Sources */, D3763D5019E734C5006C050D /* CCBMFontTest.m in Sources */, diff --git a/cocos2d-ui-tests/tests/CCEffectsTest.m b/cocos2d-ui-tests/tests/CCEffectsTest.m index 506b8826f99..1890b9a68d6 100644 --- a/cocos2d-ui-tests/tests/CCEffectsTest.m +++ b/cocos2d-ui-tests/tests/CCEffectsTest.m @@ -5,6 +5,8 @@ #import "CCEffectBlur.h" #import "CCEffectInvert.h" +#import "CCClippingNode.h" + #import "CCEffect_Private.h" #import "CCEffectStack_Private.h" #import "CCLightCollection.h" diff --git a/cocos2d-ui-tests/tests/CCRendererTest.m b/cocos2d-ui-tests/tests/CCRendererTest.m index 17a03631328..1f16db54c4c 100644 --- a/cocos2d-ui-tests/tests/CCRendererTest.m +++ b/cocos2d-ui-tests/tests/CCRendererTest.m @@ -2,6 +2,7 @@ #import "CCTextureCache.h" #import "CCNodeColor.h" #import "CCMotionStreak.h" +#import "CCClippingNode.h" @interface CustomSprite : CCNode @end @implementation CustomSprite diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 1d5a22b1b9b..1edf74b791b 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -27,8 +27,6 @@ 0899494B1C66001900ECC92C /* libObjectAL (Mac).a in Frameworks */ = {isa = PBXBuildFile; fileRef = B15348371BE1E78C0022C4BB /* libObjectAL (Mac).a */; }; 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; - 2B192835163361B10049A044 /* CCClippingNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B192833163361B10049A044 /* CCClippingNode.h */; }; - 2B192836163361B10049A044 /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B192834163361B10049A044 /* CCClippingNode.m */; }; 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; 5015043C113300F900A9CA65 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50150436113300F900A9CA65 /* CCActionProgressTimer.m */; }; 5018F2690DFDEAFF00C013A5 /* CCAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2520DFDEAFF00C013A5 /* CCAction.h */; }; @@ -167,7 +165,6 @@ 7A5946B619E372F300F65F90 /* CCPhysics+ObjectiveChipmunk.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803DC18032E4F0072D8FE /* CCPhysics+ObjectiveChipmunk.h */; }; 7A5946B719E372F300F65F90 /* CCEffectNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031E18FC89A000B100FF /* CCEffectNode.h */; }; 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; - 7A5946BB19E372F400F65F90 /* CCClippingNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B192833163361B10049A044 /* CCClippingNode.h */; }; 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; @@ -315,7 +312,6 @@ 7A59480019E375A300F65F90 /* CCPhysicsNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E518032F390072D8FE /* CCPhysicsNode.m */; }; 7A59480319E375A300F65F90 /* CCEffectNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D272031F18FC89A000B100FF /* CCEffectNode.m */; }; 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */; }; - 7A59480719E375A400F65F90 /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B192834163361B10049A044 /* CCClippingNode.m */; }; 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AA510291280003ACFE7 /* CCRenderTexture.m */; }; 7A59481119E375A500F65F90 /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85B19C8ACA0000A3BCA /* CCPackage.m */; }; @@ -771,8 +767,6 @@ 1435EB821A37BA7000BD04D4 /* GLActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLActivityKit.framework; path = "../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/GLActivityKit.framework"; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 2B192833163361B10049A044 /* CCClippingNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCClippingNode.h; sourceTree = ""; }; - 2B192834163361B10049A044 /* CCClippingNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCClippingNode.m; sourceTree = ""; }; 50150435113300F900A9CA65 /* CCActionProgressTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionProgressTimer.h; sourceTree = ""; }; 50150436113300F900A9CA65 /* CCActionProgressTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionProgressTimer.m; sourceTree = ""; }; 5018F24D0DFDEAC400C013A5 /* libcocos2d.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libcocos2d.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1471,8 +1465,6 @@ D272031F18FC89A000B100FF /* CCEffectNode.m */, 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */, 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */, - 2B192833163361B10049A044 /* CCClippingNode.h */, - 2B192834163361B10049A044 /* CCClippingNode.m */, B791E85B182074C500DAE1D7 /* CCProgressNode.h */, B791E85C182074C500DAE1D7 /* CCProgressNode.m */, 50316AA410291280003ACFE7 /* CCRenderTexture.h */, @@ -2039,7 +2031,6 @@ D268FE1D1980791400ECBCD0 /* CCEffectUtils.h in Headers */, A039EBFF155C686B0061EE37 /* CCNode+Debug.h in Headers */, A0DA0BC315BCDCA200E80A92 /* CCDrawNode.h in Headers */, - 2B192835163361B10049A044 /* CCClippingNode.h in Headers */, 83E1A88A19C8ACDC000A3BCA /* CCPackageInstaller.h in Headers */, B7EE6A1E181AE34600B983FE /* CCSlider.h in Headers */, A003AC8C1657071100C7B792 /* ccFPSImages.h in Headers */, @@ -2133,7 +2124,6 @@ 7A5946B619E372F300F65F90 /* CCPhysics+ObjectiveChipmunk.h in Headers */, 7A5946B719E372F300F65F90 /* CCEffectNode.h in Headers */, 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */, - 7A5946BB19E372F400F65F90 /* CCClippingNode.h in Headers */, 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */, 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */, 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */, @@ -2597,7 +2587,6 @@ A0DA0BC415BCDCA200E80A92 /* CCDrawNode.m in Sources */, D27451AC19AD430A006DA0A1 /* CCEffectDropShadow.m in Sources */, B7EE69E11819E75700B983FE /* CCLayout.m in Sources */, - 2B192836163361B10049A044 /* CCClippingNode.m in Sources */, 9D69E6D719DF604800C2749C /* CCLightNode.m in Sources */, A003AC8F16572D6000C7B792 /* ccFPSImages.m in Sources */, B79F905B17FE2A2E00908504 /* CCTableView.m in Sources */, @@ -2683,7 +2672,6 @@ 7A59480319E375A300F65F90 /* CCEffectNode.m in Sources */, 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */, 9D9205D71A0173D600FF2D6D /* CCLightCollection.m in Sources */, - 7A59480719E375A400F65F90 /* CCClippingNode.m in Sources */, 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */, 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */, 7A59481119E375A500F65F90 /* CCPackage.m in Sources */, diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index 12307dd3765..fca94a76e78 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -57,7 +57,6 @@ #import "CCActionInterval.h" #import "CCActionProgressTimer.h" #import "CCActionTween.h" -#import "CCClippingNode.h" #import "CCColor.h" #import "CCConfiguration.h" #import "CCDirector.h" From bfde24b5ea6475906e9ca500c9ae399156eaf160 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 8 Feb 2016 00:48:21 +0300 Subject: [PATCH 10/94] CCParticles moved to -ext --- .../CCParticles}/CCParticleBatchNode.h | 0 .../CCParticles}/CCParticleBatchNode.m | 0 .../CCParticles}/CCParticleExamples.h | 0 .../CCParticles}/CCParticleExamples.m | 0 .../CCParticles}/CCParticleSystem.h | 0 .../CCParticles}/CCParticleSystem.m | 0 .../CCParticles}/CCParticleSystemBase.h | 0 .../CCParticles}/CCParticleSystemBase.m | 0 .../CCParticleSystemBase_Private.h | 0 .../CCParticles}/CCParticleSystem_Private.h | 0 cocos2d-ext/CCParticles/CCParticles.h | 10 +++ cocos2d-tests.xcodeproj/project.pbxproj | 55 +++++++++++++++ cocos2d-ui-tests/tests/ParticleTest.m | 1 + cocos2d.xcodeproj/project.pbxproj | 70 ------------------- cocos2d/cocos2d.h | 2 - 15 files changed, 66 insertions(+), 72 deletions(-) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleBatchNode.h (100%) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleBatchNode.m (100%) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleExamples.h (100%) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleExamples.m (100%) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleSystem.h (100%) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleSystem.m (100%) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleSystemBase.h (100%) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleSystemBase.m (100%) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleSystemBase_Private.h (100%) rename {cocos2d => cocos2d-ext/CCParticles}/CCParticleSystem_Private.h (100%) create mode 100644 cocos2d-ext/CCParticles/CCParticles.h diff --git a/cocos2d/CCParticleBatchNode.h b/cocos2d-ext/CCParticles/CCParticleBatchNode.h similarity index 100% rename from cocos2d/CCParticleBatchNode.h rename to cocos2d-ext/CCParticles/CCParticleBatchNode.h diff --git a/cocos2d/CCParticleBatchNode.m b/cocos2d-ext/CCParticles/CCParticleBatchNode.m similarity index 100% rename from cocos2d/CCParticleBatchNode.m rename to cocos2d-ext/CCParticles/CCParticleBatchNode.m diff --git a/cocos2d/CCParticleExamples.h b/cocos2d-ext/CCParticles/CCParticleExamples.h similarity index 100% rename from cocos2d/CCParticleExamples.h rename to cocos2d-ext/CCParticles/CCParticleExamples.h diff --git a/cocos2d/CCParticleExamples.m b/cocos2d-ext/CCParticles/CCParticleExamples.m similarity index 100% rename from cocos2d/CCParticleExamples.m rename to cocos2d-ext/CCParticles/CCParticleExamples.m diff --git a/cocos2d/CCParticleSystem.h b/cocos2d-ext/CCParticles/CCParticleSystem.h similarity index 100% rename from cocos2d/CCParticleSystem.h rename to cocos2d-ext/CCParticles/CCParticleSystem.h diff --git a/cocos2d/CCParticleSystem.m b/cocos2d-ext/CCParticles/CCParticleSystem.m similarity index 100% rename from cocos2d/CCParticleSystem.m rename to cocos2d-ext/CCParticles/CCParticleSystem.m diff --git a/cocos2d/CCParticleSystemBase.h b/cocos2d-ext/CCParticles/CCParticleSystemBase.h similarity index 100% rename from cocos2d/CCParticleSystemBase.h rename to cocos2d-ext/CCParticles/CCParticleSystemBase.h diff --git a/cocos2d/CCParticleSystemBase.m b/cocos2d-ext/CCParticles/CCParticleSystemBase.m similarity index 100% rename from cocos2d/CCParticleSystemBase.m rename to cocos2d-ext/CCParticles/CCParticleSystemBase.m diff --git a/cocos2d/CCParticleSystemBase_Private.h b/cocos2d-ext/CCParticles/CCParticleSystemBase_Private.h similarity index 100% rename from cocos2d/CCParticleSystemBase_Private.h rename to cocos2d-ext/CCParticles/CCParticleSystemBase_Private.h diff --git a/cocos2d/CCParticleSystem_Private.h b/cocos2d-ext/CCParticles/CCParticleSystem_Private.h similarity index 100% rename from cocos2d/CCParticleSystem_Private.h rename to cocos2d-ext/CCParticles/CCParticleSystem_Private.h diff --git a/cocos2d-ext/CCParticles/CCParticles.h b/cocos2d-ext/CCParticles/CCParticles.h new file mode 100644 index 00000000000..d09dbb23722 --- /dev/null +++ b/cocos2d-ext/CCParticles/CCParticles.h @@ -0,0 +1,10 @@ +// +// CCParticles.h +// cocos2d-tests +// +// Created by Andrey Volodin on 08.02.16. +// Copyright © 2016 Cocos2d. All rights reserved. +// + +#import "CCParticleExamples.h" +#import "CCParticleSystem.h" diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index a8a999b13de..ba769cd4097 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -25,6 +25,18 @@ 0899496C1C67F1BE00ECC92C /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */; }; 0899496D1C67F1BE00ECC92C /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */; }; 0899496E1C67F1BE00ECC92C /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */; }; + 0899497A1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949711C67F2D600ECC92C /* CCParticleBatchNode.m */; }; + 0899497B1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949711C67F2D600ECC92C /* CCParticleBatchNode.m */; }; + 0899497C1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949711C67F2D600ECC92C /* CCParticleBatchNode.m */; }; + 0899497D1C67F2D600ECC92C /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949731C67F2D600ECC92C /* CCParticleExamples.m */; }; + 0899497E1C67F2D600ECC92C /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949731C67F2D600ECC92C /* CCParticleExamples.m */; }; + 0899497F1C67F2D600ECC92C /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949731C67F2D600ECC92C /* CCParticleExamples.m */; }; + 089949801C67F2D600ECC92C /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949751C67F2D600ECC92C /* CCParticleSystem.m */; }; + 089949811C67F2D600ECC92C /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949751C67F2D600ECC92C /* CCParticleSystem.m */; }; + 089949821C67F2D600ECC92C /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949751C67F2D600ECC92C /* CCParticleSystem.m */; }; + 089949831C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */; }; + 089949841C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */; }; + 089949851C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */; }; 0E28FE1A197FCE4500F78989 /* CCCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E28FE19197FCE4500F78989 /* CCCacheTest.m */; }; 75556A04185636F100ED1B0F /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75556A03185636F100ED1B0F /* XCTest.framework */; }; 75556A05185636F100ED1B0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605717E7D278007067F0 /* Foundation.framework */; }; @@ -340,6 +352,17 @@ 089949631C67F10A00ECC92C /* CCMotionStreak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMotionStreak.m; sourceTree = ""; }; 0899496A1C67F1BE00ECC92C /* CCClippingNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCClippingNode.h; sourceTree = ""; }; 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCClippingNode.m; sourceTree = ""; }; + 089949701C67F2D600ECC92C /* CCParticleBatchNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleBatchNode.h; sourceTree = ""; }; + 089949711C67F2D600ECC92C /* CCParticleBatchNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleBatchNode.m; sourceTree = ""; }; + 089949721C67F2D600ECC92C /* CCParticleExamples.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleExamples.h; sourceTree = ""; }; + 089949731C67F2D600ECC92C /* CCParticleExamples.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleExamples.m; sourceTree = ""; }; + 089949741C67F2D600ECC92C /* CCParticleSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystem.h; sourceTree = ""; }; + 089949751C67F2D600ECC92C /* CCParticleSystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleSystem.m; sourceTree = ""; }; + 089949761C67F2D600ECC92C /* CCParticleSystem_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystem_Private.h; sourceTree = ""; }; + 089949771C67F2D600ECC92C /* CCParticleSystemBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystemBase.h; sourceTree = ""; }; + 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleSystemBase.m; sourceTree = ""; }; + 089949791C67F2D600ECC92C /* CCParticleSystemBase_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystemBase_Private.h; sourceTree = ""; }; + 089949861C67F2E400ECC92C /* CCParticles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCParticles.h; sourceTree = ""; }; 0E28FE19197FCE4500F78989 /* CCCacheTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCCacheTest.m; path = "cocos2d-ui-tests/tests/CCCacheTest.m"; sourceTree = SOURCE_ROOT; }; 755569E31856361100ED1B0F /* CCFileUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtilTests.m; sourceTree = ""; }; 755569E41856361100ED1B0F /* CCNodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNodeTests.m; sourceTree = ""; }; @@ -563,6 +586,7 @@ 084781FF1C66666B00C3817B /* cocos2d-ext */ = { isa = PBXGroup; children = ( + 0899496F1C67F2D600ECC92C /* CCParticles */, 089949691C67F1BE00ECC92C /* CCClippingNode */, 089949611C67F10A00ECC92C /* CCMotionStreak */, 084782151C66669A00C3817B /* TileMaps */, @@ -607,6 +631,25 @@ path = "cocos2d-ext/CCClippingNode"; sourceTree = SOURCE_ROOT; }; + 0899496F1C67F2D600ECC92C /* CCParticles */ = { + isa = PBXGroup; + children = ( + 089949861C67F2E400ECC92C /* CCParticles.h */, + 089949701C67F2D600ECC92C /* CCParticleBatchNode.h */, + 089949711C67F2D600ECC92C /* CCParticleBatchNode.m */, + 089949721C67F2D600ECC92C /* CCParticleExamples.h */, + 089949731C67F2D600ECC92C /* CCParticleExamples.m */, + 089949741C67F2D600ECC92C /* CCParticleSystem.h */, + 089949751C67F2D600ECC92C /* CCParticleSystem.m */, + 089949761C67F2D600ECC92C /* CCParticleSystem_Private.h */, + 089949771C67F2D600ECC92C /* CCParticleSystemBase.h */, + 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */, + 089949791C67F2D600ECC92C /* CCParticleSystemBase_Private.h */, + ); + name = CCParticles; + path = "cocos2d-ext/CCParticles"; + sourceTree = SOURCE_ROOT; + }; 755569EC1856361100ED1B0F /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -1281,6 +1324,7 @@ 75556A171856370A00ED1B0F /* CCNodeTests.m in Sources */, D3395F1A187F83E600F22C74 /* CCMemoryTests.m in Sources */, 75556A181856370A00ED1B0F /* CCPhysicsTests.m in Sources */, + 0899497B1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */, D34CD3C518ABF4AA00D8E537 /* CCRendererTests.m in Sources */, 089949651C67F10A00ECC92C /* CCMotionStreak.m in Sources */, 75556A191856370A00ED1B0F /* CCSchedulerTests.m in Sources */, @@ -1294,9 +1338,12 @@ 0899496D1C67F1BE00ECC92C /* CCClippingNode.m in Sources */, E525FCAF2CC6D200B8065E2E /* CCPackageCocos2dEnablerTests.m in Sources */, E525FF2E8351476CDD7DEAC4 /* CCPackageManagerTests.m in Sources */, + 089949841C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */, E525F033EECC363CA8EAF2A6 /* CCPackageDownloadManagerTests.m in Sources */, + 0899497E1C67F2D600ECC92C /* CCParticleExamples.m in Sources */, E525F4D0568A8A4176684936 /* CCPackageHelperTests.m in Sources */, E525FCD390330D4F4EBD76CC /* CCPackagesTestFixturesAndHelpers.m in Sources */, + 089949811C67F2D600ECC92C /* CCParticleSystem.m in Sources */, E525FA366EFEEF054FB0C74A /* CCSpriteFrameCacheTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1317,12 +1364,15 @@ B7E2621C17E7D370007067F0 /* main.m in Sources */, B7EE69811818760700B983FE /* CCSprite9SliceTest.m in Sources */, B7EE6A28181B075E00B983FE /* CCSliderTest.m in Sources */, + 0899497D1C67F2D600ECC92C /* CCParticleExamples.m in Sources */, 0847820F1C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, 089949641C67F10A00ECC92C /* CCMotionStreak.m in Sources */, 084782121C66669300C3817B /* CCTMXXMLParser.m in Sources */, 084782091C66669300C3817B /* CCTiledMap.m in Sources */, A6167B93189A7D4D0044D391 /* VertexZTest.m in Sources */, B772F69F1811C8D9005C069B /* CCResponderTest.m in Sources */, + 0899497A1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */, + 089949801C67F2D600ECC92C /* CCParticleSystem.m in Sources */, D2B4894C1917EE6700C3443A /* CCEffectsTest.m in Sources */, B77060141831A17C0043CC67 /* ObjectALTest.m in Sources */, B7EE69CF1819D82300B983FE /* CCLayoutTest.m in Sources */, @@ -1331,6 +1381,7 @@ 7587BDB3185A0A6900EEEFDE /* TextureTest.m in Sources */, D3C9C867188078B900C58900 /* CCSchedulerTest.m in Sources */, 7587BDB7185A64AD00EEEFDE /* ColorTest.m in Sources */, + 089949831C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */, D340E10F185660BE006E605C /* TilemapTest.m in Sources */, B7E2622117E7D3B2007067F0 /* MainMenu.m in Sources */, D3D6CF5F18BD5F0500A51531 /* CCRendererTest.m in Sources */, @@ -1359,12 +1410,15 @@ D3763D3F19E734C5006C050D /* CCSchedulerTest.m in Sources */, D3763D4019E734C5006C050D /* CCTableViewTest.m in Sources */, D3763D4119E734C5006C050D /* CCTransitionTest.m in Sources */, + 0899497F1C67F2D600ECC92C /* CCParticleExamples.m in Sources */, 084782111C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, 089949661C67F10A00ECC92C /* CCMotionStreak.m in Sources */, 084782141C66669300C3817B /* CCTMXXMLParser.m in Sources */, 0847820B1C66669300C3817B /* CCTiledMap.m in Sources */, D3763D4219E734C5006C050D /* CCResponderTest.m in Sources */, D3763D4319E734C5006C050D /* CCSprite9SliceTest.m in Sources */, + 0899497C1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */, + 089949821C67F2D600ECC92C /* CCParticleSystem.m in Sources */, D3763D4419E734C5006C050D /* CCTextFieldTest.m in Sources */, D3763D4519E734C5006C050D /* CCLayoutTest.m in Sources */, D3763D4619E734C5006C050D /* CCSliderTest.m in Sources */, @@ -1373,6 +1427,7 @@ D3763D4919E734C5006C050D /* CCLabelTTFTest.m in Sources */, D3763D4A19E734C5006C050D /* ParallaxTest.m in Sources */, D3763D4B19E734C5006C050D /* ParticleTest.m in Sources */, + 089949851C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */, D3763D5619E73513006C050D /* AppDelegate.m in Sources */, D3763D4C19E734C5006C050D /* CCPhysicsTest.m in Sources */, D3763D4D19E734C5006C050D /* TilemapTest.m in Sources */, diff --git a/cocos2d-ui-tests/tests/ParticleTest.m b/cocos2d-ui-tests/tests/ParticleTest.m index c4fad31adad..0435fc814a8 100644 --- a/cocos2d-ui-tests/tests/ParticleTest.m +++ b/cocos2d-ui-tests/tests/ParticleTest.m @@ -7,6 +7,7 @@ #import "TestBase.h" #import "CCTextureCache.h" +#import "CCParticles.h" @interface ParticleTest : TestBase @property (readwrite, retain) CCParticleSystemBase *emitter; diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 1edf74b791b..3c0ec97630a 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -61,10 +61,6 @@ 503798C60F912C2000986724 /* CGPointExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 503798C40F912C2000986724 /* CGPointExtension.h */; }; 503798C70F912C2000986724 /* CGPointExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 503798C50F912C2000986724 /* CGPointExtension.m */; }; 503862E6110072BC005D2C92 /* CCConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 503862D911007181005D2C92 /* CCConfiguration.m */; }; - 5038B6B20E196CD8009A621E /* CCParticleSystemBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 5038B6B00E196CD8009A621E /* CCParticleSystemBase.h */; }; - 5038B6B30E196CD8009A621E /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 5038B6B10E196CD8009A621E /* CCParticleSystemBase.m */; }; - 504055B00E3230BD00213FEF /* CCParticleExamples.h in Headers */ = {isa = PBXBuildFile; fileRef = 504055AE0E3230BD00213FEF /* CCParticleExamples.h */; }; - 504055B10E3230BD00213FEF /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 504055AF0E3230BD00213FEF /* CCParticleExamples.m */; }; 505462FC1062768000AB7C52 /* ccConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 505462FB1062768000AB7C52 /* ccConfig.h */; }; 506602110E38A70D000B500E /* CCScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5066020F0E38A70D000B500E /* CCScheduler.h */; }; 506602120E38A70D000B500E /* CCScheduler.m in Sources */ = {isa = PBXBuildFile; fileRef = 506602100E38A70D000B500E /* CCScheduler.m */; }; @@ -77,8 +73,6 @@ 50C508C70F7C194400799124 /* CCFileUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 50C508C50F7C194400799124 /* CCFileUtils.m */; }; 50CB3B0E100AC43A00B7A750 /* CCActionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */; }; 50CB3B0F100AC43A00B7A750 /* CCActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */; }; - 50D413260F9A3FE00040C3C8 /* CCParticleSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D413240F9A3FE00040C3C8 /* CCParticleSystem.h */; }; - 50D413270F9A3FE00040C3C8 /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D413250F9A3FE00040C3C8 /* CCParticleSystem.m */; }; 50D898F31192CB7500458C29 /* uthash.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D898EF1192CB7500458C29 /* uthash.h */; }; 50E1357510ADEB1B00C9E7FA /* CCTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E1357110ADEB1B00C9E7FA /* CCTexture.h */; }; 50E1357610ADEB1B00C9E7FA /* CCTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E1357210ADEB1B00C9E7FA /* CCTexture.m */; }; @@ -146,13 +140,6 @@ 7A59468D19E372F000F65F90 /* CCResponder.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734817C78EF3004343C8 /* CCResponder.h */; }; 7A59469119E372F000F65F90 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; 7A59469319E372F000F65F90 /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; - 7A59469519E372F000F65F90 /* CCParticleSystemBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 5038B6B00E196CD8009A621E /* CCParticleSystemBase.h */; }; - 7A59469719E372F100F65F90 /* CCParticleSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D413240F9A3FE00040C3C8 /* CCParticleSystem.h */; }; - 7A59469919E372F100F65F90 /* CCParticleBatchNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C20AC6144FDAF700D84B47 /* CCParticleBatchNode.h */; }; - 7A59469B19E372F100F65F90 /* CCParticleExamples.h in Headers */ = {isa = PBXBuildFile; fileRef = 504055AE0E3230BD00213FEF /* CCParticleExamples.h */; }; - 7A59469C19E372F100F65F90 /* CCParticleExamples.m in Headers */ = {isa = PBXBuildFile; fileRef = 504055AF0E3230BD00213FEF /* CCParticleExamples.m */; }; - 7A59469D19E372F100F65F90 /* CCParticleSystemBase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D14C18204BEC00E7BFCD /* CCParticleSystemBase_Private.h */; }; - 7A59469E19E372F100F65F90 /* CCParticleSystem_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D15218205EFB00E7BFCD /* CCParticleSystem_Private.h */; }; 7A59469F19E372F100F65F90 /* CCParallaxNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C6C6A0FB87970002BF3C2 /* CCParallaxNode.h */; }; 7A5946A019E372F100F65F90 /* CCParallaxNode.m in Headers */ = {isa = PBXBuildFile; fileRef = 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */; }; 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2600DFDEAFF00C013A5 /* CCScene.h */; }; @@ -299,10 +286,6 @@ 7A5947D619E3759F00F65F90 /* CCSpriteFrameCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C8BDF10A661E200D137BA /* CCSpriteFrameCache.m */; }; 7A5947D919E3759F00F65F90 /* CCResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734917C78EF3004343C8 /* CCResponder.m */; }; 7A5947DB19E3759F00F65F90 /* CCResponderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734417C788EB004343C8 /* CCResponderManager.m */; }; - 7A5947E119E375A000F65F90 /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 5038B6B10E196CD8009A621E /* CCParticleSystemBase.m */; }; - 7A5947E319E375A000F65F90 /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D413250F9A3FE00040C3C8 /* CCParticleSystem.m */; }; - 7A5947E519E375A000F65F90 /* CCParticleBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C20AC7144FDAF700D84B47 /* CCParticleBatchNode.m */; }; - 7A5947E719E375A000F65F90 /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 504055AF0E3230BD00213FEF /* CCParticleExamples.m */; }; 7A5947EB19E375A100F65F90 /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */; }; 7A5947F619E375A200F65F90 /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2610DFDEAFF00C013A5 /* CCScene.m */; }; 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; @@ -447,8 +430,6 @@ A06D9C141728D5F600704732 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A06D9C131728D5F600704732 /* CoreText.framework */; }; A0A7A53C1514F27D00C8BD16 /* CCActionCatmullRom.h in Headers */ = {isa = PBXBuildFile; fileRef = A0A7A53A1514F27D00C8BD16 /* CCActionCatmullRom.h */; }; A0A7A53D1514F27D00C8BD16 /* CCActionCatmullRom.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A7A53B1514F27D00C8BD16 /* CCActionCatmullRom.m */; }; - A0C20AC8144FDAF700D84B47 /* CCParticleBatchNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C20AC6144FDAF700D84B47 /* CCParticleBatchNode.h */; }; - A0C20AC9144FDAF700D84B47 /* CCParticleBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C20AC7144FDAF700D84B47 /* CCParticleBatchNode.m */; }; A0C87D1A14F9A3A100C0E8B2 /* NSThread+performBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C87D1814F9A3A100C0E8B2 /* NSThread+performBlock.h */; }; A0C87D1B14F9A3A100C0E8B2 /* NSThread+performBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C87D1914F9A3A100C0E8B2 /* NSThread+performBlock.m */; }; A0DA0BC315BCDCA200E80A92 /* CCDrawNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DA0BC115BCDCA200E80A92 /* CCDrawNode.h */; }; @@ -481,8 +462,6 @@ B798D13D181F2E4500E7BFCD /* CCNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D13C181F2E4500E7BFCD /* CCNode_Private.h */; }; B798D143181F469100E7BFCD /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; B798D1451820305400E7BFCD /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; - B798D14D18204BEC00E7BFCD /* CCParticleSystemBase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D14C18204BEC00E7BFCD /* CCParticleSystemBase_Private.h */; }; - B798D15318205EFB00E7BFCD /* CCParticleSystem_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D15218205EFB00E7BFCD /* CCParticleSystem_Private.h */; }; B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = B79F905817FE2A2E00908504 /* CCTableView.h */; }; B79F905B17FE2A2E00908504 /* CCTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B79F905917FE2A2E00908504 /* CCTableView.m */; }; B7D2730F1822F4AA0054849B /* CCBKeyframe.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273021822F4AA0054849B /* CCBKeyframe.h */; }; @@ -801,10 +780,6 @@ 503798C40F912C2000986724 /* CGPointExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CGPointExtension.h; sourceTree = ""; }; 503798C50F912C2000986724 /* CGPointExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CGPointExtension.m; sourceTree = ""; }; 503862D911007181005D2C92 /* CCConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCConfiguration.m; sourceTree = ""; }; - 5038B6B00E196CD8009A621E /* CCParticleSystemBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystemBase.h; sourceTree = ""; }; - 5038B6B10E196CD8009A621E /* CCParticleSystemBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleSystemBase.m; sourceTree = ""; }; - 504055AE0E3230BD00213FEF /* CCParticleExamples.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleExamples.h; sourceTree = ""; }; - 504055AF0E3230BD00213FEF /* CCParticleExamples.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleExamples.m; sourceTree = ""; }; 505462FB1062768000AB7C52 /* ccConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccConfig.h; sourceTree = ""; }; 5066020F0E38A70D000B500E /* CCScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCScheduler.h; sourceTree = ""; }; 506602100E38A70D000B500E /* CCScheduler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCScheduler.m; sourceTree = ""; }; @@ -820,8 +795,6 @@ 50C508C50F7C194400799124 /* CCFileUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtils.m; sourceTree = ""; }; 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionManager.h; sourceTree = ""; }; 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionManager.m; sourceTree = ""; }; - 50D413240F9A3FE00040C3C8 /* CCParticleSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystem.h; sourceTree = ""; }; - 50D413250F9A3FE00040C3C8 /* CCParticleSystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleSystem.m; sourceTree = ""; }; 50D898EF1192CB7500458C29 /* uthash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uthash.h; sourceTree = ""; }; 50E1357110ADEB1B00C9E7FA /* CCTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTexture.h; sourceTree = ""; }; 50E1357210ADEB1B00C9E7FA /* CCTexture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTexture.m; sourceTree = ""; }; @@ -913,8 +886,6 @@ A07EC9B2141A8D32008C1F12 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = ""; }; A0A7A53A1514F27D00C8BD16 /* CCActionCatmullRom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionCatmullRom.h; sourceTree = ""; }; A0A7A53B1514F27D00C8BD16 /* CCActionCatmullRom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionCatmullRom.m; sourceTree = ""; }; - A0C20AC6144FDAF700D84B47 /* CCParticleBatchNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleBatchNode.h; sourceTree = ""; }; - A0C20AC7144FDAF700D84B47 /* CCParticleBatchNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleBatchNode.m; sourceTree = ""; }; A0C87D1814F9A3A100C0E8B2 /* NSThread+performBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSThread+performBlock.h"; sourceTree = ""; }; A0C87D1914F9A3A100C0E8B2 /* NSThread+performBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSThread+performBlock.m"; sourceTree = ""; }; A0DA0BC115BCDCA200E80A92 /* CCDrawNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCDrawNode.h; sourceTree = ""; }; @@ -951,8 +922,6 @@ B798D13C181F2E4500E7BFCD /* CCNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNode_Private.h; sourceTree = ""; }; B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLabelBMFont_Private.h; sourceTree = ""; }; B798D1441820305400E7BFCD /* CCSprite_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite_Private.h; sourceTree = ""; }; - B798D14C18204BEC00E7BFCD /* CCParticleSystemBase_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystemBase_Private.h; sourceTree = ""; }; - B798D15218205EFB00E7BFCD /* CCParticleSystem_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystem_Private.h; sourceTree = ""; }; B79F905817FE2A2E00908504 /* CCTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTableView.h; path = "cocos2d-ui/CCTableView.h"; sourceTree = ""; }; B79F905917FE2A2E00908504 /* CCTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTableView.m; path = "cocos2d-ui/CCTableView.m"; sourceTree = ""; }; B7C6237917EA7D8600928F91 /* cocos2d-ui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "cocos2d-ui.h"; path = "cocos2d-ui/cocos2d-ui.h"; sourceTree = ""; }; @@ -1261,7 +1230,6 @@ 506414C50F9C67C0007A7B24 /* Label Nodes */, 506414C40F9C6792007A7B24 /* Sprite & Animation Nodes */, A6A0734717C78E55004343C8 /* Touch & Mouse Handling */, - 50A24E890F378119007CAEB0 /* Particle Nodes */, 506414C30F9C6769007A7B24 /* Layers, Scenes, Transitions Nodes */, A0D7D9D415E2E737000CA0C4 /* Physics */, 50EA8DA011354A6000746D2A /* Misc Nodes */, @@ -1404,23 +1372,6 @@ name = Actions; sourceTree = ""; }; - 50A24E890F378119007CAEB0 /* Particle Nodes */ = { - isa = PBXGroup; - children = ( - 5038B6B00E196CD8009A621E /* CCParticleSystemBase.h */, - 5038B6B10E196CD8009A621E /* CCParticleSystemBase.m */, - 50D413240F9A3FE00040C3C8 /* CCParticleSystem.h */, - 50D413250F9A3FE00040C3C8 /* CCParticleSystem.m */, - A0C20AC6144FDAF700D84B47 /* CCParticleBatchNode.h */, - A0C20AC7144FDAF700D84B47 /* CCParticleBatchNode.m */, - 504055AE0E3230BD00213FEF /* CCParticleExamples.h */, - 504055AF0E3230BD00213FEF /* CCParticleExamples.m */, - B798D14C18204BEC00E7BFCD /* CCParticleSystemBase_Private.h */, - B798D15218205EFB00E7BFCD /* CCParticleSystem_Private.h */, - ); - name = "Particle Nodes"; - sourceTree = ""; - }; 50A24F010F3788C6007CAEB0 /* Base Nodes */ = { isa = PBXGroup; children = ( @@ -1910,11 +1861,9 @@ 5018F2770DFDEAFF00C013A5 /* CCScene.h in Headers */, 5018F27D0DFDEAFF00C013A5 /* CCTextureCache.h in Headers */, D380581A1889AD6000822437 /* CCRenderer.h in Headers */, - 5038B6B20E196CD8009A621E /* CCParticleSystemBase.h in Headers */, 9D856721191B019900573093 /* CCEffectContrast.h in Headers */, 50F9E8170E1AA34E000E7616 /* ccTypes.h in Headers */, D3A2E7D2181E12750033614C /* CCPhysicsShape.h in Headers */, - 504055B00E3230BD00213FEF /* CCParticleExamples.h in Headers */, D24160FD1958F6EE003673BD /* CCAnimationManager_Private.h in Headers */, 506602110E38A70D000B500E /* CCScheduler.h in Headers */, D24161001958F6EE003673BD /* CCAnimationManager+FrameAnimation.h in Headers */, @@ -1936,7 +1885,6 @@ D268FE231980791C00ECBCD0 /* CCEffectStack_Private.h in Headers */, 9D9205D21A0173D600FF2D6D /* CCLightCollection.h in Headers */, 503798C60F912C2000986724 /* CGPointExtension.h in Headers */, - 50D413260F9A3FE00040C3C8 /* CCParticleSystem.h in Headers */, 502C6C6C0FB87970002BF3C2 /* CCParallaxNode.h in Headers */, 571CD02A19649E03003D460C /* CCPlatformTextFieldIOS.h in Headers */, B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */, @@ -2010,7 +1958,6 @@ B7E775D018527EF0004221AA /* CCAppDelegate.h in Headers */, E0BC7D9F1342CE7B001B4DCC /* CCShader.h in Headers */, D39FA9C818C1BC6B00441627 /* CCShader_Private.h in Headers */, - A0C20AC8144FDAF700D84B47 /* CCParticleBatchNode.h in Headers */, A046E29314C1DB7D0005BBF2 /* CCDirectorMac.h in Headers */, A046E29714C1DB7D0005BBF2 /* CCGLView.h in Headers */, D34CAD6119C3A0B5009BED7A /* NSValue+CCRenderer.h in Headers */, @@ -2024,7 +1971,6 @@ D27451C619B111A9006DA0A1 /* CCEffectDFOutline.h in Headers */, A6DC4E0918055DCC00C280A6 /* CCTransition.h in Headers */, B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */, - B798D14D18204BEC00E7BFCD /* CCParticleSystemBase_Private.h in Headers */, D25B4F4B194A499700DA9D60 /* CCTouch.h in Headers */, D241610D1958F72B003673BD /* CCEffectSaturation.h in Headers */, A0A7A53C1514F27D00C8BD16 /* CCActionCatmullRom.h in Headers */, @@ -2042,7 +1988,6 @@ A6A0734A17C78EF3004343C8 /* CCResponder.h in Headers */, D268FE0D198078FF00ECBCD0 /* CCEffectBloom.h in Headers */, B78AE46217E7AF1C0028BE0B /* CCButton.h in Headers */, - B798D15318205EFB00E7BFCD /* CCParticleSystem_Private.h in Headers */, D26A042A194B815500503BEC /* CCTouchEvent.h in Headers */, B78AE46417E7AF1C0028BE0B /* CCControl.h in Headers */, 9DDD047E19DE154400687820 /* CCEffectLighting.h in Headers */, @@ -2105,13 +2050,6 @@ 7A59468D19E372F000F65F90 /* CCResponder.h in Headers */, 7A59469119E372F000F65F90 /* CCTouch.h in Headers */, 7A59469319E372F000F65F90 /* CCTouchEvent.h in Headers */, - 7A59469519E372F000F65F90 /* CCParticleSystemBase.h in Headers */, - 7A59469719E372F100F65F90 /* CCParticleSystem.h in Headers */, - 7A59469919E372F100F65F90 /* CCParticleBatchNode.h in Headers */, - 7A59469B19E372F100F65F90 /* CCParticleExamples.h in Headers */, - 7A59469C19E372F100F65F90 /* CCParticleExamples.m in Headers */, - 7A59469D19E372F100F65F90 /* CCParticleSystemBase_Private.h in Headers */, - 7A59469E19E372F100F65F90 /* CCParticleSystem_Private.h in Headers */, 7A59469F19E372F100F65F90 /* CCParallaxNode.h in Headers */, 7A5946A019E372F100F65F90 /* CCParallaxNode.m in Headers */, 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */, @@ -2505,8 +2443,6 @@ 9D2773B81AB77F3800D19A11 /* CCEffectStereo.m in Sources */, 5018F27E0DFDEAFF00C013A5 /* CCTextureCache.m in Sources */, D31C795019994126007921E1 /* CCMetalSupport.m in Sources */, - 5038B6B30E196CD8009A621E /* CCParticleSystemBase.m in Sources */, - 504055B10E3230BD00213FEF /* CCParticleExamples.m in Sources */, 506602120E38A70D000B500E /* CCScheduler.m in Sources */, D24161031958F6EE003673BD /* CCBAnimationManager.m in Sources */, 50A07B7B0E4CBCD300AAF0BB /* cocos2d.m in Sources */, @@ -2525,7 +2461,6 @@ D272032C18FC89A000B100FF /* CCEffectNode.m in Sources */, 503798C70F912C2000986724 /* CGPointExtension.m in Sources */, D268FE1B1980791400ECBCD0 /* CCEffectRefraction.m in Sources */, - 50D413270F9A3FE00040C3C8 /* CCParticleSystem.m in Sources */, 502C6C6D0FB87970002BF3C2 /* CCParallaxNode.m in Sources */, 50CB3B0F100AC43A00B7A750 /* CCActionManager.m in Sources */, D3903B11199528A0003AA81A /* CCRenderDispatch.m in Sources */, @@ -2568,7 +2503,6 @@ E02BB6D7126CA93A006E46A2 /* CCAnimationCache.m in Sources */, E02BB705126CADEA006E46A2 /* CCAnimation.m in Sources */, E0BC7DA01342CE7B001B4DCC /* CCShader.m in Sources */, - A0C20AC9144FDAF700D84B47 /* CCParticleBatchNode.m in Sources */, A046E29414C1DB7D0005BBF2 /* CCDirectorMac.m in Sources */, A046E29814C1DB7D0005BBF2 /* CCGLView.m in Sources */, A046E29A14C1DB7E0005BBF2 /* CCWindow.m in Sources */, @@ -2658,10 +2592,6 @@ 7A5947D619E3759F00F65F90 /* CCSpriteFrameCache.m in Sources */, 7A5947D919E3759F00F65F90 /* CCResponder.m in Sources */, 7A5947DB19E3759F00F65F90 /* CCResponderManager.m in Sources */, - 7A5947E119E375A000F65F90 /* CCParticleSystemBase.m in Sources */, - 7A5947E319E375A000F65F90 /* CCParticleSystem.m in Sources */, - 7A5947E519E375A000F65F90 /* CCParticleBatchNode.m in Sources */, - 7A5947E719E375A000F65F90 /* CCParticleExamples.m in Sources */, 7A5947EB19E375A100F65F90 /* CCParallaxNode.m in Sources */, 7A5947F619E375A200F65F90 /* CCScene.m in Sources */, 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */, diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index fca94a76e78..d5568b383ba 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -84,8 +84,6 @@ #import "CCNode.h" #import "CCNodeColor.h" #import "CCParallaxNode.h" -#import "CCParticleExamples.h" -#import "CCParticleSystem.h" #import "CCProtocols.h" #import "CCRenderTexture.h" #import "CCScene.h" From 88a0a76cf9ce9642487bdf8528b3c456be893a9d Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 8 Feb 2016 01:17:14 +0300 Subject: [PATCH 11/94] CCPackages moved to -ext --- .../CCPackages}/CCPackage.h | 0 .../CCPackages}/CCPackage.m | 0 .../CCPackages}/CCPackageCocos2dEnabler.h | 0 .../CCPackages}/CCPackageCocos2dEnabler.m | 0 .../CCPackages}/CCPackageConstants.h | 0 .../CCPackages}/CCPackageConstants.m | 0 .../CCPackages}/CCPackageDownload.h | 0 .../CCPackages}/CCPackageDownload.m | 0 .../CCPackages}/CCPackageDownloadDelegate.h | 0 .../CCPackages}/CCPackageDownloadManager.h | 0 .../CCPackages}/CCPackageDownloadManager.m | 0 .../CCPackageDownloadManagerDelegate.h | 0 .../CCPackages}/CCPackageHelper.h | 0 .../CCPackages}/CCPackageHelper.m | 0 .../CCPackages}/CCPackageInstaller.h | 0 .../CCPackages}/CCPackageInstaller.m | 0 .../CCPackages}/CCPackageManager.h | 0 .../CCPackages}/CCPackageManager.m | 0 .../CCPackages}/CCPackageManagerDelegate.h | 0 .../CCPackages}/CCPackageManager_private.h | 0 .../CCPackages}/CCPackageTypes.h | 0 .../CCPackages}/CCPackageUnzipper.h | 2 +- .../CCPackages}/CCPackageUnzipper.m | 2 +- .../CCPackages}/CCPackageUnzipperDelegate.h | 0 .../CCPackages}/CCPackage_private.h | 0 cocos2d-tests.xcodeproj/project.pbxproj | 228 ++++++++++++++++++ cocos2d.xcodeproj/project.pbxproj | 182 -------------- 27 files changed, 230 insertions(+), 184 deletions(-) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackage.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackage.m (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageCocos2dEnabler.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageCocos2dEnabler.m (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageConstants.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageConstants.m (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageDownload.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageDownload.m (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageDownloadDelegate.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageDownloadManager.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageDownloadManager.m (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageDownloadManagerDelegate.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageHelper.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageHelper.m (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageInstaller.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageInstaller.m (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageManager.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageManager.m (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageManagerDelegate.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageManager_private.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageTypes.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageUnzipper.h (98%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageUnzipper.m (98%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackageUnzipperDelegate.h (100%) rename {cocos2d => cocos2d-ext/CCPackages}/CCPackage_private.h (100%) diff --git a/cocos2d/CCPackage.h b/cocos2d-ext/CCPackages/CCPackage.h similarity index 100% rename from cocos2d/CCPackage.h rename to cocos2d-ext/CCPackages/CCPackage.h diff --git a/cocos2d/CCPackage.m b/cocos2d-ext/CCPackages/CCPackage.m similarity index 100% rename from cocos2d/CCPackage.m rename to cocos2d-ext/CCPackages/CCPackage.m diff --git a/cocos2d/CCPackageCocos2dEnabler.h b/cocos2d-ext/CCPackages/CCPackageCocos2dEnabler.h similarity index 100% rename from cocos2d/CCPackageCocos2dEnabler.h rename to cocos2d-ext/CCPackages/CCPackageCocos2dEnabler.h diff --git a/cocos2d/CCPackageCocos2dEnabler.m b/cocos2d-ext/CCPackages/CCPackageCocos2dEnabler.m similarity index 100% rename from cocos2d/CCPackageCocos2dEnabler.m rename to cocos2d-ext/CCPackages/CCPackageCocos2dEnabler.m diff --git a/cocos2d/CCPackageConstants.h b/cocos2d-ext/CCPackages/CCPackageConstants.h similarity index 100% rename from cocos2d/CCPackageConstants.h rename to cocos2d-ext/CCPackages/CCPackageConstants.h diff --git a/cocos2d/CCPackageConstants.m b/cocos2d-ext/CCPackages/CCPackageConstants.m similarity index 100% rename from cocos2d/CCPackageConstants.m rename to cocos2d-ext/CCPackages/CCPackageConstants.m diff --git a/cocos2d/CCPackageDownload.h b/cocos2d-ext/CCPackages/CCPackageDownload.h similarity index 100% rename from cocos2d/CCPackageDownload.h rename to cocos2d-ext/CCPackages/CCPackageDownload.h diff --git a/cocos2d/CCPackageDownload.m b/cocos2d-ext/CCPackages/CCPackageDownload.m similarity index 100% rename from cocos2d/CCPackageDownload.m rename to cocos2d-ext/CCPackages/CCPackageDownload.m diff --git a/cocos2d/CCPackageDownloadDelegate.h b/cocos2d-ext/CCPackages/CCPackageDownloadDelegate.h similarity index 100% rename from cocos2d/CCPackageDownloadDelegate.h rename to cocos2d-ext/CCPackages/CCPackageDownloadDelegate.h diff --git a/cocos2d/CCPackageDownloadManager.h b/cocos2d-ext/CCPackages/CCPackageDownloadManager.h similarity index 100% rename from cocos2d/CCPackageDownloadManager.h rename to cocos2d-ext/CCPackages/CCPackageDownloadManager.h diff --git a/cocos2d/CCPackageDownloadManager.m b/cocos2d-ext/CCPackages/CCPackageDownloadManager.m similarity index 100% rename from cocos2d/CCPackageDownloadManager.m rename to cocos2d-ext/CCPackages/CCPackageDownloadManager.m diff --git a/cocos2d/CCPackageDownloadManagerDelegate.h b/cocos2d-ext/CCPackages/CCPackageDownloadManagerDelegate.h similarity index 100% rename from cocos2d/CCPackageDownloadManagerDelegate.h rename to cocos2d-ext/CCPackages/CCPackageDownloadManagerDelegate.h diff --git a/cocos2d/CCPackageHelper.h b/cocos2d-ext/CCPackages/CCPackageHelper.h similarity index 100% rename from cocos2d/CCPackageHelper.h rename to cocos2d-ext/CCPackages/CCPackageHelper.h diff --git a/cocos2d/CCPackageHelper.m b/cocos2d-ext/CCPackages/CCPackageHelper.m similarity index 100% rename from cocos2d/CCPackageHelper.m rename to cocos2d-ext/CCPackages/CCPackageHelper.m diff --git a/cocos2d/CCPackageInstaller.h b/cocos2d-ext/CCPackages/CCPackageInstaller.h similarity index 100% rename from cocos2d/CCPackageInstaller.h rename to cocos2d-ext/CCPackages/CCPackageInstaller.h diff --git a/cocos2d/CCPackageInstaller.m b/cocos2d-ext/CCPackages/CCPackageInstaller.m similarity index 100% rename from cocos2d/CCPackageInstaller.m rename to cocos2d-ext/CCPackages/CCPackageInstaller.m diff --git a/cocos2d/CCPackageManager.h b/cocos2d-ext/CCPackages/CCPackageManager.h similarity index 100% rename from cocos2d/CCPackageManager.h rename to cocos2d-ext/CCPackages/CCPackageManager.h diff --git a/cocos2d/CCPackageManager.m b/cocos2d-ext/CCPackages/CCPackageManager.m similarity index 100% rename from cocos2d/CCPackageManager.m rename to cocos2d-ext/CCPackages/CCPackageManager.m diff --git a/cocos2d/CCPackageManagerDelegate.h b/cocos2d-ext/CCPackages/CCPackageManagerDelegate.h similarity index 100% rename from cocos2d/CCPackageManagerDelegate.h rename to cocos2d-ext/CCPackages/CCPackageManagerDelegate.h diff --git a/cocos2d/CCPackageManager_private.h b/cocos2d-ext/CCPackages/CCPackageManager_private.h similarity index 100% rename from cocos2d/CCPackageManager_private.h rename to cocos2d-ext/CCPackages/CCPackageManager_private.h diff --git a/cocos2d/CCPackageTypes.h b/cocos2d-ext/CCPackages/CCPackageTypes.h similarity index 100% rename from cocos2d/CCPackageTypes.h rename to cocos2d-ext/CCPackages/CCPackageTypes.h diff --git a/cocos2d/CCPackageUnzipper.h b/cocos2d-ext/CCPackages/CCPackageUnzipper.h similarity index 98% rename from cocos2d/CCPackageUnzipper.h rename to cocos2d-ext/CCPackages/CCPackageUnzipper.h index d10e080c6b0..8cee1534e01 100644 --- a/cocos2d/CCPackageUnzipper.h +++ b/cocos2d-ext/CCPackages/CCPackageUnzipper.h @@ -1,5 +1,5 @@ #import -#import +#import "SSZipArchive.h" @protocol CCPackageUnzipperDelegate; @class CCPackage; diff --git a/cocos2d/CCPackageUnzipper.m b/cocos2d-ext/CCPackages/CCPackageUnzipper.m similarity index 98% rename from cocos2d/CCPackageUnzipper.m rename to cocos2d-ext/CCPackages/CCPackageUnzipper.m index 5a38969cf5a..679db68295a 100644 --- a/cocos2d/CCPackageUnzipper.m +++ b/cocos2d-ext/CCPackages/CCPackageUnzipper.m @@ -1,7 +1,7 @@ #import "CCPackageUnzipper.h" #import "CCPackageUnzipperDelegate.h" #import "CCPackage.h" -#import +#import "SSZipArchive.h" #import "ccMacros.h" diff --git a/cocos2d/CCPackageUnzipperDelegate.h b/cocos2d-ext/CCPackages/CCPackageUnzipperDelegate.h similarity index 100% rename from cocos2d/CCPackageUnzipperDelegate.h rename to cocos2d-ext/CCPackages/CCPackageUnzipperDelegate.h diff --git a/cocos2d/CCPackage_private.h b/cocos2d-ext/CCPackages/CCPackage_private.h similarity index 100% rename from cocos2d/CCPackage_private.h rename to cocos2d-ext/CCPackages/CCPackage_private.h diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index ba769cd4097..76184752e4c 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -37,6 +37,49 @@ 089949831C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */; }; 089949841C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */; }; 089949851C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */; }; + 089949A11C67F40000ECC92C /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949891C67F40000ECC92C /* CCPackage.m */; }; + 089949A21C67F40000ECC92C /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949891C67F40000ECC92C /* CCPackage.m */; }; + 089949A31C67F40000ECC92C /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949891C67F40000ECC92C /* CCPackage.m */; }; + 089949A41C67F40000ECC92C /* CCPackageCocos2dEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899498C1C67F40000ECC92C /* CCPackageCocos2dEnabler.m */; }; + 089949A51C67F40000ECC92C /* CCPackageCocos2dEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899498C1C67F40000ECC92C /* CCPackageCocos2dEnabler.m */; }; + 089949A61C67F40000ECC92C /* CCPackageCocos2dEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899498C1C67F40000ECC92C /* CCPackageCocos2dEnabler.m */; }; + 089949A71C67F40000ECC92C /* CCPackageConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899498E1C67F40000ECC92C /* CCPackageConstants.m */; }; + 089949A81C67F40000ECC92C /* CCPackageConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899498E1C67F40000ECC92C /* CCPackageConstants.m */; }; + 089949A91C67F40000ECC92C /* CCPackageConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899498E1C67F40000ECC92C /* CCPackageConstants.m */; }; + 089949AA1C67F40000ECC92C /* CCPackageDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949901C67F40000ECC92C /* CCPackageDownload.m */; }; + 089949AB1C67F40000ECC92C /* CCPackageDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949901C67F40000ECC92C /* CCPackageDownload.m */; }; + 089949AC1C67F40000ECC92C /* CCPackageDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949901C67F40000ECC92C /* CCPackageDownload.m */; }; + 089949AD1C67F40000ECC92C /* CCPackageDownloadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949931C67F40000ECC92C /* CCPackageDownloadManager.m */; }; + 089949AE1C67F40000ECC92C /* CCPackageDownloadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949931C67F40000ECC92C /* CCPackageDownloadManager.m */; }; + 089949AF1C67F40000ECC92C /* CCPackageDownloadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949931C67F40000ECC92C /* CCPackageDownloadManager.m */; }; + 089949B01C67F40000ECC92C /* CCPackageHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949961C67F40000ECC92C /* CCPackageHelper.m */; }; + 089949B11C67F40000ECC92C /* CCPackageHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949961C67F40000ECC92C /* CCPackageHelper.m */; }; + 089949B21C67F40000ECC92C /* CCPackageHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949961C67F40000ECC92C /* CCPackageHelper.m */; }; + 089949B31C67F40000ECC92C /* CCPackageInstaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949981C67F40000ECC92C /* CCPackageInstaller.m */; }; + 089949B41C67F40000ECC92C /* CCPackageInstaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949981C67F40000ECC92C /* CCPackageInstaller.m */; }; + 089949B51C67F40000ECC92C /* CCPackageInstaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949981C67F40000ECC92C /* CCPackageInstaller.m */; }; + 089949B61C67F40000ECC92C /* CCPackageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499A1C67F40000ECC92C /* CCPackageManager.m */; }; + 089949B71C67F40000ECC92C /* CCPackageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499A1C67F40000ECC92C /* CCPackageManager.m */; }; + 089949B81C67F40000ECC92C /* CCPackageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499A1C67F40000ECC92C /* CCPackageManager.m */; }; + 089949B91C67F40000ECC92C /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499F1C67F40000ECC92C /* CCPackageUnzipper.m */; }; + 089949BA1C67F40000ECC92C /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499F1C67F40000ECC92C /* CCPackageUnzipper.m */; }; + 089949BB1C67F40000ECC92C /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499F1C67F40000ECC92C /* CCPackageUnzipper.m */; }; + 089949BF1C67F59F00ECC92C /* libSSZipArchiveMac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 089949BE1C67F59F00ECC92C /* libSSZipArchiveMac.a */; }; + 089949EC1C67F97D00ECC92C /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E21C67F97D00ECC92C /* ioapi.c */; }; + 089949ED1C67F97D00ECC92C /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E21C67F97D00ECC92C /* ioapi.c */; }; + 089949EE1C67F97D00ECC92C /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E21C67F97D00ECC92C /* ioapi.c */; }; + 089949EF1C67F97D00ECC92C /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E41C67F97D00ECC92C /* mztools.c */; }; + 089949F01C67F97D00ECC92C /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E41C67F97D00ECC92C /* mztools.c */; }; + 089949F11C67F97D00ECC92C /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E41C67F97D00ECC92C /* mztools.c */; }; + 089949F21C67F97D00ECC92C /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E61C67F97D00ECC92C /* unzip.c */; }; + 089949F31C67F97D00ECC92C /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E61C67F97D00ECC92C /* unzip.c */; }; + 089949F41C67F97D00ECC92C /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E61C67F97D00ECC92C /* unzip.c */; }; + 089949F51C67F97D00ECC92C /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E81C67F97D00ECC92C /* zip.c */; }; + 089949F61C67F97D00ECC92C /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E81C67F97D00ECC92C /* zip.c */; }; + 089949F71C67F97D00ECC92C /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E81C67F97D00ECC92C /* zip.c */; }; + 089949F81C67F97D00ECC92C /* SSZipArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949EB1C67F97D00ECC92C /* SSZipArchive.m */; }; + 089949F91C67F97D00ECC92C /* SSZipArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949EB1C67F97D00ECC92C /* SSZipArchive.m */; }; + 089949FA1C67F97D00ECC92C /* SSZipArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949EB1C67F97D00ECC92C /* SSZipArchive.m */; }; 0E28FE1A197FCE4500F78989 /* CCCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E28FE19197FCE4500F78989 /* CCCacheTest.m */; }; 75556A04185636F100ED1B0F /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75556A03185636F100ED1B0F /* XCTest.framework */; }; 75556A05185636F100ED1B0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605717E7D278007067F0 /* Foundation.framework */; }; @@ -363,6 +406,44 @@ 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleSystemBase.m; sourceTree = ""; }; 089949791C67F2D600ECC92C /* CCParticleSystemBase_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystemBase_Private.h; sourceTree = ""; }; 089949861C67F2E400ECC92C /* CCParticles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCParticles.h; sourceTree = ""; }; + 089949881C67F40000ECC92C /* CCPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackage.h; sourceTree = ""; }; + 089949891C67F40000ECC92C /* CCPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackage.m; sourceTree = ""; }; + 0899498A1C67F40000ECC92C /* CCPackage_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackage_private.h; sourceTree = ""; }; + 0899498B1C67F40000ECC92C /* CCPackageCocos2dEnabler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageCocos2dEnabler.h; sourceTree = ""; }; + 0899498C1C67F40000ECC92C /* CCPackageCocos2dEnabler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageCocos2dEnabler.m; sourceTree = ""; }; + 0899498D1C67F40000ECC92C /* CCPackageConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageConstants.h; sourceTree = ""; }; + 0899498E1C67F40000ECC92C /* CCPackageConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageConstants.m; sourceTree = ""; }; + 0899498F1C67F40000ECC92C /* CCPackageDownload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageDownload.h; sourceTree = ""; }; + 089949901C67F40000ECC92C /* CCPackageDownload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageDownload.m; sourceTree = ""; }; + 089949911C67F40000ECC92C /* CCPackageDownloadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageDownloadDelegate.h; sourceTree = ""; }; + 089949921C67F40000ECC92C /* CCPackageDownloadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageDownloadManager.h; sourceTree = ""; }; + 089949931C67F40000ECC92C /* CCPackageDownloadManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageDownloadManager.m; sourceTree = ""; }; + 089949941C67F40000ECC92C /* CCPackageDownloadManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageDownloadManagerDelegate.h; sourceTree = ""; }; + 089949951C67F40000ECC92C /* CCPackageHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageHelper.h; sourceTree = ""; }; + 089949961C67F40000ECC92C /* CCPackageHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageHelper.m; sourceTree = ""; }; + 089949971C67F40000ECC92C /* CCPackageInstaller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageInstaller.h; sourceTree = ""; }; + 089949981C67F40000ECC92C /* CCPackageInstaller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageInstaller.m; sourceTree = ""; }; + 089949991C67F40000ECC92C /* CCPackageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageManager.h; sourceTree = ""; }; + 0899499A1C67F40000ECC92C /* CCPackageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageManager.m; sourceTree = ""; }; + 0899499B1C67F40000ECC92C /* CCPackageManager_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageManager_private.h; sourceTree = ""; }; + 0899499C1C67F40000ECC92C /* CCPackageManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageManagerDelegate.h; sourceTree = ""; }; + 0899499D1C67F40000ECC92C /* CCPackageTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageTypes.h; sourceTree = ""; }; + 0899499E1C67F40000ECC92C /* CCPackageUnzipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageUnzipper.h; sourceTree = ""; }; + 0899499F1C67F40000ECC92C /* CCPackageUnzipper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageUnzipper.m; sourceTree = ""; }; + 089949A01C67F40000ECC92C /* CCPackageUnzipperDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageUnzipperDelegate.h; sourceTree = ""; }; + 089949BC1C67F4CF00ECC92C /* libSSZipArchive.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libSSZipArchive.a; path = "../../../../../Library/Developer/Xcode/DerivedData/cocos2d-tests-dtybanozgbajtqaufdnbcvyhspig/Build/Products/Debug-iphoneos/libSSZipArchive.a"; sourceTree = ""; }; + 089949BE1C67F59F00ECC92C /* libSSZipArchiveMac.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libSSZipArchiveMac.a; path = external/SSZipArchive/build/Debug/libSSZipArchiveMac.a; sourceTree = ""; }; + 089949E11C67F97D00ECC92C /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; + 089949E21C67F97D00ECC92C /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + 089949E31C67F97D00ECC92C /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + 089949E41C67F97D00ECC92C /* mztools.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mztools.c; sourceTree = ""; }; + 089949E51C67F97D00ECC92C /* mztools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mztools.h; sourceTree = ""; }; + 089949E61C67F97D00ECC92C /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + 089949E71C67F97D00ECC92C /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + 089949E81C67F97D00ECC92C /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + 089949E91C67F97D00ECC92C /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + 089949EA1C67F97D00ECC92C /* SSZipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SSZipArchive.h; path = external/SSZipArchive/SSZipArchive/SSZipArchive.h; sourceTree = SOURCE_ROOT; }; + 089949EB1C67F97D00ECC92C /* SSZipArchive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SSZipArchive.m; path = external/SSZipArchive/SSZipArchive/SSZipArchive.m; sourceTree = SOURCE_ROOT; }; 0E28FE19197FCE4500F78989 /* CCCacheTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCCacheTest.m; path = "cocos2d-ui-tests/tests/CCCacheTest.m"; sourceTree = SOURCE_ROOT; }; 755569E31856361100ED1B0F /* CCFileUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtilTests.m; sourceTree = ""; }; 755569E41856361100ED1B0F /* CCNodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNodeTests.m; sourceTree = ""; }; @@ -566,6 +647,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 089949BF1C67F59F00ECC92C /* libSSZipArchiveMac.a in Frameworks */, D3763DDD19E73667006C050D /* AppKit.framework in Frameworks */, D3763DDB19E7364F006C050D /* OpenGL.framework in Frameworks */, D3763DD919E735CB006C050D /* libcocos2d-mac.a in Frameworks */, @@ -586,6 +668,7 @@ 084781FF1C66666B00C3817B /* cocos2d-ext */ = { isa = PBXGroup; children = ( + 089949871C67F40000ECC92C /* CCPackages */, 0899496F1C67F2D600ECC92C /* CCParticles */, 089949691C67F1BE00ECC92C /* CCClippingNode */, 089949611C67F10A00ECC92C /* CCMotionStreak */, @@ -650,6 +733,59 @@ path = "cocos2d-ext/CCParticles"; sourceTree = SOURCE_ROOT; }; + 089949871C67F40000ECC92C /* CCPackages */ = { + isa = PBXGroup; + children = ( + 089949E01C67F97D00ECC92C /* minizip */, + 089949EA1C67F97D00ECC92C /* SSZipArchive.h */, + 089949EB1C67F97D00ECC92C /* SSZipArchive.m */, + 089949881C67F40000ECC92C /* CCPackage.h */, + 089949891C67F40000ECC92C /* CCPackage.m */, + 0899498A1C67F40000ECC92C /* CCPackage_private.h */, + 0899498B1C67F40000ECC92C /* CCPackageCocos2dEnabler.h */, + 0899498C1C67F40000ECC92C /* CCPackageCocos2dEnabler.m */, + 0899498D1C67F40000ECC92C /* CCPackageConstants.h */, + 0899498E1C67F40000ECC92C /* CCPackageConstants.m */, + 0899498F1C67F40000ECC92C /* CCPackageDownload.h */, + 089949901C67F40000ECC92C /* CCPackageDownload.m */, + 089949911C67F40000ECC92C /* CCPackageDownloadDelegate.h */, + 089949921C67F40000ECC92C /* CCPackageDownloadManager.h */, + 089949931C67F40000ECC92C /* CCPackageDownloadManager.m */, + 089949941C67F40000ECC92C /* CCPackageDownloadManagerDelegate.h */, + 089949951C67F40000ECC92C /* CCPackageHelper.h */, + 089949961C67F40000ECC92C /* CCPackageHelper.m */, + 089949971C67F40000ECC92C /* CCPackageInstaller.h */, + 089949981C67F40000ECC92C /* CCPackageInstaller.m */, + 089949991C67F40000ECC92C /* CCPackageManager.h */, + 0899499A1C67F40000ECC92C /* CCPackageManager.m */, + 0899499B1C67F40000ECC92C /* CCPackageManager_private.h */, + 0899499C1C67F40000ECC92C /* CCPackageManagerDelegate.h */, + 0899499D1C67F40000ECC92C /* CCPackageTypes.h */, + 0899499E1C67F40000ECC92C /* CCPackageUnzipper.h */, + 0899499F1C67F40000ECC92C /* CCPackageUnzipper.m */, + 089949A01C67F40000ECC92C /* CCPackageUnzipperDelegate.h */, + ); + name = CCPackages; + path = "cocos2d-ext/CCPackages"; + sourceTree = SOURCE_ROOT; + }; + 089949E01C67F97D00ECC92C /* minizip */ = { + isa = PBXGroup; + children = ( + 089949E11C67F97D00ECC92C /* crypt.h */, + 089949E21C67F97D00ECC92C /* ioapi.c */, + 089949E31C67F97D00ECC92C /* ioapi.h */, + 089949E41C67F97D00ECC92C /* mztools.c */, + 089949E51C67F97D00ECC92C /* mztools.h */, + 089949E61C67F97D00ECC92C /* unzip.c */, + 089949E71C67F97D00ECC92C /* unzip.h */, + 089949E81C67F97D00ECC92C /* zip.c */, + 089949E91C67F97D00ECC92C /* zip.h */, + ); + name = minizip; + path = external/SSZipArchive/SSZipArchive/minizip; + sourceTree = SOURCE_ROOT; + }; 755569EC1856361100ED1B0F /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -761,6 +897,8 @@ B7E2604A17E7D278007067F0 /* Frameworks */ = { isa = PBXGroup; children = ( + 089949BE1C67F59F00ECC92C /* libSSZipArchiveMac.a */, + 089949BC1C67F4CF00ECC92C /* libSSZipArchive.a */, D3F52DE21A51FE2C00A18F54 /* Metal.framework */, D3763DDC19E73666006C050D /* AppKit.framework */, D3763DDA19E7364F006C050D /* OpenGL.framework */, @@ -1320,30 +1458,44 @@ D32FDE8619B645CA0078CC16 /* CCTextureTests.m in Sources */, 9D96557319D6113500428E79 /* CCEffectTests.m in Sources */, 75556A161856370A00ED1B0F /* CCFileUtilTests.m in Sources */, + 089949A21C67F40000ECC92C /* CCPackage.m in Sources */, 92FE241118F5F06F00647961 /* CCAnimationTest.m in Sources */, 75556A171856370A00ED1B0F /* CCNodeTests.m in Sources */, D3395F1A187F83E600F22C74 /* CCMemoryTests.m in Sources */, 75556A181856370A00ED1B0F /* CCPhysicsTests.m in Sources */, + 089949F61C67F97D00ECC92C /* zip.c in Sources */, 0899497B1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */, D34CD3C518ABF4AA00D8E537 /* CCRendererTests.m in Sources */, + 089949A51C67F40000ECC92C /* CCPackageCocos2dEnabler.m in Sources */, 089949651C67F10A00ECC92C /* CCMotionStreak.m in Sources */, + 089949A81C67F40000ECC92C /* CCPackageConstants.m in Sources */, 75556A191856370A00ED1B0F /* CCSchedulerTests.m in Sources */, E525F81797DA5573FC26BEBB /* CCPackageTests.m in Sources */, E525F5DB1E3086DDE0296CEC /* CCPackageDownloadTests.m in Sources */, + 089949B11C67F40000ECC92C /* CCPackageHelper.m in Sources */, E525FA44681404CC22A3A8D9 /* CCPackageUnzipperTests.m in Sources */, E525F7C977339D17470FC149 /* CCPackageInstallerTests.m in Sources */, 084782101C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, 084782131C66669300C3817B /* CCTMXXMLParser.m in Sources */, 0847820A1C66669300C3817B /* CCTiledMap.m in Sources */, + 089949BA1C67F40000ECC92C /* CCPackageUnzipper.m in Sources */, 0899496D1C67F1BE00ECC92C /* CCClippingNode.m in Sources */, E525FCAF2CC6D200B8065E2E /* CCPackageCocos2dEnablerTests.m in Sources */, E525FF2E8351476CDD7DEAC4 /* CCPackageManagerTests.m in Sources */, + 089949AB1C67F40000ECC92C /* CCPackageDownload.m in Sources */, + 089949B71C67F40000ECC92C /* CCPackageManager.m in Sources */, + 089949B41C67F40000ECC92C /* CCPackageInstaller.m in Sources */, + 089949F91C67F97D00ECC92C /* SSZipArchive.m in Sources */, 089949841C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */, + 089949AE1C67F40000ECC92C /* CCPackageDownloadManager.m in Sources */, E525F033EECC363CA8EAF2A6 /* CCPackageDownloadManagerTests.m in Sources */, + 089949ED1C67F97D00ECC92C /* ioapi.c in Sources */, 0899497E1C67F2D600ECC92C /* CCParticleExamples.m in Sources */, + 089949F31C67F97D00ECC92C /* unzip.c in Sources */, E525F4D0568A8A4176684936 /* CCPackageHelperTests.m in Sources */, E525FCD390330D4F4EBD76CC /* CCPackagesTestFixturesAndHelpers.m in Sources */, 089949811C67F2D600ECC92C /* CCParticleSystem.m in Sources */, + 089949F01C67F97D00ECC92C /* mztools.c in Sources */, E525FA366EFEEF054FB0C74A /* CCSpriteFrameCacheTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1355,29 +1507,39 @@ B71B087C17EA5B490082EBC0 /* TestBase.m in Sources */, D3870C6018B440150033D885 /* SpritePerformanceTest.m in Sources */, 0847820C1C66669300C3817B /* CCTiledMapLayer.m in Sources */, + 089949F81C67F97D00ECC92C /* SSZipArchive.m in Sources */, B71B088217EA5B6A0082EBC0 /* CCScrollViewTest.m in Sources */, B7EE697918186D5200B983FE /* CCTextFieldTest.m in Sources */, B7E2620017E7D321007067F0 /* AppDelegate.m in Sources */, 0E28FE1A197FCE4500F78989 /* CCCacheTest.m in Sources */, B77060AB1832E3310043CC67 /* CCTextureCacheTest.m in Sources */, + 089949A11C67F40000ECC92C /* CCPackage.m in Sources */, A664A4EF18A3D9B8006184B8 /* PositioningTest.m in Sources */, B7E2621C17E7D370007067F0 /* main.m in Sources */, B7EE69811818760700B983FE /* CCSprite9SliceTest.m in Sources */, B7EE6A28181B075E00B983FE /* CCSliderTest.m in Sources */, 0899497D1C67F2D600ECC92C /* CCParticleExamples.m in Sources */, 0847820F1C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, + 089949B31C67F40000ECC92C /* CCPackageInstaller.m in Sources */, 089949641C67F10A00ECC92C /* CCMotionStreak.m in Sources */, 084782121C66669300C3817B /* CCTMXXMLParser.m in Sources */, 084782091C66669300C3817B /* CCTiledMap.m in Sources */, + 089949B01C67F40000ECC92C /* CCPackageHelper.m in Sources */, A6167B93189A7D4D0044D391 /* VertexZTest.m in Sources */, B772F69F1811C8D9005C069B /* CCResponderTest.m in Sources */, 0899497A1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */, 089949801C67F2D600ECC92C /* CCParticleSystem.m in Sources */, + 089949AD1C67F40000ECC92C /* CCPackageDownloadManager.m in Sources */, D2B4894C1917EE6700C3443A /* CCEffectsTest.m in Sources */, B77060141831A17C0043CC67 /* ObjectALTest.m in Sources */, + 089949EC1C67F97D00ECC92C /* ioapi.c in Sources */, B7EE69CF1819D82300B983FE /* CCLayoutTest.m in Sources */, 758A6C711844011E00D1A8D2 /* CCLabelTTFTest.m in Sources */, + 089949A71C67F40000ECC92C /* CCPackageConstants.m in Sources */, + 089949A41C67F40000ECC92C /* CCPackageCocos2dEnabler.m in Sources */, + 089949AA1C67F40000ECC92C /* CCPackageDownload.m in Sources */, 758A690F1843E18700D1A8D2 /* ParallaxTest.m in Sources */, + 089949EF1C67F97D00ECC92C /* mztools.c in Sources */, 7587BDB3185A0A6900EEEFDE /* TextureTest.m in Sources */, D3C9C867188078B900C58900 /* CCSchedulerTest.m in Sources */, 7587BDB7185A64AD00EEEFDE /* ColorTest.m in Sources */, @@ -1386,9 +1548,13 @@ B7E2622117E7D3B2007067F0 /* MainMenu.m in Sources */, D3D6CF5F18BD5F0500A51531 /* CCRendererTest.m in Sources */, 0899496C1C67F1BE00ECC92C /* CCClippingNode.m in Sources */, + 089949B61C67F40000ECC92C /* CCPackageManager.m in Sources */, B70AFC30180F2D7400516435 /* CCTransitionTest.m in Sources */, + 089949F21C67F97D00ECC92C /* unzip.c in Sources */, 758A6C7B18440D5C00D1A8D2 /* ParticleTest.m in Sources */, B7C6238C17ECDF6A00928F91 /* CCTableViewTest.m in Sources */, + 089949B91C67F40000ECC92C /* CCPackageUnzipper.m in Sources */, + 089949F51C67F97D00ECC92C /* zip.c in Sources */, D340E10E185660BE006E605C /* CCPhysicsTest.m in Sources */, D3B2A7E5187DD60B00406C5A /* CCBMFontTest.m in Sources */, ); @@ -1401,29 +1567,39 @@ D3763D3819E734C5006C050D /* MainMenu.m in Sources */, D3763D3919E734C5006C050D /* TestBase.m in Sources */, 0847820E1C66669300C3817B /* CCTiledMapLayer.m in Sources */, + 089949FA1C67F97D00ECC92C /* SSZipArchive.m in Sources */, D3763D3A19E734C5006C050D /* CCCacheTest.m in Sources */, D3763D3B19E734C5006C050D /* CCEffectsTest.m in Sources */, D3763D3C19E734C5006C050D /* CCRendererTest.m in Sources */, D3763D5819E7352F006C050D /* main.m in Sources */, D3763D3D19E734C5006C050D /* SpritePerformanceTest.m in Sources */, + 089949A31C67F40000ECC92C /* CCPackage.m in Sources */, D3763D3E19E734C5006C050D /* CCScrollViewTest.m in Sources */, D3763D3F19E734C5006C050D /* CCSchedulerTest.m in Sources */, D3763D4019E734C5006C050D /* CCTableViewTest.m in Sources */, D3763D4119E734C5006C050D /* CCTransitionTest.m in Sources */, 0899497F1C67F2D600ECC92C /* CCParticleExamples.m in Sources */, 084782111C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, + 089949B51C67F40000ECC92C /* CCPackageInstaller.m in Sources */, 089949661C67F10A00ECC92C /* CCMotionStreak.m in Sources */, 084782141C66669300C3817B /* CCTMXXMLParser.m in Sources */, 0847820B1C66669300C3817B /* CCTiledMap.m in Sources */, + 089949B21C67F40000ECC92C /* CCPackageHelper.m in Sources */, D3763D4219E734C5006C050D /* CCResponderTest.m in Sources */, D3763D4319E734C5006C050D /* CCSprite9SliceTest.m in Sources */, 0899497C1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */, 089949821C67F2D600ECC92C /* CCParticleSystem.m in Sources */, + 089949AF1C67F40000ECC92C /* CCPackageDownloadManager.m in Sources */, D3763D4419E734C5006C050D /* CCTextFieldTest.m in Sources */, D3763D4519E734C5006C050D /* CCLayoutTest.m in Sources */, + 089949EE1C67F97D00ECC92C /* ioapi.c in Sources */, D3763D4619E734C5006C050D /* CCSliderTest.m in Sources */, D3763D4719E734C5006C050D /* ObjectALTest.m in Sources */, + 089949A91C67F40000ECC92C /* CCPackageConstants.m in Sources */, + 089949A61C67F40000ECC92C /* CCPackageCocos2dEnabler.m in Sources */, + 089949AC1C67F40000ECC92C /* CCPackageDownload.m in Sources */, D3763D4819E734C5006C050D /* CCTextureCacheTest.m in Sources */, + 089949F11C67F97D00ECC92C /* mztools.c in Sources */, D3763D4919E734C5006C050D /* CCLabelTTFTest.m in Sources */, D3763D4A19E734C5006C050D /* ParallaxTest.m in Sources */, D3763D4B19E734C5006C050D /* ParticleTest.m in Sources */, @@ -1432,9 +1608,13 @@ D3763D4C19E734C5006C050D /* CCPhysicsTest.m in Sources */, D3763D4D19E734C5006C050D /* TilemapTest.m in Sources */, 0899496E1C67F1BE00ECC92C /* CCClippingNode.m in Sources */, + 089949B81C67F40000ECC92C /* CCPackageManager.m in Sources */, D3763D4E19E734C5006C050D /* TextureTest.m in Sources */, + 089949F41C67F97D00ECC92C /* unzip.c in Sources */, D3763D4F19E734C5006C050D /* ColorTest.m in Sources */, D3763D5019E734C5006C050D /* CCBMFontTest.m in Sources */, + 089949BB1C67F40000ECC92C /* CCPackageUnzipper.m in Sources */, + 089949F71C67F97D00ECC92C /* zip.c in Sources */, D3763D5119E734C5006C050D /* VertexZTest.m in Sources */, D3763D5219E734C5006C050D /* PositioningTest.m in Sources */, ); @@ -1688,6 +1868,16 @@ GCC_DYNAMIC_NO_PIC = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "cocos2d-ui-tests/ios/Prefix.pch"; + HEADER_SEARCH_PATHS = ( + external/kazmath/include, + "cocos2d/**", + "cocos2d-ui/**", + "cocos2d-ui-tests/**", + external/Chipmunk/include, + external/Chipmunk/objectivec/include, + "external/ObjectAL/**", + "external/SSZipArchive/SSZipArchive/**", + ); INFOPLIST_FILE = "cocos2d-ui-tests/ios/Resources/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 6.0; MTL_HEADER_SEARCH_PATHS = "/Users/slembcke/Development/cocos2d-iphone/cocos2d"; @@ -1722,6 +1912,16 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "cocos2d-ui-tests/ios/Prefix.pch"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + external/kazmath/include, + "cocos2d/**", + "cocos2d-ui/**", + "cocos2d-ui-tests/**", + external/Chipmunk/include, + external/Chipmunk/objectivec/include, + "external/ObjectAL/**", + "external/SSZipArchive/SSZipArchive/**", + ); INFOPLIST_FILE = "cocos2d-ui-tests/ios/Resources/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 6.0; MTL_HEADER_SEARCH_PATHS = "/Users/slembcke/Development/cocos2d-iphone/cocos2d"; @@ -1758,8 +1958,22 @@ DEBUG, "COCOS2D_DEBUG=1", ); + HEADER_SEARCH_PATHS = ( + external/kazmath/include, + "cocos2d/**", + "cocos2d-ui/**", + "cocos2d-ui-tests/**", + external/Chipmunk/include, + external/Chipmunk/objectivec/include, + "external/ObjectAL/**", + "external/SSZipArchive/**", + ); INFOPLIST_FILE = "cocos2d-ui-tests/osx/Resources/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/external/SSZipArchive/build/Debug", + ); MACOSX_DEPLOYMENT_TARGET = 10.8; MTL_HEADER_SEARCH_PATHS = "/Users/slembcke/Development/cocos2d-iphone/cocos2d"; ONLY_ACTIVE_ARCH = YES; @@ -1794,8 +2008,22 @@ NDEBUG, "NS_BLOCK_ASSERTIONS=1", ); + HEADER_SEARCH_PATHS = ( + external/kazmath/include, + "cocos2d/**", + "cocos2d-ui/**", + "cocos2d-ui-tests/**", + external/Chipmunk/include, + external/Chipmunk/objectivec/include, + "external/ObjectAL/**", + "external/SSZipArchive/**", + ); INFOPLIST_FILE = "cocos2d-ui-tests/osx/Resources/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/external/SSZipArchive/build/Debug", + ); MACOSX_DEPLOYMENT_TARGET = 10.8; MTL_HEADER_SEARCH_PATHS = "/Users/slembcke/Development/cocos2d-iphone/cocos2d"; OTHER_LDFLAGS = ( diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 3c0ec97630a..afed996ba48 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -156,21 +156,6 @@ 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D2B840C31909F447008063EA /* CCRenderTexture_Private.h */; }; - 7A5946C519E372F500F65F90 /* CCPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85A19C8ACA0000A3BCA /* CCPackage.h */; }; - 7A5946C719E372F500F65F90 /* CCPackageConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85C19C8ACA0000A3BCA /* CCPackageConstants.h */; }; - 7A5946C919E372F500F65F90 /* CCPackageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85E19C8ACA0000A3BCA /* CCPackageManager.h */; }; - 7A5946CB19E372F500F65F90 /* CCPackageManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86019C8ACA0000A3BCA /* CCPackageManagerDelegate.h */; }; - 7A5946CC19E372F500F65F90 /* CCPackageTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86119C8ACA0000A3BCA /* CCPackageTypes.h */; }; - 7A5946CD19E372F500F65F90 /* CCPackageDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87019C8ACC1000A3BCA /* CCPackageDownload.h */; }; - 7A5946CF19E372F600F65F90 /* CCPackageDownloadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87219C8ACC1000A3BCA /* CCPackageDownloadDelegate.h */; }; - 7A5946D019E372F600F65F90 /* CCPackageDownloadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87319C8ACC1000A3BCA /* CCPackageDownloadManager.h */; }; - 7A5946D219E372F600F65F90 /* CCPackageDownloadManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87519C8ACC1000A3BCA /* CCPackageDownloadManagerDelegate.h */; }; - 7A5946D319E372F600F65F90 /* CCPackageUnzipper.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86A19C8ACAF000A3BCA /* CCPackageUnzipper.h */; }; - 7A5946D519E372F600F65F90 /* CCPackageUnzipperDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86C19C8ACAF000A3BCA /* CCPackageUnzipperDelegate.h */; }; - 7A5946D619E372F700F65F90 /* CCPackageCocos2dEnabler.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87E19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.h */; }; - 7A5946D819E372F700F65F90 /* CCPackageInstaller.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A88219C8ACDC000A3BCA /* CCPackageInstaller.h */; }; - 7A5946DA19E372F700F65F90 /* CCPackageHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = E525FF8C7C018BF691F36044 /* CCPackageHelper.h */; }; - 7A5946DC19E372F700F65F90 /* CCPackage_private.h in Headers */ = {isa = PBXBuildFile; fileRef = E525FE4C98BCF1228ECC9623 /* CCPackage_private.h */; }; 7A5946DD19E372F700F65F90 /* CCActionManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FF6C7318F33A2A005B7139 /* CCActionManager_Private.h */; }; 7A5946DE19E372F800F65F90 /* CCActionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */; }; 7A5946E019E372F800F65F90 /* CCAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2520DFDEAFF00C013A5 /* CCAction.h */; }; @@ -297,14 +282,6 @@ 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */; }; 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AA510291280003ACFE7 /* CCRenderTexture.m */; }; - 7A59481119E375A500F65F90 /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85B19C8ACA0000A3BCA /* CCPackage.m */; }; - 7A59481319E375A500F65F90 /* CCPackageConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85D19C8ACA0000A3BCA /* CCPackageConstants.m */; }; - 7A59481919E375A600F65F90 /* CCPackageDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A87119C8ACC1000A3BCA /* CCPackageDownload.m */; }; - 7A59481C19E375A600F65F90 /* CCPackageDownloadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A87419C8ACC1000A3BCA /* CCPackageDownloadManager.m */; }; - 7A59481F19E375A600F65F90 /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A86B19C8ACAF000A3BCA /* CCPackageUnzipper.m */; }; - 7A59482219E375A700F65F90 /* CCPackageCocos2dEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A87F19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.m */; }; - 7A59482419E375A700F65F90 /* CCPackageInstaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A88319C8ACDC000A3BCA /* CCPackageInstaller.m */; }; - 7A59482619E375A700F65F90 /* CCPackageHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E525F9EA4B5DD37D0418869E /* CCPackageHelper.m */; }; 7A59482A19E375A700F65F90 /* CCActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */; }; 7A59482C19E375A800F65F90 /* CCAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2530DFDEAFF00C013A5 /* CCAction.m */; }; 7A59482E19E375A800F65F90 /* CCActionInstant.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2590DFDEAFF00C013A5 /* CCActionInstant.m */; }; @@ -363,32 +340,9 @@ 7A5948D119E375BE00F65F90 /* CCTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E260D718171D2000A0E872 /* CCTextField.m */; }; 7A5948D319E375BE00F65F90 /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; 7A59494019E3810500F65F90 /* CCPlatformTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD01F19649E03003D460C /* CCPlatformTextField.m */; }; - 7A59498319E38C9800F65F90 /* libSSZipArchiveMac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A59498219E38C8300F65F90 /* libSSZipArchiveMac.a */; }; - 83409E4919D5BADC004B7EB9 /* libSSZipArchive.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 83409E3619D5B791004B7EB9 /* libSSZipArchive.a */; }; 839CE58619FFB139003369F0 /* CCEffectInvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 839CE58419FFB139003369F0 /* CCEffectInvert.h */; }; 839CE58719FFB139003369F0 /* CCEffectInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 839CE58519FFB139003369F0 /* CCEffectInvert.m */; }; 839CE58B19FFB146003369F0 /* CCEffectInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 839CE58519FFB139003369F0 /* CCEffectInvert.m */; }; - 83E1A86219C8ACA0000A3BCA /* CCPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85A19C8ACA0000A3BCA /* CCPackage.h */; }; - 83E1A86319C8ACA0000A3BCA /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85B19C8ACA0000A3BCA /* CCPackage.m */; }; - 83E1A86419C8ACA0000A3BCA /* CCPackageConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85C19C8ACA0000A3BCA /* CCPackageConstants.h */; }; - 83E1A86519C8ACA0000A3BCA /* CCPackageConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85D19C8ACA0000A3BCA /* CCPackageConstants.m */; }; - 83E1A86619C8ACA0000A3BCA /* CCPackageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A85E19C8ACA0000A3BCA /* CCPackageManager.h */; }; - 83E1A86719C8ACA0000A3BCA /* CCPackageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85F19C8ACA0000A3BCA /* CCPackageManager.m */; }; - 83E1A86819C8ACA0000A3BCA /* CCPackageManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86019C8ACA0000A3BCA /* CCPackageManagerDelegate.h */; }; - 83E1A86919C8ACA0000A3BCA /* CCPackageTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86119C8ACA0000A3BCA /* CCPackageTypes.h */; }; - 83E1A86D19C8ACAF000A3BCA /* CCPackageUnzipper.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86A19C8ACAF000A3BCA /* CCPackageUnzipper.h */; }; - 83E1A86E19C8ACAF000A3BCA /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A86B19C8ACAF000A3BCA /* CCPackageUnzipper.m */; }; - 83E1A86F19C8ACAF000A3BCA /* CCPackageUnzipperDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A86C19C8ACAF000A3BCA /* CCPackageUnzipperDelegate.h */; }; - 83E1A87619C8ACC1000A3BCA /* CCPackageDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87019C8ACC1000A3BCA /* CCPackageDownload.h */; }; - 83E1A87719C8ACC1000A3BCA /* CCPackageDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A87119C8ACC1000A3BCA /* CCPackageDownload.m */; }; - 83E1A87919C8ACC1000A3BCA /* CCPackageDownloadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87319C8ACC1000A3BCA /* CCPackageDownloadManager.h */; }; - 83E1A87A19C8ACC1000A3BCA /* CCPackageDownloadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A87419C8ACC1000A3BCA /* CCPackageDownloadManager.m */; }; - 83E1A87B19C8ACC1000A3BCA /* CCPackageDownloadManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87519C8ACC1000A3BCA /* CCPackageDownloadManagerDelegate.h */; }; - 83E1A88619C8ACDC000A3BCA /* CCPackageCocos2dEnabler.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A87E19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.h */; }; - 83E1A88719C8ACDC000A3BCA /* CCPackageCocos2dEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A87F19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.m */; }; - 83E1A88A19C8ACDC000A3BCA /* CCPackageInstaller.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E1A88219C8ACDC000A3BCA /* CCPackageInstaller.h */; }; - 83E1A88B19C8ACDC000A3BCA /* CCPackageInstaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A88319C8ACDC000A3BCA /* CCPackageInstaller.m */; }; - 83E21C001A121EB5000D1695 /* CCPackageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E1A85F19C8ACA0000A3BCA /* CCPackageManager.m */; }; 9D03A5EB1A02F61700C651C8 /* CCLightNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */; }; 9D03A5ED1A02F61B00C651C8 /* CCLightNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */; }; 9D03A5F61A02F8C200C651C8 /* CCEffectLighting.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD047C19DE154400687820 /* CCEffectLighting.h */; }; @@ -601,10 +555,6 @@ E0F924711224140400EF2362 /* CCTexturePVR.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F9246F1224140400EF2362 /* CCTexturePVR.h */; }; E0F924721224140400EF2362 /* CCTexturePVR.m in Sources */ = {isa = PBXBuildFile; fileRef = E0F924701224140400EF2362 /* CCTexturePVR.m */; }; E0F92AC41224559800EF2362 /* CCNS.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F92AC31224559800EF2362 /* CCNS.h */; }; - E525F0F74C7C69C4371E20EE /* CCPackageHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E525F9EA4B5DD37D0418869E /* CCPackageHelper.m */; }; - E525F3A2BBCBB446B67D8260 /* CCPackage_private.h in Headers */ = {isa = PBXBuildFile; fileRef = E525FE4C98BCF1228ECC9623 /* CCPackage_private.h */; }; - E525FCC2CF72D3667DE4D71B /* CCPackageHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = E525FF8C7C018BF691F36044 /* CCPackageHelper.h */; }; - E525FF1A60724C91275720C5 /* CCPackageManager_private.h in Headers */ = {isa = PBXBuildFile; fileRef = E525F94C08B1D716E9173061 /* CCPackageManager_private.h */; }; FC64014019C79716003E595A /* libObjectAL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FC39961B19C3B92F00C93E5E /* libObjectAL.a */; }; /* End PBXBuildFile section */ @@ -828,27 +778,6 @@ 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SSZipArchive.xcodeproj; path = external/SSZipArchive/SSZipArchive.xcodeproj; sourceTree = ""; }; 839CE58419FFB139003369F0 /* CCEffectInvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectInvert.h; sourceTree = ""; }; 839CE58519FFB139003369F0 /* CCEffectInvert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectInvert.m; sourceTree = ""; }; - 83E1A85A19C8ACA0000A3BCA /* CCPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackage.h; sourceTree = ""; }; - 83E1A85B19C8ACA0000A3BCA /* CCPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackage.m; sourceTree = ""; }; - 83E1A85C19C8ACA0000A3BCA /* CCPackageConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageConstants.h; sourceTree = ""; }; - 83E1A85D19C8ACA0000A3BCA /* CCPackageConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageConstants.m; sourceTree = ""; }; - 83E1A85E19C8ACA0000A3BCA /* CCPackageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageManager.h; sourceTree = ""; }; - 83E1A85F19C8ACA0000A3BCA /* CCPackageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageManager.m; sourceTree = ""; }; - 83E1A86019C8ACA0000A3BCA /* CCPackageManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageManagerDelegate.h; sourceTree = ""; }; - 83E1A86119C8ACA0000A3BCA /* CCPackageTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageTypes.h; sourceTree = ""; }; - 83E1A86A19C8ACAF000A3BCA /* CCPackageUnzipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageUnzipper.h; sourceTree = ""; }; - 83E1A86B19C8ACAF000A3BCA /* CCPackageUnzipper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageUnzipper.m; sourceTree = ""; }; - 83E1A86C19C8ACAF000A3BCA /* CCPackageUnzipperDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageUnzipperDelegate.h; sourceTree = ""; }; - 83E1A87019C8ACC1000A3BCA /* CCPackageDownload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageDownload.h; sourceTree = ""; }; - 83E1A87119C8ACC1000A3BCA /* CCPackageDownload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageDownload.m; sourceTree = ""; }; - 83E1A87219C8ACC1000A3BCA /* CCPackageDownloadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageDownloadDelegate.h; sourceTree = ""; }; - 83E1A87319C8ACC1000A3BCA /* CCPackageDownloadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageDownloadManager.h; sourceTree = ""; }; - 83E1A87419C8ACC1000A3BCA /* CCPackageDownloadManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageDownloadManager.m; sourceTree = ""; }; - 83E1A87519C8ACC1000A3BCA /* CCPackageDownloadManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageDownloadManagerDelegate.h; sourceTree = ""; }; - 83E1A87E19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageCocos2dEnabler.h; sourceTree = ""; }; - 83E1A87F19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageCocos2dEnabler.m; sourceTree = ""; }; - 83E1A88219C8ACDC000A3BCA /* CCPackageInstaller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageInstaller.h; sourceTree = ""; }; - 83E1A88319C8ACDC000A3BCA /* CCPackageInstaller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageInstaller.m; sourceTree = ""; }; 83E1A88D19C8C19D000A3BCA /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 92FF6C7318F33A2A005B7139 /* CCActionManager_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCActionManager_Private.h; sourceTree = ""; }; 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCLightNode_Private.h; sourceTree = ""; }; @@ -1070,10 +999,6 @@ E0F9246F1224140400EF2362 /* CCTexturePVR.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTexturePVR.h; sourceTree = ""; }; E0F924701224140400EF2362 /* CCTexturePVR.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTexturePVR.m; sourceTree = ""; }; E0F92AC31224559800EF2362 /* CCNS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNS.h; sourceTree = ""; }; - E525F94C08B1D716E9173061 /* CCPackageManager_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageManager_private.h; sourceTree = ""; }; - E525F9EA4B5DD37D0418869E /* CCPackageHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPackageHelper.m; sourceTree = ""; }; - E525FE4C98BCF1228ECC9623 /* CCPackage_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackage_private.h; sourceTree = ""; }; - E525FF8C7C018BF691F36044 /* CCPackageHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPackageHelper.h; sourceTree = ""; }; FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ObjectAL.xcodeproj; path = external/ObjectAL/ObjectAL/ObjectAL.xcodeproj; sourceTree = ""; }; FC55599F1991A26300E29CCE /* libogg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libogg.a; path = "external/ogg/android/ogg/build/Debug-android/libogg.a"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -1084,7 +1009,6 @@ buildActionMask = 2147483647; files = ( B15348511BE1E7B70022C4BB /* libObjectiveChipmunk-iOS.a in Frameworks */, - 83409E4919D5BADC004B7EB9 /* libSSZipArchive.a in Frameworks */, FC64014019C79716003E595A /* libObjectAL.a in Frameworks */, D3903B1A19952ABD003AA81A /* Metal.framework in Frameworks */, D24FAEEC198014B90043E27D /* GLKit.framework in Frameworks */, @@ -1106,7 +1030,6 @@ files = ( 0899494B1C66001900ECC92C /* libObjectAL (Mac).a in Frameworks */, 0899494A1C66000000ECC92C /* libObjectiveChipmunk-Mac.a in Frameworks */, - 7A59498319E38C9800F65F90 /* libSSZipArchiveMac.a in Frameworks */, 7A4037C819E3712A007B6E8F /* OpenGL.framework in Frameworks */, 7A4037C619E37126007B6E8F /* QuartzCore.framework in Frameworks */, 7A4037C419E3711D007B6E8F /* ApplicationServices.framework in Frameworks */, @@ -1233,7 +1156,6 @@ 506414C30F9C6769007A7B24 /* Layers, Scenes, Transitions Nodes */, A0D7D9D415E2E737000CA0C4 /* Physics */, 50EA8DA011354A6000746D2A /* Misc Nodes */, - 83E1A85619C8AC2A000A3BCA /* Packages */, 50A24E770F3780A2007CAEB0 /* Actions */, 50E1355310ADEA9400C9E7FA /* Textures */, 501CCFA30E99657C00B86F68 /* Support */, @@ -1471,62 +1393,6 @@ name = Products; sourceTree = ""; }; - 83E1A85619C8AC2A000A3BCA /* Packages */ = { - isa = PBXGroup; - children = ( - 83E1A85A19C8ACA0000A3BCA /* CCPackage.h */, - 83E1A85B19C8ACA0000A3BCA /* CCPackage.m */, - 83E1A85C19C8ACA0000A3BCA /* CCPackageConstants.h */, - 83E1A85D19C8ACA0000A3BCA /* CCPackageConstants.m */, - 83E1A85E19C8ACA0000A3BCA /* CCPackageManager.h */, - 83E1A85F19C8ACA0000A3BCA /* CCPackageManager.m */, - 83E1A86019C8ACA0000A3BCA /* CCPackageManagerDelegate.h */, - 83E1A86119C8ACA0000A3BCA /* CCPackageTypes.h */, - 83E1A85719C8AC56000A3BCA /* Download */, - 83E1A85919C8AC6A000A3BCA /* Unzip */, - 83E1A85819C8AC65000A3BCA /* Install */, - E525FF8C7C018BF691F36044 /* CCPackageHelper.h */, - E525F9EA4B5DD37D0418869E /* CCPackageHelper.m */, - E525FE4C98BCF1228ECC9623 /* CCPackage_private.h */, - E525F94C08B1D716E9173061 /* CCPackageManager_private.h */, - ); - name = Packages; - sourceTree = ""; - }; - 83E1A85719C8AC56000A3BCA /* Download */ = { - isa = PBXGroup; - children = ( - 83E1A87019C8ACC1000A3BCA /* CCPackageDownload.h */, - 83E1A87119C8ACC1000A3BCA /* CCPackageDownload.m */, - 83E1A87219C8ACC1000A3BCA /* CCPackageDownloadDelegate.h */, - 83E1A87319C8ACC1000A3BCA /* CCPackageDownloadManager.h */, - 83E1A87419C8ACC1000A3BCA /* CCPackageDownloadManager.m */, - 83E1A87519C8ACC1000A3BCA /* CCPackageDownloadManagerDelegate.h */, - ); - name = Download; - sourceTree = ""; - }; - 83E1A85819C8AC65000A3BCA /* Install */ = { - isa = PBXGroup; - children = ( - 83E1A87E19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.h */, - 83E1A87F19C8ACDC000A3BCA /* CCPackageCocos2dEnabler.m */, - 83E1A88219C8ACDC000A3BCA /* CCPackageInstaller.h */, - 83E1A88319C8ACDC000A3BCA /* CCPackageInstaller.m */, - ); - name = Install; - sourceTree = ""; - }; - 83E1A85919C8AC6A000A3BCA /* Unzip */ = { - isa = PBXGroup; - children = ( - 83E1A86A19C8ACAF000A3BCA /* CCPackageUnzipper.h */, - 83E1A86B19C8ACAF000A3BCA /* CCPackageUnzipper.m */, - 83E1A86C19C8ACAF000A3BCA /* CCPackageUnzipperDelegate.h */, - ); - name = Unzip; - sourceTree = ""; - }; A0D7D9D415E2E737000CA0C4 /* Physics */ = { isa = PBXGroup; children = ( @@ -1868,7 +1734,6 @@ 506602110E38A70D000B500E /* CCScheduler.h in Headers */, D24161001958F6EE003673BD /* CCAnimationManager+FrameAnimation.h in Headers */, D268FE0F198078FF00ECBCD0 /* CCEffectGlass.h in Headers */, - 83E1A86419C8ACA0000A3BCA /* CCPackageConstants.h in Headers */, D24160FE1958F6EE003673BD /* CCAnimationManager.h in Headers */, 50305AF40E40E33200F63373 /* cocos2d.h in Headers */, 501CCFB50E99657C00B86F68 /* TGAlib.h in Headers */, @@ -1880,7 +1745,6 @@ 50BAF3990F33CCD8003F654C /* ccMacros.h in Headers */, B798D13D181F2E4500E7BFCD /* CCNode_Private.h in Headers */, 509A79970F6188420032F449 /* CCSprite.h in Headers */, - 83E1A86619C8ACA0000A3BCA /* CCPackageManager.h in Headers */, 50C508C60F7C194400799124 /* CCFileUtils.h in Headers */, D268FE231980791C00ECBCD0 /* CCEffectStack_Private.h in Headers */, 9D9205D21A0173D600FF2D6D /* CCLightCollection.h in Headers */, @@ -1911,10 +1775,8 @@ D27451B719AE5517006DA0A1 /* CCEffectDistanceField.h in Headers */, 50316AA610291280003ACFE7 /* CCRenderTexture.h in Headers */, B7D273171822F4AA0054849B /* CCBSequenceProperty.h in Headers */, - 83E1A86819C8ACA0000A3BCA /* CCPackageManagerDelegate.h in Headers */, D38058201889CE7700822437 /* CCCache.h in Headers */, D309055018AC23110081BF11 /* CCRenderer_Private.h in Headers */, - 83E1A87619C8ACC1000A3BCA /* CCPackageDownload.h in Headers */, 505462FC1062768000AB7C52 /* ccConfig.h in Headers */, 50E2A15010A45E7F00D894CE /* CCSpriteFrame.h in Headers */, B7E776211857A159004221AA /* CCColor.h in Headers */, @@ -1922,23 +1784,19 @@ 502C8BE010A661E200D137BA /* CCSpriteFrameCache.h in Headers */, B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */, 50E1357510ADEB1B00C9E7FA /* CCTexture.h in Headers */, - 83E1A87919C8ACC1000A3BCA /* CCPackageDownloadManager.h in Headers */, D268FE11198078FF00ECBCD0 /* CCEffectHue.h in Headers */, B7D273151822F4AA0054849B /* CCBSequence.h in Headers */, 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */, 9D2773B51AB77F3800D19A11 /* CCEffectStereo.h in Headers */, 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */, D24161091958F72B003673BD /* CCEffectRenderer.h in Headers */, - 83E1A88619C8ACDC000A3BCA /* CCPackageCocos2dEnabler.h in Headers */, 50FBB2DA117613F500150761 /* CCActionTween.h in Headers */, 50D898F31192CB7500458C29 /* uthash.h in Headers */, 508EAC311193F8B0007F058D /* utlist.h in Headers */, E0C3655B11F0AE9B001C08F9 /* CCSpriteBatchNode.h in Headers */, E0C54DCB11F9CF2700B9E4CB /* ccUtils.h in Headers */, E01E6D8C121F130E001A484F /* CCLabelBMFont.h in Headers */, - 83E1A86D19C8ACAF000A3BCA /* CCPackageUnzipper.h in Headers */, E0EAD0FF121F4B4600B0C81C /* CCDirectorIOS.h in Headers */, - 83E1A86219C8ACA0000A3BCA /* CCPackage.h in Headers */, E0EAD108121F4B4600B0C81C /* CCGLView.h in Headers */, B798D143181F469100E7BFCD /* CCLabelBMFont_Private.h in Headers */, D3903B0A1995285B003AA81A /* CCEffectBlur.h in Headers */, @@ -1948,7 +1806,6 @@ 9D85671D191B018200573093 /* CCEffectBrightness.h in Headers */, D272032B18FC89A000B100FF /* CCEffectNode.h in Headers */, E0F924711224140400EF2362 /* CCTexturePVR.h in Headers */, - 83E1A87B19C8ACC1000A3BCA /* CCPackageDownloadManagerDelegate.h in Headers */, E0F92AC41224559800EF2362 /* CCNS.h in Headers */, E02BB6D6126CA93A006E46A2 /* CCAnimationCache.h in Headers */, D27451AA19AD430A006DA0A1 /* CCEffectDropShadow.h in Headers */, @@ -1966,8 +1823,6 @@ B7EE69E01819E75700B983FE /* CCLayout.h in Headers */, A0C87D1A14F9A3A100C0E8B2 /* NSThread+performBlock.h in Headers */, D3903B14199528B6003AA81A /* CCMetalView.h in Headers */, - 83E1A86F19C8ACAF000A3BCA /* CCPackageUnzipperDelegate.h in Headers */, - 83E1A86919C8ACA0000A3BCA /* CCPackageTypes.h in Headers */, D27451C619B111A9006DA0A1 /* CCEffectDFOutline.h in Headers */, A6DC4E0918055DCC00C280A6 /* CCTransition.h in Headers */, B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */, @@ -1977,7 +1832,6 @@ D268FE1D1980791400ECBCD0 /* CCEffectUtils.h in Headers */, A039EBFF155C686B0061EE37 /* CCNode+Debug.h in Headers */, A0DA0BC315BCDCA200E80A92 /* CCDrawNode.h in Headers */, - 83E1A88A19C8ACDC000A3BCA /* CCPackageInstaller.h in Headers */, B7EE6A1E181AE34600B983FE /* CCSlider.h in Headers */, A003AC8C1657071100C7B792 /* ccFPSImages.h in Headers */, B74C2B9B17BDA63A00A829C0 /* CCSprite9Slice.h in Headers */, @@ -1995,9 +1849,6 @@ B78AE46817E7AF1C0028BE0B /* CCScrollView.h in Headers */, B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */, B7D2730F1822F4AA0054849B /* CCBKeyframe.h in Headers */, - E525FCC2CF72D3667DE4D71B /* CCPackageHelper.h in Headers */, - E525F3A2BBCBB446B67D8260 /* CCPackage_private.h in Headers */, - E525FF1A60724C91275720C5 /* CCPackageManager_private.h in Headers */, 9D69E6D619DF604800C2749C /* CCLightNode.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2066,23 +1917,8 @@ 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */, 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */, 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */, - 7A5946C519E372F500F65F90 /* CCPackage.h in Headers */, - 7A5946C719E372F500F65F90 /* CCPackageConstants.h in Headers */, - 7A5946C919E372F500F65F90 /* CCPackageManager.h in Headers */, - 7A5946CB19E372F500F65F90 /* CCPackageManagerDelegate.h in Headers */, - 7A5946CC19E372F500F65F90 /* CCPackageTypes.h in Headers */, - 7A5946CD19E372F500F65F90 /* CCPackageDownload.h in Headers */, 9D03A5F61A02F8C200C651C8 /* CCEffectLighting.h in Headers */, - 7A5946CF19E372F600F65F90 /* CCPackageDownloadDelegate.h in Headers */, 9D2773B71AB77F3800D19A11 /* CCEffectStereo.h in Headers */, - 7A5946D019E372F600F65F90 /* CCPackageDownloadManager.h in Headers */, - 7A5946D219E372F600F65F90 /* CCPackageDownloadManagerDelegate.h in Headers */, - 7A5946D319E372F600F65F90 /* CCPackageUnzipper.h in Headers */, - 7A5946D519E372F600F65F90 /* CCPackageUnzipperDelegate.h in Headers */, - 7A5946D619E372F700F65F90 /* CCPackageCocos2dEnabler.h in Headers */, - 7A5946D819E372F700F65F90 /* CCPackageInstaller.h in Headers */, - 7A5946DA19E372F700F65F90 /* CCPackageHelper.h in Headers */, - 7A5946DC19E372F700F65F90 /* CCPackage_private.h in Headers */, 7A5946DD19E372F700F65F90 /* CCActionManager_Private.h in Headers */, 9D1B4A9B1A02E90300B2DD9B /* CCLightGroups.h in Headers */, 7A5946DE19E372F800F65F90 /* CCActionManager.h in Headers */, @@ -2423,7 +2259,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 83E1A87A19C8ACC1000A3BCA /* CCPackageDownloadManager.m in Sources */, D34CAD6419C3A0FD009BED7A /* NSValue+CCRenderer.m in Sources */, 5018F26A0DFDEAFF00C013A5 /* CCAction.m in Sources */, D3903B0B1995285B003AA81A /* CCEffectBlur.m in Sources */, @@ -2437,7 +2272,6 @@ D268FE10198078FF00ECBCD0 /* CCEffectGlass.m in Sources */, 5018F2740DFDEAFF00C013A5 /* CCLabelTTF.m in Sources */, 9D856722191B019900573093 /* CCEffectContrast.m in Sources */, - 83E1A86E19C8ACAF000A3BCA /* CCPackageUnzipper.m in Sources */, 5018F2760DFDEAFF00C013A5 /* CCNodeColor.m in Sources */, 5018F2780DFDEAFF00C013A5 /* CCScene.m in Sources */, 9D2773B81AB77F3800D19A11 /* CCEffectStereo.m in Sources */, @@ -2464,7 +2298,6 @@ 502C6C6D0FB87970002BF3C2 /* CCParallaxNode.m in Sources */, 50CB3B0F100AC43A00B7A750 /* CCActionManager.m in Sources */, D3903B11199528A0003AA81A /* CCRenderDispatch.m in Sources */, - 83E1A86319C8ACA0000A3BCA /* CCPackage.m in Sources */, B7E775D118527EF0004221AA /* CCAppDelegate.m in Sources */, 9DBCA31519B68BE400EFE96D /* CCEffectColorChannelOffset.m in Sources */, D3903B15199528B6003AA81A /* CCMetalView.m in Sources */, @@ -2472,7 +2305,6 @@ 50F29F5610204FD60046CA73 /* base64.c in Sources */, 50F2A104102094550046CA73 /* ZipUtils.m in Sources */, 571CD02B19649E03003D460C /* CCPlatformTextFieldIOS.m in Sources */, - 83E1A86519C8ACA0000A3BCA /* CCPackageConstants.m in Sources */, D272032E18FC89A000B100FF /* CCEffectStack.m in Sources */, 50316AA710291280003ACFE7 /* CCRenderTexture.m in Sources */, 50E2A15110A45E7F00D894CE /* CCSpriteFrame.m in Sources */, @@ -2482,7 +2314,6 @@ 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */, 5015043C113300F900A9CA65 /* CCActionProgressTimer.m in Sources */, D272032618FC89A000B100FF /* CCEffect.m in Sources */, - 83E1A87719C8ACC1000A3BCA /* CCPackageDownload.m in Sources */, 50FBB2DB117613F500150761 /* CCActionTween.m in Sources */, D37D197B18B6666E00B23FDE /* CCSpriteBatchNode.m in Sources */, D3903B0D1995288D003AA81A /* CCNoARC.m in Sources */, @@ -2516,7 +2347,6 @@ D369415F19CFDF170092A0BD /* CCRendererBasicTypes.m in Sources */, A039EC00155C686B0061EE37 /* CCNode+Debug.m in Sources */, D36D31B718BD3CAA00E45F08 /* CCProgressNode.m in Sources */, - 83E1A86719C8ACA0000A3BCA /* CCPackageManager.m in Sources */, D27451B819AE5517006DA0A1 /* CCEffectDistanceField.m in Sources */, A0DA0BC415BCDCA200E80A92 /* CCDrawNode.m in Sources */, D27451AC19AD430A006DA0A1 /* CCEffectDropShadow.m in Sources */, @@ -2527,11 +2357,9 @@ B74C2B9C17BDA63A00A829C0 /* CCSprite9Slice.m in Sources */, B75C2E7D17C5908B002B0E0D /* NSAttributedString+CCAdditions.m in Sources */, B7EE69E31819E75700B983FE /* CCLayoutBox.m in Sources */, - 83E1A88719C8ACDC000A3BCA /* CCPackageCocos2dEnabler.m in Sources */, B7E776221857A159004221AA /* CCColor.m in Sources */, A6DC4E0A18055DCC00C280A6 /* CCTransition.m in Sources */, A6A0734617C788EB004343C8 /* CCResponderManager.m in Sources */, - 83E1A88B19C8ACDC000A3BCA /* CCPackageInstaller.m in Sources */, D23C5CB5194BC108007CA669 /* CCTouchIOS.m in Sources */, A6A0734B17C78EF3004343C8 /* CCResponder.m in Sources */, B78AE46317E7AF1C0028BE0B /* CCButton.m in Sources */, @@ -2546,7 +2374,6 @@ D33803E318032ECE0072D8FE /* CCPhysicsBody.m in Sources */, D268FE12198078FF00ECBCD0 /* CCEffectHue.m in Sources */, 839CE58719FFB139003369F0 /* CCEffectInvert.m in Sources */, - E525F0F74C7C69C4371E20EE /* CCPackageHelper.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2558,7 +2385,6 @@ 7A59479319E3759800F65F90 /* CCEffectDFOutline.m in Sources */, 839CE58B19FFB146003369F0 /* CCEffectInvert.m in Sources */, 7A59479519E3759800F65F90 /* CCEffectDFInnerGlow.m in Sources */, - 83E21C001A121EB5000D1695 /* CCPackageManager.m in Sources */, 7A59479719E3759800F65F90 /* CCEffectColorChannelOffset.m in Sources */, 7A59479919E3759900F65F90 /* CCEffectBlur.m in Sources */, 7A59479B19E3759900F65F90 /* CCEffectRefraction.m in Sources */, @@ -2604,15 +2430,7 @@ 9D9205D71A0173D600FF2D6D /* CCLightCollection.m in Sources */, 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */, 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */, - 7A59481119E375A500F65F90 /* CCPackage.m in Sources */, 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */, - 7A59481319E375A500F65F90 /* CCPackageConstants.m in Sources */, - 7A59481919E375A600F65F90 /* CCPackageDownload.m in Sources */, - 7A59481C19E375A600F65F90 /* CCPackageDownloadManager.m in Sources */, - 7A59481F19E375A600F65F90 /* CCPackageUnzipper.m in Sources */, - 7A59482219E375A700F65F90 /* CCPackageCocos2dEnabler.m in Sources */, - 7A59482419E375A700F65F90 /* CCPackageInstaller.m in Sources */, - 7A59482619E375A700F65F90 /* CCPackageHelper.m in Sources */, 7A59482A19E375A700F65F90 /* CCActionManager.m in Sources */, 7A59482C19E375A800F65F90 /* CCAction.m in Sources */, 7A59482E19E375A800F65F90 /* CCActionInstant.m in Sources */, From 5d2186ecb94d16d79c070c3c8694f7c926cad937 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 8 Feb 2016 01:22:28 +0300 Subject: [PATCH 12/94] CCParallaxNode moved to -ext --- .../CCParallaxNode}/CCParallaxNode.h | 0 .../CCParallaxNode}/CCParallaxNode.m | 0 cocos2d-tests.xcodeproj/project.pbxproj | 19 +++++++++++++++++++ cocos2d-ui-tests/tests/ParallaxTest.m | 2 ++ cocos2d.xcodeproj/project.pbxproj | 14 -------------- cocos2d/cocos2d.h | 1 - 6 files changed, 21 insertions(+), 15 deletions(-) rename {cocos2d => cocos2d-ext/CCParallaxNode}/CCParallaxNode.h (100%) rename {cocos2d => cocos2d-ext/CCParallaxNode}/CCParallaxNode.m (100%) diff --git a/cocos2d/CCParallaxNode.h b/cocos2d-ext/CCParallaxNode/CCParallaxNode.h similarity index 100% rename from cocos2d/CCParallaxNode.h rename to cocos2d-ext/CCParallaxNode/CCParallaxNode.h diff --git a/cocos2d/CCParallaxNode.m b/cocos2d-ext/CCParallaxNode/CCParallaxNode.m similarity index 100% rename from cocos2d/CCParallaxNode.m rename to cocos2d-ext/CCParallaxNode/CCParallaxNode.m diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index 76184752e4c..73d3e7b9d53 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -80,6 +80,9 @@ 089949F81C67F97D00ECC92C /* SSZipArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949EB1C67F97D00ECC92C /* SSZipArchive.m */; }; 089949F91C67F97D00ECC92C /* SSZipArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949EB1C67F97D00ECC92C /* SSZipArchive.m */; }; 089949FA1C67F97D00ECC92C /* SSZipArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949EB1C67F97D00ECC92C /* SSZipArchive.m */; }; + 089949FE1C67FAB000ECC92C /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */; }; + 089949FF1C67FAB000ECC92C /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */; }; + 08994A001C67FAB000ECC92C /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */; }; 0E28FE1A197FCE4500F78989 /* CCCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E28FE19197FCE4500F78989 /* CCCacheTest.m */; }; 75556A04185636F100ED1B0F /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75556A03185636F100ED1B0F /* XCTest.framework */; }; 75556A05185636F100ED1B0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605717E7D278007067F0 /* Foundation.framework */; }; @@ -444,6 +447,8 @@ 089949E91C67F97D00ECC92C /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; 089949EA1C67F97D00ECC92C /* SSZipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SSZipArchive.h; path = external/SSZipArchive/SSZipArchive/SSZipArchive.h; sourceTree = SOURCE_ROOT; }; 089949EB1C67F97D00ECC92C /* SSZipArchive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SSZipArchive.m; path = external/SSZipArchive/SSZipArchive/SSZipArchive.m; sourceTree = SOURCE_ROOT; }; + 089949FC1C67FAB000ECC92C /* CCParallaxNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParallaxNode.h; sourceTree = ""; }; + 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParallaxNode.m; sourceTree = ""; }; 0E28FE19197FCE4500F78989 /* CCCacheTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCCacheTest.m; path = "cocos2d-ui-tests/tests/CCCacheTest.m"; sourceTree = SOURCE_ROOT; }; 755569E31856361100ED1B0F /* CCFileUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtilTests.m; sourceTree = ""; }; 755569E41856361100ED1B0F /* CCNodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNodeTests.m; sourceTree = ""; }; @@ -668,6 +673,7 @@ 084781FF1C66666B00C3817B /* cocos2d-ext */ = { isa = PBXGroup; children = ( + 089949FB1C67FAB000ECC92C /* CCParallaxNode */, 089949871C67F40000ECC92C /* CCPackages */, 0899496F1C67F2D600ECC92C /* CCParticles */, 089949691C67F1BE00ECC92C /* CCClippingNode */, @@ -786,6 +792,16 @@ path = external/SSZipArchive/SSZipArchive/minizip; sourceTree = SOURCE_ROOT; }; + 089949FB1C67FAB000ECC92C /* CCParallaxNode */ = { + isa = PBXGroup; + children = ( + 089949FC1C67FAB000ECC92C /* CCParallaxNode.h */, + 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */, + ); + name = CCParallaxNode; + path = "cocos2d-ext/CCParallaxNode"; + sourceTree = SOURCE_ROOT; + }; 755569EC1856361100ED1B0F /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -1462,6 +1478,7 @@ 92FE241118F5F06F00647961 /* CCAnimationTest.m in Sources */, 75556A171856370A00ED1B0F /* CCNodeTests.m in Sources */, D3395F1A187F83E600F22C74 /* CCMemoryTests.m in Sources */, + 089949FF1C67FAB000ECC92C /* CCParallaxNode.m in Sources */, 75556A181856370A00ED1B0F /* CCPhysicsTests.m in Sources */, 089949F61C67F97D00ECC92C /* zip.c in Sources */, 0899497B1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */, @@ -1504,6 +1521,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 089949FE1C67FAB000ECC92C /* CCParallaxNode.m in Sources */, B71B087C17EA5B490082EBC0 /* TestBase.m in Sources */, D3870C6018B440150033D885 /* SpritePerformanceTest.m in Sources */, 0847820C1C66669300C3817B /* CCTiledMapLayer.m in Sources */, @@ -1564,6 +1582,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 08994A001C67FAB000ECC92C /* CCParallaxNode.m in Sources */, D3763D3819E734C5006C050D /* MainMenu.m in Sources */, D3763D3919E734C5006C050D /* TestBase.m in Sources */, 0847820E1C66669300C3817B /* CCTiledMapLayer.m in Sources */, diff --git a/cocos2d-ui-tests/tests/ParallaxTest.m b/cocos2d-ui-tests/tests/ParallaxTest.m index bb07262181a..b5272be65ef 100644 --- a/cocos2d-ui-tests/tests/ParallaxTest.m +++ b/cocos2d-ui-tests/tests/ParallaxTest.m @@ -12,6 +12,8 @@ // local import #import "TestBase.h" +#import "CCParallaxNode.h" + @interface ParallaxTest : TestBase @end @implementation ParallaxTest diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index afed996ba48..cfbf9ad9319 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -51,8 +51,6 @@ 5018F2E40DFDEBBA00C013A5 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; }; 501CCFB40E99657C00B86F68 /* TGAlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 501CCFAB0E99657C00B86F68 /* TGAlib.m */; }; 501CCFB50E99657C00B86F68 /* TGAlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 501CCFAC0E99657C00B86F68 /* TGAlib.h */; }; - 502C6C6C0FB87970002BF3C2 /* CCParallaxNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C6C6A0FB87970002BF3C2 /* CCParallaxNode.h */; }; - 502C6C6D0FB87970002BF3C2 /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */; }; 502C8BE010A661E200D137BA /* CCSpriteFrameCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C8BDE10A661E200D137BA /* CCSpriteFrameCache.h */; }; 502C8BE110A661E200D137BA /* CCSpriteFrameCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C8BDF10A661E200D137BA /* CCSpriteFrameCache.m */; }; 50305AF40E40E33200F63373 /* cocos2d.h in Headers */ = {isa = PBXBuildFile; fileRef = 50305AF30E40E33200F63373 /* cocos2d.h */; }; @@ -140,8 +138,6 @@ 7A59468D19E372F000F65F90 /* CCResponder.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734817C78EF3004343C8 /* CCResponder.h */; }; 7A59469119E372F000F65F90 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; 7A59469319E372F000F65F90 /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; - 7A59469F19E372F100F65F90 /* CCParallaxNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C6C6A0FB87970002BF3C2 /* CCParallaxNode.h */; }; - 7A5946A019E372F100F65F90 /* CCParallaxNode.m in Headers */ = {isa = PBXBuildFile; fileRef = 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */; }; 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2600DFDEAFF00C013A5 /* CCScene.h */; }; 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; 7A5946AE19E372F200F65F90 /* CCPhysicsBody.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803E418032F250072D8FE /* CCPhysicsBody.h */; }; @@ -271,7 +267,6 @@ 7A5947D619E3759F00F65F90 /* CCSpriteFrameCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C8BDF10A661E200D137BA /* CCSpriteFrameCache.m */; }; 7A5947D919E3759F00F65F90 /* CCResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734917C78EF3004343C8 /* CCResponder.m */; }; 7A5947DB19E3759F00F65F90 /* CCResponderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734417C788EB004343C8 /* CCResponderManager.m */; }; - 7A5947EB19E375A100F65F90 /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */; }; 7A5947F619E375A200F65F90 /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2610DFDEAFF00C013A5 /* CCScene.m */; }; 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; 7A5947FA19E375A200F65F90 /* CCPhysicsBody.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E218032ECE0072D8FE /* CCPhysicsBody.m */; }; @@ -720,8 +715,6 @@ 501A7CAC0EBC97BA005BC158 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; 501CCFAB0E99657C00B86F68 /* TGAlib.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGAlib.m; sourceTree = ""; }; 501CCFAC0E99657C00B86F68 /* TGAlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGAlib.h; sourceTree = ""; }; - 502C6C6A0FB87970002BF3C2 /* CCParallaxNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParallaxNode.h; sourceTree = ""; }; - 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParallaxNode.m; sourceTree = ""; }; 502C8BDE10A661E200D137BA /* CCSpriteFrameCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSpriteFrameCache.h; sourceTree = ""; }; 502C8BDF10A661E200D137BA /* CCSpriteFrameCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSpriteFrameCache.m; sourceTree = ""; }; 50305AF30E40E33200F63373 /* cocos2d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cocos2d.h; sourceTree = ""; }; @@ -1332,8 +1325,6 @@ 50EA8DA011354A6000746D2A /* Misc Nodes */ = { isa = PBXGroup; children = ( - 502C6C6A0FB87970002BF3C2 /* CCParallaxNode.h */, - 502C6C6B0FB87970002BF3C2 /* CCParallaxNode.m */, D272031E18FC89A000B100FF /* CCEffectNode.h */, D272031F18FC89A000B100FF /* CCEffectNode.m */, 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */, @@ -1749,7 +1740,6 @@ D268FE231980791C00ECBCD0 /* CCEffectStack_Private.h in Headers */, 9D9205D21A0173D600FF2D6D /* CCLightCollection.h in Headers */, 503798C60F912C2000986724 /* CGPointExtension.h in Headers */, - 502C6C6C0FB87970002BF3C2 /* CCParallaxNode.h in Headers */, 571CD02A19649E03003D460C /* CCPlatformTextFieldIOS.h in Headers */, B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */, D24161111958F72B003673BD /* CCEffectStackProtocol.h in Headers */, @@ -1901,8 +1891,6 @@ 7A59468D19E372F000F65F90 /* CCResponder.h in Headers */, 7A59469119E372F000F65F90 /* CCTouch.h in Headers */, 7A59469319E372F000F65F90 /* CCTouchEvent.h in Headers */, - 7A59469F19E372F100F65F90 /* CCParallaxNode.h in Headers */, - 7A5946A019E372F100F65F90 /* CCParallaxNode.m in Headers */, 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */, 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */, 7A5946AE19E372F200F65F90 /* CCPhysicsBody.h in Headers */, @@ -2295,7 +2283,6 @@ D272032C18FC89A000B100FF /* CCEffectNode.m in Sources */, 503798C70F912C2000986724 /* CGPointExtension.m in Sources */, D268FE1B1980791400ECBCD0 /* CCEffectRefraction.m in Sources */, - 502C6C6D0FB87970002BF3C2 /* CCParallaxNode.m in Sources */, 50CB3B0F100AC43A00B7A750 /* CCActionManager.m in Sources */, D3903B11199528A0003AA81A /* CCRenderDispatch.m in Sources */, B7E775D118527EF0004221AA /* CCAppDelegate.m in Sources */, @@ -2418,7 +2405,6 @@ 7A5947D619E3759F00F65F90 /* CCSpriteFrameCache.m in Sources */, 7A5947D919E3759F00F65F90 /* CCResponder.m in Sources */, 7A5947DB19E3759F00F65F90 /* CCResponderManager.m in Sources */, - 7A5947EB19E375A100F65F90 /* CCParallaxNode.m in Sources */, 7A5947F619E375A200F65F90 /* CCScene.m in Sources */, 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */, 7A5947FA19E375A200F65F90 /* CCPhysicsBody.m in Sources */, diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index d5568b383ba..5d7fbb67909 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -83,7 +83,6 @@ #import "CCNode+Debug.h" #import "CCNode.h" #import "CCNodeColor.h" -#import "CCParallaxNode.h" #import "CCProtocols.h" #import "CCRenderTexture.h" #import "CCScene.h" From 81b2107b8b1086cba0caa62ee160156fef0c89c8 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 8 Feb 2016 03:23:41 +0300 Subject: [PATCH 13/94] New start-up code --- cocos2d-tests.xcodeproj/project.pbxproj | 10 ---------- cocos2d-ui-tests/ios/AppDelegate.m | 20 ++++++++++--------- cocos2d/Platforms/iOS/CCAppDelegate.h | 11 ---------- cocos2d/Platforms/iOS/CCAppDelegate.m | 12 +---------- cocos2d/Platforms/iOS/CCDirectorIOS.m | 3 --- .../Classes/AppDelegate.m | 19 +++++++++--------- 6 files changed, 21 insertions(+), 54 deletions(-) diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index 73d3e7b9d53..14a5479fd4c 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -64,7 +64,6 @@ 089949B91C67F40000ECC92C /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499F1C67F40000ECC92C /* CCPackageUnzipper.m */; }; 089949BA1C67F40000ECC92C /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499F1C67F40000ECC92C /* CCPackageUnzipper.m */; }; 089949BB1C67F40000ECC92C /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499F1C67F40000ECC92C /* CCPackageUnzipper.m */; }; - 089949BF1C67F59F00ECC92C /* libSSZipArchiveMac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 089949BE1C67F59F00ECC92C /* libSSZipArchiveMac.a */; }; 089949EC1C67F97D00ECC92C /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E21C67F97D00ECC92C /* ioapi.c */; }; 089949ED1C67F97D00ECC92C /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E21C67F97D00ECC92C /* ioapi.c */; }; 089949EE1C67F97D00ECC92C /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E21C67F97D00ECC92C /* ioapi.c */; }; @@ -652,7 +651,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 089949BF1C67F59F00ECC92C /* libSSZipArchiveMac.a in Frameworks */, D3763DDD19E73667006C050D /* AppKit.framework in Frameworks */, D3763DDB19E7364F006C050D /* OpenGL.framework in Frameworks */, D3763DD919E735CB006C050D /* libcocos2d-mac.a in Frameworks */, @@ -942,7 +940,6 @@ children = ( 084781FF1C66666B00C3817B /* cocos2d-ext */, B7E2621E17E7D398007067F0 /* Testbed */, - B7E2621D17E7D38D007067F0 /* AppDelegate */, B71B087F17EA5B500082EBC0 /* Tests */, D3E1842A19E861FC00A08B01 /* MetalShaders */, B7E261EC17E7D27A007067F0 /* Platform/iOS */, @@ -984,13 +981,6 @@ path = "cocos2d-ui-tests/ios/Resources"; sourceTree = SOURCE_ROOT; }; - B7E2621D17E7D38D007067F0 /* AppDelegate */ = { - isa = PBXGroup; - children = ( - ); - name = AppDelegate; - sourceTree = ""; - }; B7E2621E17E7D398007067F0 /* Testbed */ = { isa = PBXGroup; children = ( diff --git a/cocos2d-ui-tests/ios/AppDelegate.m b/cocos2d-ui-tests/ios/AppDelegate.m index 4cb96e6faec..71862b8d46f 100644 --- a/cocos2d-ui-tests/ios/AppDelegate.m +++ b/cocos2d-ui-tests/ios/AppDelegate.m @@ -52,6 +52,8 @@ - (void)configureCocos2d CCSetupTabletScale2X: @YES, CCSetupShowDebugStats: @(getenv("SHOW_DEBUG_STATS") != nil), }]; + + [[CCDirector sharedDirector] runWithScene:[MainMenu scene]]; } - (void)configureFileUtilsSearchPathAndRegisterSpriteSheets @@ -75,16 +77,16 @@ - (void)configureFileUtilsSearchPathAndRegisterSpriteSheets [[CCSpriteFrameCache sharedSpriteFrameCache] registerSpriteFramesFile:@"TilesAtlassed.plist"]; } -- (CCScene*) startScene +/*- (CCScene*) startScene { - const char *testName = getenv("Test"); - - if(testName){ - return [TestBase sceneWithTestName:[NSString stringWithCString:testName encoding:NSUTF8StringEncoding]]; - } else { - return [MainMenu scene]; - } -} + const char *testName = getenv("Test"); + + if(testName){ + return [TestBase sceneWithTestName:[NSString stringWithCString:testName encoding:NSUTF8StringEncoding]]; + } else { + return [MainMenu scene]; + } +}*/ //// I'm going to leave this in for testing the fixed size screen mode in the future. //- (CCScene*) startScene diff --git a/cocos2d/Platforms/iOS/CCAppDelegate.h b/cocos2d/Platforms/iOS/CCAppDelegate.h index bb6d8e94f3c..79dab1b7fb8 100644 --- a/cocos2d/Platforms/iOS/CCAppDelegate.h +++ b/cocos2d/Platforms/iOS/CCAppDelegate.h @@ -72,17 +72,6 @@ */ @property (atomic, readonly) CCNavigationController *navController; -// ----------------------------------------------------------------------- -/** @name Creating the Start Scene */ -// ----------------------------------------------------------------------- - -/** - * Override this method to return the very first scene that Cocos2D should present. - * - * @return The first scene of your app. It will be presented automatically. - */ -- (CCScene*) startScene; - // ----------------------------------------------------------------------- /** @name Cocos2d Setup */ // ----------------------------------------------------------------------- diff --git a/cocos2d/Platforms/iOS/CCAppDelegate.m b/cocos2d/Platforms/iOS/CCAppDelegate.m index 1ecea621aab..e45755d14d4 100644 --- a/cocos2d/Platforms/iOS/CCAppDelegate.m +++ b/cocos2d/Platforms/iOS/CCAppDelegate.m @@ -110,11 +110,7 @@ -(GLKMatrix4)updateProjection // This is not needed on iOS6 and could be added to the application:didFinish... -(void) directorDidReshapeProjection:(CCDirector*)director { - if(director.runningScene == nil) { - // Add the first scene to the stack. The director will draw it immediately into the framebuffer. (Animation is started automatically when the view is displayed.) - // and add the scene to the stack. The director will run it when it automatically when the view is displayed. - [director runWithScene: [_appDelegate startScene]]; - } + [director drawScene]; } @end @@ -128,12 +124,6 @@ - (UIInterfaceOrientationMask)application:(UIApplication *)application supported return UIInterfaceOrientationMaskAll; } -- (CCScene*) startScene -{ - NSAssert(NO, @"Override CCAppDelegate and implement the startScene method"); - return NULL; -} - static CGFloat FindPOTScale(CGFloat size, CGFloat fixedSize) { diff --git a/cocos2d/Platforms/iOS/CCDirectorIOS.m b/cocos2d/Platforms/iOS/CCDirectorIOS.m index ff8302c715c..69084227665 100644 --- a/cocos2d/Platforms/iOS/CCDirectorIOS.m +++ b/cocos2d/Platforms/iOS/CCDirectorIOS.m @@ -150,9 +150,6 @@ - (void)runWithScene:(CCScene*) scene NSAssert(_runningScene == nil, @"This command can only be used to start the CCDirector. There is already a scene present."); [self pushScene:scene]; - - NSThread *thread = [self runningThread]; - [self performSelector:@selector(drawScene) onThread:thread withObject:nil waitUntilDone:YES]; } -(void) reshapeProjection:(CGSize)newViewSize diff --git a/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.m b/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.m index 61aeb98ac22..797b37ff211 100755 --- a/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.m +++ b/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.m @@ -68,20 +68,19 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( // Lets get this thing on the road! [self setupCocos2dWithOptions:startUpOptions]; + CCDirectorIOS* director = (CCDirectorIOS*)[CCDirector sharedDirector]; + + // Creat a scene + CCScene* main = [HelloWorldScene new]; + + // Run the director with the scene. + // Push as much scenes as you want (maybe useful for 3D touch) + [director runWithScene:main]; + // Stay positive. Always return a YES :) return YES; } -// ----------------------------------------------------------------------- -// This method should return the very first scene to be run when your app starts. - -- (CCScene *)startScene -{ - return [HelloWorldScene new]; -} - -// ----------------------------------------------------------------------- - @end From 4c569febb6f31195da25094ca2b40340d10cc618 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 8 Feb 2016 20:10:21 +0300 Subject: [PATCH 14/94] Drop direct SSZipArchive dependency --- cocos2d.xcodeproj/project.pbxproj | 99 ------------------------------- 1 file changed, 99 deletions(-) diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index cfbf9ad9319..80b2b82a6a5 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -554,48 +554,6 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 7A40378219E36EFF007B6E8F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 7A4036DE19DE3DF6007B6E8F; - remoteInfo = SSZipArchiveAndroid; - }; - 7A59497E19E38C8300F65F90 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 7A59495A19E38BE500F65F90; - remoteInfo = SSZipArchiveMac; - }; - 7A59498119E38C8300F65F90 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 7A59495B19E38BE500F65F90; - remoteInfo = SSZipArchiveMac; - }; - 83409E3119D5B791004B7EB9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 21CC41A517DB7D1300201DDC; - remoteInfo = SSZipArchiveExampleApp; - }; - 83409E3519D5B791004B7EB9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83409DCE19D5B65B004B7EB9; - remoteInfo = SSZipArchive; - }; - 83409E4C19D5E8A1004B7EB9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 83409DCD19D5B65B004B7EB9; - remoteInfo = SSZipArchive; - }; B15348341BE1E78C0022C4BB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */; @@ -768,7 +726,6 @@ 7A4037C319E3711D007B6E8F /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework; sourceTree = DEVELOPER_DIR; }; 7A4037C519E37126007B6E8F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; 7A4037C719E3712A007B6E8F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; - 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SSZipArchive.xcodeproj; path = external/SSZipArchive/SSZipArchive.xcodeproj; sourceTree = ""; }; 839CE58419FFB139003369F0 /* CCEffectInvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectInvert.h; sourceTree = ""; }; 839CE58519FFB139003369F0 /* CCEffectInvert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectInvert.m; sourceTree = ""; }; 83E1A88D19C8C19D000A3BCA /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; @@ -1130,7 +1087,6 @@ isa = PBXGroup; children = ( B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */, - 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */, FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */, ); name = external; @@ -1373,17 +1329,6 @@ path = Mac; sourceTree = ""; }; - 83409E2B19D5B791004B7EB9 /* Products */ = { - isa = PBXGroup; - children = ( - 83409E3219D5B791004B7EB9 /* SSZipArchiveExampleApp.app */, - 83409E3619D5B791004B7EB9 /* libSSZipArchive.a */, - 7A40378319E36EFF007B6E8F /* libSSZipArchiveAndroid.a */, - 7A59498219E38C8300F65F90 /* libSSZipArchiveMac.a */, - ); - name = Products; - sourceTree = ""; - }; A0D7D9D415E2E737000CA0C4 /* Physics */ = { isa = PBXGroup; children = ( @@ -2016,7 +1961,6 @@ buildRules = ( ); dependencies = ( - 83409E4D19D5E8A1004B7EB9 /* PBXTargetDependency */, FCFDA23E19C78E2D00B90910 /* PBXTargetDependency */, ); name = "cocos2d-ios"; @@ -2035,7 +1979,6 @@ buildRules = ( ); dependencies = ( - 7A59497F19E38C8300F65F90 /* PBXTargetDependency */, ); name = "cocos2d-mac"; productName = "cocos2d-mac"; @@ -2100,10 +2043,6 @@ ProductGroup = FC39961419C3B92F00C93E5E /* Products */; ProjectRef = FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */; }, - { - ProductGroup = 83409E2B19D5B791004B7EB9 /* Products */; - ProjectRef = 83409E2A19D5B791004B7EB9 /* SSZipArchive.xcodeproj */; - }, ); projectRoot = ""; targets = ( @@ -2116,34 +2055,6 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 7A40378319E36EFF007B6E8F /* libSSZipArchiveAndroid.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libSSZipArchiveAndroid.a; - remoteRef = 7A40378219E36EFF007B6E8F /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 7A59498219E38C8300F65F90 /* libSSZipArchiveMac.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libSSZipArchiveMac.a; - remoteRef = 7A59498119E38C8300F65F90 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 83409E3219D5B791004B7EB9 /* SSZipArchiveExampleApp.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = SSZipArchiveExampleApp.app; - remoteRef = 83409E3119D5B791004B7EB9 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 83409E3619D5B791004B7EB9 /* libSSZipArchive.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libSSZipArchive.a; - remoteRef = 83409E3519D5B791004B7EB9 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; B15348351BE1E78C0022C4BB /* libObjectAL (Android).a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -2493,16 +2404,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 7A59497F19E38C8300F65F90 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SSZipArchiveMac; - targetProxy = 7A59497E19E38C8300F65F90 /* PBXContainerItemProxy */; - }; - 83409E4D19D5E8A1004B7EB9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SSZipArchive; - targetProxy = 83409E4C19D5E8A1004B7EB9 /* PBXContainerItemProxy */; - }; B7E7DE4E1A76DB8B004234B7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 7A4037A719E37038007B6E8F /* cocos2d-mac */; From 22a4ec4f3ad1d934271f76daa8c805fbd0dccab6 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Tue, 9 Feb 2016 23:58:19 +0300 Subject: [PATCH 15/94] subproj commit --- cocos2d-ui/CCBReader/CCAnimationManager.m | 1 - 1 file changed, 1 deletion(-) diff --git a/cocos2d-ui/CCBReader/CCAnimationManager.m b/cocos2d-ui/CCBReader/CCAnimationManager.m index 3bd5b038ead..f6412922786 100644 --- a/cocos2d-ui/CCBReader/CCAnimationManager.m +++ b/cocos2d-ui/CCBReader/CCAnimationManager.m @@ -29,7 +29,6 @@ #import "CCBSequenceProperty.h" #import "CCBReader.h" #import "CCBKeyframe.h" -#import "OALSimpleAudio.h" #import #import "CCDirector_Private.h" From 169b65dcbd95fc21e9d87552ee524d0de25cee5e Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 10 Feb 2016 00:10:42 +0300 Subject: [PATCH 16/94] CCEffects moved to -ext --- {cocos2d => cocos2d-ext/CCEffects}/CCEffect.h | 0 {cocos2d => cocos2d-ext/CCEffects}/CCEffect.m | 0 .../CCEffects}/CCEffectBloom.h | 0 .../CCEffects}/CCEffectBloom.m | 0 .../CCEffects}/CCEffectBlur.h | 0 .../CCEffects}/CCEffectBlur.m | 0 .../CCEffects}/CCEffectBrightness.h | 0 .../CCEffects}/CCEffectBrightness.m | 0 .../CCEffects}/CCEffectColorChannelOffset.h | 0 .../CCEffects}/CCEffectColorChannelOffset.m | 0 .../CCEffects}/CCEffectContrast.h | 0 .../CCEffects}/CCEffectContrast.m | 0 .../CCEffects}/CCEffectDFInnerGlow.h | 0 .../CCEffects}/CCEffectDFInnerGlow.m | 0 .../CCEffects}/CCEffectDFOutline.h | 0 .../CCEffects}/CCEffectDFOutline.m | 0 .../CCEffects}/CCEffectDistanceField.h | 0 .../CCEffects}/CCEffectDistanceField.m | 0 .../CCEffects}/CCEffectDropShadow.h | 0 .../CCEffects}/CCEffectDropShadow.m | 0 .../CCEffects}/CCEffectDropShadow_dist.h | 0 .../CCEffects}/CCEffectDropShadow_dist.m | 0 .../CCEffects}/CCEffectGlass.h | 0 .../CCEffects}/CCEffectGlass.m | 0 .../CCEffects}/CCEffectHue.h | 0 .../CCEffects}/CCEffectHue.m | 0 .../CCEffects}/CCEffectInvert.h | 0 .../CCEffects}/CCEffectInvert.m | 0 .../CCEffects}/CCEffectLighting.h | 0 .../CCEffects}/CCEffectLighting.m | 0 .../CCEffects}/CCEffectNode.h | 0 .../CCEffects}/CCEffectNode.m | 0 .../CCEffects}/CCEffectOutline.h | 0 .../CCEffects}/CCEffectOutline.m | 0 .../CCEffects}/CCEffectPixellate.h | 0 .../CCEffects}/CCEffectPixellate.m | 0 .../CCEffects}/CCEffectReflection.h | 0 .../CCEffects}/CCEffectReflection.m | 0 .../CCEffects}/CCEffectRefraction.h | 0 .../CCEffects}/CCEffectRefraction.m | 0 .../CCEffects}/CCEffectRenderer.h | 0 .../CCEffects}/CCEffectRenderer.m | 0 .../CCEffects}/CCEffectSaturation.h | 0 .../CCEffects}/CCEffectSaturation.m | 0 .../CCEffects}/CCEffectStack.h | 0 .../CCEffects}/CCEffectStack.m | 0 .../CCEffects}/CCEffectStackProtocol.h | 0 .../CCEffects}/CCEffectStack_Private.h | 0 .../CCEffects}/CCEffectStereo.h | 0 .../CCEffects}/CCEffectStereo.m | 0 .../CCEffects}/CCEffectUtils.h | 0 .../CCEffects}/CCEffectUtils.m | 0 .../CCEffects}/CCEffect_Private.h | 0 cocos2d-ui-tests/tests/CCEffectsTest.m | 4 + cocos2d-ui/CCBReader/CCBReader.m | 10 +- cocos2d.xcodeproj/project.pbxproj | 340 +----------------- cocos2d/CCNoARC.m | 3 +- cocos2d/CCSprite.m | 47 +-- cocos2d/CCSprite_Private.h | 10 +- cocos2d/ccConfig.h | 4 + cocos2d/cocos2d.h | 24 -- 61 files changed, 57 insertions(+), 385 deletions(-) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffect.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffect.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectBloom.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectBloom.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectBlur.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectBlur.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectBrightness.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectBrightness.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectColorChannelOffset.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectColorChannelOffset.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectContrast.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectContrast.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDFInnerGlow.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDFInnerGlow.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDFOutline.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDFOutline.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDistanceField.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDistanceField.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDropShadow.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDropShadow.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDropShadow_dist.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectDropShadow_dist.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectGlass.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectGlass.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectHue.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectHue.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectInvert.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectInvert.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectLighting.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectLighting.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectNode.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectNode.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectOutline.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectOutline.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectPixellate.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectPixellate.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectReflection.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectReflection.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectRefraction.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectRefraction.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectRenderer.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectRenderer.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectSaturation.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectSaturation.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectStack.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectStack.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectStackProtocol.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectStack_Private.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectStereo.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectStereo.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectUtils.h (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffectUtils.m (100%) rename {cocos2d => cocos2d-ext/CCEffects}/CCEffect_Private.h (100%) diff --git a/cocos2d/CCEffect.h b/cocos2d-ext/CCEffects/CCEffect.h similarity index 100% rename from cocos2d/CCEffect.h rename to cocos2d-ext/CCEffects/CCEffect.h diff --git a/cocos2d/CCEffect.m b/cocos2d-ext/CCEffects/CCEffect.m similarity index 100% rename from cocos2d/CCEffect.m rename to cocos2d-ext/CCEffects/CCEffect.m diff --git a/cocos2d/CCEffectBloom.h b/cocos2d-ext/CCEffects/CCEffectBloom.h similarity index 100% rename from cocos2d/CCEffectBloom.h rename to cocos2d-ext/CCEffects/CCEffectBloom.h diff --git a/cocos2d/CCEffectBloom.m b/cocos2d-ext/CCEffects/CCEffectBloom.m similarity index 100% rename from cocos2d/CCEffectBloom.m rename to cocos2d-ext/CCEffects/CCEffectBloom.m diff --git a/cocos2d/CCEffectBlur.h b/cocos2d-ext/CCEffects/CCEffectBlur.h similarity index 100% rename from cocos2d/CCEffectBlur.h rename to cocos2d-ext/CCEffects/CCEffectBlur.h diff --git a/cocos2d/CCEffectBlur.m b/cocos2d-ext/CCEffects/CCEffectBlur.m similarity index 100% rename from cocos2d/CCEffectBlur.m rename to cocos2d-ext/CCEffects/CCEffectBlur.m diff --git a/cocos2d/CCEffectBrightness.h b/cocos2d-ext/CCEffects/CCEffectBrightness.h similarity index 100% rename from cocos2d/CCEffectBrightness.h rename to cocos2d-ext/CCEffects/CCEffectBrightness.h diff --git a/cocos2d/CCEffectBrightness.m b/cocos2d-ext/CCEffects/CCEffectBrightness.m similarity index 100% rename from cocos2d/CCEffectBrightness.m rename to cocos2d-ext/CCEffects/CCEffectBrightness.m diff --git a/cocos2d/CCEffectColorChannelOffset.h b/cocos2d-ext/CCEffects/CCEffectColorChannelOffset.h similarity index 100% rename from cocos2d/CCEffectColorChannelOffset.h rename to cocos2d-ext/CCEffects/CCEffectColorChannelOffset.h diff --git a/cocos2d/CCEffectColorChannelOffset.m b/cocos2d-ext/CCEffects/CCEffectColorChannelOffset.m similarity index 100% rename from cocos2d/CCEffectColorChannelOffset.m rename to cocos2d-ext/CCEffects/CCEffectColorChannelOffset.m diff --git a/cocos2d/CCEffectContrast.h b/cocos2d-ext/CCEffects/CCEffectContrast.h similarity index 100% rename from cocos2d/CCEffectContrast.h rename to cocos2d-ext/CCEffects/CCEffectContrast.h diff --git a/cocos2d/CCEffectContrast.m b/cocos2d-ext/CCEffects/CCEffectContrast.m similarity index 100% rename from cocos2d/CCEffectContrast.m rename to cocos2d-ext/CCEffects/CCEffectContrast.m diff --git a/cocos2d/CCEffectDFInnerGlow.h b/cocos2d-ext/CCEffects/CCEffectDFInnerGlow.h similarity index 100% rename from cocos2d/CCEffectDFInnerGlow.h rename to cocos2d-ext/CCEffects/CCEffectDFInnerGlow.h diff --git a/cocos2d/CCEffectDFInnerGlow.m b/cocos2d-ext/CCEffects/CCEffectDFInnerGlow.m similarity index 100% rename from cocos2d/CCEffectDFInnerGlow.m rename to cocos2d-ext/CCEffects/CCEffectDFInnerGlow.m diff --git a/cocos2d/CCEffectDFOutline.h b/cocos2d-ext/CCEffects/CCEffectDFOutline.h similarity index 100% rename from cocos2d/CCEffectDFOutline.h rename to cocos2d-ext/CCEffects/CCEffectDFOutline.h diff --git a/cocos2d/CCEffectDFOutline.m b/cocos2d-ext/CCEffects/CCEffectDFOutline.m similarity index 100% rename from cocos2d/CCEffectDFOutline.m rename to cocos2d-ext/CCEffects/CCEffectDFOutline.m diff --git a/cocos2d/CCEffectDistanceField.h b/cocos2d-ext/CCEffects/CCEffectDistanceField.h similarity index 100% rename from cocos2d/CCEffectDistanceField.h rename to cocos2d-ext/CCEffects/CCEffectDistanceField.h diff --git a/cocos2d/CCEffectDistanceField.m b/cocos2d-ext/CCEffects/CCEffectDistanceField.m similarity index 100% rename from cocos2d/CCEffectDistanceField.m rename to cocos2d-ext/CCEffects/CCEffectDistanceField.m diff --git a/cocos2d/CCEffectDropShadow.h b/cocos2d-ext/CCEffects/CCEffectDropShadow.h similarity index 100% rename from cocos2d/CCEffectDropShadow.h rename to cocos2d-ext/CCEffects/CCEffectDropShadow.h diff --git a/cocos2d/CCEffectDropShadow.m b/cocos2d-ext/CCEffects/CCEffectDropShadow.m similarity index 100% rename from cocos2d/CCEffectDropShadow.m rename to cocos2d-ext/CCEffects/CCEffectDropShadow.m diff --git a/cocos2d/CCEffectDropShadow_dist.h b/cocos2d-ext/CCEffects/CCEffectDropShadow_dist.h similarity index 100% rename from cocos2d/CCEffectDropShadow_dist.h rename to cocos2d-ext/CCEffects/CCEffectDropShadow_dist.h diff --git a/cocos2d/CCEffectDropShadow_dist.m b/cocos2d-ext/CCEffects/CCEffectDropShadow_dist.m similarity index 100% rename from cocos2d/CCEffectDropShadow_dist.m rename to cocos2d-ext/CCEffects/CCEffectDropShadow_dist.m diff --git a/cocos2d/CCEffectGlass.h b/cocos2d-ext/CCEffects/CCEffectGlass.h similarity index 100% rename from cocos2d/CCEffectGlass.h rename to cocos2d-ext/CCEffects/CCEffectGlass.h diff --git a/cocos2d/CCEffectGlass.m b/cocos2d-ext/CCEffects/CCEffectGlass.m similarity index 100% rename from cocos2d/CCEffectGlass.m rename to cocos2d-ext/CCEffects/CCEffectGlass.m diff --git a/cocos2d/CCEffectHue.h b/cocos2d-ext/CCEffects/CCEffectHue.h similarity index 100% rename from cocos2d/CCEffectHue.h rename to cocos2d-ext/CCEffects/CCEffectHue.h diff --git a/cocos2d/CCEffectHue.m b/cocos2d-ext/CCEffects/CCEffectHue.m similarity index 100% rename from cocos2d/CCEffectHue.m rename to cocos2d-ext/CCEffects/CCEffectHue.m diff --git a/cocos2d/CCEffectInvert.h b/cocos2d-ext/CCEffects/CCEffectInvert.h similarity index 100% rename from cocos2d/CCEffectInvert.h rename to cocos2d-ext/CCEffects/CCEffectInvert.h diff --git a/cocos2d/CCEffectInvert.m b/cocos2d-ext/CCEffects/CCEffectInvert.m similarity index 100% rename from cocos2d/CCEffectInvert.m rename to cocos2d-ext/CCEffects/CCEffectInvert.m diff --git a/cocos2d/CCEffectLighting.h b/cocos2d-ext/CCEffects/CCEffectLighting.h similarity index 100% rename from cocos2d/CCEffectLighting.h rename to cocos2d-ext/CCEffects/CCEffectLighting.h diff --git a/cocos2d/CCEffectLighting.m b/cocos2d-ext/CCEffects/CCEffectLighting.m similarity index 100% rename from cocos2d/CCEffectLighting.m rename to cocos2d-ext/CCEffects/CCEffectLighting.m diff --git a/cocos2d/CCEffectNode.h b/cocos2d-ext/CCEffects/CCEffectNode.h similarity index 100% rename from cocos2d/CCEffectNode.h rename to cocos2d-ext/CCEffects/CCEffectNode.h diff --git a/cocos2d/CCEffectNode.m b/cocos2d-ext/CCEffects/CCEffectNode.m similarity index 100% rename from cocos2d/CCEffectNode.m rename to cocos2d-ext/CCEffects/CCEffectNode.m diff --git a/cocos2d/CCEffectOutline.h b/cocos2d-ext/CCEffects/CCEffectOutline.h similarity index 100% rename from cocos2d/CCEffectOutline.h rename to cocos2d-ext/CCEffects/CCEffectOutline.h diff --git a/cocos2d/CCEffectOutline.m b/cocos2d-ext/CCEffects/CCEffectOutline.m similarity index 100% rename from cocos2d/CCEffectOutline.m rename to cocos2d-ext/CCEffects/CCEffectOutline.m diff --git a/cocos2d/CCEffectPixellate.h b/cocos2d-ext/CCEffects/CCEffectPixellate.h similarity index 100% rename from cocos2d/CCEffectPixellate.h rename to cocos2d-ext/CCEffects/CCEffectPixellate.h diff --git a/cocos2d/CCEffectPixellate.m b/cocos2d-ext/CCEffects/CCEffectPixellate.m similarity index 100% rename from cocos2d/CCEffectPixellate.m rename to cocos2d-ext/CCEffects/CCEffectPixellate.m diff --git a/cocos2d/CCEffectReflection.h b/cocos2d-ext/CCEffects/CCEffectReflection.h similarity index 100% rename from cocos2d/CCEffectReflection.h rename to cocos2d-ext/CCEffects/CCEffectReflection.h diff --git a/cocos2d/CCEffectReflection.m b/cocos2d-ext/CCEffects/CCEffectReflection.m similarity index 100% rename from cocos2d/CCEffectReflection.m rename to cocos2d-ext/CCEffects/CCEffectReflection.m diff --git a/cocos2d/CCEffectRefraction.h b/cocos2d-ext/CCEffects/CCEffectRefraction.h similarity index 100% rename from cocos2d/CCEffectRefraction.h rename to cocos2d-ext/CCEffects/CCEffectRefraction.h diff --git a/cocos2d/CCEffectRefraction.m b/cocos2d-ext/CCEffects/CCEffectRefraction.m similarity index 100% rename from cocos2d/CCEffectRefraction.m rename to cocos2d-ext/CCEffects/CCEffectRefraction.m diff --git a/cocos2d/CCEffectRenderer.h b/cocos2d-ext/CCEffects/CCEffectRenderer.h similarity index 100% rename from cocos2d/CCEffectRenderer.h rename to cocos2d-ext/CCEffects/CCEffectRenderer.h diff --git a/cocos2d/CCEffectRenderer.m b/cocos2d-ext/CCEffects/CCEffectRenderer.m similarity index 100% rename from cocos2d/CCEffectRenderer.m rename to cocos2d-ext/CCEffects/CCEffectRenderer.m diff --git a/cocos2d/CCEffectSaturation.h b/cocos2d-ext/CCEffects/CCEffectSaturation.h similarity index 100% rename from cocos2d/CCEffectSaturation.h rename to cocos2d-ext/CCEffects/CCEffectSaturation.h diff --git a/cocos2d/CCEffectSaturation.m b/cocos2d-ext/CCEffects/CCEffectSaturation.m similarity index 100% rename from cocos2d/CCEffectSaturation.m rename to cocos2d-ext/CCEffects/CCEffectSaturation.m diff --git a/cocos2d/CCEffectStack.h b/cocos2d-ext/CCEffects/CCEffectStack.h similarity index 100% rename from cocos2d/CCEffectStack.h rename to cocos2d-ext/CCEffects/CCEffectStack.h diff --git a/cocos2d/CCEffectStack.m b/cocos2d-ext/CCEffects/CCEffectStack.m similarity index 100% rename from cocos2d/CCEffectStack.m rename to cocos2d-ext/CCEffects/CCEffectStack.m diff --git a/cocos2d/CCEffectStackProtocol.h b/cocos2d-ext/CCEffects/CCEffectStackProtocol.h similarity index 100% rename from cocos2d/CCEffectStackProtocol.h rename to cocos2d-ext/CCEffects/CCEffectStackProtocol.h diff --git a/cocos2d/CCEffectStack_Private.h b/cocos2d-ext/CCEffects/CCEffectStack_Private.h similarity index 100% rename from cocos2d/CCEffectStack_Private.h rename to cocos2d-ext/CCEffects/CCEffectStack_Private.h diff --git a/cocos2d/CCEffectStereo.h b/cocos2d-ext/CCEffects/CCEffectStereo.h similarity index 100% rename from cocos2d/CCEffectStereo.h rename to cocos2d-ext/CCEffects/CCEffectStereo.h diff --git a/cocos2d/CCEffectStereo.m b/cocos2d-ext/CCEffects/CCEffectStereo.m similarity index 100% rename from cocos2d/CCEffectStereo.m rename to cocos2d-ext/CCEffects/CCEffectStereo.m diff --git a/cocos2d/CCEffectUtils.h b/cocos2d-ext/CCEffects/CCEffectUtils.h similarity index 100% rename from cocos2d/CCEffectUtils.h rename to cocos2d-ext/CCEffects/CCEffectUtils.h diff --git a/cocos2d/CCEffectUtils.m b/cocos2d-ext/CCEffects/CCEffectUtils.m similarity index 100% rename from cocos2d/CCEffectUtils.m rename to cocos2d-ext/CCEffects/CCEffectUtils.m diff --git a/cocos2d/CCEffect_Private.h b/cocos2d-ext/CCEffects/CCEffect_Private.h similarity index 100% rename from cocos2d/CCEffect_Private.h rename to cocos2d-ext/CCEffects/CCEffect_Private.h diff --git a/cocos2d-ui-tests/tests/CCEffectsTest.m b/cocos2d-ui-tests/tests/CCEffectsTest.m index 1890b9a68d6..5dbeeecd5ae 100644 --- a/cocos2d-ui-tests/tests/CCEffectsTest.m +++ b/cocos2d-ui-tests/tests/CCEffectsTest.m @@ -1,3 +1,5 @@ +#if 0 + #import "TestBase.h" #import "CCTextureCache.h" #import "CCNodeColor.h" @@ -2633,3 +2635,5 @@ -(void)renderTextureHelper:(CCNode *)stage size:(CGSize)size } @end + +#endif \ No newline at end of file diff --git a/cocos2d-ui/CCBReader/CCBReader.m b/cocos2d-ui/CCBReader/CCBReader.m index 19a1a226e26..f36e6187750 100644 --- a/cocos2d-ui/CCBReader/CCBReader.m +++ b/cocos2d-ui/CCBReader/CCBReader.m @@ -37,8 +37,9 @@ #import "CCDirector_Private.h" #import "CCPhysics+ObjectiveChipmunk.h" #import "CCAnimationManager_Private.h" +#if CC_EFFECTS #import "CCEffectStack.h" - +#endif #ifdef CCB_ENABLE_UNZIP #import "SSZipArchive.h" #endif @@ -931,8 +932,10 @@ - (void) readPropertyForNode:(CCNode*) node parent:(CCNode*)parent isExtraProp:( [node setValue:@(f) forKey:name]; } } + else if(type == kCCBPropTypeEffects) { +#if CC_EFFECTS CCEffect * effect = [self readEffects]; if(effect) @@ -940,7 +943,7 @@ - (void) readPropertyForNode:(CCNode*) node parent:(CCNode*)parent isExtraProp:( //Hmmm..... Force it to write to @"effect" property. [node setValue:effect forKey:@"effect"]; } - +#endif } else if(type == kCCBPropTypeTokenArray) { @@ -958,7 +961,7 @@ - (void) readPropertyForNode:(CCNode*) node parent:(CCNode*)parent isExtraProp:( } - +#if CC_EFFECTS //Either returns a CCStackEffect or the one single effect. -(CCEffect*)readEffects { @@ -1004,6 +1007,7 @@ -(CCEffect*)readEffects return [[CCEffectStack alloc] initWithArray:effectsStack]; } +#endif - (BOOL)isPropertyKeySettable:(NSString *)key onInstance:(id)instance { diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 80b2b82a6a5..4bc3772b87a 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -23,7 +23,7 @@ /* Begin PBXBuildFile section */ 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = 0529445911098D6F00E500F3 /* CCProfiling.h */; }; 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; - 0899494A1C66000000ECC92C /* libObjectiveChipmunk-Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk-Mac.a */; }; + 0899494A1C66000000ECC92C /* libObjectiveChipmunk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk.a */; }; 0899494B1C66001900ECC92C /* libObjectAL (Mac).a in Frameworks */ = {isa = PBXBuildFile; fileRef = B15348371BE1E78C0022C4BB /* libObjectAL (Mac).a */; }; 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; @@ -96,28 +96,6 @@ 7A4037C419E3711D007B6E8F /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4037C319E3711D007B6E8F /* ApplicationServices.framework */; }; 7A4037C619E37126007B6E8F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4037C519E37126007B6E8F /* QuartzCore.framework */; }; 7A4037C819E3712A007B6E8F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4037C719E3712A007B6E8F /* OpenGL.framework */; }; - 7A59464519E372EE00F65F90 /* CCEffectDistanceField.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451B519AE5517006DA0A1 /* CCEffectDistanceField.h */; }; - 7A59464719E372EE00F65F90 /* CCEffectDFOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451C419B111A9006DA0A1 /* CCEffectDFOutline.h */; }; - 7A59464919E372EE00F65F90 /* CCEffectDFInnerGlow.h in Headers */ = {isa = PBXBuildFile; fileRef = D299CE7819C2910B00519CBB /* CCEffectDFInnerGlow.h */; }; - 7A59464B19E372EE00F65F90 /* CCEffectColorChannelOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DBCA31219B68BE400EFE96D /* CCEffectColorChannelOffset.h */; }; - 7A59464D19E372EE00F65F90 /* CCEffectBlur.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B081995285B003AA81A /* CCEffectBlur.h */; }; - 7A59464F19E372EE00F65F90 /* CCEffectRefraction.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE151980791300ECBCD0 /* CCEffectRefraction.h */; }; - 7A59465119E372EE00F65F90 /* CCEffectUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE171980791300ECBCD0 /* CCEffectUtils.h */; }; - 7A59465319E372EE00F65F90 /* CCEffectBloom.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE05198078FF00ECBCD0 /* CCEffectBloom.h */; }; - 7A59465519E372EE00F65F90 /* CCEffectGlass.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE07198078FF00ECBCD0 /* CCEffectGlass.h */; }; - 7A59465719E372EE00F65F90 /* CCEffectHue.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE09198078FF00ECBCD0 /* CCEffectHue.h */; }; - 7A59465919E372EE00F65F90 /* CCEffectReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE0B198078FF00ECBCD0 /* CCEffectReflection.h */; }; - 7A59465B19E372EE00F65F90 /* CCEffectRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161041958F72B003673BD /* CCEffectRenderer.h */; }; - 7A59465D19E372EE00F65F90 /* CCEffectSaturation.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161061958F72B003673BD /* CCEffectSaturation.h */; }; - 7A59465F19E372EE00F65F90 /* CCEffectStackProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161081958F72B003673BD /* CCEffectStackProtocol.h */; }; - 7A59466019E372EE00F65F90 /* CCEffect_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031718FC89A000B100FF /* CCEffect_Private.h */; }; - 7A59466119E372EE00F65F90 /* CCEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031818FC89A000B100FF /* CCEffect.h */; }; - 7A59466319E372EE00F65F90 /* CCEffectStack.h in Headers */ = {isa = PBXBuildFile; fileRef = D272032018FC89A000B100FF /* CCEffectStack.h */; }; - 7A59466419E372EE00F65F90 /* CCEffectStack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671A191AE2CC00573093 /* CCEffectStack_Private.h */; }; - 7A59466619E372EE00F65F90 /* CCEffectBrightness.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671B191B018200573093 /* CCEffectBrightness.h */; }; - 7A59466819E372EE00F65F90 /* CCEffectContrast.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671F191B019900573093 /* CCEffectContrast.h */; }; - 7A59466A19E372EE00F65F90 /* CCEffectPixellate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF3761F191C594A00C6D27A /* CCEffectPixellate.h */; }; - 7A59466C19E372EE00F65F90 /* CCEffectDropShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451A819AD430A006DA0A1 /* CCEffectDropShadow.h */; }; 7A59466E19E372EE00F65F90 /* CCNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2540DFDEAFF00C013A5 /* CCNode.h */; }; 7A59467019E372EE00F65F90 /* CCNode+Debug.h in Headers */ = {isa = PBXBuildFile; fileRef = A039EBFD155C686B0061EE37 /* CCNode+Debug.h */; }; 7A59467219E372EF00F65F90 /* CCNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D13C181F2E4500E7BFCD /* CCNode_Private.h */; }; @@ -146,7 +124,6 @@ 7A5946B219E372F300F65F90 /* CCPhysicsJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803E81803319F0072D8FE /* CCPhysicsJoint.h */; }; 7A5946B419E372F300F65F90 /* CCPhysicsNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803E718032F4A0072D8FE /* CCPhysicsNode.h */; }; 7A5946B619E372F300F65F90 /* CCPhysics+ObjectiveChipmunk.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803DC18032E4F0072D8FE /* CCPhysics+ObjectiveChipmunk.h */; }; - 7A5946B719E372F300F65F90 /* CCEffectNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031E18FC89A000B100FF /* CCEffectNode.h */; }; 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; @@ -232,25 +209,6 @@ 7A59478319E3732100F65F90 /* CCControlTextureFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45E17E7AF1C0028BE0B /* CCControlTextureFactory.h */; }; 7A59478519E3732100F65F90 /* CCTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E260D618171D2000A0E872 /* CCTextField.h */; }; 7A59478719E3732200F65F90 /* CCSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE6A1C181AE34600B983FE /* CCSlider.h */; }; - 7A59479119E3759800F65F90 /* CCEffectDistanceField.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451B619AE5517006DA0A1 /* CCEffectDistanceField.m */; }; - 7A59479319E3759800F65F90 /* CCEffectDFOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451C519B111A9006DA0A1 /* CCEffectDFOutline.m */; }; - 7A59479519E3759800F65F90 /* CCEffectDFInnerGlow.m in Sources */ = {isa = PBXBuildFile; fileRef = D299CE7919C2910B00519CBB /* CCEffectDFInnerGlow.m */; }; - 7A59479719E3759800F65F90 /* CCEffectColorChannelOffset.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DBCA31319B68BE400EFE96D /* CCEffectColorChannelOffset.m */; }; - 7A59479919E3759900F65F90 /* CCEffectBlur.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B091995285B003AA81A /* CCEffectBlur.m */; }; - 7A59479B19E3759900F65F90 /* CCEffectRefraction.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE161980791300ECBCD0 /* CCEffectRefraction.m */; }; - 7A59479D19E3759900F65F90 /* CCEffectUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE181980791300ECBCD0 /* CCEffectUtils.m */; }; - 7A59479F19E3759900F65F90 /* CCEffectBloom.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE06198078FF00ECBCD0 /* CCEffectBloom.m */; }; - 7A5947A119E3759900F65F90 /* CCEffectGlass.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE08198078FF00ECBCD0 /* CCEffectGlass.m */; }; - 7A5947A319E3759A00F65F90 /* CCEffectHue.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE0A198078FF00ECBCD0 /* CCEffectHue.m */; }; - 7A5947A519E3759A00F65F90 /* CCEffectReflection.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE0C198078FF00ECBCD0 /* CCEffectReflection.m */; }; - 7A5947A719E3759A00F65F90 /* CCEffectRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D24161051958F72B003673BD /* CCEffectRenderer.m */; }; - 7A5947A919E3759A00F65F90 /* CCEffectSaturation.m in Sources */ = {isa = PBXBuildFile; fileRef = D24161071958F72B003673BD /* CCEffectSaturation.m */; }; - 7A5947AD19E3759B00F65F90 /* CCEffect.m in Sources */ = {isa = PBXBuildFile; fileRef = D272031918FC89A000B100FF /* CCEffect.m */; }; - 7A5947B019E3759B00F65F90 /* CCEffectStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D272032118FC89A000B100FF /* CCEffectStack.m */; }; - 7A5947B219E3759B00F65F90 /* CCEffectBrightness.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D85671C191B018200573093 /* CCEffectBrightness.m */; }; - 7A5947B419E3759B00F65F90 /* CCEffectContrast.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D856720191B019900573093 /* CCEffectContrast.m */; }; - 7A5947B619E3759B00F65F90 /* CCEffectPixellate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF37620191C594A00C6D27A /* CCEffectPixellate.m */; }; - 7A5947B819E3759C00F65F90 /* CCEffectDropShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451A919AD430A006DA0A1 /* CCEffectDropShadow.m */; }; 7A5947BA19E3759C00F65F90 /* CCNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2550DFDEAFF00C013A5 /* CCNode.m */; }; 7A5947BC19E3759C00F65F90 /* CCNode+Debug.m in Sources */ = {isa = PBXBuildFile; fileRef = A039EBFE155C686B0061EE37 /* CCNode+Debug.m */; }; 7A5947BF19E3759C00F65F90 /* CCLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69DD1819E75700B983FE /* CCLayout.m */; }; @@ -273,7 +231,6 @@ 7A5947FC19E375A200F65F90 /* CCPhysicsShape.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A2E7D1181E12750033614C /* CCPhysicsShape.m */; }; 7A5947FE19E375A300F65F90 /* CCPhysicsJoint.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E9180331A90072D8FE /* CCPhysicsJoint.m */; }; 7A59480019E375A300F65F90 /* CCPhysicsNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E518032F390072D8FE /* CCPhysicsNode.m */; }; - 7A59480319E375A300F65F90 /* CCEffectNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D272031F18FC89A000B100FF /* CCEffectNode.m */; }; 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */; }; 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AA510291280003ACFE7 /* CCRenderTexture.m */; }; @@ -335,37 +292,18 @@ 7A5948D119E375BE00F65F90 /* CCTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E260D718171D2000A0E872 /* CCTextField.m */; }; 7A5948D319E375BE00F65F90 /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; 7A59494019E3810500F65F90 /* CCPlatformTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD01F19649E03003D460C /* CCPlatformTextField.m */; }; - 839CE58619FFB139003369F0 /* CCEffectInvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 839CE58419FFB139003369F0 /* CCEffectInvert.h */; }; - 839CE58719FFB139003369F0 /* CCEffectInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 839CE58519FFB139003369F0 /* CCEffectInvert.m */; }; - 839CE58B19FFB146003369F0 /* CCEffectInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 839CE58519FFB139003369F0 /* CCEffectInvert.m */; }; 9D03A5EB1A02F61700C651C8 /* CCLightNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */; }; 9D03A5ED1A02F61B00C651C8 /* CCLightNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */; }; - 9D03A5F61A02F8C200C651C8 /* CCEffectLighting.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD047C19DE154400687820 /* CCEffectLighting.h */; }; - 9D03A5F81A02F8C600C651C8 /* CCEffectLighting.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DDD047D19DE154400687820 /* CCEffectLighting.m */; }; 9D1B4A991A02E90300B2DD9B /* CCLightGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */; }; 9D1B4A9B1A02E90300B2DD9B /* CCLightGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */; }; - 9D2773B51AB77F3800D19A11 /* CCEffectStereo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2773B31AB77F3800D19A11 /* CCEffectStereo.h */; }; - 9D2773B71AB77F3800D19A11 /* CCEffectStereo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2773B31AB77F3800D19A11 /* CCEffectStereo.h */; }; - 9D2773B81AB77F3800D19A11 /* CCEffectStereo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2773B41AB77F3800D19A11 /* CCEffectStereo.m */; }; - 9D2773BA1AB77F3800D19A11 /* CCEffectStereo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2773B41AB77F3800D19A11 /* CCEffectStereo.m */; }; 9D69E6D619DF604800C2749C /* CCLightNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D69E6D419DF604800C2749C /* CCLightNode.h */; }; 9D69E6D719DF604800C2749C /* CCLightNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D69E6D519DF604800C2749C /* CCLightNode.m */; }; - 9D85671D191B018200573093 /* CCEffectBrightness.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671B191B018200573093 /* CCEffectBrightness.h */; }; - 9D85671E191B018200573093 /* CCEffectBrightness.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D85671C191B018200573093 /* CCEffectBrightness.m */; }; - 9D856721191B019900573093 /* CCEffectContrast.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671F191B019900573093 /* CCEffectContrast.h */; }; - 9D856722191B019900573093 /* CCEffectContrast.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D856720191B019900573093 /* CCEffectContrast.m */; }; 9D9205D21A0173D600FF2D6D /* CCLightCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */; }; 9D9205D41A0173D600FF2D6D /* CCLightCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */; }; 9D9205D51A0173D600FF2D6D /* CCLightCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */; }; 9D9205D71A0173D600FF2D6D /* CCLightCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */; }; - 9DBCA31419B68BE400EFE96D /* CCEffectColorChannelOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DBCA31219B68BE400EFE96D /* CCEffectColorChannelOffset.h */; }; - 9DBCA31519B68BE400EFE96D /* CCEffectColorChannelOffset.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DBCA31319B68BE400EFE96D /* CCEffectColorChannelOffset.m */; }; 9DC780BA1A1175F100DD5A4B /* CCLightNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D69E6D419DF604800C2749C /* CCLightNode.h */; }; 9DC780BC1A11760B00DD5A4B /* CCLightNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D69E6D519DF604800C2749C /* CCLightNode.m */; }; - 9DDD047E19DE154400687820 /* CCEffectLighting.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD047C19DE154400687820 /* CCEffectLighting.h */; }; - 9DDD047F19DE154400687820 /* CCEffectLighting.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DDD047D19DE154400687820 /* CCEffectLighting.m */; }; - 9DF37621191C594A00C6D27A /* CCEffectPixellate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF3761F191C594A00C6D27A /* CCEffectPixellate.h */; }; - 9DF37622191C594A00C6D27A /* CCEffectPixellate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF37620191C594A00C6D27A /* CCEffectPixellate.m */; }; A003AC8C1657071100C7B792 /* ccFPSImages.h in Headers */ = {isa = PBXBuildFile; fileRef = A003AC8B1657071100C7B792 /* ccFPSImages.h */; }; A003AC8F16572D6000C7B792 /* ccFPSImages.m in Sources */ = {isa = PBXBuildFile; fileRef = A003AC8E16572D6000C7B792 /* ccFPSImages.m */; }; A039EBFF155C686B0061EE37 /* CCNode+Debug.h in Headers */ = {isa = PBXBuildFile; fileRef = A039EBFD155C686B0061EE37 /* CCNode+Debug.h */; }; @@ -389,7 +327,7 @@ A6A0734B17C78EF3004343C8 /* CCResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734917C78EF3004343C8 /* CCResponder.m */; }; A6DC4E0918055DCC00C280A6 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; A6DC4E0A18055DCC00C280A6 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; - B15348511BE1E7B70022C4BB /* libObjectiveChipmunk-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B153484E1BE1E7A20022C4BB /* libObjectiveChipmunk-iOS.a */; }; + B15348511BE1E7B70022C4BB /* libObjectiveChipmunk-iPhone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B153484E1BE1E7A20022C4BB /* libObjectiveChipmunk-iPhone.a */; }; B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B706B19718209A8300B27A2C /* CCTexture_Private.h */; }; B74C2B9B17BDA63A00A829C0 /* CCSprite9Slice.h in Headers */ = {isa = PBXBuildFile; fileRef = B74C2B9917BDA63A00A829C0 /* CCSprite9Slice.h */; }; B74C2B9C17BDA63A00A829C0 /* CCSprite9Slice.m in Sources */ = {isa = PBXBuildFile; fileRef = B74C2B9A17BDA63A00A829C0 /* CCSprite9Slice.m */; }; @@ -444,10 +382,6 @@ B7EE69E31819E75700B983FE /* CCLayoutBox.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69DF1819E75700B983FE /* CCLayoutBox.m */; }; B7EE6A1E181AE34600B983FE /* CCSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE6A1C181AE34600B983FE /* CCSlider.h */; }; B7EE6A1F181AE34600B983FE /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; - D22907AE1A2F5E440038FF61 /* CCEffectOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = D22907AC1A2F5E440038FF61 /* CCEffectOutline.h */; }; - D22907B01A2F5E440038FF61 /* CCEffectOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = D22907AC1A2F5E440038FF61 /* CCEffectOutline.h */; }; - D22907B11A2F5E440038FF61 /* CCEffectOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = D22907AD1A2F5E440038FF61 /* CCEffectOutline.m */; }; - D22907B31A2F5E440038FF61 /* CCEffectOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = D22907AD1A2F5E440038FF61 /* CCEffectOutline.m */; }; D23C5CB4194BC108007CA669 /* CCTouchIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CB2194BC108007CA669 /* CCTouchIOS.h */; }; D23C5CB5194BC108007CA669 /* CCTouchIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = D23C5CB3194BC108007CA669 /* CCTouchIOS.m */; }; D24160FD1958F6EE003673BD /* CCAnimationManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F61958F6EE003673BD /* CCAnimationManager_Private.h */; }; @@ -457,48 +391,15 @@ D24161011958F6EE003673BD /* CCAnimationManager+FrameAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160FA1958F6EE003673BD /* CCAnimationManager+FrameAnimation.m */; }; D24161021958F6EE003673BD /* CCBAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160FB1958F6EE003673BD /* CCBAnimationManager.h */; }; D24161031958F6EE003673BD /* CCBAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160FC1958F6EE003673BD /* CCBAnimationManager.m */; }; - D24161091958F72B003673BD /* CCEffectRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161041958F72B003673BD /* CCEffectRenderer.h */; }; - D241610B1958F72B003673BD /* CCEffectRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D24161051958F72B003673BD /* CCEffectRenderer.m */; }; - D241610D1958F72B003673BD /* CCEffectSaturation.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161061958F72B003673BD /* CCEffectSaturation.h */; }; - D241610F1958F72B003673BD /* CCEffectSaturation.m in Sources */ = {isa = PBXBuildFile; fileRef = D24161071958F72B003673BD /* CCEffectSaturation.m */; }; - D24161111958F72B003673BD /* CCEffectStackProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D24161081958F72B003673BD /* CCEffectStackProtocol.h */; }; D24FAEEC198014B90043E27D /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D24FAEEB198014B90043E27D /* GLKit.framework */; }; D25B4F4B194A499700DA9D60 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; D25B4F4C194A499700DA9D60 /* CCTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = D25B4F4A194A499700DA9D60 /* CCTouch.m */; }; - D268FE0D198078FF00ECBCD0 /* CCEffectBloom.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE05198078FF00ECBCD0 /* CCEffectBloom.h */; }; - D268FE0E198078FF00ECBCD0 /* CCEffectBloom.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE06198078FF00ECBCD0 /* CCEffectBloom.m */; }; - D268FE0F198078FF00ECBCD0 /* CCEffectGlass.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE07198078FF00ECBCD0 /* CCEffectGlass.h */; }; - D268FE10198078FF00ECBCD0 /* CCEffectGlass.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE08198078FF00ECBCD0 /* CCEffectGlass.m */; }; - D268FE11198078FF00ECBCD0 /* CCEffectHue.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE09198078FF00ECBCD0 /* CCEffectHue.h */; }; - D268FE12198078FF00ECBCD0 /* CCEffectHue.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE0A198078FF00ECBCD0 /* CCEffectHue.m */; }; - D268FE13198078FF00ECBCD0 /* CCEffectReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE0B198078FF00ECBCD0 /* CCEffectReflection.h */; }; - D268FE14198078FF00ECBCD0 /* CCEffectReflection.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE0C198078FF00ECBCD0 /* CCEffectReflection.m */; }; - D268FE191980791400ECBCD0 /* CCEffectRefraction.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE151980791300ECBCD0 /* CCEffectRefraction.h */; }; - D268FE1B1980791400ECBCD0 /* CCEffectRefraction.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE161980791300ECBCD0 /* CCEffectRefraction.m */; }; - D268FE1D1980791400ECBCD0 /* CCEffectUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D268FE171980791300ECBCD0 /* CCEffectUtils.h */; }; - D268FE1F1980791400ECBCD0 /* CCEffectUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D268FE181980791300ECBCD0 /* CCEffectUtils.m */; }; - D268FE231980791C00ECBCD0 /* CCEffectStack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671A191AE2CC00573093 /* CCEffectStack_Private.h */; }; D26A042A194B815500503BEC /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; D26A042B194B815500503BEC /* CCTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = D26A0429194B815500503BEC /* CCTouchEvent.m */; }; - D272032418FC89A000B100FF /* CCEffect_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031718FC89A000B100FF /* CCEffect_Private.h */; }; - D272032518FC89A000B100FF /* CCEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031818FC89A000B100FF /* CCEffect.h */; }; - D272032618FC89A000B100FF /* CCEffect.m in Sources */ = {isa = PBXBuildFile; fileRef = D272031918FC89A000B100FF /* CCEffect.m */; }; - D272032B18FC89A000B100FF /* CCEffectNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D272031E18FC89A000B100FF /* CCEffectNode.h */; }; - D272032C18FC89A000B100FF /* CCEffectNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D272031F18FC89A000B100FF /* CCEffectNode.m */; }; - D272032D18FC89A000B100FF /* CCEffectStack.h in Headers */ = {isa = PBXBuildFile; fileRef = D272032018FC89A000B100FF /* CCEffectStack.h */; }; - D272032E18FC89A000B100FF /* CCEffectStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D272032118FC89A000B100FF /* CCEffectStack.m */; }; - D27451AA19AD430A006DA0A1 /* CCEffectDropShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451A819AD430A006DA0A1 /* CCEffectDropShadow.h */; }; - D27451AC19AD430A006DA0A1 /* CCEffectDropShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451A919AD430A006DA0A1 /* CCEffectDropShadow.m */; }; - D27451B719AE5517006DA0A1 /* CCEffectDistanceField.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451B519AE5517006DA0A1 /* CCEffectDistanceField.h */; }; - D27451B819AE5517006DA0A1 /* CCEffectDistanceField.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451B619AE5517006DA0A1 /* CCEffectDistanceField.m */; }; - D27451C619B111A9006DA0A1 /* CCEffectDFOutline.h in Headers */ = {isa = PBXBuildFile; fileRef = D27451C419B111A9006DA0A1 /* CCEffectDFOutline.h */; }; - D27451C819B111A9006DA0A1 /* CCEffectDFOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = D27451C519B111A9006DA0A1 /* CCEffectDFOutline.m */; }; D28A2E161954F66E00ADC03D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E151954F66E00ADC03D /* UIKit.framework */; }; D28A2E1B1954F68D00ADC03D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E1A1954F68D00ADC03D /* QuartzCore.framework */; }; D28A2E1D1954F7E000ADC03D /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E1C1954F7E000ADC03D /* OpenGLES.framework */; }; D28A2E211954F85700ADC03D /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E201954F85700ADC03D /* AVFoundation.framework */; }; - D299CE7A19C2910B00519CBB /* CCEffectDFInnerGlow.h in Headers */ = {isa = PBXBuildFile; fileRef = D299CE7819C2910B00519CBB /* CCEffectDFInnerGlow.h */; }; - D299CE7C19C2910B00519CBB /* CCEffectDFInnerGlow.m in Sources */ = {isa = PBXBuildFile; fileRef = D299CE7919C2910B00519CBB /* CCEffectDFInnerGlow.m */; }; D309055018AC23110081BF11 /* CCRenderer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D309054F18AC23110081BF11 /* CCRenderer_Private.h */; }; D31C795019994126007921E1 /* CCMetalSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C794F19994126007921E1 /* CCMetalSupport.m */; }; D31C795219994197007921E1 /* CCMetalSupport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D31C795119994197007921E1 /* CCMetalSupport_Private.h */; }; @@ -516,8 +417,6 @@ D380581B1889AD6000822437 /* CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D38058191889AD6000822437 /* CCRenderer.m */; }; D38058201889CE7700822437 /* CCCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D380581E1889CE7700822437 /* CCCache.h */; }; D38058211889CE7700822437 /* CCCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D380581F1889CE7700822437 /* CCCache.m */; }; - D3903B0A1995285B003AA81A /* CCEffectBlur.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B081995285B003AA81A /* CCEffectBlur.h */; }; - D3903B0B1995285B003AA81A /* CCEffectBlur.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B091995285B003AA81A /* CCEffectBlur.m */; }; D3903B0D1995288D003AA81A /* CCNoARC.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0C1995288D003AA81A /* CCNoARC.m */; }; D3903B10199528A0003AA81A /* CCRenderDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B0E199528A0003AA81A /* CCRenderDispatch.h */; }; D3903B11199528A0003AA81A /* CCRenderDispatch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0F199528A0003AA81A /* CCRenderDispatch.m */; }; @@ -726,29 +625,14 @@ 7A4037C319E3711D007B6E8F /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework; sourceTree = DEVELOPER_DIR; }; 7A4037C519E37126007B6E8F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; 7A4037C719E3712A007B6E8F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; - 839CE58419FFB139003369F0 /* CCEffectInvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectInvert.h; sourceTree = ""; }; - 839CE58519FFB139003369F0 /* CCEffectInvert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectInvert.m; sourceTree = ""; }; 83E1A88D19C8C19D000A3BCA /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 92FF6C7318F33A2A005B7139 /* CCActionManager_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCActionManager_Private.h; sourceTree = ""; }; 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCLightNode_Private.h; sourceTree = ""; }; 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightGroups.h; sourceTree = ""; }; - 9D2773B31AB77F3800D19A11 /* CCEffectStereo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectStereo.h; sourceTree = ""; }; - 9D2773B41AB77F3800D19A11 /* CCEffectStereo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectStereo.m; sourceTree = ""; }; 9D69E6D419DF604800C2749C /* CCLightNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightNode.h; sourceTree = ""; }; 9D69E6D519DF604800C2749C /* CCLightNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLightNode.m; sourceTree = ""; }; - 9D85671A191AE2CC00573093 /* CCEffectStack_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCEffectStack_Private.h; sourceTree = ""; }; - 9D85671B191B018200573093 /* CCEffectBrightness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectBrightness.h; sourceTree = ""; }; - 9D85671C191B018200573093 /* CCEffectBrightness.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectBrightness.m; sourceTree = ""; }; - 9D85671F191B019900573093 /* CCEffectContrast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectContrast.h; sourceTree = ""; }; - 9D856720191B019900573093 /* CCEffectContrast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectContrast.m; sourceTree = ""; }; 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightCollection.h; sourceTree = ""; }; 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLightCollection.m; sourceTree = ""; }; - 9DBCA31219B68BE400EFE96D /* CCEffectColorChannelOffset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectColorChannelOffset.h; sourceTree = ""; }; - 9DBCA31319B68BE400EFE96D /* CCEffectColorChannelOffset.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectColorChannelOffset.m; sourceTree = ""; }; - 9DDD047C19DE154400687820 /* CCEffectLighting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectLighting.h; sourceTree = ""; }; - 9DDD047D19DE154400687820 /* CCEffectLighting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectLighting.m; sourceTree = ""; }; - 9DF3761F191C594A00C6D27A /* CCEffectPixellate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectPixellate.h; sourceTree = ""; }; - 9DF37620191C594A00C6D27A /* CCEffectPixellate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectPixellate.m; sourceTree = ""; }; A003AC8B1657071100C7B792 /* ccFPSImages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccFPSImages.h; sourceTree = ""; }; A003AC8E16572D6000C7B792 /* ccFPSImages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ccFPSImages.m; sourceTree = ""; }; A039EBFD155C686B0061EE37 /* CCNode+Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CCNode+Debug.h"; sourceTree = ""; }; @@ -837,8 +721,6 @@ B7EE69DF1819E75700B983FE /* CCLayoutBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLayoutBox.m; sourceTree = ""; }; B7EE6A1C181AE34600B983FE /* CCSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCSlider.h; path = "cocos2d-ui/CCSlider.h"; sourceTree = ""; }; B7EE6A1D181AE34600B983FE /* CCSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCSlider.m; path = "cocos2d-ui/CCSlider.m"; sourceTree = ""; }; - D22907AC1A2F5E440038FF61 /* CCEffectOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectOutline.h; sourceTree = ""; }; - D22907AD1A2F5E440038FF61 /* CCEffectOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectOutline.m; sourceTree = ""; }; D23C5CB2194BC108007CA669 /* CCTouchIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouchIOS.h; sourceTree = ""; }; D23C5CB3194BC108007CA669 /* CCTouchIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouchIOS.m; sourceTree = ""; }; D24160F61958F6EE003673BD /* CCAnimationManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCAnimationManager_Private.h; path = "cocos2d-ui/CCBReader/CCAnimationManager_Private.h"; sourceTree = ""; }; @@ -848,47 +730,15 @@ D24160FA1958F6EE003673BD /* CCAnimationManager+FrameAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "CCAnimationManager+FrameAnimation.m"; path = "cocos2d-ui/CCBReader/CCAnimationManager+FrameAnimation.m"; sourceTree = ""; }; D24160FB1958F6EE003673BD /* CCBAnimationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCBAnimationManager.h; path = "cocos2d-ui/CCBReader/CCBAnimationManager.h"; sourceTree = ""; }; D24160FC1958F6EE003673BD /* CCBAnimationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCBAnimationManager.m; path = "cocos2d-ui/CCBReader/CCBAnimationManager.m"; sourceTree = ""; }; - D24161041958F72B003673BD /* CCEffectRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectRenderer.h; sourceTree = ""; }; - D24161051958F72B003673BD /* CCEffectRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectRenderer.m; sourceTree = ""; }; - D24161061958F72B003673BD /* CCEffectSaturation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectSaturation.h; sourceTree = ""; }; - D24161071958F72B003673BD /* CCEffectSaturation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectSaturation.m; sourceTree = ""; }; - D24161081958F72B003673BD /* CCEffectStackProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectStackProtocol.h; sourceTree = ""; }; D24FAEEB198014B90043E27D /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; D25B4F49194A499700DA9D60 /* CCTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouch.h; sourceTree = ""; }; D25B4F4A194A499700DA9D60 /* CCTouch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouch.m; sourceTree = ""; }; - D268FE05198078FF00ECBCD0 /* CCEffectBloom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectBloom.h; sourceTree = ""; }; - D268FE06198078FF00ECBCD0 /* CCEffectBloom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectBloom.m; sourceTree = ""; }; - D268FE07198078FF00ECBCD0 /* CCEffectGlass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectGlass.h; sourceTree = ""; }; - D268FE08198078FF00ECBCD0 /* CCEffectGlass.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectGlass.m; sourceTree = ""; }; - D268FE09198078FF00ECBCD0 /* CCEffectHue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectHue.h; sourceTree = ""; }; - D268FE0A198078FF00ECBCD0 /* CCEffectHue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectHue.m; sourceTree = ""; }; - D268FE0B198078FF00ECBCD0 /* CCEffectReflection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectReflection.h; sourceTree = ""; }; - D268FE0C198078FF00ECBCD0 /* CCEffectReflection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectReflection.m; sourceTree = ""; }; - D268FE151980791300ECBCD0 /* CCEffectRefraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectRefraction.h; sourceTree = ""; }; - D268FE161980791300ECBCD0 /* CCEffectRefraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectRefraction.m; sourceTree = ""; }; - D268FE171980791300ECBCD0 /* CCEffectUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectUtils.h; sourceTree = ""; }; - D268FE181980791300ECBCD0 /* CCEffectUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectUtils.m; sourceTree = ""; }; D26A0428194B815500503BEC /* CCTouchEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouchEvent.h; sourceTree = ""; }; D26A0429194B815500503BEC /* CCTouchEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouchEvent.m; sourceTree = ""; }; - D272031718FC89A000B100FF /* CCEffect_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffect_Private.h; sourceTree = ""; }; - D272031818FC89A000B100FF /* CCEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffect.h; sourceTree = ""; }; - D272031918FC89A000B100FF /* CCEffect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffect.m; sourceTree = ""; }; - D272031E18FC89A000B100FF /* CCEffectNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectNode.h; sourceTree = ""; }; - D272031F18FC89A000B100FF /* CCEffectNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectNode.m; sourceTree = ""; }; - D272032018FC89A000B100FF /* CCEffectStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectStack.h; sourceTree = ""; }; - D272032118FC89A000B100FF /* CCEffectStack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectStack.m; sourceTree = ""; }; - D27451A819AD430A006DA0A1 /* CCEffectDropShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDropShadow.h; sourceTree = ""; }; - D27451A919AD430A006DA0A1 /* CCEffectDropShadow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDropShadow.m; sourceTree = ""; }; - D27451B519AE5517006DA0A1 /* CCEffectDistanceField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDistanceField.h; sourceTree = ""; }; - D27451B619AE5517006DA0A1 /* CCEffectDistanceField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDistanceField.m; sourceTree = ""; }; - D27451C419B111A9006DA0A1 /* CCEffectDFOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDFOutline.h; sourceTree = ""; }; - D27451C519B111A9006DA0A1 /* CCEffectDFOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDFOutline.m; sourceTree = ""; }; D28A2E151954F66E00ADC03D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; D28A2E1A1954F68D00ADC03D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; D28A2E1C1954F7E000ADC03D /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; D28A2E201954F85700ADC03D /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - D299CE7819C2910B00519CBB /* CCEffectDFInnerGlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDFInnerGlow.h; sourceTree = ""; }; - D299CE7919C2910B00519CBB /* CCEffectDFInnerGlow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDFInnerGlow.m; sourceTree = ""; }; D2B840C31909F447008063EA /* CCRenderTexture_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCRenderTexture_Private.h; sourceTree = ""; }; D309054F18AC23110081BF11 /* CCRenderer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderer_Private.h; sourceTree = ""; }; D31C794F19994126007921E1 /* CCMetalSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMetalSupport.m; sourceTree = ""; }; @@ -909,8 +759,6 @@ D38058191889AD6000822437 /* CCRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRenderer.m; sourceTree = ""; }; D380581E1889CE7700822437 /* CCCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCCache.h; path = ../CCCache.h; sourceTree = ""; }; D380581F1889CE7700822437 /* CCCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCCache.m; path = ../CCCache.m; sourceTree = ""; }; - D3903B081995285B003AA81A /* CCEffectBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectBlur.h; sourceTree = ""; }; - D3903B091995285B003AA81A /* CCEffectBlur.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectBlur.m; sourceTree = ""; }; D3903B0C1995288D003AA81A /* CCNoARC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNoARC.m; sourceTree = ""; }; D3903B0E199528A0003AA81A /* CCRenderDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderDispatch.h; sourceTree = ""; }; D3903B0F199528A0003AA81A /* CCRenderDispatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRenderDispatch.m; sourceTree = ""; }; @@ -958,7 +806,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B15348511BE1E7B70022C4BB /* libObjectiveChipmunk-iOS.a in Frameworks */, + B15348511BE1E7B70022C4BB /* libObjectiveChipmunk-iPhone.a in Frameworks */, FC64014019C79716003E595A /* libObjectAL.a in Frameworks */, D3903B1A19952ABD003AA81A /* Metal.framework in Frameworks */, D24FAEEC198014B90043E27D /* GLKit.framework in Frameworks */, @@ -979,7 +827,7 @@ buildActionMask = 2147483647; files = ( 0899494B1C66001900ECC92C /* libObjectAL (Mac).a in Frameworks */, - 0899494A1C66000000ECC92C /* libObjectiveChipmunk-Mac.a in Frameworks */, + 0899494A1C66000000ECC92C /* libObjectiveChipmunk.a in Frameworks */, 7A4037C819E3712A007B6E8F /* OpenGL.framework in Frameworks */, 7A4037C619E37126007B6E8F /* QuartzCore.framework in Frameworks */, 7A4037C419E3711D007B6E8F /* ApplicationServices.framework in Frameworks */, @@ -1095,7 +943,6 @@ 5018F2510DFDEAFF00C013A5 /* cocos2d */ = { isa = PBXGroup; children = ( - D272031618FC897D00B100FF /* Effects */, 50A24F010F3788C6007CAEB0 /* Base Nodes */, B7EE69DB1819E73A00B983FE /* Layouts */, A0DA0BC615BCDCAE00E80A92 /* Draw Nodes */, @@ -1281,8 +1128,6 @@ 50EA8DA011354A6000746D2A /* Misc Nodes */ = { isa = PBXGroup; children = ( - D272031E18FC89A000B100FF /* CCEffectNode.h */, - D272031F18FC89A000B100FF /* CCEffectNode.m */, 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */, 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */, B791E85B182074C500DAE1D7 /* CCProgressNode.h */, @@ -1385,8 +1230,8 @@ B15348461BE1E7A20022C4BB /* libChipmunk-Mac.a */, B15348481BE1E7A20022C4BB /* libChipmunk-iOS.a */, B153484A1BE1E7A20022C4BB /* Benchmark iPhone.app */, - B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk-Mac.a */, - B153484E1BE1E7A20022C4BB /* libObjectiveChipmunk-iOS.a */, + B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk.a */, + B153484E1BE1E7A20022C4BB /* libObjectiveChipmunk-iPhone.a */, B15348501BE1E7A20022C4BB /* ObjectiveChipmunkTests.xctest */, ); name = Products; @@ -1489,70 +1334,6 @@ name = Layouts; sourceTree = ""; }; - D272031618FC897D00B100FF /* Effects */ = { - isa = PBXGroup; - children = ( - D272031718FC89A000B100FF /* CCEffect_Private.h */, - D272031818FC89A000B100FF /* CCEffect.h */, - D272031918FC89A000B100FF /* CCEffect.m */, - D268FE05198078FF00ECBCD0 /* CCEffectBloom.h */, - D268FE06198078FF00ECBCD0 /* CCEffectBloom.m */, - D3903B081995285B003AA81A /* CCEffectBlur.h */, - D3903B091995285B003AA81A /* CCEffectBlur.m */, - 9D85671B191B018200573093 /* CCEffectBrightness.h */, - 9D85671C191B018200573093 /* CCEffectBrightness.m */, - 9DBCA31219B68BE400EFE96D /* CCEffectColorChannelOffset.h */, - 9DBCA31319B68BE400EFE96D /* CCEffectColorChannelOffset.m */, - 9D85671F191B019900573093 /* CCEffectContrast.h */, - 9D856720191B019900573093 /* CCEffectContrast.m */, - D27451A819AD430A006DA0A1 /* CCEffectDropShadow.h */, - D27451A919AD430A006DA0A1 /* CCEffectDropShadow.m */, - D268FE07198078FF00ECBCD0 /* CCEffectGlass.h */, - D268FE08198078FF00ECBCD0 /* CCEffectGlass.m */, - D268FE09198078FF00ECBCD0 /* CCEffectHue.h */, - D268FE0A198078FF00ECBCD0 /* CCEffectHue.m */, - 839CE58419FFB139003369F0 /* CCEffectInvert.h */, - 839CE58519FFB139003369F0 /* CCEffectInvert.m */, - 9DDD047C19DE154400687820 /* CCEffectLighting.h */, - 9DDD047D19DE154400687820 /* CCEffectLighting.m */, - 9DF3761F191C594A00C6D27A /* CCEffectPixellate.h */, - 9DF37620191C594A00C6D27A /* CCEffectPixellate.m */, - D268FE0B198078FF00ECBCD0 /* CCEffectReflection.h */, - D268FE0C198078FF00ECBCD0 /* CCEffectReflection.m */, - D268FE151980791300ECBCD0 /* CCEffectRefraction.h */, - D268FE161980791300ECBCD0 /* CCEffectRefraction.m */, - D24161041958F72B003673BD /* CCEffectRenderer.h */, - D24161051958F72B003673BD /* CCEffectRenderer.m */, - D24161061958F72B003673BD /* CCEffectSaturation.h */, - D24161071958F72B003673BD /* CCEffectSaturation.m */, - D22907AC1A2F5E440038FF61 /* CCEffectOutline.h */, - D22907AD1A2F5E440038FF61 /* CCEffectOutline.m */, - 9D85671A191AE2CC00573093 /* CCEffectStack_Private.h */, - D272032018FC89A000B100FF /* CCEffectStack.h */, - D272032118FC89A000B100FF /* CCEffectStack.m */, - D24161081958F72B003673BD /* CCEffectStackProtocol.h */, - 9D2773B31AB77F3800D19A11 /* CCEffectStereo.h */, - 9D2773B41AB77F3800D19A11 /* CCEffectStereo.m */, - D268FE171980791300ECBCD0 /* CCEffectUtils.h */, - D268FE181980791300ECBCD0 /* CCEffectUtils.m */, - D27451BF19AFC44D006DA0A1 /* DistanceField */, - ); - name = Effects; - sourceTree = ""; - }; - D27451BF19AFC44D006DA0A1 /* DistanceField */ = { - isa = PBXGroup; - children = ( - D27451B519AE5517006DA0A1 /* CCEffectDistanceField.h */, - D27451B619AE5517006DA0A1 /* CCEffectDistanceField.m */, - D27451C419B111A9006DA0A1 /* CCEffectDFOutline.h */, - D27451C519B111A9006DA0A1 /* CCEffectDFOutline.m */, - D299CE7819C2910B00519CBB /* CCEffectDFInnerGlow.h */, - D299CE7919C2910B00519CBB /* CCEffectDFInnerGlow.m */, - ); - name = DistanceField; - sourceTree = ""; - }; D34CAD5E19C3A070009BED7A /* Rendering */ = { isa = PBXGroup; children = ( @@ -1654,7 +1435,6 @@ B7D273111822F4AA0054849B /* CCBLocalizationManager.h in Headers */, 5018F2690DFDEAFF00C013A5 /* CCAction.h in Headers */, 5018F26B0DFDEAFF00C013A5 /* CCNode.h in Headers */, - 9DBCA31419B68BE400EFE96D /* CCEffectColorChannelOffset.h in Headers */, 5018F26D0DFDEAFF00C013A5 /* CCDirector.h in Headers */, 5018F26F0DFDEAFF00C013A5 /* CCActionInstant.h in Headers */, 5018F2710DFDEAFF00C013A5 /* CCActionInterval.h in Headers */, @@ -1663,51 +1443,38 @@ 5018F2770DFDEAFF00C013A5 /* CCScene.h in Headers */, 5018F27D0DFDEAFF00C013A5 /* CCTextureCache.h in Headers */, D380581A1889AD6000822437 /* CCRenderer.h in Headers */, - 9D856721191B019900573093 /* CCEffectContrast.h in Headers */, 50F9E8170E1AA34E000E7616 /* ccTypes.h in Headers */, D3A2E7D2181E12750033614C /* CCPhysicsShape.h in Headers */, D24160FD1958F6EE003673BD /* CCAnimationManager_Private.h in Headers */, 506602110E38A70D000B500E /* CCScheduler.h in Headers */, D24161001958F6EE003673BD /* CCAnimationManager+FrameAnimation.h in Headers */, - D268FE0F198078FF00ECBCD0 /* CCEffectGlass.h in Headers */, D24160FE1958F6EE003673BD /* CCAnimationManager.h in Headers */, 50305AF40E40E33200F63373 /* cocos2d.h in Headers */, 501CCFB50E99657C00B86F68 /* TGAlib.h in Headers */, 50F7B2780F28DE7C00057537 /* CCActionEase.h in Headers */, 571CD02819649E03003D460C /* CCPlatformTextField.h in Headers */, B798D1451820305400E7BFCD /* CCSprite_Private.h in Headers */, - D299CE7A19C2910B00519CBB /* CCEffectDFInnerGlow.h in Headers */, - D22907AE1A2F5E440038FF61 /* CCEffectOutline.h in Headers */, 50BAF3990F33CCD8003F654C /* ccMacros.h in Headers */, B798D13D181F2E4500E7BFCD /* CCNode_Private.h in Headers */, 509A79970F6188420032F449 /* CCSprite.h in Headers */, 50C508C60F7C194400799124 /* CCFileUtils.h in Headers */, - D268FE231980791C00ECBCD0 /* CCEffectStack_Private.h in Headers */, 9D9205D21A0173D600FF2D6D /* CCLightCollection.h in Headers */, 503798C60F912C2000986724 /* CGPointExtension.h in Headers */, 571CD02A19649E03003D460C /* CCPlatformTextFieldIOS.h in Headers */, B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */, - D24161111958F72B003673BD /* CCEffectStackProtocol.h in Headers */, B7EE69E21819E75700B983FE /* CCLayoutBox.h in Headers */, D23C5CB4194BC108007CA669 /* CCTouchIOS.h in Headers */, - D272032518FC89A000B100FF /* CCEffect.h in Headers */, - D268FE191980791400ECBCD0 /* CCEffectRefraction.h in Headers */, 9D1B4A991A02E90300B2DD9B /* CCLightGroups.h in Headers */, D3903B10199528A0003AA81A /* CCRenderDispatch.h in Headers */, - D272032418FC89A000B100FF /* CCEffect_Private.h in Headers */, 9D03A5EB1A02F61700C651C8 /* CCLightNode_Private.h in Headers */, - D272032D18FC89A000B100FF /* CCEffectStack.h in Headers */, B7E260D818171D2000A0E872 /* CCTextField.h in Headers */, D34CAD6C19C3AA10009BED7A /* CCRendererBasicTypes_Private.h in Headers */, - D268FE13198078FF00ECBCD0 /* CCEffectReflection.h in Headers */, B7D273131822F4AA0054849B /* CCBReader.h in Headers */, - 9DF37621191C594A00C6D27A /* CCEffectPixellate.h in Headers */, 50CB3B0E100AC43A00B7A750 /* CCActionManager.h in Headers */, 50F29F6F102053370046CA73 /* base64.h in Headers */, D31C795219994197007921E1 /* CCMetalSupport_Private.h in Headers */, D34CAD6719C3A7A5009BED7A /* CCRendererBasicTypes.h in Headers */, 50F2A105102094550046CA73 /* ZipUtils.h in Headers */, - D27451B719AE5517006DA0A1 /* CCEffectDistanceField.h in Headers */, 50316AA610291280003ACFE7 /* CCRenderTexture.h in Headers */, B7D273171822F4AA0054849B /* CCBSequenceProperty.h in Headers */, D38058201889CE7700822437 /* CCCache.h in Headers */, @@ -1719,12 +1486,9 @@ 502C8BE010A661E200D137BA /* CCSpriteFrameCache.h in Headers */, B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */, 50E1357510ADEB1B00C9E7FA /* CCTexture.h in Headers */, - D268FE11198078FF00ECBCD0 /* CCEffectHue.h in Headers */, B7D273151822F4AA0054849B /* CCBSequence.h in Headers */, 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */, - 9D2773B51AB77F3800D19A11 /* CCEffectStereo.h in Headers */, 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */, - D24161091958F72B003673BD /* CCEffectRenderer.h in Headers */, 50FBB2DA117613F500150761 /* CCActionTween.h in Headers */, 50D898F31192CB7500458C29 /* uthash.h in Headers */, 508EAC311193F8B0007F058D /* utlist.h in Headers */, @@ -1734,16 +1498,11 @@ E0EAD0FF121F4B4600B0C81C /* CCDirectorIOS.h in Headers */, E0EAD108121F4B4600B0C81C /* CCGLView.h in Headers */, B798D143181F469100E7BFCD /* CCLabelBMFont_Private.h in Headers */, - D3903B0A1995285B003AA81A /* CCEffectBlur.h in Headers */, E0EAD19D121F4D7300B0C81C /* CCGL.h in Headers */, - 839CE58619FFB139003369F0 /* CCEffectInvert.h in Headers */, E0EAD1F1121F522A00B0C81C /* CCConfiguration.h in Headers */, - 9D85671D191B018200573093 /* CCEffectBrightness.h in Headers */, - D272032B18FC89A000B100FF /* CCEffectNode.h in Headers */, E0F924711224140400EF2362 /* CCTexturePVR.h in Headers */, E0F92AC41224559800EF2362 /* CCNS.h in Headers */, E02BB6D6126CA93A006E46A2 /* CCAnimationCache.h in Headers */, - D27451AA19AD430A006DA0A1 /* CCEffectDropShadow.h in Headers */, E02BB704126CADEA006E46A2 /* CCAnimation.h in Headers */, B7D273191822F4AA0054849B /* CCBuilderReader.h in Headers */, D3E3752F19CC842A0076CDBB /* CCRendererSharedTypes.h in Headers */, @@ -1758,13 +1517,10 @@ B7EE69E01819E75700B983FE /* CCLayout.h in Headers */, A0C87D1A14F9A3A100C0E8B2 /* NSThread+performBlock.h in Headers */, D3903B14199528B6003AA81A /* CCMetalView.h in Headers */, - D27451C619B111A9006DA0A1 /* CCEffectDFOutline.h in Headers */, A6DC4E0918055DCC00C280A6 /* CCTransition.h in Headers */, B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */, D25B4F4B194A499700DA9D60 /* CCTouch.h in Headers */, - D241610D1958F72B003673BD /* CCEffectSaturation.h in Headers */, A0A7A53C1514F27D00C8BD16 /* CCActionCatmullRom.h in Headers */, - D268FE1D1980791400ECBCD0 /* CCEffectUtils.h in Headers */, A039EBFF155C686B0061EE37 /* CCNode+Debug.h in Headers */, A0DA0BC315BCDCA200E80A92 /* CCDrawNode.h in Headers */, B7EE6A1E181AE34600B983FE /* CCSlider.h in Headers */, @@ -1775,11 +1531,9 @@ B75C2E7C17C5908B002B0E0D /* NSAttributedString+CCAdditions.h in Headers */, A6A0734517C788EB004343C8 /* CCResponderManager.h in Headers */, A6A0734A17C78EF3004343C8 /* CCResponder.h in Headers */, - D268FE0D198078FF00ECBCD0 /* CCEffectBloom.h in Headers */, B78AE46217E7AF1C0028BE0B /* CCButton.h in Headers */, D26A042A194B815500503BEC /* CCTouchEvent.h in Headers */, B78AE46417E7AF1C0028BE0B /* CCControl.h in Headers */, - 9DDD047E19DE154400687820 /* CCEffectLighting.h in Headers */, B78AE46617E7AF1C0028BE0B /* CCControlTextureFactory.h in Headers */, B78AE46817E7AF1C0028BE0B /* CCScrollView.h in Headers */, B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */, @@ -1792,30 +1546,8 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7A59464519E372EE00F65F90 /* CCEffectDistanceField.h in Headers */, - 7A59464719E372EE00F65F90 /* CCEffectDFOutline.h in Headers */, - 7A59464919E372EE00F65F90 /* CCEffectDFInnerGlow.h in Headers */, - 7A59464B19E372EE00F65F90 /* CCEffectColorChannelOffset.h in Headers */, - 7A59464D19E372EE00F65F90 /* CCEffectBlur.h in Headers */, - 7A59464F19E372EE00F65F90 /* CCEffectRefraction.h in Headers */, - 7A59465119E372EE00F65F90 /* CCEffectUtils.h in Headers */, - 7A59465319E372EE00F65F90 /* CCEffectBloom.h in Headers */, - 7A59465519E372EE00F65F90 /* CCEffectGlass.h in Headers */, - 7A59465719E372EE00F65F90 /* CCEffectHue.h in Headers */, - 7A59465919E372EE00F65F90 /* CCEffectReflection.h in Headers */, 9D9205D41A0173D600FF2D6D /* CCLightCollection.h in Headers */, - 7A59465B19E372EE00F65F90 /* CCEffectRenderer.h in Headers */, - 7A59465D19E372EE00F65F90 /* CCEffectSaturation.h in Headers */, - 7A59465F19E372EE00F65F90 /* CCEffectStackProtocol.h in Headers */, - 7A59466019E372EE00F65F90 /* CCEffect_Private.h in Headers */, - 7A59466119E372EE00F65F90 /* CCEffect.h in Headers */, - 7A59466319E372EE00F65F90 /* CCEffectStack.h in Headers */, - 7A59466419E372EE00F65F90 /* CCEffectStack_Private.h in Headers */, 9D03A5ED1A02F61B00C651C8 /* CCLightNode_Private.h in Headers */, - 7A59466619E372EE00F65F90 /* CCEffectBrightness.h in Headers */, - 7A59466819E372EE00F65F90 /* CCEffectContrast.h in Headers */, - 7A59466A19E372EE00F65F90 /* CCEffectPixellate.h in Headers */, - 7A59466C19E372EE00F65F90 /* CCEffectDropShadow.h in Headers */, 7A59466E19E372EE00F65F90 /* CCNode.h in Headers */, 7A59467019E372EE00F65F90 /* CCNode+Debug.h in Headers */, 7A59467219E372EF00F65F90 /* CCNode_Private.h in Headers */, @@ -1844,14 +1576,11 @@ 7A5946B219E372F300F65F90 /* CCPhysicsJoint.h in Headers */, 7A5946B419E372F300F65F90 /* CCPhysicsNode.h in Headers */, 7A5946B619E372F300F65F90 /* CCPhysics+ObjectiveChipmunk.h in Headers */, - 7A5946B719E372F300F65F90 /* CCEffectNode.h in Headers */, 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */, 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */, 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */, 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */, 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */, - 9D03A5F61A02F8C200C651C8 /* CCEffectLighting.h in Headers */, - 9D2773B71AB77F3800D19A11 /* CCEffectStereo.h in Headers */, 7A5946DD19E372F700F65F90 /* CCActionManager_Private.h in Headers */, 9D1B4A9B1A02E90300B2DD9B /* CCLightGroups.h in Headers */, 7A5946DE19E372F800F65F90 /* CCActionManager.h in Headers */, @@ -1905,7 +1634,6 @@ 7A59474D19E3730E00F65F90 /* ccFPSImages.h in Headers */, 7A59474F19E3730F00F65F90 /* ccConfig.h in Headers */, 7A59475019E3730F00F65F90 /* CCDirector.h in Headers */, - D22907B01A2F5E440038FF61 /* CCEffectOutline.h in Headers */, 7A59475219E3731000F65F90 /* ccMacros.h in Headers */, 7A59475319E3731000F65F90 /* ccTypes.h in Headers */, 7A59475419E3731000F65F90 /* CCConfiguration.h in Headers */, @@ -2097,17 +1825,17 @@ remoteRef = B15348491BE1E7A20022C4BB /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk-Mac.a */ = { + B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = "libObjectiveChipmunk-Mac.a"; + path = libObjectiveChipmunk.a; remoteRef = B153484B1BE1E7A20022C4BB /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - B153484E1BE1E7A20022C4BB /* libObjectiveChipmunk-iOS.a */ = { + B153484E1BE1E7A20022C4BB /* libObjectiveChipmunk-iPhone.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = "libObjectiveChipmunk-iOS.a"; + path = "libObjectiveChipmunk-iPhone.a"; remoteRef = B153484D1BE1E7A20022C4BB /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -2160,20 +1888,15 @@ files = ( D34CAD6419C3A0FD009BED7A /* NSValue+CCRenderer.m in Sources */, 5018F26A0DFDEAFF00C013A5 /* CCAction.m in Sources */, - D3903B0B1995285B003AA81A /* CCEffectBlur.m in Sources */, - D299CE7C19C2910B00519CBB /* CCEffectDFInnerGlow.m in Sources */, 5018F26C0DFDEAFF00C013A5 /* CCNode.m in Sources */, 5018F26E0DFDEAFF00C013A5 /* CCDirector.m in Sources */, 5018F2700DFDEAFF00C013A5 /* CCActionInstant.m in Sources */, 5018F2720DFDEAFF00C013A5 /* CCActionInterval.m in Sources */, D33803EA180331A90072D8FE /* CCPhysicsJoint.m in Sources */, D26A042B194B815500503BEC /* CCTouchEvent.m in Sources */, - D268FE10198078FF00ECBCD0 /* CCEffectGlass.m in Sources */, 5018F2740DFDEAFF00C013A5 /* CCLabelTTF.m in Sources */, - 9D856722191B019900573093 /* CCEffectContrast.m in Sources */, 5018F2760DFDEAFF00C013A5 /* CCNodeColor.m in Sources */, 5018F2780DFDEAFF00C013A5 /* CCScene.m in Sources */, - 9D2773B81AB77F3800D19A11 /* CCEffectStereo.m in Sources */, 5018F27E0DFDEAFF00C013A5 /* CCTextureCache.m in Sources */, D31C795019994126007921E1 /* CCMetalSupport.m in Sources */, 506602120E38A70D000B500E /* CCScheduler.m in Sources */, @@ -2181,29 +1904,23 @@ 50A07B7B0E4CBCD300AAF0BB /* cocos2d.m in Sources */, B7D273181822F4AA0054849B /* CCBSequenceProperty.m in Sources */, 501CCFB40E99657C00B86F68 /* TGAlib.m in Sources */, - D241610F1958F72B003673BD /* CCEffectSaturation.m in Sources */, B7E260D918171D2000A0E872 /* CCTextField.m in Sources */, 50F7B2790F28DE7C00057537 /* CCActionEase.m in Sources */, 571CD02919649E03003D460C /* CCPlatformTextField.m in Sources */, D3A2E7D3181E12750033614C /* CCPhysicsShape.m in Sources */, B7EE6A1F181AE34600B983FE /* CCSlider.m in Sources */, 509A79980F6188420032F449 /* CCSprite.m in Sources */, - D27451C819B111A9006DA0A1 /* CCEffectDFOutline.m in Sources */, 50C508C70F7C194400799124 /* CCFileUtils.m in Sources */, D25B4F4C194A499700DA9D60 /* CCTouch.m in Sources */, - D272032C18FC89A000B100FF /* CCEffectNode.m in Sources */, 503798C70F912C2000986724 /* CGPointExtension.m in Sources */, - D268FE1B1980791400ECBCD0 /* CCEffectRefraction.m in Sources */, 50CB3B0F100AC43A00B7A750 /* CCActionManager.m in Sources */, D3903B11199528A0003AA81A /* CCRenderDispatch.m in Sources */, B7E775D118527EF0004221AA /* CCAppDelegate.m in Sources */, - 9DBCA31519B68BE400EFE96D /* CCEffectColorChannelOffset.m in Sources */, D3903B15199528B6003AA81A /* CCMetalView.m in Sources */, B7D273141822F4AA0054849B /* CCBReader.m in Sources */, 50F29F5610204FD60046CA73 /* base64.c in Sources */, 50F2A104102094550046CA73 /* ZipUtils.m in Sources */, 571CD02B19649E03003D460C /* CCPlatformTextFieldIOS.m in Sources */, - D272032E18FC89A000B100FF /* CCEffectStack.m in Sources */, 50316AA710291280003ACFE7 /* CCRenderTexture.m in Sources */, 50E2A15110A45E7F00D894CE /* CCSpriteFrame.m in Sources */, 502C8BE110A661E200D137BA /* CCSpriteFrameCache.m in Sources */, @@ -2211,22 +1928,16 @@ 503862E6110072BC005D2C92 /* CCConfiguration.m in Sources */, 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */, 5015043C113300F900A9CA65 /* CCActionProgressTimer.m in Sources */, - D272032618FC89A000B100FF /* CCEffect.m in Sources */, 50FBB2DB117613F500150761 /* CCActionTween.m in Sources */, D37D197B18B6666E00B23FDE /* CCSpriteBatchNode.m in Sources */, D3903B0D1995288D003AA81A /* CCNoARC.m in Sources */, E0C54DCA11F9CF2700B9E4CB /* ccUtils.c in Sources */, - D268FE1F1980791400ECBCD0 /* CCEffectUtils.m in Sources */, D33803E618032F390072D8FE /* CCPhysicsNode.m in Sources */, D24160FF1958F6EE003673BD /* CCAnimationManager.m in Sources */, - 9DDD047F19DE154400687820 /* CCEffectLighting.m in Sources */, E01E6D8D121F130E001A484F /* CCLabelBMFont.m in Sources */, E0EAD100121F4B4600B0C81C /* CCDirectorIOS.m in Sources */, D24161011958F6EE003673BD /* CCAnimationManager+FrameAnimation.m in Sources */, - D268FE0E198078FF00ECBCD0 /* CCEffectBloom.m in Sources */, E0EAD109121F4B4600B0C81C /* CCGLView.m in Sources */, - 9D85671E191B018200573093 /* CCEffectBrightness.m in Sources */, - D268FE14198078FF00ECBCD0 /* CCEffectReflection.m in Sources */, B7D273101822F4AA0054849B /* CCBKeyframe.m in Sources */, E0F924721224140400EF2362 /* CCTexturePVR.m in Sources */, E02BB6D7126CA93A006E46A2 /* CCAnimationCache.m in Sources */, @@ -2237,17 +1948,13 @@ A046E29A14C1DB7E0005BBF2 /* CCWindow.m in Sources */, B7D273121822F4AA0054849B /* CCBLocalizationManager.m in Sources */, A0C87D1B14F9A3A100C0E8B2 /* NSThread+performBlock.m in Sources */, - D241610B1958F72B003673BD /* CCEffectRenderer.m in Sources */, B7D273161822F4AA0054849B /* CCBsequence.m in Sources */, - 9DF37622191C594A00C6D27A /* CCEffectPixellate.m in Sources */, A0A7A53D1514F27D00C8BD16 /* CCActionCatmullRom.m in Sources */, D380581B1889AD6000822437 /* CCRenderer.m in Sources */, D369415F19CFDF170092A0BD /* CCRendererBasicTypes.m in Sources */, A039EC00155C686B0061EE37 /* CCNode+Debug.m in Sources */, D36D31B718BD3CAA00E45F08 /* CCProgressNode.m in Sources */, - D27451B819AE5517006DA0A1 /* CCEffectDistanceField.m in Sources */, A0DA0BC415BCDCA200E80A92 /* CCDrawNode.m in Sources */, - D27451AC19AD430A006DA0A1 /* CCEffectDropShadow.m in Sources */, B7EE69E11819E75700B983FE /* CCLayout.m in Sources */, 9D69E6D719DF604800C2749C /* CCLightNode.m in Sources */, A003AC8F16572D6000C7B792 /* ccFPSImages.m in Sources */, @@ -2265,13 +1972,10 @@ B78AE46517E7AF1C0028BE0B /* CCControl.m in Sources */, B78AE46717E7AF1C0028BE0B /* CCControlTextureFactory.m in Sources */, D38058211889CE7700822437 /* CCCache.m in Sources */, - D22907B11A2F5E440038FF61 /* CCEffectOutline.m in Sources */, 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */, B78AE46917E7AF1C0028BE0B /* CCScrollView.m in Sources */, B78AE46D17E7AF6C0028BE0B /* UITouch+CC.m in Sources */, D33803E318032ECE0072D8FE /* CCPhysicsBody.m in Sources */, - D268FE12198078FF00ECBCD0 /* CCEffectHue.m in Sources */, - 839CE58719FFB139003369F0 /* CCEffectInvert.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2279,30 +1983,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7A59479119E3759800F65F90 /* CCEffectDistanceField.m in Sources */, - 7A59479319E3759800F65F90 /* CCEffectDFOutline.m in Sources */, - 839CE58B19FFB146003369F0 /* CCEffectInvert.m in Sources */, - 7A59479519E3759800F65F90 /* CCEffectDFInnerGlow.m in Sources */, - 7A59479719E3759800F65F90 /* CCEffectColorChannelOffset.m in Sources */, - 7A59479919E3759900F65F90 /* CCEffectBlur.m in Sources */, - 7A59479B19E3759900F65F90 /* CCEffectRefraction.m in Sources */, - 7A59479D19E3759900F65F90 /* CCEffectUtils.m in Sources */, - 7A59479F19E3759900F65F90 /* CCEffectBloom.m in Sources */, - 7A5947A119E3759900F65F90 /* CCEffectGlass.m in Sources */, - 7A5947A319E3759A00F65F90 /* CCEffectHue.m in Sources */, - 7A5947A519E3759A00F65F90 /* CCEffectReflection.m in Sources */, - 7A5947A719E3759A00F65F90 /* CCEffectRenderer.m in Sources */, - 7A5947A919E3759A00F65F90 /* CCEffectSaturation.m in Sources */, - 7A5947AD19E3759B00F65F90 /* CCEffect.m in Sources */, - 7A5947B019E3759B00F65F90 /* CCEffectStack.m in Sources */, - 7A5947B219E3759B00F65F90 /* CCEffectBrightness.m in Sources */, - 7A5947B419E3759B00F65F90 /* CCEffectContrast.m in Sources */, - 7A5947B619E3759B00F65F90 /* CCEffectPixellate.m in Sources */, - 7A5947B819E3759C00F65F90 /* CCEffectDropShadow.m in Sources */, 7A5947BA19E3759C00F65F90 /* CCNode.m in Sources */, 7A5947BC19E3759C00F65F90 /* CCNode+Debug.m in Sources */, 7A5947BF19E3759C00F65F90 /* CCLayout.m in Sources */, - 9D2773BA1AB77F3800D19A11 /* CCEffectStereo.m in Sources */, 7A5947C119E3759C00F65F90 /* CCLayoutBox.m in Sources */, 7A5947C319E3759D00F65F90 /* CCDrawNode.m in Sources */, 7A5947C519E3759D00F65F90 /* CCLabelBMFont.m in Sources */, @@ -2322,7 +2005,6 @@ 7A5947FC19E375A200F65F90 /* CCPhysicsShape.m in Sources */, 7A5947FE19E375A300F65F90 /* CCPhysicsJoint.m in Sources */, 7A59480019E375A300F65F90 /* CCPhysicsNode.m in Sources */, - 7A59480319E375A300F65F90 /* CCEffectNode.m in Sources */, 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */, 9D9205D71A0173D600FF2D6D /* CCLightCollection.m in Sources */, 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */, @@ -2357,7 +2039,6 @@ 7A59486019E375AE00F65F90 /* CCShader.m in Sources */, 7A59486219E375AE00F65F90 /* NSValue+CCRenderer.m in Sources */, 7A59486519E375AE00F65F90 /* CCRenderer.m in Sources */, - D22907B31A2F5E440038FF61 /* CCEffectOutline.m in Sources */, 7A59488119E375B200F65F90 /* CCMetalView.m in Sources */, 7A59488319E375B200F65F90 /* UITouch+CC.m in Sources */, 7A59488519E375B200F65F90 /* CCDirectorIOS.m in Sources */, @@ -2381,7 +2062,6 @@ 7A5948BB19E375BA00F65F90 /* CCBLocalizationManager.m in Sources */, 7A5948BD19E375BB00F65F90 /* CCBReader.m in Sources */, 7A5948BF19E375BB00F65F90 /* CCBsequence.m in Sources */, - 9D03A5F81A02F8C600C651C8 /* CCEffectLighting.m in Sources */, 7A5948C119E375BB00F65F90 /* CCBSequenceProperty.m in Sources */, 7A5948C719E375BC00F65F90 /* CCControl.m in Sources */, 7A5948C919E375BD00F65F90 /* CCButton.m in Sources */, diff --git a/cocos2d/CCNoARC.m b/cocos2d/CCNoARC.m index bb7b21967d8..eede3136cc0 100644 --- a/cocos2d/CCNoARC.m +++ b/cocos2d/CCNoARC.m @@ -86,7 +86,7 @@ @implementation CCSprite(NoARC) -(void)draw:(CCRenderer *)renderer transform:(const GLKMatrix4 *)transform; { if(!CCRenderCheckVisbility(transform, _vertexCenter, _vertexExtents)) return; - +#if CC_EFFECTS if (_effect) { _effectRenderer.contentSize = self.contentSizeInPoints; @@ -104,6 +104,7 @@ -(void)draw:(CCRenderer *)renderer transform:(const GLKMatrix4 *)transform; [_effectRenderer drawSprite:self withEffect:self.effect uniforms:_shaderUniforms renderer:renderer transform:transform]; } else +#endif { EnqueueTriangles(self, renderer, transform); } diff --git a/cocos2d/CCSprite.m b/cocos2d/CCSprite.m index eafa9489769..26662328f85 100644 --- a/cocos2d/CCSprite.m +++ b/cocos2d/CCSprite.m @@ -427,28 +427,6 @@ -(void)updateDisplayedOpacity:(CGFloat)parentOpacity [self updateColor]; } --(CCEffect *)effect -{ - return _effect; -} - --(void)setEffect:(CCEffect *)effect -{ - if(effect != _effect){ - _effect = effect; - - if(effect){ - if(_effectRenderer == nil){ - _effectRenderer = [[CCEffectRenderer alloc] init]; - } - - [self updateShaderUniformsFromEffect]; - } else { - _shaderUniforms = nil; - } - } -} - // // Frames // @@ -509,6 +487,29 @@ -(void) setNormalMapSpriteFrame:(CCSpriteFrame*)frame //} #pragma mark CCSprite - Effects +#if CC_EFFECTS + +-(CCEffect *)effect +{ + return _effect; +} + +-(void)setEffect:(CCEffect *)effect +{ + if(effect != _effect){ + _effect = effect; + + if(effect){ + if(_effectRenderer == nil){ + _effectRenderer = [[CCEffectRenderer alloc] init]; + } + + [self updateShaderUniformsFromEffect]; + } else { + _shaderUniforms = nil; + } + } +} - (void)updateShaderUniformsFromEffect { @@ -521,5 +522,5 @@ - (void)updateShaderUniformsFromEffect // And then copy the new effect's uniforms into the node's uniforms dictionary. [_shaderUniforms addEntriesFromDictionary:_effect.effectImpl.shaderUniforms]; } - +#endif @end diff --git a/cocos2d/CCSprite_Private.h b/cocos2d/CCSprite_Private.h index 83b59a420d0..e5cd0330192 100644 --- a/cocos2d/CCSprite_Private.h +++ b/cocos2d/CCSprite_Private.h @@ -24,9 +24,10 @@ */ #import "CCSprite.h" +#if CC_EFFECTS #import "CCEffectRenderer.h" #import "CCEffect_Private.h" - +#endif @interface CCSprite () { @private @@ -35,15 +36,16 @@ // Center of extents (half width/height) of the sprite for culling purposes. GLKVector2 _vertexCenter, _vertexExtents; - +#if CC_EFFECTS CCEffect *_effect; CCEffectRenderer *_effectRenderer; +#endif } + (CCSpriteTexCoordSet)textureCoordsForTexture:(CCTexture *)texture withRect:(CGRect)rect rotated:(BOOL)rotated xFlipped:(BOOL)flipX yFlipped:(BOOL)flipY; - +#if CC_EFFECTS - (void)updateShaderUniformsFromEffect; - +#endif @end diff --git a/cocos2d/ccConfig.h b/cocos2d/ccConfig.h index 245794b3691..b4842762a0d 100644 --- a/cocos2d/ccConfig.h +++ b/cocos2d/ccConfig.h @@ -166,6 +166,10 @@ #define CC_SHADER_DEFAULT_FRAGMENT_PRECISION mediump #endif +#ifndef CC_EFFECTS +#define CC_EFFECTS 0 +#endif + #ifndef CC_EFFECTS_EXPERIMENTAL #define CC_EFFECTS_EXPERIMENTAL 0 #endif diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index 5d7fbb67909..1362e79bbcd 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -61,22 +61,6 @@ #import "CCConfiguration.h" #import "CCDirector.h" #import "CCDrawNode.h" -#import "CCEffect.h" -#import "CCEffectBloom.h" -#import "CCEffectBrightness.h" -#import "CCEffectColorChannelOffset.h" -#import "CCEffectContrast.h" -#import "CCEffectBlur.h" -#import "CCEffectGlass.h" -#import "CCEffectDropShadow.h" -#import "CCEffectHue.h" -#import "CCEffectLighting.h" -#import "CCEffectNode.h" -#import "CCEffectPixellate.h" -#import "CCEffectReflection.h" -#import "CCEffectRefraction.h" -#import "CCEffectSaturation.h" -#import "CCEffectStack.h" #import "CCLabelBMFont.h" #import "CCLabelTTF.h" #import "CCLightNode.h" @@ -95,14 +79,6 @@ #import "CCTexture.h" #import "CCTexturePVR.h" -#if CC_EFFECTS_EXPERIMENTAL -#import "CCEffectOutline.h" -#import "CCEffectDFOutline.h" -#import "CCEffectDistanceField.h" -#import "CCEffectDFInnerGlow.h" -#import "CCEffectStereo.h" -#endif - // Layouts #import "CCLayout.h" #import "CCLayoutBox.h" From f56923315049319a7ad04364c2b5b5cec834f25a Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 10 Feb 2016 14:51:33 +0300 Subject: [PATCH 17/94] Remove unused files --- cocos2d/Objective-C/CCNode_objc.h | 42 ------------------------------- cocos2d/Objective-C/CCNode_objc.m | 41 ------------------------------ 2 files changed, 83 deletions(-) delete mode 100644 cocos2d/Objective-C/CCNode_objc.h delete mode 100644 cocos2d/Objective-C/CCNode_objc.m diff --git a/cocos2d/Objective-C/CCNode_objc.h b/cocos2d/Objective-C/CCNode_objc.h deleted file mode 100644 index d2cdc82ae7e..00000000000 --- a/cocos2d/Objective-C/CCNode_objc.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2009 Valentin Milea - * Copyright (c) 2008-2010 Ricardo Quesada - * Copyright (c) 2011 Zynga Inc. - * Copyright (c) 2013-2014 Cocos2D Authors - * Copyright (c) 2015 Lars Birkemose - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import -#import "cocos2d.h" - -// ----------------------------------------------------------------- - -@interface CCNode (CCNode_objc) - -// ----------------------------------------------------------------- - -@end - - - - diff --git a/cocos2d/Objective-C/CCNode_objc.m b/cocos2d/Objective-C/CCNode_objc.m deleted file mode 100644 index a766d437ec0..00000000000 --- a/cocos2d/Objective-C/CCNode_objc.m +++ /dev/null @@ -1,41 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2009 Valentin Milea - * Copyright (c) 2008-2010 Ricardo Quesada - * Copyright (c) 2011 Zynga Inc. - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import "CCNode_objc.h" - -// ----------------------------------------------------------------- - -@implementation CCNode (CCNode_objc) - -// ----------------------------------------------------------------- - -@end - - - - - From a5970b801113543e35e3e4658cd2de95be38645f Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 10 Feb 2016 20:03:16 +0300 Subject: [PATCH 18/94] ObjectAL moved to -ext ObjectAL is marked deprecated now by Apple. Somebody may prefer to use AVAudioSession instead of pulling the whole code for ObjectAL --- cocos2d-ext/CCObjectAL/CCActionAudio.h | 52 ++++ cocos2d-ext/CCObjectAL/CCActionAudio.m | 44 ++++ cocos2d-ext/CCObjectAL/CCOAL.h | 10 + cocos2d-tests.xcodeproj/project.pbxproj | 298 ++++++++++++++++++++++ cocos2d-ui-tests/tests/ObjectALTest.m | 2 +- cocos2d-ui/CCBReader/CCAnimationManager.m | 4 + cocos2d.xcodeproj/project.pbxproj | 79 +----- cocos2d/CCActionInstant.h | 45 +--- cocos2d/CCActionInstant.m | 37 --- cocos2d/Platforms/iOS/CCAppDelegate.m | 3 - cocos2d/ccConfig.h | 4 + 11 files changed, 416 insertions(+), 162 deletions(-) create mode 100644 cocos2d-ext/CCObjectAL/CCActionAudio.h create mode 100644 cocos2d-ext/CCObjectAL/CCActionAudio.m create mode 100644 cocos2d-ext/CCObjectAL/CCOAL.h diff --git a/cocos2d-ext/CCObjectAL/CCActionAudio.h b/cocos2d-ext/CCObjectAL/CCActionAudio.h new file mode 100644 index 00000000000..24f350a36fd --- /dev/null +++ b/cocos2d-ext/CCObjectAL/CCActionAudio.h @@ -0,0 +1,52 @@ +// +// CCActionAudio.h +// cocos2d-tests +// +// Created by Andrey Volodin on 10.02.16. +// Copyright © 2016 Cocos2d. All rights reserved. +// + +#import "CCActionInstant.h" + +/** + This actions plays a sound effect through OALSimpleAudio. To play back music use a CCActionCallBlock or CCActionCallFunc + so that you can use the playBg method of OALSimpleAudio. + + @note The action ends immediately, it does not wait for the sound to stop playing. */ +@interface CCActionSoundEffect : CCActionInstant +{ + NSString* _soundFile; + float _pitch; + float _pan; + float _gain; +} + +/** @name Creating a Sound Effect Action */ + +/** + Creates a sound effect action. + + @param file The audio file to play. + @param pitch The playback pitch. 1.0 equals *normal* pitch. + @param pan Stereo panning, values from -1.0 (far left) to 1.0 (far right). + @param gain Gain (loudness), default 1.0 equals *normal* volume. + + @see OALSimpleAudio + @see [OALSimpleAudio playEffect:volume:pitch:pan:loop:] + */ ++(instancetype) actionWithSoundFile:(NSString*)file pitch:(float)pitch pan:(float) pan gain:(float)gain; + +/** + Creates a sound effect action. + + @param file The audio file to play. + @param pitch The playback pitch. 1.0 equals *normal* pitch. + @param pan Stereo panning, values from -1.0 (far left) to 1.0 (far right). + @param gain Gain (loudness), default 1.0 equals *normal* volume. + + @see OALSimpleAudio + @see [OALSimpleAudio playEffect:volume:pitch:pan:loop:] + */ +-(id) initWithSoundFile:(NSString*)file pitch:(float)pitch pan:(float) pan gain:(float)gain; + +@end diff --git a/cocos2d-ext/CCObjectAL/CCActionAudio.m b/cocos2d-ext/CCObjectAL/CCActionAudio.m new file mode 100644 index 00000000000..912b2da22e0 --- /dev/null +++ b/cocos2d-ext/CCObjectAL/CCActionAudio.m @@ -0,0 +1,44 @@ +// +// CCActionAudio.m +// cocos2d-tests +// +// Created by Andrey Volodin on 10.02.16. +// Copyright © 2016 Cocos2d. All rights reserved. +// + +#import "CCActionAudio.h" +#import "OALSimpleAudio.h" + +@implementation CCActionSoundEffect + ++ (id)actionWithSoundFile:(NSString*)f pitch:(float)pi pan:(float) pa gain:(float)ga +{ + return [[CCActionSoundEffect alloc] initWithSoundFile:f pitch:pi pan:pa gain:ga]; +} + +- (id)initWithSoundFile:(NSString*)file pitch:(float)pi pan:(float) pa gain:(float)ga +{ + self = [super init]; + if (!self) return NULL; + + _soundFile = [file copy]; + _pitch = pi; + _pan = pa; + _gain = ga; + + return self; +} + + +- (void)update:(CCTime)time +{ + [[OALSimpleAudio sharedInstance] playEffect:_soundFile volume:_gain pitch:_pitch pan:_pan loop:NO]; +} + +- (id)copyWithZone:(NSZone*)zone +{ + CCSpriteFrame *copy = [[[self class] allocWithZone: zone] initWithSoundFile:_soundFile pitch:_pitch pan:_pan gain:_gain]; + return copy; +} + +@end diff --git a/cocos2d-ext/CCObjectAL/CCOAL.h b/cocos2d-ext/CCObjectAL/CCOAL.h new file mode 100644 index 00000000000..a66e120881f --- /dev/null +++ b/cocos2d-ext/CCObjectAL/CCOAL.h @@ -0,0 +1,10 @@ +// +// CCOAL.h +// cocos2d-tests +// +// Created by Andrey Volodin on 10.02.16. +// Copyright © 2016 Cocos2d. All rights reserved. +// + +#import "OALSimpleAudio.h" +#import "CCActionAudio.h" diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index 14a5479fd4c..b177ede3aa8 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -19,6 +19,60 @@ 084782121C66669300C3817B /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; 084782131C66669300C3817B /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; 084782141C66669300C3817B /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; + 084B94FF1C6BA116003A580D /* CCActionAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B94FE1C6BA116003A580D /* CCActionAudio.m */; }; + 084B95001C6BA116003A580D /* CCActionAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B94FE1C6BA116003A580D /* CCActionAudio.m */; }; + 084B95441C6BA1DD003A580D /* OALAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95051C6BA1DD003A580D /* OALAction.m */; }; + 084B95451C6BA1DD003A580D /* OALAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95051C6BA1DD003A580D /* OALAction.m */; }; + 084B95461C6BA1DD003A580D /* OALActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95071C6BA1DD003A580D /* OALActionManager.m */; }; + 084B95471C6BA1DD003A580D /* OALActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95071C6BA1DD003A580D /* OALActionManager.m */; }; + 084B95481C6BA1DD003A580D /* OALAudioActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95091C6BA1DD003A580D /* OALAudioActions.m */; }; + 084B95491C6BA1DD003A580D /* OALAudioActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95091C6BA1DD003A580D /* OALAudioActions.m */; }; + 084B954A1C6BA1DD003A580D /* OALUtilityActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B950B1C6BA1DD003A580D /* OALUtilityActions.m */; }; + 084B954B1C6BA1DD003A580D /* OALUtilityActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B950B1C6BA1DD003A580D /* OALUtilityActions.m */; }; + 084B954C1C6BA1DD003A580D /* OALAudioTrack.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B950E1C6BA1DD003A580D /* OALAudioTrack.m */; }; + 084B954D1C6BA1DD003A580D /* OALAudioTrack.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B950E1C6BA1DD003A580D /* OALAudioTrack.m */; }; + 084B954E1C6BA1DD003A580D /* OALAudioTrackNotifications.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95101C6BA1DD003A580D /* OALAudioTrackNotifications.m */; }; + 084B954F1C6BA1DD003A580D /* OALAudioTrackNotifications.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95101C6BA1DD003A580D /* OALAudioTrackNotifications.m */; }; + 084B95501C6BA1DD003A580D /* OALAudioTracks.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95121C6BA1DD003A580D /* OALAudioTracks.m */; }; + 084B95511C6BA1DD003A580D /* OALAudioTracks.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95121C6BA1DD003A580D /* OALAudioTracks.m */; }; + 084B95521C6BA1DD003A580D /* OALSimpleAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95141C6BA1DD003A580D /* OALSimpleAudio.m */; }; + 084B95531C6BA1DD003A580D /* OALSimpleAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95141C6BA1DD003A580D /* OALSimpleAudio.m */; }; + 084B95541C6BA1DD003A580D /* ALBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95191C6BA1DD003A580D /* ALBuffer.m */; }; + 084B95551C6BA1DD003A580D /* ALBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95191C6BA1DD003A580D /* ALBuffer.m */; }; + 084B95561C6BA1DD003A580D /* ALCaptureDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B951B1C6BA1DD003A580D /* ALCaptureDevice.m */; }; + 084B95571C6BA1DD003A580D /* ALCaptureDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B951B1C6BA1DD003A580D /* ALCaptureDevice.m */; }; + 084B95581C6BA1DD003A580D /* ALChannelSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B951D1C6BA1DD003A580D /* ALChannelSource.m */; }; + 084B95591C6BA1DD003A580D /* ALChannelSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B951D1C6BA1DD003A580D /* ALChannelSource.m */; }; + 084B955A1C6BA1DD003A580D /* ALContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B951F1C6BA1DD003A580D /* ALContext.m */; }; + 084B955B1C6BA1DD003A580D /* ALContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B951F1C6BA1DD003A580D /* ALContext.m */; }; + 084B955C1C6BA1DD003A580D /* ALDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95211C6BA1DD003A580D /* ALDevice.m */; }; + 084B955D1C6BA1DD003A580D /* ALDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95211C6BA1DD003A580D /* ALDevice.m */; }; + 084B955E1C6BA1DD003A580D /* ALListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95231C6BA1DD003A580D /* ALListener.m */; }; + 084B955F1C6BA1DD003A580D /* ALListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95231C6BA1DD003A580D /* ALListener.m */; }; + 084B95601C6BA1DD003A580D /* ALSoundSourcePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95261C6BA1DD003A580D /* ALSoundSourcePool.m */; }; + 084B95611C6BA1DD003A580D /* ALSoundSourcePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95261C6BA1DD003A580D /* ALSoundSourcePool.m */; }; + 084B95621C6BA1DD003A580D /* ALSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95281C6BA1DD003A580D /* ALSource.m */; }; + 084B95631C6BA1DD003A580D /* ALSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95281C6BA1DD003A580D /* ALSource.m */; }; + 084B95641C6BA1DD003A580D /* ALWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B952B1C6BA1DD003A580D /* ALWrapper.m */; }; + 084B95651C6BA1DD003A580D /* ALWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B952B1C6BA1DD003A580D /* ALWrapper.m */; }; + 084B95661C6BA1DD003A580D /* OpenALManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B952D1C6BA1DD003A580D /* OpenALManager.m */; }; + 084B95671C6BA1DD003A580D /* OpenALManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B952D1C6BA1DD003A580D /* OpenALManager.m */; }; + 084B95681C6BA1DD003A580D /* OALAudioSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95301C6BA1DD003A580D /* OALAudioSession.m */; }; + 084B95691C6BA1DD003A580D /* OALAudioSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95301C6BA1DD003A580D /* OALAudioSession.m */; }; + 084B956A1C6BA1DD003A580D /* OALSuspendHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95321C6BA1DD003A580D /* OALSuspendHandler.m */; }; + 084B956B1C6BA1DD003A580D /* OALSuspendHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95321C6BA1DD003A580D /* OALSuspendHandler.m */; }; + 084B956C1C6BA1DD003A580D /* IOSVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95361C6BA1DD003A580D /* IOSVersion.m */; }; + 084B956D1C6BA1DD003A580D /* IOSVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95361C6BA1DD003A580D /* IOSVersion.m */; }; + 084B956E1C6BA1DD003A580D /* mach_timing.c in Sources */ = {isa = PBXBuildFile; fileRef = 084B95371C6BA1DD003A580D /* mach_timing.c */; }; + 084B956F1C6BA1DD003A580D /* mach_timing.c in Sources */ = {isa = PBXBuildFile; fileRef = 084B95371C6BA1DD003A580D /* mach_timing.c */; }; + 084B95701C6BA1DD003A580D /* NSMutableArray+WeakReferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B953A1C6BA1DD003A580D /* NSMutableArray+WeakReferences.m */; }; + 084B95711C6BA1DD003A580D /* NSMutableArray+WeakReferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B953A1C6BA1DD003A580D /* NSMutableArray+WeakReferences.m */; }; + 084B95721C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B953C1C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.m */; }; + 084B95731C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B953C1C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.m */; }; + 084B95741C6BA1DD003A580D /* OALAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B953E1C6BA1DD003A580D /* OALAudioFile.m */; }; + 084B95751C6BA1DD003A580D /* OALAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B953E1C6BA1DD003A580D /* OALAudioFile.m */; }; + 084B95761C6BA1DD003A580D /* OALTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95411C6BA1DD003A580D /* OALTools.m */; }; + 084B95771C6BA1DD003A580D /* OALTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B95411C6BA1DD003A580D /* OALTools.m */; }; 089949641C67F10A00ECC92C /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; 089949651C67F10A00ECC92C /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; 089949661C67F10A00ECC92C /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; @@ -393,6 +447,70 @@ 084782071C66669300C3817B /* CCTMXXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTMXXMLParser.h; path = "cocos2d-ext/TileMaps/CCTMXXMLParser.h"; sourceTree = SOURCE_ROOT; }; 084782081C66669300C3817B /* CCTMXXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTMXXMLParser.m; path = "cocos2d-ext/TileMaps/CCTMXXMLParser.m"; sourceTree = SOURCE_ROOT; }; 084782171C6667B000C3817B /* CCTileMaps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTileMaps.h; path = "cocos2d-ext/TileMaps/CCTileMaps.h"; sourceTree = SOURCE_ROOT; }; + 084B94FD1C6BA116003A580D /* CCActionAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionAudio.h; sourceTree = ""; }; + 084B94FE1C6BA116003A580D /* CCActionAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionAudio.m; sourceTree = ""; }; + 084B95031C6BA1DD003A580D /* OALAction+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OALAction+Private.h"; sourceTree = ""; }; + 084B95041C6BA1DD003A580D /* OALAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAction.h; sourceTree = ""; }; + 084B95051C6BA1DD003A580D /* OALAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAction.m; sourceTree = ""; }; + 084B95061C6BA1DD003A580D /* OALActionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALActionManager.h; sourceTree = ""; }; + 084B95071C6BA1DD003A580D /* OALActionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALActionManager.m; sourceTree = ""; }; + 084B95081C6BA1DD003A580D /* OALAudioActions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioActions.h; sourceTree = ""; }; + 084B95091C6BA1DD003A580D /* OALAudioActions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioActions.m; sourceTree = ""; }; + 084B950A1C6BA1DD003A580D /* OALUtilityActions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALUtilityActions.h; sourceTree = ""; }; + 084B950B1C6BA1DD003A580D /* OALUtilityActions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALUtilityActions.m; sourceTree = ""; }; + 084B950D1C6BA1DD003A580D /* OALAudioTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioTrack.h; sourceTree = ""; }; + 084B950E1C6BA1DD003A580D /* OALAudioTrack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioTrack.m; sourceTree = ""; }; + 084B950F1C6BA1DD003A580D /* OALAudioTrackNotifications.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioTrackNotifications.h; sourceTree = ""; }; + 084B95101C6BA1DD003A580D /* OALAudioTrackNotifications.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioTrackNotifications.m; sourceTree = ""; }; + 084B95111C6BA1DD003A580D /* OALAudioTracks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioTracks.h; sourceTree = ""; }; + 084B95121C6BA1DD003A580D /* OALAudioTracks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioTracks.m; sourceTree = ""; }; + 084B95131C6BA1DD003A580D /* OALSimpleAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALSimpleAudio.h; sourceTree = ""; }; + 084B95141C6BA1DD003A580D /* OALSimpleAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALSimpleAudio.m; sourceTree = ""; }; + 084B95151C6BA1DD003A580D /* ObjectAL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectAL.h; sourceTree = ""; }; + 084B95161C6BA1DD003A580D /* ObjectALConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectALConfig.h; sourceTree = ""; }; + 084B95181C6BA1DD003A580D /* ALBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALBuffer.h; sourceTree = ""; }; + 084B95191C6BA1DD003A580D /* ALBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALBuffer.m; sourceTree = ""; }; + 084B951A1C6BA1DD003A580D /* ALCaptureDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALCaptureDevice.h; sourceTree = ""; }; + 084B951B1C6BA1DD003A580D /* ALCaptureDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALCaptureDevice.m; sourceTree = ""; }; + 084B951C1C6BA1DD003A580D /* ALChannelSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALChannelSource.h; sourceTree = ""; }; + 084B951D1C6BA1DD003A580D /* ALChannelSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALChannelSource.m; sourceTree = ""; }; + 084B951E1C6BA1DD003A580D /* ALContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALContext.h; sourceTree = ""; }; + 084B951F1C6BA1DD003A580D /* ALContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALContext.m; sourceTree = ""; }; + 084B95201C6BA1DD003A580D /* ALDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALDevice.h; sourceTree = ""; }; + 084B95211C6BA1DD003A580D /* ALDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALDevice.m; sourceTree = ""; }; + 084B95221C6BA1DD003A580D /* ALListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALListener.h; sourceTree = ""; }; + 084B95231C6BA1DD003A580D /* ALListener.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALListener.m; sourceTree = ""; }; + 084B95241C6BA1DD003A580D /* ALSoundSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALSoundSource.h; sourceTree = ""; }; + 084B95251C6BA1DD003A580D /* ALSoundSourcePool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALSoundSourcePool.h; sourceTree = ""; }; + 084B95261C6BA1DD003A580D /* ALSoundSourcePool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALSoundSourcePool.m; sourceTree = ""; }; + 084B95271C6BA1DD003A580D /* ALSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALSource.h; sourceTree = ""; }; + 084B95281C6BA1DD003A580D /* ALSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALSource.m; sourceTree = ""; }; + 084B95291C6BA1DD003A580D /* ALTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALTypes.h; sourceTree = ""; }; + 084B952A1C6BA1DD003A580D /* ALWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALWrapper.h; sourceTree = ""; }; + 084B952B1C6BA1DD003A580D /* ALWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALWrapper.m; sourceTree = ""; }; + 084B952C1C6BA1DD003A580D /* OpenALManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenALManager.h; sourceTree = ""; }; + 084B952D1C6BA1DD003A580D /* OpenALManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenALManager.m; sourceTree = ""; }; + 084B952F1C6BA1DD003A580D /* OALAudioSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioSession.h; sourceTree = ""; }; + 084B95301C6BA1DD003A580D /* OALAudioSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioSession.m; sourceTree = ""; }; + 084B95311C6BA1DD003A580D /* OALSuspendHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALSuspendHandler.h; sourceTree = ""; }; + 084B95321C6BA1DD003A580D /* OALSuspendHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALSuspendHandler.m; sourceTree = ""; }; + 084B95341C6BA1DD003A580D /* ARCSafe_MemMgmt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARCSafe_MemMgmt.h; sourceTree = ""; }; + 084B95351C6BA1DD003A580D /* IOSVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOSVersion.h; sourceTree = ""; }; + 084B95361C6BA1DD003A580D /* IOSVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IOSVersion.m; sourceTree = ""; }; + 084B95371C6BA1DD003A580D /* mach_timing.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mach_timing.c; sourceTree = ""; }; + 084B95381C6BA1DD003A580D /* mach_timing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mach_timing.h; sourceTree = ""; }; + 084B95391C6BA1DD003A580D /* NSMutableArray+WeakReferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+WeakReferences.h"; sourceTree = ""; }; + 084B953A1C6BA1DD003A580D /* NSMutableArray+WeakReferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+WeakReferences.m"; sourceTree = ""; }; + 084B953B1C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableDictionary+WeakReferences.h"; sourceTree = ""; }; + 084B953C1C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableDictionary+WeakReferences.m"; sourceTree = ""; }; + 084B953D1C6BA1DD003A580D /* OALAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioFile.h; sourceTree = ""; }; + 084B953E1C6BA1DD003A580D /* OALAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioFile.m; sourceTree = ""; }; + 084B953F1C6BA1DD003A580D /* OALNotifications.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALNotifications.h; sourceTree = ""; }; + 084B95401C6BA1DD003A580D /* OALTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALTools.h; sourceTree = ""; }; + 084B95411C6BA1DD003A580D /* OALTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALTools.m; sourceTree = ""; }; + 084B95421C6BA1DD003A580D /* ObjectALMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectALMacros.h; sourceTree = ""; }; + 084B95431C6BA1DD003A580D /* SynthesizeSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SynthesizeSingleton.h; sourceTree = ""; }; + 084B957A1C6BA47B003A580D /* CCOAL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCOAL.h; sourceTree = ""; }; 089949621C67F10A00ECC92C /* CCMotionStreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMotionStreak.h; sourceTree = ""; }; 089949631C67F10A00ECC92C /* CCMotionStreak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMotionStreak.m; sourceTree = ""; }; 0899496A1C67F1BE00ECC92C /* CCClippingNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCClippingNode.h; sourceTree = ""; }; @@ -671,6 +789,7 @@ 084781FF1C66666B00C3817B /* cocos2d-ext */ = { isa = PBXGroup; children = ( + 084B94FA1C6BA106003A580D /* CCObjectAL */, 089949FB1C67FAB000ECC92C /* CCParallaxNode */, 089949871C67F40000ECC92C /* CCPackages */, 0899496F1C67F2D600ECC92C /* CCParticles */, @@ -698,6 +817,127 @@ name = TileMaps; sourceTree = ""; }; + 084B94FA1C6BA106003A580D /* CCObjectAL */ = { + isa = PBXGroup; + children = ( + 084B95011C6BA1DD003A580D /* ObjectAL */, + 084B957A1C6BA47B003A580D /* CCOAL.h */, + 084B94FD1C6BA116003A580D /* CCActionAudio.h */, + 084B94FE1C6BA116003A580D /* CCActionAudio.m */, + ); + name = CCObjectAL; + path = "cocos2d-ext/CCObjectAL"; + sourceTree = SOURCE_ROOT; + }; + 084B95011C6BA1DD003A580D /* ObjectAL */ = { + isa = PBXGroup; + children = ( + 084B95021C6BA1DD003A580D /* Actions */, + 084B950C1C6BA1DD003A580D /* AudioTrack */, + 084B95131C6BA1DD003A580D /* OALSimpleAudio.h */, + 084B95141C6BA1DD003A580D /* OALSimpleAudio.m */, + 084B95151C6BA1DD003A580D /* ObjectAL.h */, + 084B95161C6BA1DD003A580D /* ObjectALConfig.h */, + 084B95171C6BA1DD003A580D /* OpenAL */, + 084B952E1C6BA1DD003A580D /* Session */, + 084B95331C6BA1DD003A580D /* Support */, + ); + name = ObjectAL; + path = external/ObjectAL/ObjectAL/ObjectAL; + sourceTree = SOURCE_ROOT; + }; + 084B95021C6BA1DD003A580D /* Actions */ = { + isa = PBXGroup; + children = ( + 084B95031C6BA1DD003A580D /* OALAction+Private.h */, + 084B95041C6BA1DD003A580D /* OALAction.h */, + 084B95051C6BA1DD003A580D /* OALAction.m */, + 084B95061C6BA1DD003A580D /* OALActionManager.h */, + 084B95071C6BA1DD003A580D /* OALActionManager.m */, + 084B95081C6BA1DD003A580D /* OALAudioActions.h */, + 084B95091C6BA1DD003A580D /* OALAudioActions.m */, + 084B950A1C6BA1DD003A580D /* OALUtilityActions.h */, + 084B950B1C6BA1DD003A580D /* OALUtilityActions.m */, + ); + path = Actions; + sourceTree = ""; + }; + 084B950C1C6BA1DD003A580D /* AudioTrack */ = { + isa = PBXGroup; + children = ( + 084B950D1C6BA1DD003A580D /* OALAudioTrack.h */, + 084B950E1C6BA1DD003A580D /* OALAudioTrack.m */, + 084B950F1C6BA1DD003A580D /* OALAudioTrackNotifications.h */, + 084B95101C6BA1DD003A580D /* OALAudioTrackNotifications.m */, + 084B95111C6BA1DD003A580D /* OALAudioTracks.h */, + 084B95121C6BA1DD003A580D /* OALAudioTracks.m */, + ); + path = AudioTrack; + sourceTree = ""; + }; + 084B95171C6BA1DD003A580D /* OpenAL */ = { + isa = PBXGroup; + children = ( + 084B95181C6BA1DD003A580D /* ALBuffer.h */, + 084B95191C6BA1DD003A580D /* ALBuffer.m */, + 084B951A1C6BA1DD003A580D /* ALCaptureDevice.h */, + 084B951B1C6BA1DD003A580D /* ALCaptureDevice.m */, + 084B951C1C6BA1DD003A580D /* ALChannelSource.h */, + 084B951D1C6BA1DD003A580D /* ALChannelSource.m */, + 084B951E1C6BA1DD003A580D /* ALContext.h */, + 084B951F1C6BA1DD003A580D /* ALContext.m */, + 084B95201C6BA1DD003A580D /* ALDevice.h */, + 084B95211C6BA1DD003A580D /* ALDevice.m */, + 084B95221C6BA1DD003A580D /* ALListener.h */, + 084B95231C6BA1DD003A580D /* ALListener.m */, + 084B95241C6BA1DD003A580D /* ALSoundSource.h */, + 084B95251C6BA1DD003A580D /* ALSoundSourcePool.h */, + 084B95261C6BA1DD003A580D /* ALSoundSourcePool.m */, + 084B95271C6BA1DD003A580D /* ALSource.h */, + 084B95281C6BA1DD003A580D /* ALSource.m */, + 084B95291C6BA1DD003A580D /* ALTypes.h */, + 084B952A1C6BA1DD003A580D /* ALWrapper.h */, + 084B952B1C6BA1DD003A580D /* ALWrapper.m */, + 084B952C1C6BA1DD003A580D /* OpenALManager.h */, + 084B952D1C6BA1DD003A580D /* OpenALManager.m */, + ); + path = OpenAL; + sourceTree = ""; + }; + 084B952E1C6BA1DD003A580D /* Session */ = { + isa = PBXGroup; + children = ( + 084B952F1C6BA1DD003A580D /* OALAudioSession.h */, + 084B95301C6BA1DD003A580D /* OALAudioSession.m */, + 084B95311C6BA1DD003A580D /* OALSuspendHandler.h */, + 084B95321C6BA1DD003A580D /* OALSuspendHandler.m */, + ); + path = Session; + sourceTree = ""; + }; + 084B95331C6BA1DD003A580D /* Support */ = { + isa = PBXGroup; + children = ( + 084B95341C6BA1DD003A580D /* ARCSafe_MemMgmt.h */, + 084B95351C6BA1DD003A580D /* IOSVersion.h */, + 084B95361C6BA1DD003A580D /* IOSVersion.m */, + 084B95371C6BA1DD003A580D /* mach_timing.c */, + 084B95381C6BA1DD003A580D /* mach_timing.h */, + 084B95391C6BA1DD003A580D /* NSMutableArray+WeakReferences.h */, + 084B953A1C6BA1DD003A580D /* NSMutableArray+WeakReferences.m */, + 084B953B1C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.h */, + 084B953C1C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.m */, + 084B953D1C6BA1DD003A580D /* OALAudioFile.h */, + 084B953E1C6BA1DD003A580D /* OALAudioFile.m */, + 084B953F1C6BA1DD003A580D /* OALNotifications.h */, + 084B95401C6BA1DD003A580D /* OALTools.h */, + 084B95411C6BA1DD003A580D /* OALTools.m */, + 084B95421C6BA1DD003A580D /* ObjectALMacros.h */, + 084B95431C6BA1DD003A580D /* SynthesizeSingleton.h */, + ); + path = Support; + sourceTree = ""; + }; 089949611C67F10A00ECC92C /* CCMotionStreak */ = { isa = PBXGroup; children = ( @@ -1514,22 +1754,35 @@ 089949FE1C67FAB000ECC92C /* CCParallaxNode.m in Sources */, B71B087C17EA5B490082EBC0 /* TestBase.m in Sources */, D3870C6018B440150033D885 /* SpritePerformanceTest.m in Sources */, + 084B956E1C6BA1DD003A580D /* mach_timing.c in Sources */, + 084B954E1C6BA1DD003A580D /* OALAudioTrackNotifications.m in Sources */, + 084B95521C6BA1DD003A580D /* OALSimpleAudio.m in Sources */, 0847820C1C66669300C3817B /* CCTiledMapLayer.m in Sources */, 089949F81C67F97D00ECC92C /* SSZipArchive.m in Sources */, + 084B95661C6BA1DD003A580D /* OpenALManager.m in Sources */, + 084B956C1C6BA1DD003A580D /* IOSVersion.m in Sources */, + 084B954C1C6BA1DD003A580D /* OALAudioTrack.m in Sources */, B71B088217EA5B6A0082EBC0 /* CCScrollViewTest.m in Sources */, B7EE697918186D5200B983FE /* CCTextFieldTest.m in Sources */, B7E2620017E7D321007067F0 /* AppDelegate.m in Sources */, 0E28FE1A197FCE4500F78989 /* CCCacheTest.m in Sources */, + 084B95541C6BA1DD003A580D /* ALBuffer.m in Sources */, B77060AB1832E3310043CC67 /* CCTextureCacheTest.m in Sources */, + 084B95561C6BA1DD003A580D /* ALCaptureDevice.m in Sources */, 089949A11C67F40000ECC92C /* CCPackage.m in Sources */, + 084B95621C6BA1DD003A580D /* ALSource.m in Sources */, A664A4EF18A3D9B8006184B8 /* PositioningTest.m in Sources */, B7E2621C17E7D370007067F0 /* main.m in Sources */, + 084B955A1C6BA1DD003A580D /* ALContext.m in Sources */, + 084B95741C6BA1DD003A580D /* OALAudioFile.m in Sources */, B7EE69811818760700B983FE /* CCSprite9SliceTest.m in Sources */, B7EE6A28181B075E00B983FE /* CCSliderTest.m in Sources */, 0899497D1C67F2D600ECC92C /* CCParticleExamples.m in Sources */, 0847820F1C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, 089949B31C67F40000ECC92C /* CCPackageInstaller.m in Sources */, + 084B95681C6BA1DD003A580D /* OALAudioSession.m in Sources */, 089949641C67F10A00ECC92C /* CCMotionStreak.m in Sources */, + 084B95481C6BA1DD003A580D /* OALAudioActions.m in Sources */, 084782121C66669300C3817B /* CCTMXXMLParser.m in Sources */, 084782091C66669300C3817B /* CCTiledMap.m in Sources */, 089949B01C67F40000ECC92C /* CCPackageHelper.m in Sources */, @@ -1539,6 +1792,7 @@ 089949801C67F2D600ECC92C /* CCParticleSystem.m in Sources */, 089949AD1C67F40000ECC92C /* CCPackageDownloadManager.m in Sources */, D2B4894C1917EE6700C3443A /* CCEffectsTest.m in Sources */, + 084B95721C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.m in Sources */, B77060141831A17C0043CC67 /* ObjectALTest.m in Sources */, 089949EC1C67F97D00ECC92C /* ioapi.c in Sources */, B7EE69CF1819D82300B983FE /* CCLayoutTest.m in Sources */, @@ -1547,10 +1801,19 @@ 089949A41C67F40000ECC92C /* CCPackageCocos2dEnabler.m in Sources */, 089949AA1C67F40000ECC92C /* CCPackageDownload.m in Sources */, 758A690F1843E18700D1A8D2 /* ParallaxTest.m in Sources */, + 084B95641C6BA1DD003A580D /* ALWrapper.m in Sources */, 089949EF1C67F97D00ECC92C /* mztools.c in Sources */, 7587BDB3185A0A6900EEEFDE /* TextureTest.m in Sources */, D3C9C867188078B900C58900 /* CCSchedulerTest.m in Sources */, + 084B955C1C6BA1DD003A580D /* ALDevice.m in Sources */, + 084B95601C6BA1DD003A580D /* ALSoundSourcePool.m in Sources */, + 084B95581C6BA1DD003A580D /* ALChannelSource.m in Sources */, + 084B954A1C6BA1DD003A580D /* OALUtilityActions.m in Sources */, + 084B955E1C6BA1DD003A580D /* ALListener.m in Sources */, + 084B956A1C6BA1DD003A580D /* OALSuspendHandler.m in Sources */, 7587BDB7185A64AD00EEEFDE /* ColorTest.m in Sources */, + 084B95701C6BA1DD003A580D /* NSMutableArray+WeakReferences.m in Sources */, + 084B95441C6BA1DD003A580D /* OALAction.m in Sources */, 089949831C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */, D340E10F185660BE006E605C /* TilemapTest.m in Sources */, B7E2622117E7D3B2007067F0 /* MainMenu.m in Sources */, @@ -1563,8 +1826,12 @@ B7C6238C17ECDF6A00928F91 /* CCTableViewTest.m in Sources */, 089949B91C67F40000ECC92C /* CCPackageUnzipper.m in Sources */, 089949F51C67F97D00ECC92C /* zip.c in Sources */, + 084B95501C6BA1DD003A580D /* OALAudioTracks.m in Sources */, + 084B95761C6BA1DD003A580D /* OALTools.m in Sources */, D340E10E185660BE006E605C /* CCPhysicsTest.m in Sources */, + 084B95461C6BA1DD003A580D /* OALActionManager.m in Sources */, D3B2A7E5187DD60B00406C5A /* CCBMFontTest.m in Sources */, + 084B94FF1C6BA116003A580D /* CCActionAudio.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1575,22 +1842,35 @@ 08994A001C67FAB000ECC92C /* CCParallaxNode.m in Sources */, D3763D3819E734C5006C050D /* MainMenu.m in Sources */, D3763D3919E734C5006C050D /* TestBase.m in Sources */, + 084B956F1C6BA1DD003A580D /* mach_timing.c in Sources */, + 084B954F1C6BA1DD003A580D /* OALAudioTrackNotifications.m in Sources */, + 084B95531C6BA1DD003A580D /* OALSimpleAudio.m in Sources */, 0847820E1C66669300C3817B /* CCTiledMapLayer.m in Sources */, 089949FA1C67F97D00ECC92C /* SSZipArchive.m in Sources */, + 084B95671C6BA1DD003A580D /* OpenALManager.m in Sources */, + 084B956D1C6BA1DD003A580D /* IOSVersion.m in Sources */, + 084B954D1C6BA1DD003A580D /* OALAudioTrack.m in Sources */, D3763D3A19E734C5006C050D /* CCCacheTest.m in Sources */, D3763D3B19E734C5006C050D /* CCEffectsTest.m in Sources */, D3763D3C19E734C5006C050D /* CCRendererTest.m in Sources */, D3763D5819E7352F006C050D /* main.m in Sources */, + 084B95551C6BA1DD003A580D /* ALBuffer.m in Sources */, D3763D3D19E734C5006C050D /* SpritePerformanceTest.m in Sources */, + 084B95571C6BA1DD003A580D /* ALCaptureDevice.m in Sources */, 089949A31C67F40000ECC92C /* CCPackage.m in Sources */, + 084B95631C6BA1DD003A580D /* ALSource.m in Sources */, D3763D3E19E734C5006C050D /* CCScrollViewTest.m in Sources */, D3763D3F19E734C5006C050D /* CCSchedulerTest.m in Sources */, + 084B955B1C6BA1DD003A580D /* ALContext.m in Sources */, + 084B95751C6BA1DD003A580D /* OALAudioFile.m in Sources */, D3763D4019E734C5006C050D /* CCTableViewTest.m in Sources */, D3763D4119E734C5006C050D /* CCTransitionTest.m in Sources */, 0899497F1C67F2D600ECC92C /* CCParticleExamples.m in Sources */, 084782111C66669300C3817B /* CCTiledMapObjectGroup.m in Sources */, 089949B51C67F40000ECC92C /* CCPackageInstaller.m in Sources */, + 084B95691C6BA1DD003A580D /* OALAudioSession.m in Sources */, 089949661C67F10A00ECC92C /* CCMotionStreak.m in Sources */, + 084B95491C6BA1DD003A580D /* OALAudioActions.m in Sources */, 084782141C66669300C3817B /* CCTMXXMLParser.m in Sources */, 0847820B1C66669300C3817B /* CCTiledMap.m in Sources */, 089949B21C67F40000ECC92C /* CCPackageHelper.m in Sources */, @@ -1600,6 +1880,7 @@ 089949821C67F2D600ECC92C /* CCParticleSystem.m in Sources */, 089949AF1C67F40000ECC92C /* CCPackageDownloadManager.m in Sources */, D3763D4419E734C5006C050D /* CCTextFieldTest.m in Sources */, + 084B95731C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.m in Sources */, D3763D4519E734C5006C050D /* CCLayoutTest.m in Sources */, 089949EE1C67F97D00ECC92C /* ioapi.c in Sources */, D3763D4619E734C5006C050D /* CCSliderTest.m in Sources */, @@ -1608,10 +1889,19 @@ 089949A61C67F40000ECC92C /* CCPackageCocos2dEnabler.m in Sources */, 089949AC1C67F40000ECC92C /* CCPackageDownload.m in Sources */, D3763D4819E734C5006C050D /* CCTextureCacheTest.m in Sources */, + 084B95651C6BA1DD003A580D /* ALWrapper.m in Sources */, 089949F11C67F97D00ECC92C /* mztools.c in Sources */, D3763D4919E734C5006C050D /* CCLabelTTFTest.m in Sources */, D3763D4A19E734C5006C050D /* ParallaxTest.m in Sources */, + 084B955D1C6BA1DD003A580D /* ALDevice.m in Sources */, + 084B95611C6BA1DD003A580D /* ALSoundSourcePool.m in Sources */, + 084B95591C6BA1DD003A580D /* ALChannelSource.m in Sources */, + 084B954B1C6BA1DD003A580D /* OALUtilityActions.m in Sources */, + 084B955F1C6BA1DD003A580D /* ALListener.m in Sources */, + 084B956B1C6BA1DD003A580D /* OALSuspendHandler.m in Sources */, D3763D4B19E734C5006C050D /* ParticleTest.m in Sources */, + 084B95711C6BA1DD003A580D /* NSMutableArray+WeakReferences.m in Sources */, + 084B95451C6BA1DD003A580D /* OALAction.m in Sources */, 089949851C67F2D600ECC92C /* CCParticleSystemBase.m in Sources */, D3763D5619E73513006C050D /* AppDelegate.m in Sources */, D3763D4C19E734C5006C050D /* CCPhysicsTest.m in Sources */, @@ -1624,8 +1914,12 @@ D3763D5019E734C5006C050D /* CCBMFontTest.m in Sources */, 089949BB1C67F40000ECC92C /* CCPackageUnzipper.m in Sources */, 089949F71C67F97D00ECC92C /* zip.c in Sources */, + 084B95511C6BA1DD003A580D /* OALAudioTracks.m in Sources */, + 084B95771C6BA1DD003A580D /* OALTools.m in Sources */, D3763D5119E734C5006C050D /* VertexZTest.m in Sources */, + 084B95471C6BA1DD003A580D /* OALActionManager.m in Sources */, D3763D5219E734C5006C050D /* PositioningTest.m in Sources */, + 084B95001C6BA116003A580D /* CCActionAudio.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1874,6 +2168,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "cocos2d-ui-tests/ios/Prefix.pch"; @@ -1918,6 +2213,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "cocos2d-ui-tests/ios/Prefix.pch"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; @@ -1961,6 +2257,7 @@ CLANG_ENABLE_OBJC_ARC = YES; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -2012,6 +2309,7 @@ CLANG_ENABLE_OBJC_ARC = YES; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREPROCESSOR_DEFINITIONS = ( NDEBUG, diff --git a/cocos2d-ui-tests/tests/ObjectALTest.m b/cocos2d-ui-tests/tests/ObjectALTest.m index 679d89d4e93..429e53e3fc6 100644 --- a/cocos2d-ui-tests/tests/ObjectALTest.m +++ b/cocos2d-ui-tests/tests/ObjectALTest.m @@ -7,7 +7,7 @@ // #import "TestBase.h" -#import "OALSimpleAudio.h" +#import "CCOAL.h" @interface ObjectALTest : TestBase @end diff --git a/cocos2d-ui/CCBReader/CCAnimationManager.m b/cocos2d-ui/CCBReader/CCAnimationManager.m index f6412922786..7b4130340e8 100644 --- a/cocos2d-ui/CCBReader/CCAnimationManager.m +++ b/cocos2d-ui/CCBReader/CCAnimationManager.m @@ -462,6 +462,7 @@ - (id)actionForCallbackChannel:(CCBSequenceProperty*) channel { return [CCActionSequence actionWithArray:actions]; } +#if CC_OBJECT_AL - (id)actionForSoundChannel:(CCBSequenceProperty*) channel { float lastKeyframeTime = 0; @@ -488,6 +489,7 @@ - (id)actionForSoundChannel:(CCBSequenceProperty*) channel { return [CCActionSequence actionWithArray:actions]; } +#endif - (void)runAnimationsForSequenceId:(int)seqId tweenDuration:(float) tweenDuration { @@ -577,6 +579,7 @@ - (void)addSequenceCallBacks:(int)seqId tweenDuration:(float)tweenDuration start } if (seq.soundChannel) { +#if CC_OBJECT_AL // Build sound actions for channel CCAction* action = [self actionForSoundChannel:seq.soundChannel]; if (action) { @@ -584,6 +587,7 @@ - (void)addSequenceCallBacks:(int)seqId tweenDuration:(float)tweenDuration start [action startWithTarget:self.rootNode]; [_currentActions addObject:action]; } +#endif } } diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 4bc3772b87a..2559025fc93 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = 0529445911098D6F00E500F3 /* CCProfiling.h */; }; 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; 0899494A1C66000000ECC92C /* libObjectiveChipmunk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk.a */; }; - 0899494B1C66001900ECC92C /* libObjectAL (Mac).a in Frameworks */ = {isa = PBXBuildFile; fileRef = B15348371BE1E78C0022C4BB /* libObjectAL (Mac).a */; }; 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; @@ -449,24 +448,9 @@ E0F924711224140400EF2362 /* CCTexturePVR.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F9246F1224140400EF2362 /* CCTexturePVR.h */; }; E0F924721224140400EF2362 /* CCTexturePVR.m in Sources */ = {isa = PBXBuildFile; fileRef = E0F924701224140400EF2362 /* CCTexturePVR.m */; }; E0F92AC41224559800EF2362 /* CCNS.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F92AC31224559800EF2362 /* CCNS.h */; }; - FC64014019C79716003E595A /* libObjectAL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FC39961B19C3B92F00C93E5E /* libObjectAL.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - B15348341BE1E78C0022C4BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = FC39961219C3B80E00C93E5E; - remoteInfo = "ObjectAL (Android)"; - }; - B15348361BE1E78C0022C4BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D369B53219C8E73C00BA46EA; - remoteInfo = "ObjectAL (Mac)"; - }; B15348431BE1E7A20022C4BB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; @@ -523,20 +507,6 @@ remoteGlobalIDString = 7A4037A719E37038007B6E8F; remoteInfo = "cocos2d-mac"; }; - FC39961A19C3B92F00C93E5E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = CBBAB312171D0B84009B955F; - remoteInfo = "ObjectAL (iOS)"; - }; - FCFDA23D19C78E2D00B90910 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = CBBAB311171D0B84009B955F; - remoteInfo = "ObjectAL (iOS)"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -797,7 +767,6 @@ E0F9246F1224140400EF2362 /* CCTexturePVR.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTexturePVR.h; sourceTree = ""; }; E0F924701224140400EF2362 /* CCTexturePVR.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTexturePVR.m; sourceTree = ""; }; E0F92AC31224559800EF2362 /* CCNS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNS.h; sourceTree = ""; }; - FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ObjectAL.xcodeproj; path = external/ObjectAL/ObjectAL/ObjectAL.xcodeproj; sourceTree = ""; }; FC55599F1991A26300E29CCE /* libogg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libogg.a; path = "external/ogg/android/ogg/build/Debug-android/libogg.a"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -807,7 +776,6 @@ buildActionMask = 2147483647; files = ( B15348511BE1E7B70022C4BB /* libObjectiveChipmunk-iPhone.a in Frameworks */, - FC64014019C79716003E595A /* libObjectAL.a in Frameworks */, D3903B1A19952ABD003AA81A /* Metal.framework in Frameworks */, D24FAEEC198014B90043E27D /* GLKit.framework in Frameworks */, D28A2E211954F85700ADC03D /* AVFoundation.framework in Frameworks */, @@ -826,7 +794,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0899494B1C66001900ECC92C /* libObjectAL (Mac).a in Frameworks */, 0899494A1C66000000ECC92C /* libObjectiveChipmunk.a in Frameworks */, 7A4037C819E3712A007B6E8F /* OpenGL.framework in Frameworks */, 7A4037C619E37126007B6E8F /* QuartzCore.framework in Frameworks */, @@ -935,7 +902,6 @@ isa = PBXGroup; children = ( B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */, - FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */, ); name = external; sourceTree = ""; @@ -1415,16 +1381,6 @@ path = iOS; sourceTree = ""; }; - FC39961419C3B92F00C93E5E /* Products */ = { - isa = PBXGroup; - children = ( - FC39961B19C3B92F00C93E5E /* libObjectAL.a */, - B15348351BE1E78C0022C4BB /* libObjectAL (Android).a */, - B15348371BE1E78C0022C4BB /* libObjectAL (Mac).a */, - ); - name = Products; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -1689,7 +1645,6 @@ buildRules = ( ); dependencies = ( - FCFDA23E19C78E2D00B90910 /* PBXTargetDependency */, ); name = "cocos2d-ios"; productName = cocos2d; @@ -1767,10 +1722,6 @@ ProductGroup = B153483A1BE1E7A10022C4BB /* Products */; ProjectRef = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; }, - { - ProductGroup = FC39961419C3B92F00C93E5E /* Products */; - ProjectRef = FC39961319C3B92F00C93E5E /* ObjectAL.xcodeproj */; - }, ); projectRoot = ""; targets = ( @@ -1783,20 +1734,6 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - B15348351BE1E78C0022C4BB /* libObjectAL (Android).a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libObjectAL (Android).a"; - remoteRef = B15348341BE1E78C0022C4BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - B15348371BE1E78C0022C4BB /* libObjectAL (Mac).a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libObjectAL (Mac).a"; - remoteRef = B15348361BE1E78C0022C4BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; B15348441BE1E7A20022C4BB /* ChipmunkDemo.app */ = { isa = PBXReferenceProxy; fileType = wrapper.application; @@ -1846,13 +1783,6 @@ remoteRef = B153484F1BE1E7A20022C4BB /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - FC39961B19C3B92F00C93E5E /* libObjectAL.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libObjectAL.a; - remoteRef = FC39961A19C3B92F00C93E5E /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -2089,11 +2019,6 @@ target = 7A4037A719E37038007B6E8F /* cocos2d-mac */; targetProxy = B7E7DE4D1A76DB8B004234B7 /* PBXContainerItemProxy */; }; - FCFDA23E19C78E2D00B90910 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "ObjectAL (iOS)"; - targetProxy = FCFDA23D19C78E2D00B90910 /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -2385,7 +2310,7 @@ "external/ObjectAL/**", "external/SSZipArchive/**", ); - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; @@ -2440,7 +2365,7 @@ "external/ObjectAL/**", "external/SSZipArchive/**", ); - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; diff --git a/cocos2d/CCActionInstant.h b/cocos2d/CCActionInstant.h index cf5c2cf65d0..5a6ee9603e2 100644 --- a/cocos2d/CCActionInstant.h +++ b/cocos2d/CCActionInstant.h @@ -368,47 +368,4 @@ */ -(id) initWithSpriteFrame:(CCSpriteFrame*)spriteFrame; -@end - -/** - This actions plays a sound effect through OALSimpleAudio. To play back music use a CCActionCallBlock or CCActionCallFunc - so that you can use the playBg method of OALSimpleAudio. - - @note The action ends immediately, it does not wait for the sound to stop playing. */ -@interface CCActionSoundEffect : CCActionInstant -{ - NSString* _soundFile; - float _pitch; - float _pan; - float _gain; -} - -/** @name Creating a Sound Effect Action */ - -/** - Creates a sound effect action. - - @param file The audio file to play. - @param pitch The playback pitch. 1.0 equals *normal* pitch. - @param pan Stereo panning, values from -1.0 (far left) to 1.0 (far right). - @param gain Gain (loudness), default 1.0 equals *normal* volume. - - @see OALSimpleAudio - @see [OALSimpleAudio playEffect:volume:pitch:pan:loop:] - */ -+(instancetype) actionWithSoundFile:(NSString*)file pitch:(float)pitch pan:(float) pan gain:(float)gain; - -/** - Creates a sound effect action. - - @param file The audio file to play. - @param pitch The playback pitch. 1.0 equals *normal* pitch. - @param pan Stereo panning, values from -1.0 (far left) to 1.0 (far right). - @param gain Gain (loudness), default 1.0 equals *normal* volume. - - @see OALSimpleAudio - @see [OALSimpleAudio playEffect:volume:pitch:pan:loop:] - */ --(id) initWithSoundFile:(NSString*)file pitch:(float)pitch pan:(float) pan gain:(float)gain; - -@end +@end \ No newline at end of file diff --git a/cocos2d/CCActionInstant.m b/cocos2d/CCActionInstant.m index 884f05c12bb..90ecc3eafdf 100644 --- a/cocos2d/CCActionInstant.m +++ b/cocos2d/CCActionInstant.m @@ -388,40 +388,3 @@ - (void)update:(CCTime)time } @end - - -@implementation CCActionSoundEffect - -+ (id)actionWithSoundFile:(NSString*)f pitch:(float)pi pan:(float) pa gain:(float)ga -{ - return [[CCActionSoundEffect alloc] initWithSoundFile:f pitch:pi pan:pa gain:ga]; -} - -- (id)initWithSoundFile:(NSString*)file pitch:(float)pi pan:(float) pa gain:(float)ga -{ - self = [super init]; - if (!self) return NULL; - - _soundFile = [file copy]; - _pitch = pi; - _pan = pa; - _gain = ga; - - return self; -} - - -- (void)update:(CCTime)time -{ - [[OALSimpleAudio sharedInstance] playEffect:_soundFile volume:_gain pitch:_pitch pan:_pan loop:NO]; -} - -- (id)copyWithZone:(NSZone*)zone -{ - CCSpriteFrame *copy = [[[self class] allocWithZone: zone] initWithSoundFile:_soundFile pitch:_pitch pan:_pan gain:_gain]; - return copy; -} - -@end - - diff --git a/cocos2d/Platforms/iOS/CCAppDelegate.m b/cocos2d/Platforms/iOS/CCAppDelegate.m index e45755d14d4..82ad0b25bb8 100644 --- a/cocos2d/Platforms/iOS/CCAppDelegate.m +++ b/cocos2d/Platforms/iOS/CCAppDelegate.m @@ -201,9 +201,6 @@ - (void) setupCocos2dWithOptions:(NSDictionary*)config // It can be RGBA8888, RGBA4444, RGB5_A1, RGB565 // You can change this setting at any time. [CCTexture setDefaultAlphaPixelFormat:CCTexturePixelFormat_RGBA8888]; - - // Initialise OpenAL - [OALSimpleAudio sharedInstance]; // Create a Navigation Controller with the Director navController_ = [[CCNavigationController alloc] initWithRootViewController:director]; diff --git a/cocos2d/ccConfig.h b/cocos2d/ccConfig.h index b4842762a0d..3cf0b0125b8 100644 --- a/cocos2d/ccConfig.h +++ b/cocos2d/ccConfig.h @@ -170,6 +170,10 @@ #define CC_EFFECTS 0 #endif +#ifndef CC_OBJECT_AL +#define CC_OBJECT_AL 0 +#endif + #ifndef CC_EFFECTS_EXPERIMENTAL #define CC_EFFECTS_EXPERIMENTAL 0 #endif From 230bec1590c3d58db8ede9cd3b105adaed9c8c2d Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 10 Feb 2016 20:17:12 +0300 Subject: [PATCH 19/94] CCBReader moved to -ext --- .../CCAnimationManager+FrameAnimation.h | 0 .../CCAnimationManager+FrameAnimation.m | 0 .../CCBReader/CCAnimationManager.h | 0 .../CCBReader/CCAnimationManager.m | 0 .../CCBReader/CCAnimationManager_Private.h | 0 .../CCBReader/CCBAnimationManager.h | 0 .../CCBReader/CCBAnimationManager.m | 0 .../CCBReader/CCBKeyframe.h | 0 .../CCBReader/CCBKeyframe.m | 0 .../CCBReader/CCBLocalizationManager.h | 0 .../CCBReader/CCBLocalizationManager.m | 0 .../CCBReader/CCBReader.h | 0 .../CCBReader/CCBReader.m | 0 .../CCBReader/CCBReader_Private.h | 0 .../CCBReader/CCBSequence.h | 0 .../CCBReader/CCBSequenceProperty.h | 0 .../CCBReader/CCBSequenceProperty.m | 0 .../CCBReader/CCBsequence.m | 0 .../CCBReader/CCBuilderReader.h | 0 cocos2d-ui-tests/ios/AppDelegate.m | 2 + cocos2d-ui/cocos2d-ui.h | 2 + cocos2d.xcodeproj/project.pbxproj | 122 ------------------ cocos2d/CCNode.m | 11 +- cocos2d/ccConfig.h | 4 + 24 files changed, 18 insertions(+), 123 deletions(-) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCAnimationManager+FrameAnimation.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCAnimationManager+FrameAnimation.m (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCAnimationManager.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCAnimationManager.m (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCAnimationManager_Private.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBAnimationManager.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBAnimationManager.m (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBKeyframe.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBKeyframe.m (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBLocalizationManager.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBLocalizationManager.m (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBReader.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBReader.m (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBReader_Private.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBSequence.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBSequenceProperty.h (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBSequenceProperty.m (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBsequence.m (100%) rename {cocos2d-ui => cocos2d-ext}/CCBReader/CCBuilderReader.h (100%) diff --git a/cocos2d-ui/CCBReader/CCAnimationManager+FrameAnimation.h b/cocos2d-ext/CCBReader/CCAnimationManager+FrameAnimation.h similarity index 100% rename from cocos2d-ui/CCBReader/CCAnimationManager+FrameAnimation.h rename to cocos2d-ext/CCBReader/CCAnimationManager+FrameAnimation.h diff --git a/cocos2d-ui/CCBReader/CCAnimationManager+FrameAnimation.m b/cocos2d-ext/CCBReader/CCAnimationManager+FrameAnimation.m similarity index 100% rename from cocos2d-ui/CCBReader/CCAnimationManager+FrameAnimation.m rename to cocos2d-ext/CCBReader/CCAnimationManager+FrameAnimation.m diff --git a/cocos2d-ui/CCBReader/CCAnimationManager.h b/cocos2d-ext/CCBReader/CCAnimationManager.h similarity index 100% rename from cocos2d-ui/CCBReader/CCAnimationManager.h rename to cocos2d-ext/CCBReader/CCAnimationManager.h diff --git a/cocos2d-ui/CCBReader/CCAnimationManager.m b/cocos2d-ext/CCBReader/CCAnimationManager.m similarity index 100% rename from cocos2d-ui/CCBReader/CCAnimationManager.m rename to cocos2d-ext/CCBReader/CCAnimationManager.m diff --git a/cocos2d-ui/CCBReader/CCAnimationManager_Private.h b/cocos2d-ext/CCBReader/CCAnimationManager_Private.h similarity index 100% rename from cocos2d-ui/CCBReader/CCAnimationManager_Private.h rename to cocos2d-ext/CCBReader/CCAnimationManager_Private.h diff --git a/cocos2d-ui/CCBReader/CCBAnimationManager.h b/cocos2d-ext/CCBReader/CCBAnimationManager.h similarity index 100% rename from cocos2d-ui/CCBReader/CCBAnimationManager.h rename to cocos2d-ext/CCBReader/CCBAnimationManager.h diff --git a/cocos2d-ui/CCBReader/CCBAnimationManager.m b/cocos2d-ext/CCBReader/CCBAnimationManager.m similarity index 100% rename from cocos2d-ui/CCBReader/CCBAnimationManager.m rename to cocos2d-ext/CCBReader/CCBAnimationManager.m diff --git a/cocos2d-ui/CCBReader/CCBKeyframe.h b/cocos2d-ext/CCBReader/CCBKeyframe.h similarity index 100% rename from cocos2d-ui/CCBReader/CCBKeyframe.h rename to cocos2d-ext/CCBReader/CCBKeyframe.h diff --git a/cocos2d-ui/CCBReader/CCBKeyframe.m b/cocos2d-ext/CCBReader/CCBKeyframe.m similarity index 100% rename from cocos2d-ui/CCBReader/CCBKeyframe.m rename to cocos2d-ext/CCBReader/CCBKeyframe.m diff --git a/cocos2d-ui/CCBReader/CCBLocalizationManager.h b/cocos2d-ext/CCBReader/CCBLocalizationManager.h similarity index 100% rename from cocos2d-ui/CCBReader/CCBLocalizationManager.h rename to cocos2d-ext/CCBReader/CCBLocalizationManager.h diff --git a/cocos2d-ui/CCBReader/CCBLocalizationManager.m b/cocos2d-ext/CCBReader/CCBLocalizationManager.m similarity index 100% rename from cocos2d-ui/CCBReader/CCBLocalizationManager.m rename to cocos2d-ext/CCBReader/CCBLocalizationManager.m diff --git a/cocos2d-ui/CCBReader/CCBReader.h b/cocos2d-ext/CCBReader/CCBReader.h similarity index 100% rename from cocos2d-ui/CCBReader/CCBReader.h rename to cocos2d-ext/CCBReader/CCBReader.h diff --git a/cocos2d-ui/CCBReader/CCBReader.m b/cocos2d-ext/CCBReader/CCBReader.m similarity index 100% rename from cocos2d-ui/CCBReader/CCBReader.m rename to cocos2d-ext/CCBReader/CCBReader.m diff --git a/cocos2d-ui/CCBReader/CCBReader_Private.h b/cocos2d-ext/CCBReader/CCBReader_Private.h similarity index 100% rename from cocos2d-ui/CCBReader/CCBReader_Private.h rename to cocos2d-ext/CCBReader/CCBReader_Private.h diff --git a/cocos2d-ui/CCBReader/CCBSequence.h b/cocos2d-ext/CCBReader/CCBSequence.h similarity index 100% rename from cocos2d-ui/CCBReader/CCBSequence.h rename to cocos2d-ext/CCBReader/CCBSequence.h diff --git a/cocos2d-ui/CCBReader/CCBSequenceProperty.h b/cocos2d-ext/CCBReader/CCBSequenceProperty.h similarity index 100% rename from cocos2d-ui/CCBReader/CCBSequenceProperty.h rename to cocos2d-ext/CCBReader/CCBSequenceProperty.h diff --git a/cocos2d-ui/CCBReader/CCBSequenceProperty.m b/cocos2d-ext/CCBReader/CCBSequenceProperty.m similarity index 100% rename from cocos2d-ui/CCBReader/CCBSequenceProperty.m rename to cocos2d-ext/CCBReader/CCBSequenceProperty.m diff --git a/cocos2d-ui/CCBReader/CCBsequence.m b/cocos2d-ext/CCBReader/CCBsequence.m similarity index 100% rename from cocos2d-ui/CCBReader/CCBsequence.m rename to cocos2d-ext/CCBReader/CCBsequence.m diff --git a/cocos2d-ui/CCBReader/CCBuilderReader.h b/cocos2d-ext/CCBReader/CCBuilderReader.h similarity index 100% rename from cocos2d-ui/CCBReader/CCBuilderReader.h rename to cocos2d-ext/CCBReader/CCBuilderReader.h diff --git a/cocos2d-ui-tests/ios/AppDelegate.m b/cocos2d-ui-tests/ios/AppDelegate.m index 71862b8d46f..320aee565cf 100644 --- a/cocos2d-ui-tests/ios/AppDelegate.m +++ b/cocos2d-ui-tests/ios/AppDelegate.m @@ -40,8 +40,10 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( - (void)configureCocos2d { +#if CC_CCBREADER // Configure the file utils to work with SpriteBuilder, but use a custom resource path (Resources-shared instead of Published-iOS) [CCBReader configureCCFileUtils]; +#endif [self configureFileUtilsSearchPathAndRegisterSpriteSheets]; diff --git a/cocos2d-ui/cocos2d-ui.h b/cocos2d-ui/cocos2d-ui.h index 03f3ba7d2c0..1e1190cfccc 100644 --- a/cocos2d-ui/cocos2d-ui.h +++ b/cocos2d-ui/cocos2d-ui.h @@ -30,5 +30,7 @@ #import "CCTextField.h" #import "CCSlider.h" +#if CC_CCBREADER // CCBReader #import "CCBuilderReader.h" +#endif diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 2559025fc93..f57ddac5ad1 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -188,17 +188,6 @@ 7A59476019E3731400F65F90 /* CCPlatformTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD01E19649E03003D460C /* CCPlatformTextField.h */; }; 7A59476219E3731400F65F90 /* CCPlatformTextFieldIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD02119649E03003D460C /* CCPlatformTextFieldIOS.h */; }; 7A59476419E3731500F65F90 /* CCPlatformTextFieldMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD02419649E03003D460C /* CCPlatformTextFieldMac.h */; }; - 7A59476619E3731600F65F90 /* CCAnimationManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F61958F6EE003673BD /* CCAnimationManager_Private.h */; }; - 7A59476719E3731600F65F90 /* CCAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F71958F6EE003673BD /* CCAnimationManager.h */; }; - 7A59476919E3731700F65F90 /* CCAnimationManager+FrameAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F91958F6EE003673BD /* CCAnimationManager+FrameAnimation.h */; }; - 7A59476B19E3731800F65F90 /* CCBAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160FB1958F6EE003673BD /* CCBAnimationManager.h */; }; - 7A59476D19E3731800F65F90 /* CCBKeyframe.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273021822F4AA0054849B /* CCBKeyframe.h */; }; - 7A59476F19E3731900F65F90 /* CCBLocalizationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273041822F4AA0054849B /* CCBLocalizationManager.h */; }; - 7A59477119E3731A00F65F90 /* CCBReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273061822F4AA0054849B /* CCBReader.h */; }; - 7A59477319E3731B00F65F90 /* CCBSequence.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273081822F4AA0054849B /* CCBSequence.h */; }; - 7A59477519E3731C00F65F90 /* CCBSequenceProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D2730A1822F4AA0054849B /* CCBSequenceProperty.h */; }; - 7A59477719E3731C00F65F90 /* CCBuilderReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D2730C1822F4AA0054849B /* CCBuilderReader.h */; }; - 7A59477819E3731D00F65F90 /* CCBReader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B77060CE18341AD50043CC67 /* CCBReader_Private.h */; }; 7A59477919E3731D00F65F90 /* cocos2d-ui.h in Headers */ = {isa = PBXBuildFile; fileRef = B7C6237917EA7D8600928F91 /* cocos2d-ui.h */; }; 7A59477A19E3731E00F65F90 /* CCControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45C17E7AF1C0028BE0B /* CCControl.h */; }; 7A59477B19E3731E00F65F90 /* CCControlSubclass.h in Headers */ = {isa = PBXBuildFile; fileRef = B750162218124B6000708A2F /* CCControlSubclass.h */; }; @@ -275,14 +264,6 @@ 7A5948A319E375B700F65F90 /* CCScheduler.m in Sources */ = {isa = PBXBuildFile; fileRef = 506602100E38A70D000B500E /* CCScheduler.m */; }; 7A5948A519E375B700F65F90 /* CCNoARC.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0C1995288D003AA81A /* CCNoARC.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 7A5948B019E375B900F65F90 /* CCPlatformTextFieldMac.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD02519649E03003D460C /* CCPlatformTextFieldMac.m */; }; - 7A5948B319E375B900F65F90 /* CCAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160F81958F6EE003673BD /* CCAnimationManager.m */; }; - 7A5948B519E375B900F65F90 /* CCAnimationManager+FrameAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160FA1958F6EE003673BD /* CCAnimationManager+FrameAnimation.m */; }; - 7A5948B719E375BA00F65F90 /* CCBAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160FC1958F6EE003673BD /* CCBAnimationManager.m */; }; - 7A5948B919E375BA00F65F90 /* CCBKeyframe.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273031822F4AA0054849B /* CCBKeyframe.m */; }; - 7A5948BB19E375BA00F65F90 /* CCBLocalizationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273051822F4AA0054849B /* CCBLocalizationManager.m */; }; - 7A5948BD19E375BB00F65F90 /* CCBReader.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273071822F4AA0054849B /* CCBReader.m */; }; - 7A5948BF19E375BB00F65F90 /* CCBsequence.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273091822F4AA0054849B /* CCBsequence.m */; }; - 7A5948C119E375BB00F65F90 /* CCBSequenceProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D2730B1822F4AA0054849B /* CCBSequenceProperty.m */; }; 7A5948C719E375BC00F65F90 /* CCControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45D17E7AF1C0028BE0B /* CCControl.m */; }; 7A5948C919E375BD00F65F90 /* CCButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45B17E7AF1C0028BE0B /* CCButton.m */; }; 7A5948CB19E375BD00F65F90 /* CCTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B79F905917FE2A2E00908504 /* CCTableView.m */; }; @@ -332,7 +313,6 @@ B74C2B9C17BDA63A00A829C0 /* CCSprite9Slice.m in Sources */ = {isa = PBXBuildFile; fileRef = B74C2B9A17BDA63A00A829C0 /* CCSprite9Slice.m */; }; B75C2E7C17C5908B002B0E0D /* NSAttributedString+CCAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B75C2E7A17C5908B002B0E0D /* NSAttributedString+CCAdditions.h */; }; B75C2E7D17C5908B002B0E0D /* NSAttributedString+CCAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B75C2E7B17C5908B002B0E0D /* NSAttributedString+CCAdditions.m */; }; - B77060CF18341AD50043CC67 /* CCBReader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B77060CE18341AD50043CC67 /* CCBReader_Private.h */; }; B78AE46217E7AF1C0028BE0B /* CCButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45A17E7AF1C0028BE0B /* CCButton.h */; }; B78AE46317E7AF1C0028BE0B /* CCButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45B17E7AF1C0028BE0B /* CCButton.m */; }; B78AE46417E7AF1C0028BE0B /* CCControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45C17E7AF1C0028BE0B /* CCControl.h */; }; @@ -350,17 +330,6 @@ B798D1451820305400E7BFCD /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = B79F905817FE2A2E00908504 /* CCTableView.h */; }; B79F905B17FE2A2E00908504 /* CCTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B79F905917FE2A2E00908504 /* CCTableView.m */; }; - B7D2730F1822F4AA0054849B /* CCBKeyframe.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273021822F4AA0054849B /* CCBKeyframe.h */; }; - B7D273101822F4AA0054849B /* CCBKeyframe.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273031822F4AA0054849B /* CCBKeyframe.m */; }; - B7D273111822F4AA0054849B /* CCBLocalizationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273041822F4AA0054849B /* CCBLocalizationManager.h */; }; - B7D273121822F4AA0054849B /* CCBLocalizationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273051822F4AA0054849B /* CCBLocalizationManager.m */; }; - B7D273131822F4AA0054849B /* CCBReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273061822F4AA0054849B /* CCBReader.h */; }; - B7D273141822F4AA0054849B /* CCBReader.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273071822F4AA0054849B /* CCBReader.m */; }; - B7D273151822F4AA0054849B /* CCBSequence.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273081822F4AA0054849B /* CCBSequence.h */; }; - B7D273161822F4AA0054849B /* CCBsequence.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D273091822F4AA0054849B /* CCBsequence.m */; }; - B7D273171822F4AA0054849B /* CCBSequenceProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D2730A1822F4AA0054849B /* CCBSequenceProperty.h */; }; - B7D273181822F4AA0054849B /* CCBSequenceProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D2730B1822F4AA0054849B /* CCBSequenceProperty.m */; }; - B7D273191822F4AA0054849B /* CCBuilderReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D2730C1822F4AA0054849B /* CCBuilderReader.h */; }; B7E260D818171D2000A0E872 /* CCTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E260D618171D2000A0E872 /* CCTextField.h */; }; B7E260D918171D2000A0E872 /* CCTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E260D718171D2000A0E872 /* CCTextField.m */; }; B7E775D018527EF0004221AA /* CCAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E775CE18527EF0004221AA /* CCAppDelegate.h */; }; @@ -383,13 +352,6 @@ B7EE6A1F181AE34600B983FE /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; D23C5CB4194BC108007CA669 /* CCTouchIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CB2194BC108007CA669 /* CCTouchIOS.h */; }; D23C5CB5194BC108007CA669 /* CCTouchIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = D23C5CB3194BC108007CA669 /* CCTouchIOS.m */; }; - D24160FD1958F6EE003673BD /* CCAnimationManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F61958F6EE003673BD /* CCAnimationManager_Private.h */; }; - D24160FE1958F6EE003673BD /* CCAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F71958F6EE003673BD /* CCAnimationManager.h */; }; - D24160FF1958F6EE003673BD /* CCAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160F81958F6EE003673BD /* CCAnimationManager.m */; }; - D24161001958F6EE003673BD /* CCAnimationManager+FrameAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160F91958F6EE003673BD /* CCAnimationManager+FrameAnimation.h */; }; - D24161011958F6EE003673BD /* CCAnimationManager+FrameAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160FA1958F6EE003673BD /* CCAnimationManager+FrameAnimation.m */; }; - D24161021958F6EE003673BD /* CCBAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D24160FB1958F6EE003673BD /* CCBAnimationManager.h */; }; - D24161031958F6EE003673BD /* CCBAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D24160FC1958F6EE003673BD /* CCBAnimationManager.m */; }; D24FAEEC198014B90043E27D /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D24FAEEB198014B90043E27D /* GLKit.framework */; }; D25B4F4B194A499700DA9D60 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; D25B4F4C194A499700DA9D60 /* CCTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = D25B4F4A194A499700DA9D60 /* CCTouch.m */; }; @@ -637,7 +599,6 @@ B750162218124B6000708A2F /* CCControlSubclass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCControlSubclass.h; path = "cocos2d-ui/CCControlSubclass.h"; sourceTree = ""; }; B75C2E7A17C5908B002B0E0D /* NSAttributedString+CCAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSAttributedString+CCAdditions.h"; sourceTree = ""; }; B75C2E7B17C5908B002B0E0D /* NSAttributedString+CCAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSAttributedString+CCAdditions.m"; sourceTree = ""; }; - B77060CE18341AD50043CC67 /* CCBReader_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCBReader_Private.h; path = "cocos2d-ui/CCBReader/CCBReader_Private.h"; sourceTree = ""; }; B77582CD1A76CDB200C8589F /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libz.dylib; sourceTree = DEVELOPER_DIR; }; B78AE45A17E7AF1C0028BE0B /* CCButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCButton.h; path = "cocos2d-ui/CCButton.h"; sourceTree = ""; }; B78AE45B17E7AF1C0028BE0B /* CCButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCButton.m; path = "cocos2d-ui/CCButton.m"; sourceTree = ""; }; @@ -658,17 +619,6 @@ B79F905817FE2A2E00908504 /* CCTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTableView.h; path = "cocos2d-ui/CCTableView.h"; sourceTree = ""; }; B79F905917FE2A2E00908504 /* CCTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTableView.m; path = "cocos2d-ui/CCTableView.m"; sourceTree = ""; }; B7C6237917EA7D8600928F91 /* cocos2d-ui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "cocos2d-ui.h"; path = "cocos2d-ui/cocos2d-ui.h"; sourceTree = ""; }; - B7D273021822F4AA0054849B /* CCBKeyframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCBKeyframe.h; path = "cocos2d-ui/CCBReader/CCBKeyframe.h"; sourceTree = ""; }; - B7D273031822F4AA0054849B /* CCBKeyframe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCBKeyframe.m; path = "cocos2d-ui/CCBReader/CCBKeyframe.m"; sourceTree = ""; }; - B7D273041822F4AA0054849B /* CCBLocalizationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCBLocalizationManager.h; path = "cocos2d-ui/CCBReader/CCBLocalizationManager.h"; sourceTree = ""; }; - B7D273051822F4AA0054849B /* CCBLocalizationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCBLocalizationManager.m; path = "cocos2d-ui/CCBReader/CCBLocalizationManager.m"; sourceTree = ""; }; - B7D273061822F4AA0054849B /* CCBReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCBReader.h; path = "cocos2d-ui/CCBReader/CCBReader.h"; sourceTree = ""; }; - B7D273071822F4AA0054849B /* CCBReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCBReader.m; path = "cocos2d-ui/CCBReader/CCBReader.m"; sourceTree = ""; }; - B7D273081822F4AA0054849B /* CCBSequence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCBSequence.h; path = "cocos2d-ui/CCBReader/CCBSequence.h"; sourceTree = ""; }; - B7D273091822F4AA0054849B /* CCBsequence.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCBsequence.m; path = "cocos2d-ui/CCBReader/CCBsequence.m"; sourceTree = ""; }; - B7D2730A1822F4AA0054849B /* CCBSequenceProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCBSequenceProperty.h; path = "cocos2d-ui/CCBReader/CCBSequenceProperty.h"; sourceTree = ""; }; - B7D2730B1822F4AA0054849B /* CCBSequenceProperty.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCBSequenceProperty.m; path = "cocos2d-ui/CCBReader/CCBSequenceProperty.m"; sourceTree = ""; }; - B7D2730C1822F4AA0054849B /* CCBuilderReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCBuilderReader.h; path = "cocos2d-ui/CCBReader/CCBuilderReader.h"; sourceTree = ""; }; B7E260D618171D2000A0E872 /* CCTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTextField.h; path = "cocos2d-ui/CCTextField.h"; sourceTree = ""; }; B7E260D718171D2000A0E872 /* CCTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTextField.m; path = "cocos2d-ui/CCTextField.m"; sourceTree = ""; }; B7E775CE18527EF0004221AA /* CCAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAppDelegate.h; sourceTree = ""; }; @@ -693,13 +643,6 @@ B7EE6A1D181AE34600B983FE /* CCSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCSlider.m; path = "cocos2d-ui/CCSlider.m"; sourceTree = ""; }; D23C5CB2194BC108007CA669 /* CCTouchIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouchIOS.h; sourceTree = ""; }; D23C5CB3194BC108007CA669 /* CCTouchIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouchIOS.m; sourceTree = ""; }; - D24160F61958F6EE003673BD /* CCAnimationManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCAnimationManager_Private.h; path = "cocos2d-ui/CCBReader/CCAnimationManager_Private.h"; sourceTree = ""; }; - D24160F71958F6EE003673BD /* CCAnimationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCAnimationManager.h; path = "cocos2d-ui/CCBReader/CCAnimationManager.h"; sourceTree = ""; }; - D24160F81958F6EE003673BD /* CCAnimationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCAnimationManager.m; path = "cocos2d-ui/CCBReader/CCAnimationManager.m"; sourceTree = ""; }; - D24160F91958F6EE003673BD /* CCAnimationManager+FrameAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "CCAnimationManager+FrameAnimation.h"; path = "cocos2d-ui/CCBReader/CCAnimationManager+FrameAnimation.h"; sourceTree = ""; }; - D24160FA1958F6EE003673BD /* CCAnimationManager+FrameAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "CCAnimationManager+FrameAnimation.m"; path = "cocos2d-ui/CCBReader/CCAnimationManager+FrameAnimation.m"; sourceTree = ""; }; - D24160FB1958F6EE003673BD /* CCBAnimationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCBAnimationManager.h; path = "cocos2d-ui/CCBReader/CCBAnimationManager.h"; sourceTree = ""; }; - D24160FC1958F6EE003673BD /* CCBAnimationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCBAnimationManager.m; path = "cocos2d-ui/CCBReader/CCBAnimationManager.m"; sourceTree = ""; }; D24FAEEB198014B90043E27D /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; D25B4F49194A499700DA9D60 /* CCTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouch.h; sourceTree = ""; }; D25B4F4A194A499700DA9D60 /* CCTouch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouch.m; sourceTree = ""; }; @@ -1207,7 +1150,6 @@ isa = PBXGroup; children = ( 571CD01A19649E03003D460C /* Platform */, - B7D272FA1822F4920054849B /* CCBReader */, B7C6237917EA7D8600928F91 /* cocos2d-ui.h */, B78AE45C17E7AF1C0028BE0B /* CCControl.h */, B750162218124B6000708A2F /* CCControlSubclass.h */, @@ -1228,32 +1170,6 @@ name = "cocos2d-ui"; sourceTree = ""; }; - B7D272FA1822F4920054849B /* CCBReader */ = { - isa = PBXGroup; - children = ( - D24160F61958F6EE003673BD /* CCAnimationManager_Private.h */, - D24160F71958F6EE003673BD /* CCAnimationManager.h */, - D24160F81958F6EE003673BD /* CCAnimationManager.m */, - D24160F91958F6EE003673BD /* CCAnimationManager+FrameAnimation.h */, - D24160FA1958F6EE003673BD /* CCAnimationManager+FrameAnimation.m */, - D24160FB1958F6EE003673BD /* CCBAnimationManager.h */, - D24160FC1958F6EE003673BD /* CCBAnimationManager.m */, - B7D273021822F4AA0054849B /* CCBKeyframe.h */, - B7D273031822F4AA0054849B /* CCBKeyframe.m */, - B7D273041822F4AA0054849B /* CCBLocalizationManager.h */, - B7D273051822F4AA0054849B /* CCBLocalizationManager.m */, - B7D273061822F4AA0054849B /* CCBReader.h */, - B7D273071822F4AA0054849B /* CCBReader.m */, - B7D273081822F4AA0054849B /* CCBSequence.h */, - B7D273091822F4AA0054849B /* CCBsequence.m */, - B7D2730A1822F4AA0054849B /* CCBSequenceProperty.h */, - B7D2730B1822F4AA0054849B /* CCBSequenceProperty.m */, - B7D2730C1822F4AA0054849B /* CCBuilderReader.h */, - B77060CE18341AD50043CC67 /* CCBReader_Private.h */, - ); - name = CCBReader; - sourceTree = ""; - }; B7E7DE351A76DB7D004234B7 /* cocos2dMacFramework */ = { isa = PBXGroup; children = ( @@ -1388,7 +1304,6 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B7D273111822F4AA0054849B /* CCBLocalizationManager.h in Headers */, 5018F2690DFDEAFF00C013A5 /* CCAction.h in Headers */, 5018F26B0DFDEAFF00C013A5 /* CCNode.h in Headers */, 5018F26D0DFDEAFF00C013A5 /* CCDirector.h in Headers */, @@ -1401,10 +1316,7 @@ D380581A1889AD6000822437 /* CCRenderer.h in Headers */, 50F9E8170E1AA34E000E7616 /* ccTypes.h in Headers */, D3A2E7D2181E12750033614C /* CCPhysicsShape.h in Headers */, - D24160FD1958F6EE003673BD /* CCAnimationManager_Private.h in Headers */, 506602110E38A70D000B500E /* CCScheduler.h in Headers */, - D24161001958F6EE003673BD /* CCAnimationManager+FrameAnimation.h in Headers */, - D24160FE1958F6EE003673BD /* CCAnimationManager.h in Headers */, 50305AF40E40E33200F63373 /* cocos2d.h in Headers */, 501CCFB50E99657C00B86F68 /* TGAlib.h in Headers */, 50F7B2780F28DE7C00057537 /* CCActionEase.h in Headers */, @@ -1425,14 +1337,12 @@ 9D03A5EB1A02F61700C651C8 /* CCLightNode_Private.h in Headers */, B7E260D818171D2000A0E872 /* CCTextField.h in Headers */, D34CAD6C19C3AA10009BED7A /* CCRendererBasicTypes_Private.h in Headers */, - B7D273131822F4AA0054849B /* CCBReader.h in Headers */, 50CB3B0E100AC43A00B7A750 /* CCActionManager.h in Headers */, 50F29F6F102053370046CA73 /* base64.h in Headers */, D31C795219994197007921E1 /* CCMetalSupport_Private.h in Headers */, D34CAD6719C3A7A5009BED7A /* CCRendererBasicTypes.h in Headers */, 50F2A105102094550046CA73 /* ZipUtils.h in Headers */, 50316AA610291280003ACFE7 /* CCRenderTexture.h in Headers */, - B7D273171822F4AA0054849B /* CCBSequenceProperty.h in Headers */, D38058201889CE7700822437 /* CCCache.h in Headers */, D309055018AC23110081BF11 /* CCRenderer_Private.h in Headers */, 505462FC1062768000AB7C52 /* ccConfig.h in Headers */, @@ -1442,7 +1352,6 @@ 502C8BE010A661E200D137BA /* CCSpriteFrameCache.h in Headers */, B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */, 50E1357510ADEB1B00C9E7FA /* CCTexture.h in Headers */, - B7D273151822F4AA0054849B /* CCBSequence.h in Headers */, 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */, 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */, 50FBB2DA117613F500150761 /* CCActionTween.h in Headers */, @@ -1460,7 +1369,6 @@ E0F92AC41224559800EF2362 /* CCNS.h in Headers */, E02BB6D6126CA93A006E46A2 /* CCAnimationCache.h in Headers */, E02BB704126CADEA006E46A2 /* CCAnimation.h in Headers */, - B7D273191822F4AA0054849B /* CCBuilderReader.h in Headers */, D3E3752F19CC842A0076CDBB /* CCRendererSharedTypes.h in Headers */, B7E775D018527EF0004221AA /* CCAppDelegate.h in Headers */, E0BC7D9F1342CE7B001B4DCC /* CCShader.h in Headers */, @@ -1482,8 +1390,6 @@ B7EE6A1E181AE34600B983FE /* CCSlider.h in Headers */, A003AC8C1657071100C7B792 /* ccFPSImages.h in Headers */, B74C2B9B17BDA63A00A829C0 /* CCSprite9Slice.h in Headers */, - B77060CF18341AD50043CC67 /* CCBReader_Private.h in Headers */, - D24161021958F6EE003673BD /* CCBAnimationManager.h in Headers */, B75C2E7C17C5908B002B0E0D /* NSAttributedString+CCAdditions.h in Headers */, A6A0734517C788EB004343C8 /* CCResponderManager.h in Headers */, A6A0734A17C78EF3004343C8 /* CCResponder.h in Headers */, @@ -1493,7 +1399,6 @@ B78AE46617E7AF1C0028BE0B /* CCControlTextureFactory.h in Headers */, B78AE46817E7AF1C0028BE0B /* CCScrollView.h in Headers */, B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */, - B7D2730F1822F4AA0054849B /* CCBKeyframe.h in Headers */, 9D69E6D619DF604800C2749C /* CCLightNode.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1600,17 +1505,6 @@ 7A59476219E3731400F65F90 /* CCPlatformTextFieldIOS.h in Headers */, 7A59476419E3731500F65F90 /* CCPlatformTextFieldMac.h in Headers */, 9DC780BA1A1175F100DD5A4B /* CCLightNode.h in Headers */, - 7A59476619E3731600F65F90 /* CCAnimationManager_Private.h in Headers */, - 7A59476719E3731600F65F90 /* CCAnimationManager.h in Headers */, - 7A59476919E3731700F65F90 /* CCAnimationManager+FrameAnimation.h in Headers */, - 7A59476B19E3731800F65F90 /* CCBAnimationManager.h in Headers */, - 7A59476D19E3731800F65F90 /* CCBKeyframe.h in Headers */, - 7A59476F19E3731900F65F90 /* CCBLocalizationManager.h in Headers */, - 7A59477119E3731A00F65F90 /* CCBReader.h in Headers */, - 7A59477319E3731B00F65F90 /* CCBSequence.h in Headers */, - 7A59477519E3731C00F65F90 /* CCBSequenceProperty.h in Headers */, - 7A59477719E3731C00F65F90 /* CCBuilderReader.h in Headers */, - 7A59477819E3731D00F65F90 /* CCBReader_Private.h in Headers */, 7A59477919E3731D00F65F90 /* cocos2d-ui.h in Headers */, 7A59477A19E3731E00F65F90 /* CCControl.h in Headers */, 7A59477B19E3731E00F65F90 /* CCControlSubclass.h in Headers */, @@ -1830,9 +1724,7 @@ 5018F27E0DFDEAFF00C013A5 /* CCTextureCache.m in Sources */, D31C795019994126007921E1 /* CCMetalSupport.m in Sources */, 506602120E38A70D000B500E /* CCScheduler.m in Sources */, - D24161031958F6EE003673BD /* CCBAnimationManager.m in Sources */, 50A07B7B0E4CBCD300AAF0BB /* cocos2d.m in Sources */, - B7D273181822F4AA0054849B /* CCBSequenceProperty.m in Sources */, 501CCFB40E99657C00B86F68 /* TGAlib.m in Sources */, B7E260D918171D2000A0E872 /* CCTextField.m in Sources */, 50F7B2790F28DE7C00057537 /* CCActionEase.m in Sources */, @@ -1847,7 +1739,6 @@ D3903B11199528A0003AA81A /* CCRenderDispatch.m in Sources */, B7E775D118527EF0004221AA /* CCAppDelegate.m in Sources */, D3903B15199528B6003AA81A /* CCMetalView.m in Sources */, - B7D273141822F4AA0054849B /* CCBReader.m in Sources */, 50F29F5610204FD60046CA73 /* base64.c in Sources */, 50F2A104102094550046CA73 /* ZipUtils.m in Sources */, 571CD02B19649E03003D460C /* CCPlatformTextFieldIOS.m in Sources */, @@ -1863,12 +1754,9 @@ D3903B0D1995288D003AA81A /* CCNoARC.m in Sources */, E0C54DCA11F9CF2700B9E4CB /* ccUtils.c in Sources */, D33803E618032F390072D8FE /* CCPhysicsNode.m in Sources */, - D24160FF1958F6EE003673BD /* CCAnimationManager.m in Sources */, E01E6D8D121F130E001A484F /* CCLabelBMFont.m in Sources */, E0EAD100121F4B4600B0C81C /* CCDirectorIOS.m in Sources */, - D24161011958F6EE003673BD /* CCAnimationManager+FrameAnimation.m in Sources */, E0EAD109121F4B4600B0C81C /* CCGLView.m in Sources */, - B7D273101822F4AA0054849B /* CCBKeyframe.m in Sources */, E0F924721224140400EF2362 /* CCTexturePVR.m in Sources */, E02BB6D7126CA93A006E46A2 /* CCAnimationCache.m in Sources */, E02BB705126CADEA006E46A2 /* CCAnimation.m in Sources */, @@ -1876,9 +1764,7 @@ A046E29414C1DB7D0005BBF2 /* CCDirectorMac.m in Sources */, A046E29814C1DB7D0005BBF2 /* CCGLView.m in Sources */, A046E29A14C1DB7E0005BBF2 /* CCWindow.m in Sources */, - B7D273121822F4AA0054849B /* CCBLocalizationManager.m in Sources */, A0C87D1B14F9A3A100C0E8B2 /* NSThread+performBlock.m in Sources */, - B7D273161822F4AA0054849B /* CCBsequence.m in Sources */, A0A7A53D1514F27D00C8BD16 /* CCActionCatmullRom.m in Sources */, D380581B1889AD6000822437 /* CCRenderer.m in Sources */, D369415F19CFDF170092A0BD /* CCRendererBasicTypes.m in Sources */, @@ -1985,14 +1871,6 @@ 7A5948A319E375B700F65F90 /* CCScheduler.m in Sources */, 7A5948A519E375B700F65F90 /* CCNoARC.m in Sources */, 7A5948B019E375B900F65F90 /* CCPlatformTextFieldMac.m in Sources */, - 7A5948B319E375B900F65F90 /* CCAnimationManager.m in Sources */, - 7A5948B519E375B900F65F90 /* CCAnimationManager+FrameAnimation.m in Sources */, - 7A5948B719E375BA00F65F90 /* CCBAnimationManager.m in Sources */, - 7A5948B919E375BA00F65F90 /* CCBKeyframe.m in Sources */, - 7A5948BB19E375BA00F65F90 /* CCBLocalizationManager.m in Sources */, - 7A5948BD19E375BB00F65F90 /* CCBReader.m in Sources */, - 7A5948BF19E375BB00F65F90 /* CCBsequence.m in Sources */, - 7A5948C119E375BB00F65F90 /* CCBSequenceProperty.m in Sources */, 7A5948C719E375BC00F65F90 /* CCControl.m in Sources */, 7A5948C919E375BD00F65F90 /* CCButton.m in Sources */, 7A5948CB19E375BD00F65F90 /* CCTableView.m in Sources */, diff --git a/cocos2d/CCNode.m b/cocos2d/CCNode.m index 606c2f3f9b0..9b2319bc261 100644 --- a/cocos2d/CCNode.m +++ b/cocos2d/CCNode.m @@ -29,7 +29,9 @@ #import "CCNode_Private.h" #import "CCDirector.h" #import "CCActionManager.h" +#if CC_CCBREADER #import "CCAnimationManager.h" +#endif #import "CCScheduler.h" #import "ccConfig.h" #import "ccMacros.h" @@ -200,9 +202,10 @@ - (void)cleanup // timers [_children makeObjectsPerformSelector:@selector(cleanup)]; - +#if CC_CCBREADER // CCAnimationManager Cleanup (Set by SpriteBuilder) [_animationManager performSelector:@selector(cleanup)]; +#endif } - (NSString*) description @@ -1084,9 +1087,11 @@ -(void) onEnter [self setActionManager:[CCDirector sharedDirector].actionManager]; } +#if CC_CCBREADER if(_animationManager) { [_animationManager performSelector:@selector(onEnter)]; } +#endif [self wasRunning:wasRunning]; } @@ -1300,11 +1305,15 @@ -(void)wasRunning:(BOOL)wasRunning if(isRunning && !wasRunning){ [_scheduler setPaused:NO target:self]; [_actionManager resumeTarget:self]; +#if CC_CCBREADER [_animationManager setPaused:NO]; +#endif } else if(!isRunning && wasRunning){ [_scheduler setPaused:YES target:self]; [_actionManager pauseTarget:self]; +#if CC_CCBREADER [_animationManager setPaused:YES]; +#endif } } diff --git a/cocos2d/ccConfig.h b/cocos2d/ccConfig.h index 3cf0b0125b8..e73c364dcde 100644 --- a/cocos2d/ccConfig.h +++ b/cocos2d/ccConfig.h @@ -166,6 +166,10 @@ #define CC_SHADER_DEFAULT_FRAGMENT_PRECISION mediump #endif +#ifndef CC_CCBREADER +#define CC_CCBREADER 0 +#endif + #ifndef CC_EFFECTS #define CC_EFFECTS 0 #endif From a58a72c7cb6eb3d1cbf8a4f53dd13b2618c16b14 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 10 Feb 2016 20:46:58 +0300 Subject: [PATCH 20/94] CCPhysics moved to -ext, removed direct Chipmunk dependency CCPhysics code is an ugly monster. Also, there is still a lot of attention paid to Box2D, so no reason for including Chipmunk physics in stock cocos2d package --- .../CCPhysics+ObjectiveChipmunk.h | 0 cocos2d-ext/CCChipmunkPhysics/CCPhysics.h | 13 ++ .../CCChipmunkPhysics}/CCPhysicsBody.h | 0 .../CCChipmunkPhysics}/CCPhysicsBody.m | 0 .../CCChipmunkPhysics}/CCPhysicsJoint.h | 0 .../CCChipmunkPhysics}/CCPhysicsJoint.m | 0 .../CCChipmunkPhysics}/CCPhysicsNode.h | 0 .../CCChipmunkPhysics}/CCPhysicsNode.m | 0 .../CCChipmunkPhysics}/CCPhysicsShape.h | 0 .../CCChipmunkPhysics}/CCPhysicsShape.m | 0 cocos2d-ui-tests/ios/AppDelegate.m | 31 +++ cocos2d-ui-tests/tests/CCPhysicsTest.m | 3 +- cocos2d-ui-tests/tests/CCSchedulerTest.m | 3 +- cocos2d.xcodeproj/project.pbxproj | 189 +----------------- cocos2d/CCNode.m | 61 ++++-- cocos2d/ccConfig.h | 4 + cocos2d/cocos2d.h | 6 - 17 files changed, 103 insertions(+), 207 deletions(-) rename {cocos2d => cocos2d-ext/CCChipmunkPhysics}/CCPhysics+ObjectiveChipmunk.h (100%) create mode 100644 cocos2d-ext/CCChipmunkPhysics/CCPhysics.h rename {cocos2d => cocos2d-ext/CCChipmunkPhysics}/CCPhysicsBody.h (100%) rename {cocos2d => cocos2d-ext/CCChipmunkPhysics}/CCPhysicsBody.m (100%) rename {cocos2d => cocos2d-ext/CCChipmunkPhysics}/CCPhysicsJoint.h (100%) rename {cocos2d => cocos2d-ext/CCChipmunkPhysics}/CCPhysicsJoint.m (100%) rename {cocos2d => cocos2d-ext/CCChipmunkPhysics}/CCPhysicsNode.h (100%) rename {cocos2d => cocos2d-ext/CCChipmunkPhysics}/CCPhysicsNode.m (100%) rename {cocos2d => cocos2d-ext/CCChipmunkPhysics}/CCPhysicsShape.h (100%) rename {cocos2d => cocos2d-ext/CCChipmunkPhysics}/CCPhysicsShape.m (100%) diff --git a/cocos2d/CCPhysics+ObjectiveChipmunk.h b/cocos2d-ext/CCChipmunkPhysics/CCPhysics+ObjectiveChipmunk.h similarity index 100% rename from cocos2d/CCPhysics+ObjectiveChipmunk.h rename to cocos2d-ext/CCChipmunkPhysics/CCPhysics+ObjectiveChipmunk.h diff --git a/cocos2d-ext/CCChipmunkPhysics/CCPhysics.h b/cocos2d-ext/CCChipmunkPhysics/CCPhysics.h new file mode 100644 index 00000000000..aac456283d0 --- /dev/null +++ b/cocos2d-ext/CCChipmunkPhysics/CCPhysics.h @@ -0,0 +1,13 @@ +// +// CCPhysics.h +// cocos2d-tests +// +// Created by Andrey Volodin on 10.02.16. +// Copyright © 2016 Cocos2d. All rights reserved. +// + +// Physics +#import "CCPhysicsBody.h" +#import "CCPhysicsJoint.h" +#import "CCPhysicsNode.h" +#import "CCPhysicsShape.h" diff --git a/cocos2d/CCPhysicsBody.h b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsBody.h similarity index 100% rename from cocos2d/CCPhysicsBody.h rename to cocos2d-ext/CCChipmunkPhysics/CCPhysicsBody.h diff --git a/cocos2d/CCPhysicsBody.m b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsBody.m similarity index 100% rename from cocos2d/CCPhysicsBody.m rename to cocos2d-ext/CCChipmunkPhysics/CCPhysicsBody.m diff --git a/cocos2d/CCPhysicsJoint.h b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsJoint.h similarity index 100% rename from cocos2d/CCPhysicsJoint.h rename to cocos2d-ext/CCChipmunkPhysics/CCPhysicsJoint.h diff --git a/cocos2d/CCPhysicsJoint.m b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsJoint.m similarity index 100% rename from cocos2d/CCPhysicsJoint.m rename to cocos2d-ext/CCChipmunkPhysics/CCPhysicsJoint.m diff --git a/cocos2d/CCPhysicsNode.h b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsNode.h similarity index 100% rename from cocos2d/CCPhysicsNode.h rename to cocos2d-ext/CCChipmunkPhysics/CCPhysicsNode.h diff --git a/cocos2d/CCPhysicsNode.m b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsNode.m similarity index 100% rename from cocos2d/CCPhysicsNode.m rename to cocos2d-ext/CCChipmunkPhysics/CCPhysicsNode.m diff --git a/cocos2d/CCPhysicsShape.h b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsShape.h similarity index 100% rename from cocos2d/CCPhysicsShape.h rename to cocos2d-ext/CCChipmunkPhysics/CCPhysicsShape.h diff --git a/cocos2d/CCPhysicsShape.m b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsShape.m similarity index 100% rename from cocos2d/CCPhysicsShape.m rename to cocos2d-ext/CCChipmunkPhysics/CCPhysicsShape.m diff --git a/cocos2d-ui-tests/ios/AppDelegate.m b/cocos2d-ui-tests/ios/AppDelegate.m index 320aee565cf..91edcfafa9a 100644 --- a/cocos2d-ui-tests/ios/AppDelegate.m +++ b/cocos2d-ui-tests/ios/AppDelegate.m @@ -43,6 +43,37 @@ - (void)configureCocos2d #if CC_CCBREADER // Configure the file utils to work with SpriteBuilder, but use a custom resource path (Resources-shared instead of Published-iOS) [CCBReader configureCCFileUtils]; +#else + CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils]; + + // Setup file utils for use with SpriteBuilder + [sharedFileUtils setEnableiPhoneResourcesOniPad:NO]; + + sharedFileUtils.directoriesDict = + [[NSMutableDictionary alloc] initWithObjectsAndKeys: + @"resources-tablet", CCFileUtilsSuffixiPad, + @"resources-tablethd", CCFileUtilsSuffixiPadHD, + @"resources-phone", CCFileUtilsSuffixiPhone, + @"resources-phonehd", CCFileUtilsSuffixiPhoneHD, + @"resources-phone", CCFileUtilsSuffixiPhone5, + @"resources-phonehd", CCFileUtilsSuffixiPhone5HD, + @"resources-phone", CCFileUtilsSuffixMac, + @"resources-phonehd", CCFileUtilsSuffixMacHD, + @"", CCFileUtilsSuffixDefault, + nil]; + + sharedFileUtils.searchPath = + [NSArray arrayWithObjects: + [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Published-iOS"], + [[NSBundle mainBundle] resourcePath], + nil]; + + sharedFileUtils.enableiPhoneResourcesOniPad = YES; + sharedFileUtils.searchMode = CCFileUtilsSearchModeDirectory; + [sharedFileUtils buildSearchResolutionsOrder]; + + [sharedFileUtils loadFilenameLookupDictionaryFromFile:@"fileLookup.plist"]; + [[CCSpriteFrameCache sharedSpriteFrameCache] loadSpriteFrameLookupDictionaryFromFile:@"spriteFrameFileList.plist"]; #endif [self configureFileUtilsSearchPathAndRegisterSpriteSheets]; diff --git a/cocos2d-ui-tests/tests/CCPhysicsTest.m b/cocos2d-ui-tests/tests/CCPhysicsTest.m index dee20827ad5..88fb6b0bc9a 100644 --- a/cocos2d-ui-tests/tests/CCPhysicsTest.m +++ b/cocos2d-ui-tests/tests/CCPhysicsTest.m @@ -5,7 +5,7 @@ // // Created by Andy Korth on 11/15/13. // - +#if 0 #import "cocos2d.h" #import "TestBase.h" @@ -444,3 +444,4 @@ -(void)setupMovingPlatformsTest } @end +#endif diff --git a/cocos2d-ui-tests/tests/CCSchedulerTest.m b/cocos2d-ui-tests/tests/CCSchedulerTest.m index 28f20722c6b..536c3a4ee08 100644 --- a/cocos2d-ui-tests/tests/CCSchedulerTest.m +++ b/cocos2d-ui-tests/tests/CCSchedulerTest.m @@ -77,6 +77,7 @@ @implementation CLASS_NAME -(void)pauseTestWithParent:(CCNode *)parent objectToPause:(CCNode *)objectToPause { +#if 0 { // Set up a simple physics scene. CCPhysicsNode *physics = [CCPhysicsNode node]; @@ -99,7 +100,7 @@ -(void)pauseTestWithParent:(CCNode *)parent objectToPause:(CCNode *)objectToPaus [physics addChild:ball]; [parent addChild:physics]; } - +#endif { // Tests pausing update: and fixedUpdate: CCSprite *sprite = [SchedulerTestSprite spriteWithImageNamed:@"Sprites/bird.png"]; diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index f57ddac5ad1..f8e467f286f 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -23,7 +23,6 @@ /* Begin PBXBuildFile section */ 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = 0529445911098D6F00E500F3 /* CCProfiling.h */; }; 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; - 0899494A1C66000000ECC92C /* libObjectiveChipmunk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk.a */; }; 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; @@ -117,12 +116,6 @@ 7A59469319E372F000F65F90 /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2600DFDEAFF00C013A5 /* CCScene.h */; }; 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; - 7A5946AE19E372F200F65F90 /* CCPhysicsBody.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803E418032F250072D8FE /* CCPhysicsBody.h */; }; - 7A5946AF19E372F200F65F90 /* CCPhysicsBody.m in Headers */ = {isa = PBXBuildFile; fileRef = D33803E218032ECE0072D8FE /* CCPhysicsBody.m */; }; - 7A5946B019E372F200F65F90 /* CCPhysicsShape.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A2E7D0181E12750033614C /* CCPhysicsShape.h */; }; - 7A5946B219E372F300F65F90 /* CCPhysicsJoint.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803E81803319F0072D8FE /* CCPhysicsJoint.h */; }; - 7A5946B419E372F300F65F90 /* CCPhysicsNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803E718032F4A0072D8FE /* CCPhysicsNode.h */; }; - 7A5946B619E372F300F65F90 /* CCPhysics+ObjectiveChipmunk.h in Headers */ = {isa = PBXBuildFile; fileRef = D33803DC18032E4F0072D8FE /* CCPhysics+ObjectiveChipmunk.h */; }; 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; @@ -215,10 +208,6 @@ 7A5947DB19E3759F00F65F90 /* CCResponderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734417C788EB004343C8 /* CCResponderManager.m */; }; 7A5947F619E375A200F65F90 /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2610DFDEAFF00C013A5 /* CCScene.m */; }; 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; - 7A5947FA19E375A200F65F90 /* CCPhysicsBody.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E218032ECE0072D8FE /* CCPhysicsBody.m */; }; - 7A5947FC19E375A200F65F90 /* CCPhysicsShape.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A2E7D1181E12750033614C /* CCPhysicsShape.m */; }; - 7A5947FE19E375A300F65F90 /* CCPhysicsJoint.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E9180331A90072D8FE /* CCPhysicsJoint.m */; }; - 7A59480019E375A300F65F90 /* CCPhysicsNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E518032F390072D8FE /* CCPhysicsNode.m */; }; 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */; }; 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AA510291280003ACFE7 /* CCRenderTexture.m */; }; @@ -307,7 +296,6 @@ A6A0734B17C78EF3004343C8 /* CCResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734917C78EF3004343C8 /* CCResponder.m */; }; A6DC4E0918055DCC00C280A6 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; A6DC4E0A18055DCC00C280A6 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; - B15348511BE1E7B70022C4BB /* libObjectiveChipmunk-iPhone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B153484E1BE1E7A20022C4BB /* libObjectiveChipmunk-iPhone.a */; }; B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B706B19718209A8300B27A2C /* CCTexture_Private.h */; }; B74C2B9B17BDA63A00A829C0 /* CCSprite9Slice.h in Headers */ = {isa = PBXBuildFile; fileRef = B74C2B9917BDA63A00A829C0 /* CCSprite9Slice.h */; }; B74C2B9C17BDA63A00A829C0 /* CCSprite9Slice.m in Sources */ = {isa = PBXBuildFile; fileRef = B74C2B9A17BDA63A00A829C0 /* CCSprite9Slice.m */; }; @@ -364,9 +352,6 @@ D309055018AC23110081BF11 /* CCRenderer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D309054F18AC23110081BF11 /* CCRenderer_Private.h */; }; D31C795019994126007921E1 /* CCMetalSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C794F19994126007921E1 /* CCMetalSupport.m */; }; D31C795219994197007921E1 /* CCMetalSupport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D31C795119994197007921E1 /* CCMetalSupport_Private.h */; }; - D33803E318032ECE0072D8FE /* CCPhysicsBody.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E218032ECE0072D8FE /* CCPhysicsBody.m */; }; - D33803E618032F390072D8FE /* CCPhysicsNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E518032F390072D8FE /* CCPhysicsNode.m */; }; - D33803EA180331A90072D8FE /* CCPhysicsJoint.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E9180331A90072D8FE /* CCPhysicsJoint.m */; }; D34CAD6119C3A0B5009BED7A /* NSValue+CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD5F19C3A0B5009BED7A /* NSValue+CCRenderer.h */; }; D34CAD6419C3A0FD009BED7A /* NSValue+CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6219C3A0FD009BED7A /* NSValue+CCRenderer.m */; }; D34CAD6719C3A7A5009BED7A /* CCRendererBasicTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD6519C3A7A5009BED7A /* CCRendererBasicTypes.h */; }; @@ -387,8 +372,6 @@ D395DB2B183D739E0024997E /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E3877010446C6E00150883 /* OpenAL.framework */; }; D395DB2C183D73A70024997E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E3876E10446C6E00150883 /* AudioToolbox.framework */; }; D39FA9C818C1BC6B00441627 /* CCShader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D39FA9C718C1BC6B00441627 /* CCShader_Private.h */; }; - D3A2E7D2181E12750033614C /* CCPhysicsShape.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A2E7D0181E12750033614C /* CCPhysicsShape.h */; }; - D3A2E7D3181E12750033614C /* CCPhysicsShape.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A2E7D1181E12750033614C /* CCPhysicsShape.m */; }; D3E3752F19CC842A0076CDBB /* CCRendererSharedTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D3E3752E19CC842A0076CDBB /* CCRendererSharedTypes.h */; }; E01E6D8C121F130E001A484F /* CCLabelBMFont.h in Headers */ = {isa = PBXBuildFile; fileRef = E01E6D8A121F130E001A484F /* CCLabelBMFont.h */; }; E01E6D8D121F130E001A484F /* CCLabelBMFont.m in Sources */ = {isa = PBXBuildFile; fileRef = E01E6D8B121F130E001A484F /* CCLabelBMFont.m */; }; @@ -413,55 +396,6 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - B15348431BE1E7A20022C4BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D3E5F0490AA32FDE004E361B; - remoteInfo = ChipmunkDemo; - }; - B15348451BE1E7A20022C4BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D34963BB0B56CAA300CAD239; - remoteInfo = "Chipmunk-Mac"; - }; - B15348471BE1E7A20022C4BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D3C3787A11063B1B003EF1D9; - remoteInfo = "Chipmunk-iOS"; - }; - B15348491BE1E7A20022C4BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D39ECD8617ED70D900319DBA; - remoteInfo = "Benchmark iPhone"; - }; - B153484B1BE1E7A20022C4BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D333C5F018639A0500BBC4FF; - remoteInfo = "ObjectiveChipmunk-Mac"; - }; - B153484D1BE1E7A20022C4BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D309B21317EFE2EF00AA52C8; - remoteInfo = "ObjectiveChipmunk-iOS"; - }; - B153484F1BE1E7A20022C4BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D309B22017EFE2EF00AA52C8; - remoteInfo = ObjectiveChipmunkTests; - }; B7E7DE4D1A76DB8B004234B7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; @@ -591,7 +525,6 @@ A6A0734917C78EF3004343C8 /* CCResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCResponder.m; sourceTree = ""; }; A6DC4E0718055DCC00C280A6 /* CCTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTransition.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; A6DC4E0818055DCC00C280A6 /* CCTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTransition.m; sourceTree = ""; }; - B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Chipmunk7.xcodeproj; path = external/Chipmunk/xcode/Chipmunk7.xcodeproj; sourceTree = ""; }; B706B19718209A8300B27A2C /* CCTexture_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTexture_Private.h; sourceTree = ""; }; B706B19918209FA000B27A2C /* CCDirector_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCDirector_Private.h; sourceTree = ""; }; B74C2B9917BDA63A00A829C0 /* CCSprite9Slice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite9Slice.h; sourceTree = ""; }; @@ -656,13 +589,6 @@ D309054F18AC23110081BF11 /* CCRenderer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderer_Private.h; sourceTree = ""; }; D31C794F19994126007921E1 /* CCMetalSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMetalSupport.m; sourceTree = ""; }; D31C795119994197007921E1 /* CCMetalSupport_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMetalSupport_Private.h; sourceTree = ""; }; - D33803DC18032E4F0072D8FE /* CCPhysics+ObjectiveChipmunk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CCPhysics+ObjectiveChipmunk.h"; sourceTree = ""; }; - D33803E218032ECE0072D8FE /* CCPhysicsBody.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsBody.m; sourceTree = ""; }; - D33803E418032F250072D8FE /* CCPhysicsBody.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCPhysicsBody.h; sourceTree = ""; }; - D33803E518032F390072D8FE /* CCPhysicsNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsNode.m; sourceTree = ""; }; - D33803E718032F4A0072D8FE /* CCPhysicsNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCPhysicsNode.h; sourceTree = ""; }; - D33803E81803319F0072D8FE /* CCPhysicsJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCPhysicsJoint.h; sourceTree = ""; }; - D33803E9180331A90072D8FE /* CCPhysicsJoint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsJoint.m; sourceTree = ""; }; D34CAD5F19C3A0B5009BED7A /* NSValue+CCRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+CCRenderer.h"; sourceTree = ""; }; D34CAD6219C3A0FD009BED7A /* NSValue+CCRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSValue+CCRenderer.m"; sourceTree = ""; }; D34CAD6519C3A7A5009BED7A /* CCRendererBasicTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRendererBasicTypes.h; sourceTree = ""; }; @@ -680,8 +606,6 @@ D3903B1919952ABD003AA81A /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; }; D39A31BB17F227F500E94B3B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; D39FA9C718C1BC6B00441627 /* CCShader_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCShader_Private.h; sourceTree = ""; }; - D3A2E7D0181E12750033614C /* CCPhysicsShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsShape.h; sourceTree = ""; }; - D3A2E7D1181E12750033614C /* CCPhysicsShape.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsShape.m; sourceTree = ""; }; D3C12815199D40AC005D2119 /* CCShaders.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = CCShaders.metal; sourceTree = ""; }; D3E3752E19CC842A0076CDBB /* CCRendererSharedTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRendererSharedTypes.h; sourceTree = ""; }; DCF7B34D1A1D426000E0EEAF /* API-Index.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "API-Index.md"; sourceTree = ""; }; @@ -718,7 +642,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B15348511BE1E7B70022C4BB /* libObjectiveChipmunk-iPhone.a in Frameworks */, D3903B1A19952ABD003AA81A /* Metal.framework in Frameworks */, D24FAEEC198014B90043E27D /* GLKit.framework in Frameworks */, D28A2E211954F85700ADC03D /* AVFoundation.framework in Frameworks */, @@ -737,7 +660,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0899494A1C66000000ECC92C /* libObjectiveChipmunk.a in Frameworks */, 7A4037C819E3712A007B6E8F /* OpenGL.framework in Frameworks */, 7A4037C619E37126007B6E8F /* QuartzCore.framework in Frameworks */, 7A4037C419E3711D007B6E8F /* ApplicationServices.framework in Frameworks */, @@ -844,7 +766,6 @@ 501756090F335CE900624901 /* external */ = { isa = PBXGroup; children = ( - B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */, ); name = external; sourceTree = ""; @@ -858,8 +779,7 @@ 506414C50F9C67C0007A7B24 /* Label Nodes */, 506414C40F9C6792007A7B24 /* Sprite & Animation Nodes */, A6A0734717C78E55004343C8 /* Touch & Mouse Handling */, - 506414C30F9C6769007A7B24 /* Layers, Scenes, Transitions Nodes */, - A0D7D9D415E2E737000CA0C4 /* Physics */, + 506414C30F9C6769007A7B24 /* Scenes, Transitions Nodes */, 50EA8DA011354A6000746D2A /* Misc Nodes */, 50A24E770F3780A2007CAEB0 /* Actions */, 50E1355310ADEA9400C9E7FA /* Textures */, @@ -930,7 +850,7 @@ name = ImageSupport; sourceTree = ""; }; - 506414C30F9C6769007A7B24 /* Layers, Scenes, Transitions Nodes */ = { + 506414C30F9C6769007A7B24 /* Scenes, Transitions Nodes */ = { isa = PBXGroup; children = ( 5018F2600DFDEAFF00C013A5 /* CCScene.h */, @@ -938,7 +858,7 @@ A6DC4E0718055DCC00C280A6 /* CCTransition.h */, A6DC4E0818055DCC00C280A6 /* CCTransition.m */, ); - name = "Layers, Scenes, Transitions Nodes"; + name = "Scenes, Transitions Nodes"; sourceTree = ""; }; 506414C40F9C6792007A7B24 /* Sprite & Animation Nodes */ = { @@ -1083,22 +1003,6 @@ path = Mac; sourceTree = ""; }; - A0D7D9D415E2E737000CA0C4 /* Physics */ = { - isa = PBXGroup; - children = ( - D33803E418032F250072D8FE /* CCPhysicsBody.h */, - D33803E218032ECE0072D8FE /* CCPhysicsBody.m */, - D3A2E7D0181E12750033614C /* CCPhysicsShape.h */, - D3A2E7D1181E12750033614C /* CCPhysicsShape.m */, - D33803E81803319F0072D8FE /* CCPhysicsJoint.h */, - D33803E9180331A90072D8FE /* CCPhysicsJoint.m */, - D33803E718032F4A0072D8FE /* CCPhysicsNode.h */, - D33803E518032F390072D8FE /* CCPhysicsNode.m */, - D33803DC18032E4F0072D8FE /* CCPhysics+ObjectiveChipmunk.h */, - ); - name = Physics; - sourceTree = ""; - }; A0DA0BC615BCDCAE00E80A92 /* Draw Nodes */ = { isa = PBXGroup; children = ( @@ -1132,20 +1036,6 @@ name = "Touch & Mouse Handling"; sourceTree = ""; }; - B153483A1BE1E7A10022C4BB /* Products */ = { - isa = PBXGroup; - children = ( - B15348441BE1E7A20022C4BB /* ChipmunkDemo.app */, - B15348461BE1E7A20022C4BB /* libChipmunk-Mac.a */, - B15348481BE1E7A20022C4BB /* libChipmunk-iOS.a */, - B153484A1BE1E7A20022C4BB /* Benchmark iPhone.app */, - B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk.a */, - B153484E1BE1E7A20022C4BB /* libObjectiveChipmunk-iPhone.a */, - B15348501BE1E7A20022C4BB /* ObjectiveChipmunkTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; B78AE45917E7AF010028BE0B /* cocos2d-ui */ = { isa = PBXGroup; children = ( @@ -1315,7 +1205,6 @@ 5018F27D0DFDEAFF00C013A5 /* CCTextureCache.h in Headers */, D380581A1889AD6000822437 /* CCRenderer.h in Headers */, 50F9E8170E1AA34E000E7616 /* ccTypes.h in Headers */, - D3A2E7D2181E12750033614C /* CCPhysicsShape.h in Headers */, 506602110E38A70D000B500E /* CCScheduler.h in Headers */, 50305AF40E40E33200F63373 /* cocos2d.h in Headers */, 501CCFB50E99657C00B86F68 /* TGAlib.h in Headers */, @@ -1431,12 +1320,6 @@ 7A59469319E372F000F65F90 /* CCTouchEvent.h in Headers */, 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */, 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */, - 7A5946AE19E372F200F65F90 /* CCPhysicsBody.h in Headers */, - 7A5946AF19E372F200F65F90 /* CCPhysicsBody.m in Headers */, - 7A5946B019E372F200F65F90 /* CCPhysicsShape.h in Headers */, - 7A5946B219E372F300F65F90 /* CCPhysicsJoint.h in Headers */, - 7A5946B419E372F300F65F90 /* CCPhysicsNode.h in Headers */, - 7A5946B619E372F300F65F90 /* CCPhysics+ObjectiveChipmunk.h in Headers */, 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */, 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */, 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */, @@ -1611,12 +1494,6 @@ ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; - projectReferences = ( - { - ProductGroup = B153483A1BE1E7A10022C4BB /* Products */; - ProjectRef = B15348391BE1E7A10022C4BB /* Chipmunk7.xcodeproj */; - }, - ); projectRoot = ""; targets = ( 5018F24C0DFDEAC400C013A5 /* cocos2d-ios */, @@ -1627,58 +1504,6 @@ }; /* End PBXProject section */ -/* Begin PBXReferenceProxy section */ - B15348441BE1E7A20022C4BB /* ChipmunkDemo.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = ChipmunkDemo.app; - remoteRef = B15348431BE1E7A20022C4BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - B15348461BE1E7A20022C4BB /* libChipmunk-Mac.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libChipmunk-Mac.a"; - remoteRef = B15348451BE1E7A20022C4BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - B15348481BE1E7A20022C4BB /* libChipmunk-iOS.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libChipmunk-iOS.a"; - remoteRef = B15348471BE1E7A20022C4BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - B153484A1BE1E7A20022C4BB /* Benchmark iPhone.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = "Benchmark iPhone.app"; - remoteRef = B15348491BE1E7A20022C4BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - B153484C1BE1E7A20022C4BB /* libObjectiveChipmunk.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libObjectiveChipmunk.a; - remoteRef = B153484B1BE1E7A20022C4BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - B153484E1BE1E7A20022C4BB /* libObjectiveChipmunk-iPhone.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libObjectiveChipmunk-iPhone.a"; - remoteRef = B153484D1BE1E7A20022C4BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - B15348501BE1E7A20022C4BB /* ObjectiveChipmunkTests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = ObjectiveChipmunkTests.xctest; - remoteRef = B153484F1BE1E7A20022C4BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - /* Begin PBXResourcesBuildPhase section */ B7E7DE321A76DB7D004234B7 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -1716,7 +1541,6 @@ 5018F26E0DFDEAFF00C013A5 /* CCDirector.m in Sources */, 5018F2700DFDEAFF00C013A5 /* CCActionInstant.m in Sources */, 5018F2720DFDEAFF00C013A5 /* CCActionInterval.m in Sources */, - D33803EA180331A90072D8FE /* CCPhysicsJoint.m in Sources */, D26A042B194B815500503BEC /* CCTouchEvent.m in Sources */, 5018F2740DFDEAFF00C013A5 /* CCLabelTTF.m in Sources */, 5018F2760DFDEAFF00C013A5 /* CCNodeColor.m in Sources */, @@ -1729,7 +1553,6 @@ B7E260D918171D2000A0E872 /* CCTextField.m in Sources */, 50F7B2790F28DE7C00057537 /* CCActionEase.m in Sources */, 571CD02919649E03003D460C /* CCPlatformTextField.m in Sources */, - D3A2E7D3181E12750033614C /* CCPhysicsShape.m in Sources */, B7EE6A1F181AE34600B983FE /* CCSlider.m in Sources */, 509A79980F6188420032F449 /* CCSprite.m in Sources */, 50C508C70F7C194400799124 /* CCFileUtils.m in Sources */, @@ -1753,7 +1576,6 @@ D37D197B18B6666E00B23FDE /* CCSpriteBatchNode.m in Sources */, D3903B0D1995288D003AA81A /* CCNoARC.m in Sources */, E0C54DCA11F9CF2700B9E4CB /* ccUtils.c in Sources */, - D33803E618032F390072D8FE /* CCPhysicsNode.m in Sources */, E01E6D8D121F130E001A484F /* CCLabelBMFont.m in Sources */, E0EAD100121F4B4600B0C81C /* CCDirectorIOS.m in Sources */, E0EAD109121F4B4600B0C81C /* CCGLView.m in Sources */, @@ -1791,7 +1613,6 @@ 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */, B78AE46917E7AF1C0028BE0B /* CCScrollView.m in Sources */, B78AE46D17E7AF6C0028BE0B /* UITouch+CC.m in Sources */, - D33803E318032ECE0072D8FE /* CCPhysicsBody.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1817,10 +1638,6 @@ 7A5947DB19E3759F00F65F90 /* CCResponderManager.m in Sources */, 7A5947F619E375A200F65F90 /* CCScene.m in Sources */, 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */, - 7A5947FA19E375A200F65F90 /* CCPhysicsBody.m in Sources */, - 7A5947FC19E375A200F65F90 /* CCPhysicsShape.m in Sources */, - 7A5947FE19E375A300F65F90 /* CCPhysicsJoint.m in Sources */, - 7A59480019E375A300F65F90 /* CCPhysicsNode.m in Sources */, 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */, 9D9205D71A0173D600FF2D6D /* CCLightCollection.m in Sources */, 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */, diff --git a/cocos2d/CCNode.m b/cocos2d/CCNode.m index 9b2319bc261..65238941973 100644 --- a/cocos2d/CCNode.m +++ b/cocos2d/CCNode.m @@ -38,7 +38,9 @@ #import "Support/CGPointExtension.h" #import "ccMacros.h" #import "CCShader.h" +#if CC_PHYSICS #import "CCPhysics+ObjectiveChipmunk.h" +#endif #import "CCDirector_Private.h" #import "CCRenderer_Private.h" #import "CCTexture_Private.h" @@ -111,12 +113,13 @@ @implementation CCNode { } +#if CC_PHYSICS inline CGAffineTransform RigidBodyToParentTransform(CCNode *node, CCPhysicsBody *body) { return CGAffineTransformConcat(body.absoluteTransform, CGAffineTransformInvert(NodeToPhysicsTransform(node.parent))); } - +#endif // XXX: Yes, nodes might have a sort problem once every 15 days if the game runs at 60 FPS and each frame sprites are reordered. static NSUInteger globalOrderOfArrival = 1; @@ -223,6 +226,7 @@ - (void) dealloc // getters synthesized, setters explicit -(void) setRotation: (float)newRotation { +#if CC_PHYSICS CCPhysicsBody *body = GetBodyIfRunning(self); if (body) { @@ -233,6 +237,7 @@ -(void) setRotation: (float)newRotation self.position = position; } else +#endif { _rotationalSkewX = newRotation; _rotationalSkewY = newRotation; @@ -242,20 +247,26 @@ -(void) setRotation: (float)newRotation -(float) rotation { +#if CC_PHYSICS CCPhysicsBody *body = GetBodyIfRunning(self); if(body){ return -CC_RADIANS_TO_DEGREES(body.absoluteRadians) + NodeToPhysicsRotation(self.parent); - } else { + } else +#endif + { NSAssert( _rotationalSkewX == _rotationalSkewY, @"CCNode#rotation. rotationalSkewX != rotationalSkewY. Don't know which one to return"); return _rotationalSkewX; } } -(float)rotationalSkewX { +#if CC_PHYSICS CCPhysicsBody *body = GetBodyIfRunning(self); if(body){ return -CC_RADIANS_TO_DEGREES(body.absoluteRadians) + NodeToPhysicsRotation(self.parent); - } else { + } else +#endif + { return _rotationalSkewX; } } @@ -270,10 +281,13 @@ -(void) setRotationalSkewX: (float)newX -(float)rotationalSkewY { +#if CC_PHYSICS CCPhysicsBody *body = GetBodyIfRunning(self); if(body){ return -CC_RADIANS_TO_DEGREES(body.absoluteRadians) + NodeToPhysicsRotation(self.parent); - } else { + } else +#endif + { return _rotationalSkewY; } } @@ -339,6 +353,7 @@ -(CGPoint)position -(void) setPosition: (CGPoint)newPosition { +#if CC_PHYSICS CCPhysicsBody *body = GetBodyIfRunning(self); if(body){ CGPoint currentPosition = GetPositionFromBody(self, body); @@ -347,7 +362,9 @@ -(void) setPosition: (CGPoint)newPosition CGPoint delta = ccpSub(newPositionInPoints, currentPosition); body.absolutePosition = ccpAdd(body.absolutePosition, TransformPointAsVector(delta, NodeToPhysicsTransform(self.parent))); body.relativePosition = newPositionInPoints; - } else { + } else +#endif + { _position = newPosition; _isTransformDirty = _isInverseDirty = YES; } @@ -958,11 +975,13 @@ -(void)visit -(CGAffineTransform)nonRigidTransform { CGAffineTransform toPhysics = NodeToPhysicsTransform(self); - +#if CC_PHYSICS CCPhysicsBody *body = GetBodyIfRunning(self); if(body){ return CGAffineTransformConcat(toPhysics, CGAffineTransformInvert(body.absoluteTransform)); - } else { + } else +#endif + { // Body is not active yet, so this is more of a mess. :-\ // Need to guess the rigid part of the transform. float radians = CC_DEGREES_TO_RADIANS(NodeToPhysicsRotation(self)); @@ -973,8 +992,11 @@ -(CGAffineTransform)nonRigidTransform // Overriden by CCPhysicsNode to return YES. -(BOOL)isPhysicsNode {return NO;} +#if CC_PHYSICS -(CCPhysicsNode *)physicsNode {return (self.isPhysicsNode ? (CCPhysicsNode *)self : self.parent.physicsNode);} +#endif +#if CC_PHYSICS -(void)setupPhysicsBody:(CCPhysicsBody *)physicsBody { if(physicsBody){ @@ -1016,6 +1038,7 @@ -(void)setupPhysicsBody:(CCPhysicsBody *)physicsBody } } + -(void)teardownPhysics { if(_physicsBody){ @@ -1057,6 +1080,7 @@ -(void)setPhysicsBody:(CCPhysicsBody *)physicsBody _physicsBody.node = self; } } +#endif #pragma mark CCNode SceneManagement @@ -1067,13 +1091,15 @@ -(CCScene *)scene {return (self.isScene ? (CCScene *)self : self.parent.scene);} -(void) onEnter { [_children makeObjectsPerformSelector:@selector(onEnter)]; - +#if CC_PHYSICS [self setupPhysicsBody:_physicsBody]; +#endif [_scheduler scheduleTarget:self]; BOOL wasRunning = self.runningInActiveScene; _isInActiveScene = YES; - + +#if CC_PHYSICS //If there's a physics node in the hierarchy, all actions should run on a fixed timestep. BOOL hasPhysicsNode = self.physicsNode != nil; if(hasPhysicsNode && _actionManager != [CCDirector sharedDirector].actionManagerFixed) @@ -1081,7 +1107,13 @@ -(void) onEnter [[CCDirector sharedDirector].actionManagerFixed migrateActions:self from:[CCDirector sharedDirector].actionManager]; [self setActionManager:[CCDirector sharedDirector].actionManagerFixed]; } - else if(!hasPhysicsNode && _actionManager != [CCDirector sharedDirector].actionManager) + else +#endif + if( +#if CC_PHYSICS + !hasPhysicsNode && +#endif + _actionManager != [CCDirector sharedDirector].actionManager) { [[CCDirector sharedDirector].actionManager migrateActions:self from:[CCDirector sharedDirector].actionManagerFixed]; [self setActionManager:[CCDirector sharedDirector].actionManager]; @@ -1108,8 +1140,9 @@ -(void) onExitTransitionDidStart -(void) onExit { +#if CC_PHYSICS [self teardownPhysics]; - +#endif BOOL wasRunning = self.runningInActiveScene; _isInActiveScene = NO; [self wasRunning:wasRunning]; @@ -1502,12 +1535,12 @@ -(void)setPositionInPoints:(CGPoint)positionInPoints - (CGAffineTransform)nodeToParentTransform { +#if CC_PHYSICS // The body ivar cannot be changed while this method is running and it's ARC retain/release is 70% of the profile samples for this method. __unsafe_unretained CCPhysicsBody *physicsBody = GetBodyIfRunning(self); if(physicsBody){ CGAffineTransform rigidTransform; - if(physicsBody.type == CCPhysicsBodyTypeKinematic) { CGPoint anchorPointInPointsScaled = ccpCompMult(_anchorPointInPoints, @@ -1524,7 +1557,9 @@ - (CGAffineTransform)nodeToParentTransform } _transform = CGAffineTransformConcat(CGAffineTransformMakeScale(_scaleX , _scaleY), rigidTransform); - } else if ( _isTransformDirty ) { + } else +#endif + if ( _isTransformDirty ) { // Get content size CGSize contentSizeInPoints; diff --git a/cocos2d/ccConfig.h b/cocos2d/ccConfig.h index e73c364dcde..3774d0d1e86 100644 --- a/cocos2d/ccConfig.h +++ b/cocos2d/ccConfig.h @@ -166,6 +166,10 @@ #define CC_SHADER_DEFAULT_FRAGMENT_PRECISION mediump #endif +#ifndef CC_PHYSICS +#define CC_PHYSICS 0 +#endif + #ifndef CC_CCBREADER #define CC_CCBREADER 0 #endif diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index 1362e79bbcd..585b0ed189c 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -86,12 +86,6 @@ // Shaders #import "CCShader.h" -// Physics -#import "CCPhysicsBody.h" -#import "CCPhysicsJoint.h" -#import "CCPhysicsNode.h" -#import "CCPhysicsShape.h" - // Sound #import "OALSimpleAudio.h" From 788ed57f307b8c4b42ab53dccce712bfc692d4ed Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 10 Feb 2016 20:54:03 +0300 Subject: [PATCH 21/94] CCLighting moved to -ext --- .../CCLighting}/CCLightCollection.h | 0 .../CCLighting}/CCLightCollection.m | 0 .../CCLighting}/CCLightGroups.h | 0 .../CCLighting}/CCLightNode.h | 0 .../CCLighting}/CCLightNode.m | 0 .../CCLighting}/CCLightNode_Private.h | 0 cocos2d.xcodeproj/project.pbxproj | 36 ------------------- cocos2d/CCScene.h | 7 ++-- cocos2d/CCScene.m | 6 ++-- cocos2d/ccConfig.h | 4 +++ cocos2d/cocos2d.h | 1 - 11 files changed, 12 insertions(+), 42 deletions(-) rename {cocos2d => cocos2d-ext/CCLighting}/CCLightCollection.h (100%) rename {cocos2d => cocos2d-ext/CCLighting}/CCLightCollection.m (100%) rename {cocos2d => cocos2d-ext/CCLighting}/CCLightGroups.h (100%) rename {cocos2d => cocos2d-ext/CCLighting}/CCLightNode.h (100%) rename {cocos2d => cocos2d-ext/CCLighting}/CCLightNode.m (100%) rename {cocos2d => cocos2d-ext/CCLighting}/CCLightNode_Private.h (100%) diff --git a/cocos2d/CCLightCollection.h b/cocos2d-ext/CCLighting/CCLightCollection.h similarity index 100% rename from cocos2d/CCLightCollection.h rename to cocos2d-ext/CCLighting/CCLightCollection.h diff --git a/cocos2d/CCLightCollection.m b/cocos2d-ext/CCLighting/CCLightCollection.m similarity index 100% rename from cocos2d/CCLightCollection.m rename to cocos2d-ext/CCLighting/CCLightCollection.m diff --git a/cocos2d/CCLightGroups.h b/cocos2d-ext/CCLighting/CCLightGroups.h similarity index 100% rename from cocos2d/CCLightGroups.h rename to cocos2d-ext/CCLighting/CCLightGroups.h diff --git a/cocos2d/CCLightNode.h b/cocos2d-ext/CCLighting/CCLightNode.h similarity index 100% rename from cocos2d/CCLightNode.h rename to cocos2d-ext/CCLighting/CCLightNode.h diff --git a/cocos2d/CCLightNode.m b/cocos2d-ext/CCLighting/CCLightNode.m similarity index 100% rename from cocos2d/CCLightNode.m rename to cocos2d-ext/CCLighting/CCLightNode.m diff --git a/cocos2d/CCLightNode_Private.h b/cocos2d-ext/CCLighting/CCLightNode_Private.h similarity index 100% rename from cocos2d/CCLightNode_Private.h rename to cocos2d-ext/CCLighting/CCLightNode_Private.h diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index f8e467f286f..cecc2eb3595 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -261,18 +261,6 @@ 7A5948D119E375BE00F65F90 /* CCTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E260D718171D2000A0E872 /* CCTextField.m */; }; 7A5948D319E375BE00F65F90 /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; 7A59494019E3810500F65F90 /* CCPlatformTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD01F19649E03003D460C /* CCPlatformTextField.m */; }; - 9D03A5EB1A02F61700C651C8 /* CCLightNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */; }; - 9D03A5ED1A02F61B00C651C8 /* CCLightNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */; }; - 9D1B4A991A02E90300B2DD9B /* CCLightGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */; }; - 9D1B4A9B1A02E90300B2DD9B /* CCLightGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */; }; - 9D69E6D619DF604800C2749C /* CCLightNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D69E6D419DF604800C2749C /* CCLightNode.h */; }; - 9D69E6D719DF604800C2749C /* CCLightNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D69E6D519DF604800C2749C /* CCLightNode.m */; }; - 9D9205D21A0173D600FF2D6D /* CCLightCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */; }; - 9D9205D41A0173D600FF2D6D /* CCLightCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */; }; - 9D9205D51A0173D600FF2D6D /* CCLightCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */; }; - 9D9205D71A0173D600FF2D6D /* CCLightCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */; }; - 9DC780BA1A1175F100DD5A4B /* CCLightNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D69E6D419DF604800C2749C /* CCLightNode.h */; }; - 9DC780BC1A11760B00DD5A4B /* CCLightNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D69E6D519DF604800C2749C /* CCLightNode.m */; }; A003AC8C1657071100C7B792 /* ccFPSImages.h in Headers */ = {isa = PBXBuildFile; fileRef = A003AC8B1657071100C7B792 /* ccFPSImages.h */; }; A003AC8F16572D6000C7B792 /* ccFPSImages.m in Sources */ = {isa = PBXBuildFile; fileRef = A003AC8E16572D6000C7B792 /* ccFPSImages.m */; }; A039EBFF155C686B0061EE37 /* CCNode+Debug.h in Headers */ = {isa = PBXBuildFile; fileRef = A039EBFD155C686B0061EE37 /* CCNode+Debug.h */; }; @@ -493,12 +481,6 @@ 7A4037C719E3712A007B6E8F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; 83E1A88D19C8C19D000A3BCA /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 92FF6C7318F33A2A005B7139 /* CCActionManager_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCActionManager_Private.h; sourceTree = ""; }; - 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCLightNode_Private.h; sourceTree = ""; }; - 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightGroups.h; sourceTree = ""; }; - 9D69E6D419DF604800C2749C /* CCLightNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightNode.h; sourceTree = ""; }; - 9D69E6D519DF604800C2749C /* CCLightNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLightNode.m; sourceTree = ""; }; - 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightCollection.h; sourceTree = ""; }; - 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLightCollection.m; sourceTree = ""; }; A003AC8B1657071100C7B792 /* ccFPSImages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccFPSImages.h; sourceTree = ""; }; A003AC8E16572D6000C7B792 /* ccFPSImages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ccFPSImages.m; sourceTree = ""; }; A039EBFD155C686B0061EE37 /* CCNode+Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CCNode+Debug.h"; sourceTree = ""; }; @@ -965,10 +947,6 @@ 50316AA510291280003ACFE7 /* CCRenderTexture.m */, B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */, D2B840C31909F447008063EA /* CCRenderTexture_Private.h */, - 9D69E6D419DF604800C2749C /* CCLightNode.h */, - 9D69E6D519DF604800C2749C /* CCLightNode.m */, - 9D1B4A941A02D51600B2DD9B /* CCLightNode_Private.h */, - 9D1B4A971A02E90300B2DD9B /* CCLightGroups.h */, ); name = "Misc Nodes"; sourceTree = ""; @@ -1124,8 +1102,6 @@ D38058181889AD6000822437 /* CCRenderer.h */, D309054F18AC23110081BF11 /* CCRenderer_Private.h */, D38058191889AD6000822437 /* CCRenderer.m */, - 9D9205D01A0173D600FF2D6D /* CCLightCollection.h */, - 9D9205D11A0173D600FF2D6D /* CCLightCollection.m */, ); name = Rendering; sourceTree = ""; @@ -1215,15 +1191,12 @@ B798D13D181F2E4500E7BFCD /* CCNode_Private.h in Headers */, 509A79970F6188420032F449 /* CCSprite.h in Headers */, 50C508C60F7C194400799124 /* CCFileUtils.h in Headers */, - 9D9205D21A0173D600FF2D6D /* CCLightCollection.h in Headers */, 503798C60F912C2000986724 /* CGPointExtension.h in Headers */, 571CD02A19649E03003D460C /* CCPlatformTextFieldIOS.h in Headers */, B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */, B7EE69E21819E75700B983FE /* CCLayoutBox.h in Headers */, D23C5CB4194BC108007CA669 /* CCTouchIOS.h in Headers */, - 9D1B4A991A02E90300B2DD9B /* CCLightGroups.h in Headers */, D3903B10199528A0003AA81A /* CCRenderDispatch.h in Headers */, - 9D03A5EB1A02F61700C651C8 /* CCLightNode_Private.h in Headers */, B7E260D818171D2000A0E872 /* CCTextField.h in Headers */, D34CAD6C19C3AA10009BED7A /* CCRendererBasicTypes_Private.h in Headers */, 50CB3B0E100AC43A00B7A750 /* CCActionManager.h in Headers */, @@ -1288,7 +1261,6 @@ B78AE46617E7AF1C0028BE0B /* CCControlTextureFactory.h in Headers */, B78AE46817E7AF1C0028BE0B /* CCScrollView.h in Headers */, B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */, - 9D69E6D619DF604800C2749C /* CCLightNode.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1296,8 +1268,6 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9D9205D41A0173D600FF2D6D /* CCLightCollection.h in Headers */, - 9D03A5ED1A02F61B00C651C8 /* CCLightNode_Private.h in Headers */, 7A59466E19E372EE00F65F90 /* CCNode.h in Headers */, 7A59467019E372EE00F65F90 /* CCNode+Debug.h in Headers */, 7A59467219E372EF00F65F90 /* CCNode_Private.h in Headers */, @@ -1326,7 +1296,6 @@ 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */, 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */, 7A5946DD19E372F700F65F90 /* CCActionManager_Private.h in Headers */, - 9D1B4A9B1A02E90300B2DD9B /* CCLightGroups.h in Headers */, 7A5946DE19E372F800F65F90 /* CCActionManager.h in Headers */, 7A5946E019E372F800F65F90 /* CCAction.h in Headers */, 7A5946E219E372F800F65F90 /* CCActionInstant.h in Headers */, @@ -1387,7 +1356,6 @@ 7A59476019E3731400F65F90 /* CCPlatformTextField.h in Headers */, 7A59476219E3731400F65F90 /* CCPlatformTextFieldIOS.h in Headers */, 7A59476419E3731500F65F90 /* CCPlatformTextFieldMac.h in Headers */, - 9DC780BA1A1175F100DD5A4B /* CCLightNode.h in Headers */, 7A59477919E3731D00F65F90 /* cocos2d-ui.h in Headers */, 7A59477A19E3731E00F65F90 /* CCControl.h in Headers */, 7A59477B19E3731E00F65F90 /* CCControlSubclass.h in Headers */, @@ -1594,7 +1562,6 @@ D36D31B718BD3CAA00E45F08 /* CCProgressNode.m in Sources */, A0DA0BC415BCDCA200E80A92 /* CCDrawNode.m in Sources */, B7EE69E11819E75700B983FE /* CCLayout.m in Sources */, - 9D69E6D719DF604800C2749C /* CCLightNode.m in Sources */, A003AC8F16572D6000C7B792 /* ccFPSImages.m in Sources */, B79F905B17FE2A2E00908504 /* CCTableView.m in Sources */, B74C2B9C17BDA63A00A829C0 /* CCSprite9Slice.m in Sources */, @@ -1606,7 +1573,6 @@ D23C5CB5194BC108007CA669 /* CCTouchIOS.m in Sources */, A6A0734B17C78EF3004343C8 /* CCResponder.m in Sources */, B78AE46317E7AF1C0028BE0B /* CCButton.m in Sources */, - 9D9205D51A0173D600FF2D6D /* CCLightCollection.m in Sources */, B78AE46517E7AF1C0028BE0B /* CCControl.m in Sources */, B78AE46717E7AF1C0028BE0B /* CCControlTextureFactory.m in Sources */, D38058211889CE7700822437 /* CCCache.m in Sources */, @@ -1639,7 +1605,6 @@ 7A5947F619E375A200F65F90 /* CCScene.m in Sources */, 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */, 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */, - 9D9205D71A0173D600FF2D6D /* CCLightCollection.m in Sources */, 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */, 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */, 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */, @@ -1652,7 +1617,6 @@ 7A59483619E375A900F65F90 /* CCActionProgressTimer.m in Sources */, 7A59483819E375A900F65F90 /* CCActionTween.m in Sources */, 7A59483A19E375A900F65F90 /* CCTexturePVR.m in Sources */, - 9DC780BC1A11760B00DD5A4B /* CCLightNode.m in Sources */, 7A59483C19E375A900F65F90 /* CCTexture.m in Sources */, 5BC1DE2B1A2E2099009C2E67 /* NSEvent+CC.m in Sources */, 7A59483F19E375AA00F65F90 /* CCTextureCache.m in Sources */, diff --git a/cocos2d/CCScene.h b/cocos2d/CCScene.h index 23fe4edd5d9..9281193c905 100644 --- a/cocos2d/CCScene.h +++ b/cocos2d/CCScene.h @@ -26,9 +26,9 @@ */ #import "CCNode.h" - +#if CC_LIGHTING @class CCLightCollection; - +#endif /** CCScene is a subclass of CCNode. The scene represents the root node of the node hierarchy. A scene is created using the default node initializer: @@ -40,6 +40,7 @@ */ @interface CCScene : CCNode +#if CC_LIGHTING /** @name Accessing Lights */ /** A collection of lights in the scene. @@ -47,7 +48,7 @@ @since v3.4 and later */ @property (nonatomic, readonly, strong) CCLightCollection *lights; - +#endif /// ----------------------------------------------------------------------- /// @name Creating a Scene /// ----------------------------------------------------------------------- diff --git a/cocos2d/CCScene.m b/cocos2d/CCScene.m index 772e8e36d8c..6753c98dd42 100644 --- a/cocos2d/CCScene.m +++ b/cocos2d/CCScene.m @@ -31,8 +31,9 @@ #import "Support/CGPointExtension.h" #import "CCDirector.h" #import "CCDirector_Private.h" +#if CC_LIGHTING #import "CCLightCollection.h" - +#endif // ----------------------------------------------------------------- @implementation CCScene { @@ -51,8 +52,9 @@ -( id )init { [self setContentSize:s]; self.colorRGBA = [CCColor blackColor]; - +#if CC_LIGHTING _lights = [[CCLightCollection alloc] init]; +#endif } return( self ); diff --git a/cocos2d/ccConfig.h b/cocos2d/ccConfig.h index 3774d0d1e86..cff318d4a25 100644 --- a/cocos2d/ccConfig.h +++ b/cocos2d/ccConfig.h @@ -166,6 +166,10 @@ #define CC_SHADER_DEFAULT_FRAGMENT_PRECISION mediump #endif +#ifndef CC_LIGHTING +#define CC_LIGHTING 0 +#endif + #ifndef CC_PHYSICS #define CC_PHYSICS 0 #endif diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index 585b0ed189c..afd4f69f65e 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -63,7 +63,6 @@ #import "CCDrawNode.h" #import "CCLabelBMFont.h" #import "CCLabelTTF.h" -#import "CCLightNode.h" #import "CCNode+Debug.h" #import "CCNode.h" #import "CCNodeColor.h" From abcffbd20233efbebf39fd9319340093ca8ee625 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 10 Feb 2016 21:09:45 +0300 Subject: [PATCH 22/94] Forgot about android. Completely. --- cocos2d/CCActionCatmullRom.m | 8 +- cocos2d/CCAnimation.h | 2 +- cocos2d/CCConfiguration.h | 6 -- cocos2d/CCConfiguration.m | 45 +---------- cocos2d/CCDirector.h | 8 +- cocos2d/CCDirector.m | 7 +- cocos2d/CCDrawNode.m | 7 -- cocos2d/CCLabelTTF.m | 6 +- cocos2d/CCRendererGLSupport.m | 43 ---------- cocos2d/CCResponder.m | 2 +- cocos2d/CCResponderManager.h | 10 +-- cocos2d/CCResponderManager.m | 2 +- cocos2d/CCTexture.m | 6 -- cocos2d/CCTextureCache.h | 2 +- cocos2d/CCTextureCache.m | 25 +----- cocos2d/CCTouch.h | 10 +-- cocos2d/CCTouch.m | 3 - cocos2d/CCTouchEvent.h | 2 +- cocos2d/CCTouchEvent.m | 5 -- cocos2d/Platforms/CCGL.h | 8 +- cocos2d/Platforms/CCNS.h | 3 +- cocos2d/Platforms/iOS/CCGLView.h | 2 +- cocos2d/Support/CCFileUtils.h | 5 +- cocos2d/Support/CCFileUtils.m | 8 +- cocos2d/Support/CGPointExtension.h | 2 +- .../Support/NSAttributedString+CCAdditions.m | 78 ++----------------- cocos2d/ccMacros.h | 12 +-- cocos2d/ccTypes.h | 14 +--- cocos2d/cocos2d.h | 8 -- 29 files changed, 43 insertions(+), 296 deletions(-) diff --git a/cocos2d/CCActionCatmullRom.m b/cocos2d/CCActionCatmullRom.m index ac879594361..2f5a3000c03 100644 --- a/cocos2d/CCActionCatmullRom.m +++ b/cocos2d/CCActionCatmullRom.m @@ -76,7 +76,7 @@ -(void) addControlPoint:(CGPoint)controlPoint { #if __CC_PLATFORM_MAC NSValue *value = [NSValue valueWithPoint:NSPointFromCGPoint(controlPoint)]; -#elif __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#elif __CC_PLATFORM_IOS NSValue *value = [NSValue valueWithCGPoint:controlPoint]; #endif @@ -87,7 +87,7 @@ -(void) insertControlPoint:(CGPoint)controlPoint atIndex:(NSUInteger)index { #if __CC_PLATFORM_MAC NSValue *value = [NSValue valueWithPoint:NSPointFromCGPoint(controlPoint)]; -#elif __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#elif __CC_PLATFORM_IOS NSValue *value = [NSValue valueWithCGPoint:controlPoint]; #endif @@ -102,7 +102,7 @@ -(CGPoint) getControlPointAtIndex:(NSInteger)index #if __CC_PLATFORM_MAC NSValue *value = [_controlPoints objectAtIndex:index]; CGPoint point = NSPointToCGPoint([value pointValue]); -#elif __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#elif __CC_PLATFORM_IOS NSValue *value = [_controlPoints objectAtIndex:index]; CGPoint point = [value CGPointValue]; #endif @@ -114,7 +114,7 @@ -(void) replaceControlPoint:(CGPoint)controlPoint atIndex:(NSUInteger)index { #if __CC_PLATFORM_MAC NSValue *value = [NSValue valueWithPoint:NSPointFromCGPoint(controlPoint)]; -#elif __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#elif __CC_PLATFORM_IOS NSValue *value = [NSValue valueWithCGPoint:controlPoint]; #endif diff --git a/cocos2d/CCAnimation.h b/cocos2d/CCAnimation.h index e2daa23b7b5..d3df34f29ec 100644 --- a/cocos2d/CCAnimation.h +++ b/cocos2d/CCAnimation.h @@ -26,7 +26,7 @@ */ #import -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS #import #endif diff --git a/cocos2d/CCConfiguration.h b/cocos2d/CCConfiguration.h index f9e0358b36c..dcab0b8595c 100644 --- a/cocos2d/CCConfiguration.h +++ b/cocos2d/CCConfiguration.h @@ -27,12 +27,6 @@ #import #import "CCGL.h" -#if __CC_PLATFORM_ANDROID - -#import -#endif - - #define CC_MINIMUM_TABLET_SCREEN_DIAGONAL 6.0 extern Class CCGraphicsBufferClass; extern Class CCGraphicsBufferBindingsClass; diff --git a/cocos2d/CCConfiguration.m b/cocos2d/CCConfiguration.m index 6b49d90fcb2..7b000518d12 100644 --- a/cocos2d/CCConfiguration.m +++ b/cocos2d/CCConfiguration.m @@ -28,9 +28,6 @@ #if __CC_PLATFORM_IOS #import // Needed for UIDevice -#elif __CC_PLATFORM_ANDROID -#import -#import #endif #import "Platforms/CCGL.h" @@ -122,8 +119,6 @@ -(id) init NSString *OSVer = [[UIDevice currentDevice] systemVersion]; #elif __CC_PLATFORM_MAC NSString *OSVer = [self getMacVersion]; -#elif __CC_PLATFORM_ANDROID - NSString *OSVer = @"?";//[AndroidBuild DISPLAY]; #endif NSArray *arr = [OSVer componentsSeparatedByString:@"."]; int idx = 0x01000000; @@ -186,37 +181,7 @@ -(NSInteger) runningDevice { // TODO: This method really needs to go very away in v4 -#if __CC_PLATFORM_ANDROID - - AndroidDisplayMetrics *metrics = [[AndroidDisplayMetrics alloc] init]; - [[CCActivity currentActivity].windowManager.defaultDisplay metricsForDisplayMetrics:metrics]; - - double yInches= metrics.heightPixels/metrics.ydpi; - double xInches= metrics.widthPixels/metrics.xdpi; - double diagonalInches = sqrt(xInches*xInches + yInches*yInches); - if (diagonalInches<=CC_MINIMUM_TABLET_SCREEN_DIAGONAL){ - - - if([CCDirector sharedDirector].contentScaleFactor > 1.0) - { - return CCDeviceiPhoneRetinaDisplay; - } - else - { - return CCDeviceiPhone; - } - } else { - if([CCDirector sharedDirector].contentScaleFactor > 1.0) - { - return CCDeviceiPadRetinaDisplay; - } - else - { - return CCDeviceiPad; - } - - } -#elif __CC_PLATFORM_IOS +#if __CC_PLATFORM_IOS if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { @@ -276,10 +241,6 @@ -(void) getOpenGLvariables #elif __CC_PLATFORM_MAC _supportsNPOT = [self checkForGLExtension:@"GL_ARB_texture_non_power_of_two"]; _supportsPackedDepthStencil = YES; -#elif __CC_PLATFORM_ANDROID - // source: http://www.khronos.org/registry/gles/ - _supportsNPOT = [self checkForGLExtension:@"GL_OES_texture_npot"] || [self checkForGLExtension:@"GL_NV_texture_npot_2D_mipmap"]; - _supportsPackedDepthStencil = [self checkForGLExtension:@"GL_OES_packed_depth_stencil"]; #endif _supportsPVRTC = [self checkForGLExtension:@"GL_IMG_texture_compression_pvrtc"]; @@ -291,8 +252,6 @@ -(void) getOpenGLvariables _supportsBGRA8888 = bgra8a | bgra8b; #elif __CC_PLATFORM_MAC _supportsBGRA8888 = [self checkForGLExtension:@"GL_EXT_bgra"]; -#elif __CC_PLATFORM_ANDROID - _supportsBGRA8888 = [self checkForGLExtension:@"GL_EXT_texture_format_BGRA8888"]; #endif _supportsDiscardFramebuffer = [self checkForGLExtension:@"GL_EXT_discard_framebuffer"]; @@ -397,8 +356,6 @@ -(void) dumpInfo #if __CC_PLATFORM_IOS NSString *OSVer = [[UIDevice currentDevice] systemVersion]; -#elif __CC_PLATFORM_ANDROID - NSString *OSVer = @"?";//[AndroidBuild DISPLAY]; #else //__CC_PLATFORM_MAC NSString *OSVer = [self getMacVersion]; #endif diff --git a/cocos2d/CCDirector.h b/cocos2d/CCDirector.h index c09367513a4..df4fb177788 100644 --- a/cocos2d/CCDirector.h +++ b/cocos2d/CCDirector.h @@ -68,17 +68,13 @@ typedef NS_ENUM(NSUInteger, CCDirectorProjection) { #define CC_VIEWCONTROLLER NSObject #define CC_VIEW NSOpenGLView -#elif __CC_PLATFORM_ANDROID -#define CC_VIEWCONTROLLER NSObject -#define CC_VIEW CCGLView - #endif /** The director creates and handles the main Window and the Cocos2D view. It also presents Scenes and initiates scene updates and drawing. - CCDirector inherits from CC_VIEWCONTROLLER which is equivalent to UIViewController on iOS, and NSObject on OS X and Android. + CCDirector inherits from CC_VIEWCONTROLLER which is equivalent to UIViewController on iOS, and NSObject on OS X. Since the CCDirector is a singleton, the standard way to use its methods and properties is: @@ -210,7 +206,7 @@ typedef NS_ENUM(NSUInteger, CCDirectorProjection) { /** @name Working with View and Projection */ -/// View used by the director for rendering. The CC_VIEW macro equals UIView on iOS, NSOpenGLView on OS X and CCGLView on Android. +/// View used by the director for rendering. The CC_VIEW macro equals UIView on iOS, NSOpenGLView on OS X and CCGLView. /// @see CCDirectorView @property(nonatomic, strong) CC_VIEW *view; /** Sets an OpenGL projection diff --git a/cocos2d/CCDirector.m b/cocos2d/CCDirector.m index 07d1150d311..029ac590afb 100644 --- a/cocos2d/CCDirector.m +++ b/cocos2d/CCDirector.m @@ -62,9 +62,6 @@ #elif __CC_PLATFORM_MAC #import "Platforms/Mac/CCDirectorMac.h" #define CC_DIRECTOR_DEFAULT CCDirectorDisplayLink -#elif __CC_PLATFORM_ANDROID -#import "Platforms/Android/CCDirectorAndroid.h" -#define CC_DIRECTOR_DEFAULT CCDirectorDisplayLink #endif #import "CCDirector_Private.h" @@ -210,7 +207,7 @@ - (id) init _globalShaderUniforms = [NSMutableDictionary dictionary]; // Force the graphics API to be selected if it hasn't already done so. - // Startup code is annoyingly different for iOS/Mac/Android. + // Startup code is annoyingly different for iOS/Mac. [[CCConfiguration sharedConfiguration] graphicsAPI]; _framebuffer = [[CCFrameBufferObjectClass alloc] init]; } @@ -389,8 +386,6 @@ -(void) setView:(CC_VIEW *)view CGSize size = CCNSSizeToCGSize(self.view.bounds.size); #if __CC_PLATFORM_IOS CGFloat scale = self.view.layer.contentsScale ?: 1.0; -#elif __CC_PLATFORM_ANDROID - CGFloat scale = _view.contentScaleFactor; #else //self.view.wantsBestResolutionOpenGLSurface = YES; CGFloat scale = self.view.window.backingScaleFactor; diff --git a/cocos2d/CCDrawNode.m b/cocos2d/CCDrawNode.m index e523a2dc37d..0e11f7a68d7 100644 --- a/cocos2d/CCDrawNode.m +++ b/cocos2d/CCDrawNode.m @@ -46,17 +46,10 @@ @" cc_FragTexCoord1 = cc_TexCoord1;\n" @"}\n"; -#ifdef ANDROID // Many Android devices do NOT support GL_OES_standard_derivatives correctly -static NSString *CCDrawNodeFragmentShaderSource = - @"void main(){\n" - @" gl_FragColor = cc_FragColor*step(0.0, 1.0 - length(cc_FragTexCoord1));\n" - @"}\n"; -#else static NSString *CCDrawNodeFragmentShaderSource = @"void main(){\n" @" gl_FragColor = cc_FragColor*smoothstep(0.0, length(fwidth(cc_FragTexCoord1)), 1.0 - length(cc_FragTexCoord1));\n" @"}\n"; -#endif @implementation CCDrawNode { GLsizei _vertexCount, _vertexCapacity; diff --git a/cocos2d/CCLabelTTF.m b/cocos2d/CCLabelTTF.m index 36aedf8435f..71933657984 100644 --- a/cocos2d/CCLabelTTF.m +++ b/cocos2d/CCLabelTTF.m @@ -44,7 +44,7 @@ #import "Platforms/iOS/CCDirectorIOS.h" #endif -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS #import #endif @@ -974,9 +974,7 @@ + (NSString*) registerCustomTTF:(NSString *)fontFile NSString *fontName = nil; BOOL needsCGFontFailback = NO; -#if __CC_PLATFORM_ANDROID - needsCGFontFailback = YES; -#endif + if (needsCGFontFailback) { CFArrayRef descriptors = CTFontManagerCreateFontDescriptorsFromURL((__bridge CFURLRef)fontURL); if (!descriptors || CFArrayGetCount(descriptors)<1) { diff --git a/cocos2d/CCRendererGLSupport.m b/cocos2d/CCRendererGLSupport.m index 13f62e27959..50cfca69bd4 100644 --- a/cocos2d/CCRendererGLSupport.m +++ b/cocos2d/CCRendererGLSupport.m @@ -104,7 +104,6 @@ @implementation CCGraphicsBufferGLUnsynchronized { -(instancetype)initWithCapacity:(NSUInteger)capacity elementSize:(size_t)elementSize type:(CCGraphicsBufferType)type { if((self = [super initWithCapacity:capacity elementSize:elementSize type:type])){ - // TODO Does Android look up GL functions by name like Windows/Linux? _mapBufferRange = glMapBufferRangeEXT; _flushMappedBufferRange = glFlushMappedBufferRangeEXT; _unmapBuffer = glUnmapBufferOES; @@ -290,46 +289,6 @@ -(instancetype)initWithTexture:(CCTexture *)texture depthStencilFormat:(GLuint)d GLuint width = (GLuint)texture.pixelWidth; GLuint height = (GLuint)texture.pixelHeight; - -#if __CC_PLATFORM_ANDROID - - // Some android devices *only* support combined depth buffers (like all iOS devices), some android devices do not - // support combined depth buffers, thus we have to create a seperate stencil buffer - if(_depthStencilFormat) - { - //create and attach depth buffer - - if(![[CCConfiguration sharedConfiguration] supportsPackedDepthStencil]) - { - glGenRenderbuffers(1, &_depthRenderBuffer); - glBindRenderbuffer(GL_RENDERBUFFER, _depthRenderBuffer); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height); //GL_DEPTH_COMPONENT24_OES - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthRenderBuffer); - - // if depth format is the one with stencil part, bind same render buffer as stencil attachment - if(_depthStencilFormat == GL_DEPTH24_STENCIL8) - { - glGenRenderbuffers(1, &_stencilRenderBuffer); - glBindRenderbuffer(GL_RENDERBUFFER, _stencilRenderBuffer); - glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, width, height); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, _stencilRenderBuffer); - } - } - else - { - glGenRenderbuffers(1, &_depthRenderBuffer); - glBindRenderbuffer(GL_RENDERBUFFER, _depthRenderBuffer); - glRenderbufferStorage(GL_RENDERBUFFER, _depthStencilFormat, width, height); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthRenderBuffer); - - // if depth format is the one with stencil part, bind same render buffer as stencil attachment - if(_depthStencilFormat == GL_DEPTH24_STENCIL8){ - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, _depthRenderBuffer); - } - } - } - -#else if(depthStencilFormat){ //create and attach depth buffer @@ -343,8 +302,6 @@ -(instancetype)initWithTexture:(CCTexture *)texture depthStencilFormat:(GLuint)d glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, _depthRenderBuffer); } } - -#endif // check if it worked (probably worth doing :) ) NSAssert( glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE, @"Could not attach texture to framebuffer"); diff --git a/cocos2d/CCResponder.m b/cocos2d/CCResponder.m index e803615b28c..aa535d32ad1 100644 --- a/cocos2d/CCResponder.m +++ b/cocos2d/CCResponder.m @@ -76,7 +76,7 @@ - (BOOL)hitTestWithWorldPos:(CGPoint)pos #pragma mark - iOS // ----------------------------------------------------------------- -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS - (void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event { diff --git a/cocos2d/CCResponderManager.h b/cocos2d/CCResponderManager.h index 53d977f40b3..3669ca74df5 100644 --- a/cocos2d/CCResponderManager.h +++ b/cocos2d/CCResponderManager.h @@ -36,12 +36,10 @@ #import "CCTouchEvent.h" #if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) -#if !__CC_PLATFORM_ANDROID + #import #define RESPONDER UIResponder -#else -#define RESPONDER NSObject -#endif + #pragma mark - iOS Running Responder @@ -109,10 +107,6 @@ typedef NS_ENUM(NSInteger, CCMouseButton) @end -#else // __CC__PLATFORM_ANDROIDj - -#define RESPONDER NSObject - #endif #pragma mark - CCResponderManager diff --git a/cocos2d/CCResponderManager.m b/cocos2d/CCResponderManager.m index bfa7fa151a4..dcaca1ea868 100644 --- a/cocos2d/CCResponderManager.m +++ b/cocos2d/CCResponderManager.m @@ -224,7 +224,7 @@ - (NSArray *)nodesAtPoint:(CGPoint)pos // ----------------------------------------------------------------- //#if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS - (void)touchesBegan:(NSSet *)touches withEvent:(CCTouchEvent *)event { if (!_enabled) return; diff --git a/cocos2d/CCTexture.m b/cocos2d/CCTexture.m index f938ee777b7..a982fba086c 100644 --- a/cocos2d/CCTexture.m +++ b/cocos2d/CCTexture.m @@ -108,12 +108,6 @@ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE #endif -#if __CC_PLATFORM_ANDROID - #ifndef GL_BGRA - #define GL_BGRA 0x80E1 - #endif -#endif - //CLASS IMPLEMENTATIONS: // This class implements what will hopefully be a temporary replacement diff --git a/cocos2d/CCTextureCache.h b/cocos2d/CCTextureCache.h index 959e8066290..aacd40fe307 100644 --- a/cocos2d/CCTextureCache.h +++ b/cocos2d/CCTextureCache.h @@ -27,7 +27,7 @@ #import "ccMacros.h" -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS #import #endif diff --git a/cocos2d/CCTextureCache.m b/cocos2d/CCTextureCache.m index 9088df3b377..294ec66074c 100644 --- a/cocos2d/CCTextureCache.m +++ b/cocos2d/CCTextureCache.m @@ -94,10 +94,8 @@ -(id) init // Skip the GL context sharegroup code for Metal. if([CCConfiguration sharedConfiguration].graphicsAPI == CCGraphicsAPIMetal) return self; -#if !__CC_PLATFORM_ANDROID CCGLView *view = (CCGLView*)[[CCDirector sharedDirector] view]; NSAssert(view, @"Do not initialize the TextureCache before the Director"); -#endif #if __CC_PLATFORM_IOS _auxGLcontext = [[EAGLContext alloc] @@ -111,10 +109,8 @@ -(id) init _auxGLcontext = [[NSOpenGLContext alloc] initWithFormat:pf shareContext:share]; #endif // __CC_PLATFORM_MAC - -#if !__CC_PLATFORM_ANDROID + NSAssert( _auxGLcontext, @"TextureCache: Could not create EAGL context"); -#endif } @@ -138,10 +134,9 @@ - (NSString*) description -(void) dealloc { CCLOGINFO(@"cocos2d: deallocing %@", self); - -#if !__CC_PLATFORM_ANDROID + _auxGLcontext = nil; -#endif + sharedTextureCache = nil; // dispatch_release(_loadingQueue); @@ -307,23 +302,11 @@ -(CCTexture*) addImage: (NSString*) path if ( [lowerCase hasSuffix:@".pvr"] || [lowerCase hasSuffix:@".pvr.gz"] || [lowerCase hasSuffix:@".pvr.ccz"] ) tex = [self addPVRImage:path]; -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS else { -#if __CC_PLATFORM_IOS UIImage *image = [[UIImage alloc] initWithContentsOfFile:fullpath]; tex = [[CCTexture alloc] initWithCGImage:image.CGImage contentScale:contentScale]; -#else // Android - // TODO: add support for bmp - BOOL png = [lowerCase hasSuffix:@".png"]; - CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)[NSData dataWithContentsOfFile:fullpath]); - CGImageRef image = (png) ? CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault) : CGImageCreateWithJPEGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault) ; - tex = [[CCTexture alloc] initWithCGImage:image contentScale:contentScale]; - CGDataProviderRelease(imgDataProvider); - CGImageRelease(image); -#endif - - CCLOGINFO(@"Texture loaded: %@", path); diff --git a/cocos2d/CCTouch.h b/cocos2d/CCTouch.h index 9bdc7eacd8f..a842326e8d8 100644 --- a/cocos2d/CCTouch.h +++ b/cocos2d/CCTouch.h @@ -11,10 +11,7 @@ #if __CC_PLATFORM_IOS #import #define PlatformTouch UITouch -#elif __CC_PLATFORM_ANDROID -@class CCTouchAndroid; -#define PlatformTouch CCTouchAndroid // Note: Replace this with MotionEvent or some Android touch object -#else +#else #define PlatformTouch NSObject #endif @@ -37,7 +34,7 @@ typedef NS_ENUM (NSInteger, CCTouchPhase) { }; /** Thin wrapper around platform-specific touch events (ie [UITouch](https://developer.apple.com/library/ios/documentation/uikit/reference/UITouch_Class/index.html)). - CCTouch is platform independent version of the touch event objects sent by iOS, Android and OS X. + CCTouch is platform independent version of the touch event objects sent by iOS and OS X. @note You should never create instances of CCTouch. */ @interface CCTouch : NSObject @@ -63,8 +60,7 @@ typedef NS_ENUM (NSInteger, CCTouchPhase) { */ @property (nonatomic, strong) CCGLView *view; /** The associated platform-specific touch event (ie UITouch). - PlatformTouch is equivalent to UITouch on iOS, CCTouchAndroid on Android and NSObject on OS X. - @note The CCTouchAndroid class is not documented, it is just a subset of CCTouch. + PlatformTouch is equivalent to UITouch on iOS and NSObject on OS X. @since v3.2 and later */ @property (nonatomic, strong) PlatformTouch* uiTouch; diff --git a/cocos2d/CCTouch.m b/cocos2d/CCTouch.m index e278933042c..56f39ce0199 100644 --- a/cocos2d/CCTouch.m +++ b/cocos2d/CCTouch.m @@ -9,9 +9,6 @@ #import "cocos2d.h" #import "CCTouch.h" #import "CCDirector.h" -#if __CC_PLATFORM_ANDROID -#import "CCTouchAndroid.h" -#endif @implementation CCTouch diff --git a/cocos2d/CCTouchEvent.h b/cocos2d/CCTouchEvent.h index 7f54bbc4653..f4e7f70a340 100644 --- a/cocos2d/CCTouchEvent.h +++ b/cocos2d/CCTouchEvent.h @@ -15,7 +15,7 @@ /** Timestamp for this event. */ @property(nonatomic) NSTimeInterval timestamp; -/** A dictionary containing the current touches. The keys are `PlatformTouch` pointers (UITouch on iOS, CCTouchAndroid on Android, NSObject on Mac) +/** A dictionary containing the current touches. The keys are `PlatformTouch` pointers (UITouch on iOS, NSObject on Mac) and the values are CCTouch objects. @see CCTouch */ @property(nonatomic, readonly) NSMutableDictionary* allTouches; diff --git a/cocos2d/CCTouchEvent.m b/cocos2d/CCTouchEvent.m index bad75a4fd5f..f9b2d30ccf5 100644 --- a/cocos2d/CCTouchEvent.m +++ b/cocos2d/CCTouchEvent.m @@ -13,11 +13,6 @@ #if __CC_PLATFORM_IOS #import "Platforms/iOS/CCTouchIOS.h" #define CCTouch CCTouchIOS - -#elif __CC_PLATFORM_ANDROID -#import "Platforms/Android/CCTouchAndroid.h" -#define CCTouch CCTouchAndroid - #endif #ifndef __CC_TOUCH_MAX diff --git a/cocos2d/Platforms/CCGL.h b/cocos2d/Platforms/CCGL.h index 81563d01496..c1b1555bd3a 100644 --- a/cocos2d/Platforms/CCGL.h +++ b/cocos2d/Platforms/CCGL.h @@ -41,12 +41,6 @@ #import // needed for NSOpenGLView #import "Mac/CCGLView.h" -#elif __CC_PLATFORM_ANDROID -#define GL_GLEXT_PROTOTYPES 1 -#include // requires ndk r5 or newer -#include -#include -#import "Android/CCGLView.h" #endif #if DEBUG @@ -98,7 +92,7 @@ __attribute__((deprecated)) static const GLenum CC_BLEND_DST = GL_ONE_MINUS_SRC_ // iOS -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS #define glClearDepth glClearDepthf #define glDeleteVertexArrays glDeleteVertexArraysOES #define glGenVertexArrays glGenVertexArraysOES diff --git a/cocos2d/Platforms/CCNS.h b/cocos2d/Platforms/CCNS.h index 16d591f2c88..0456e23dd0a 100644 --- a/cocos2d/Platforms/CCNS.h +++ b/cocos2d/Platforms/CCNS.h @@ -41,9 +41,8 @@ //#define CCNSRectToCGRect //#define CCNSPointToCGPoint -//#elif __CC_PLATFORM_ANDROID -#if __CC_PLATFORM_ANDROID || __CC_PLATFORM_IOS +#if __CC_PLATFORM_IOS #if 1 //#ifndef __CC_CG_STRING_UTILS diff --git a/cocos2d/Platforms/iOS/CCGLView.h b/cocos2d/Platforms/iOS/CCGLView.h index d912281b634..be72dae11f0 100644 --- a/cocos2d/Platforms/iOS/CCGLView.h +++ b/cocos2d/Platforms/iOS/CCGLView.h @@ -90,7 +90,7 @@ Copyright (C) 2008 Apple Inc. All Rights Reserved. underneath the CCGLView. @note Setting the view non-opaque will only work if the pixelFormat is also set to `kEAGLColorFormatRGBA8` upon initialization. - @note This documentation is for the iOS version of the class. OS X and Android use specific variants of CCGLView which + @note This documentation is for the iOS version of the class. OS X use specific variants of CCGLView which inherit from other base classes (ie NSOpenGLView on OS X). Parameters: diff --git a/cocos2d/Support/CCFileUtils.h b/cocos2d/Support/CCFileUtils.h index 1d82620881f..e4e9eef7b95 100644 --- a/cocos2d/Support/CCFileUtils.h +++ b/cocos2d/Support/CCFileUtils.h @@ -181,7 +181,7 @@ typedef NS_ENUM(NSUInteger, CCFileUtilsSearchMode) { */ @property (nonatomic, readwrite, copy) NSMutableDictionary *filenameLookup; -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS /** The iPhone RetinaDisplay suffixes to load resources. By default it is "-hd" and "" in that order. @@ -343,7 +343,6 @@ typedef NS_ENUM(NSUInteger, CCFileUtilsSearchMode) { * you might need to load differerent resources for a given file in the different platforms. * Examples: * - In iPad mode: "image.png" -> "image.pvr" -> "/full/path/image-ipad.pvr" (in case the -ipad file exists) - * - In Android: "image.png" -> "image.png" -> "/full/path/image.png" * * @param filename Filename to get full path for. * @@ -366,7 +365,6 @@ typedef NS_ENUM(NSUInteger, CCFileUtilsSearchMode) { * you might need to load differerent resources for a given file in the different platforms. * Examples: * - In iPad mode: "image.png" -> "image.pvr" -> "/full/path/image-ipad.pvr" (in case the -ipad file exists) - * - In Android: "image.png" -> "image.png" -> "/full/path/image.png" * * @param filename Filename to get full path for. * @param contentScale scale factor @@ -389,7 +387,6 @@ typedef NS_ENUM(NSUInteger, CCFileUtilsSearchMode) { * you might need to load differerent resources for a given file in the different platforms. * Examples: * - On iOS: "sound.wav" -> "sound.caf" -> "/full/path/sound.caf" (in case the key dictionary says that "sound.wav" should be converted to "sound.caf") - * - On Android: "sound.wav" -> "sound.wav" -> "/full/path/sound.caf" (in case the key dictionary says that "sound.wav" should be converted to "sound.caf") * * @param key Key to get full path for. * diff --git a/cocos2d/Support/CCFileUtils.m b/cocos2d/Support/CCFileUtils.m index 626c323917d..73cf66dc868 100644 --- a/cocos2d/Support/CCFileUtils.m +++ b/cocos2d/Support/CCFileUtils.m @@ -155,7 +155,7 @@ -(id) init _filenameLookup = [[NSMutableDictionary alloc] initWithCapacity:10]; -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS _suffixesDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys: @"-ipad", CCFileUtilsSuffixiPad, @"-ipadhd", CCFileUtilsSuffixiPadHD, @@ -217,7 +217,7 @@ - (void) buildSearchResolutionsOrder NSInteger device = [[CCConfiguration sharedConfiguration] runningDevice]; [_searchResolutionsOrder removeAllObjects]; -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS if (device == CCDeviceiPadRetinaDisplay) { [_searchResolutionsOrder addObject:CCFileUtilsSuffixiPadHD]; @@ -399,7 +399,7 @@ -(CGFloat) contentScaleForKey:(NSString*)k inDictionary:(NSDictionary *)dictiona NSString *value = [dictionary objectForKey:key]; if( [value isEqualToString:k] ) { -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS // XXX Add this in a Dictionary if( [key isEqualToString:CCFileUtilsSuffixiPad] ) return 1.0*_iPadContentScaleFactor; @@ -685,7 +685,7 @@ -(void) setEnableiPhoneResourcesOniPad:(BOOL)enable } } -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS -(void) setiPadRetinaDisplaySuffix:(NSString *)suffix { diff --git a/cocos2d/Support/CGPointExtension.h b/cocos2d/Support/CGPointExtension.h index 412bed8bc16..19b02cf6f07 100644 --- a/cocos2d/Support/CGPointExtension.h +++ b/cocos2d/Support/CGPointExtension.h @@ -46,7 +46,7 @@ #import "ccMacros.h" -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS #import #elif __CC_PLATFORM_MAC #import diff --git a/cocos2d/Support/NSAttributedString+CCAdditions.m b/cocos2d/Support/NSAttributedString+CCAdditions.m index abf91743243..ece14f4be6e 100644 --- a/cocos2d/Support/NSAttributedString+CCAdditions.m +++ b/cocos2d/Support/NSAttributedString+CCAdditions.m @@ -77,7 +77,7 @@ BOOL NSAttributedStringHasAttribute(NSAttributedString *attrString, NSString*att CGFloat scale = [CCDirector sharedDirector].contentScaleFactor; -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS // Update font size [copy enumerateAttribute:(id)kCTFontAttributeName inRange:fullRange options:0 usingBlock:^(id value, NSRange range, BOOL* stop){ @@ -108,20 +108,6 @@ BOOL NSAttributedStringHasAttribute(NSAttributedString *attrString, NSString*att } }]; #endif -#if 0 /*__CC_PLATFORM_ANDROID_FIXME*/ - // Update shadows - [copy enumerateAttribute:NSShadowAttributeName inRange:fullRange options:0 usingBlock:^(id value, NSRange range, BOOL* stop){ - if (value) - { - NSShadow* shadow = value; - [copy removeAttribute:NSShadowAttributeName range:range]; - shadow.shadowBlurRadius = shadow.shadowBlurRadius * scale; - CGSize offset = shadow.shadowOffset; - shadow.shadowOffset = CGSizeMake(offset.width * scale, offset.height * scale); - [copy addAttribute:NSShadowAttributeName value:shadow range:range]; - } - }]; -#endif return copy; } @@ -130,7 +116,7 @@ float NSAttributedStringSingleFontSize(NSAttributedString *attrString){ __block BOOL foundValue = NO; __block BOOL singleValue = YES; __block float fontSize = 0; -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS [attrString enumerateAttribute:(id)kCTFontAttributeName inRange:fullRange options:0 usingBlock:^(id value, NSRange range, BOOL* stop){ if (value) { @@ -177,7 +163,7 @@ float NSAttributedStringSingleFontSize(NSAttributedString *attrString){ NSAttributedString *NSAttributedStringCopyWithNewFontSize(NSAttributedString *attrString, float size){ NSMutableAttributedString* copy = [attrString mutableCopy]; -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS CFTypeRef value = (__bridge CTFontRef)([attrString attribute:(id)kCTFontAttributeName atIndex:0 effectiveRange:NULL]); NSCAssert((CFGetTypeID(value)==CTFontGetTypeID()), @"CFTypeID does not match"); CTFontRef font = (CTFontRef)value; @@ -198,12 +184,6 @@ CGColorRef CGColorCreateWithPlatformSpecificColor(id platformColor) { return CGColorRetain(((UIColor *)platformColor).CGColor); #elif __CC_PLATFORM_MAC return CGColorRetain(((NSColor *)platformColor).CGColor); -#elif __CC_PLATFORM_ANDROID_ANDROID_COLOR - int32_t androidColor = (int32_t)[(NSNumber *)platformColor intValue]; - return CGColorCreateGenericRGB([AndroidColor redWithColor:androidColor]/255.0, - [AndroidColor greenWithColor:androidColor]/255.0, - [AndroidColor blueWithColor:androidColor]/255.0, - [AndroidColor alphaWithColor:androidColor]/255.0); #else return NULL; #endif @@ -219,7 +199,6 @@ CTFontRef CTFontCreateWithPlatformSpecificFont(id font) { #endif } -#if !__CC_PLATFORM_ANDROID static NSTextAlignment NSTextAlignmentFromCCTextAlignment(CCTextAlignment ccAligment) { #if __CC_PLATFORM_IOS switch (ccAligment) { @@ -247,15 +226,13 @@ static NSTextAlignment NSTextAlignmentFromCCTextAlignment(CCTextAlignment ccAlig return 0; #endif - } -#endif BOOL NSMutableAttributedStringFixPlatformSpecificAttributes(NSMutableAttributedString* string, CCColor* defaultColor, NSString* defaultFontName, CGFloat defaultFontSize, CCTextAlignment defaultHorizontalAlignment){ NSRange fullRange = NSMakeRange(0, string.length); BOOL useFullColor = NO; -#if !__CC_PLATFORM_ANDROID + if (NSAttributedStringHasAttribute(string, NSForegroundColorAttributeName)) { CGColorRef color = CGColorCreateWithPlatformSpecificColor([string attribute:NSForegroundColorAttributeName atIndex:0 effectiveRange:NULL]); [string addAttribute:(id)kCTForegroundColorFromContextAttributeName value:(__bridge id)color range:fullRange]; @@ -279,51 +256,10 @@ BOOL NSMutableAttributedStringFixPlatformSpecificAttributes(NSMutableAttributedS NSMutableParagraphStyle* style = [[NSMutableParagraphStyle alloc] init]; style.alignment = NSTextAlignmentFromCCTextAlignment(defaultHorizontalAlignment); NSMutableAttributedStringSetDefaultAttribute(string, NSParagraphStyleAttributeName, style); - - - -#else - // You betcha not to have those attributes on Android, they are not supported - assert(!NSAttributedStringHasAttribute(string, @"NSParagraphStyle")); - assert(!NSAttributedStringHasAttribute(string, @"NSFont")); - assert(!NSAttributedStringHasAttribute(string, @"NSForegroundColor")); - - // Shadow (No CT alternative) - if (NSAttributedStringHasAttribute(string, @"NSShadow")) - { - useFullColor = YES; - } - - - CTTextAlignment alignment; - if (defaultHorizontalAlignment == CCTextAlignmentLeft) alignment = kCTTextAlignmentLeft; - else if (defaultHorizontalAlignment == CCTextAlignmentCenter) alignment = kCTTextAlignmentCenter; - else if (defaultHorizontalAlignment == CCTextAlignmentRight) alignment = kCTTextAlignmentRight; - - - CTParagraphStyleSetting paragraphStyleSettings[] = { - { - .spec = kCTParagraphStyleSpecifierAlignment, - .valueSize = sizeof(typeof(alignment)), - .value = &alignment - }, - }; - - CTParagraphStyleRef style = CTParagraphStyleCreate(paragraphStyleSettings, sizeof(paragraphStyleSettings) / sizeof(CTParagraphStyleSetting)); - NSMutableAttributedStringSetDefaultAttribute(string, (NSString *)kCTParagraphStyleAttributeName, (__bridge id)style); - - CFRelease(style); - - -#endif - - - -#if !__CC_PLATFORM_ANDROID + + NSString *foregroundColorAttributeName = NSForegroundColorAttributeName; -#else - NSString *foregroundColorAttributeName = (__bridge id)kCTForegroundColorAttributeName; -#endif + BOOL colorChanged = NSMutableAttributedStringSetDefaultAttribute(string, foregroundColorAttributeName, (__bridge id)defaultColor.CGColor); useFullColor |= (![defaultColor isEqualToColor:[CCColor whiteColor]]) && colorChanged; diff --git a/cocos2d/ccMacros.h b/cocos2d/ccMacros.h index f1481d6a7bc..65dfef8ffd2 100644 --- a/cocos2d/ccMacros.h +++ b/cocos2d/ccMacros.h @@ -39,22 +39,14 @@ cocos2d helper macros */ -#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && !defined(COCOS2D_ANDROID) +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) #define __CC_PLATFORM_IOS 1 #define __CC_PLATFORM_MAC 0 -#define __CC_PLATFORM_ANDROID_FIXME 1 -#elif defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && !defined(COCOS2D_ANDROID) +#elif defined(__MAC_OS_X_VERSION_MAX_ALLOWED) #define __CC_PLATFORM_MAC 1 #define __CC_PLATFORM_IOS 0 #endif -#ifdef COCOS2D_ANDROID -#define __CC_PLATFORM_MAC 0 -#define __CC_PLATFORM_IOS 0 -#define __CC_PLATFORM_ANDROID 1 -#define __CC_PLATFORM_ANDROID_FIXME 1 -#endif - // Metal is only supported on iOS devices (currently does not include the simulator) and on iOS 8 and greater. #if __CC_PLATFORM_IOS && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0 #define __CC_METAL_SUPPORTED_AND_ENABLED (CC_ENABLE_METAL_RENDERING && !TARGET_IPHONE_SIMULATOR) diff --git a/cocos2d/ccTypes.h b/cocos2d/ccTypes.h index 6f08b955dee..db0db5fae7b 100644 --- a/cocos2d/ccTypes.h +++ b/cocos2d/ccTypes.h @@ -33,7 +33,7 @@ #import #import "ccMacros.h" -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS #import // CGPoint #endif @@ -41,18 +41,6 @@ #import #endif -#if __CC_PLATFORM_ANDROID -#import "CCMathTypesAndroid.h" - -#import "CCMatrix3.h" -#import "CCMatrix4.h" -#import "CCVector2.h" -#import "CCVector3.h" -#import "CCVector4.h" -#import "CCQuaternion.h" - -#import "CCMathUtilsAndroid.h" -#endif #import "Platforms/CCGL.h" diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index afd4f69f65e..68c7a1ca089 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -121,14 +121,6 @@ #import "Platforms/Mac/CCDirectorMac.h" #import "Platforms/Mac/CCWindow.h" #import "Platforms/Mac/NSEvent+CC.h" - -#elif __CC_PLATFORM_ANDROID -#import "Platforms/Android/CCActivity.h" -#import "Platforms/Android/CCGLView.h" -#import "Platforms/Android/CCDirectorAndroid.h" - -#import -#import #endif // From afef57ab228f0e9fc31b8f74b03ef5dca0404101 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 13 Feb 2016 02:18:51 +0300 Subject: [PATCH 23/94] cocos2d-core compiles to TVOS now. Temporary solution --- cocos2d-tests-ios copy-Info.plist | 69 +++ cocos2d-tests.xcodeproj/project.pbxproj | 482 +++++++++++++++++ .../ios/Resources/Launch Screen.xib | 4 +- cocos2d.xcodeproj/project.pbxproj | 486 ++++++++++++++++++ cocos2d/CCConfiguration.m | 9 + cocos2d/CCProtocols.h | 3 +- cocos2d/Platforms/iOS/CCAppDelegate.m | 6 +- cocos2d/Platforms/iOS/CCDirectorIOS.m | 2 + cocos2d/Platforms/iOS/CCGLView.m | 3 +- 9 files changed, 1057 insertions(+), 7 deletions(-) create mode 100644 cocos2d-tests-ios copy-Info.plist diff --git a/cocos2d-tests-ios copy-Info.plist b/cocos2d-tests-ios copy-Info.plist new file mode 100644 index 00000000000..5505926571e --- /dev/null +++ b/cocos2d-tests-ios copy-Info.plist @@ -0,0 +1,69 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIconFiles + + Icon.png + Icon@2x.png + Icon-72.png + Icon-Small-50.png + Icon-Small.png + Icon-Small@2x.png + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIAppFonts + + Schwarzwald Regular.ttf + Abberancy.ttf + Abduction.ttf + Paint Boy.ttf + + UILaunchStoryboardName + Launch Screen + UIPrerenderedIcon + + UIRequiredDeviceCapabilities + + accelerometer + + opengles-2 + + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index b177ede3aa8..d2cea083b14 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -136,6 +136,150 @@ 089949FE1C67FAB000ECC92C /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */; }; 089949FF1C67FAB000ECC92C /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */; }; 08994A001C67FAB000ECC92C /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */; }; + 08F4A9F81C6E9776004DAAF7 /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */; }; + 08F4A9F91C6E9776004DAAF7 /* TestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = B71B087B17EA5B490082EBC0 /* TestBase.m */; }; + 08F4A9FA1C6E9776004DAAF7 /* SpritePerformanceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D3870C5F18B440150033D885 /* SpritePerformanceTest.m */; }; + 08F4A9FE1C6E9776004DAAF7 /* CCTiledMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782041C66669300C3817B /* CCTiledMapLayer.m */; }; + 08F4A9FF1C6E9776004DAAF7 /* SSZipArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949EB1C67F97D00ECC92C /* SSZipArchive.m */; }; + 08F4AA031C6E9776004DAAF7 /* CCScrollViewTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B71B088117EA5B6A0082EBC0 /* CCScrollViewTest.m */; }; + 08F4AA041C6E9776004DAAF7 /* CCTextFieldTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE697818186D5200B983FE /* CCTextFieldTest.m */; }; + 08F4AA051C6E9776004DAAF7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E261FF17E7D321007067F0 /* AppDelegate.m */; }; + 08F4AA061C6E9776004DAAF7 /* CCCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E28FE19197FCE4500F78989 /* CCCacheTest.m */; }; + 08F4AA081C6E9776004DAAF7 /* CCTextureCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B77060AA1832E3310043CC67 /* CCTextureCacheTest.m */; }; + 08F4AA0A1C6E9776004DAAF7 /* CCPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949891C67F40000ECC92C /* CCPackage.m */; }; + 08F4AA0C1C6E9776004DAAF7 /* PositioningTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A664A4EE18A3D9B8006184B8 /* PositioningTest.m */; }; + 08F4AA0D1C6E9776004DAAF7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E2621A17E7D370007067F0 /* main.m */; }; + 08F4AA101C6E9776004DAAF7 /* CCSprite9SliceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69801818760700B983FE /* CCSprite9SliceTest.m */; }; + 08F4AA111C6E9776004DAAF7 /* CCSliderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A27181B075E00B983FE /* CCSliderTest.m */; }; + 08F4AA121C6E9776004DAAF7 /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949731C67F2D600ECC92C /* CCParticleExamples.m */; }; + 08F4AA131C6E9776004DAAF7 /* CCTiledMapObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782061C66669300C3817B /* CCTiledMapObjectGroup.m */; }; + 08F4AA141C6E9776004DAAF7 /* CCPackageInstaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949981C67F40000ECC92C /* CCPackageInstaller.m */; }; + 08F4AA161C6E9776004DAAF7 /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949631C67F10A00ECC92C /* CCMotionStreak.m */; }; + 08F4AA181C6E9776004DAAF7 /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782081C66669300C3817B /* CCTMXXMLParser.m */; }; + 08F4AA191C6E9776004DAAF7 /* CCTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 084782011C66669300C3817B /* CCTiledMap.m */; }; + 08F4AA1A1C6E9776004DAAF7 /* CCPackageHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949961C67F40000ECC92C /* CCPackageHelper.m */; }; + 08F4AA1B1C6E9776004DAAF7 /* VertexZTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A6167B92189A7D4D0044D391 /* VertexZTest.m */; }; + 08F4AA1C1C6E9776004DAAF7 /* CCResponderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B772F69E1811C8D9005C069B /* CCResponderTest.m */; }; + 08F4AA1D1C6E9776004DAAF7 /* CCParticleBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949711C67F2D600ECC92C /* CCParticleBatchNode.m */; }; + 08F4AA1E1C6E9776004DAAF7 /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949751C67F2D600ECC92C /* CCParticleSystem.m */; }; + 08F4AA1F1C6E9776004DAAF7 /* CCPackageDownloadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949931C67F40000ECC92C /* CCPackageDownloadManager.m */; }; + 08F4AA201C6E9776004DAAF7 /* CCEffectsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D2B4894B1917EE6700C3443A /* CCEffectsTest.m */; }; + 08F4AA211C6E9776004DAAF7 /* NSMutableDictionary+WeakReferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 084B953C1C6BA1DD003A580D /* NSMutableDictionary+WeakReferences.m */; }; + 08F4AA231C6E9776004DAAF7 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E21C67F97D00ECC92C /* ioapi.c */; }; + 08F4AA241C6E9776004DAAF7 /* CCLayoutTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69CE1819D82300B983FE /* CCLayoutTest.m */; }; + 08F4AA251C6E9776004DAAF7 /* CCLabelTTFTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 758A6C701844011E00D1A8D2 /* CCLabelTTFTest.m */; }; + 08F4AA261C6E9776004DAAF7 /* CCPackageConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899498E1C67F40000ECC92C /* CCPackageConstants.m */; }; + 08F4AA271C6E9776004DAAF7 /* CCPackageCocos2dEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899498C1C67F40000ECC92C /* CCPackageCocos2dEnabler.m */; }; + 08F4AA281C6E9776004DAAF7 /* CCPackageDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949901C67F40000ECC92C /* CCPackageDownload.m */; }; + 08F4AA291C6E9776004DAAF7 /* ParallaxTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 758A690E1843E18700D1A8D2 /* ParallaxTest.m */; }; + 08F4AA2B1C6E9776004DAAF7 /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E41C67F97D00ECC92C /* mztools.c */; }; + 08F4AA2C1C6E9776004DAAF7 /* TextureTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7587BDB2185A0A6900EEEFDE /* TextureTest.m */; }; + 08F4AA2D1C6E9776004DAAF7 /* CCSchedulerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C9C866188078B900C58900 /* CCSchedulerTest.m */; }; + 08F4AA341C6E9776004DAAF7 /* ColorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7587BDB6185A64AD00EEEFDE /* ColorTest.m */; }; + 08F4AA371C6E9776004DAAF7 /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 089949781C67F2D600ECC92C /* CCParticleSystemBase.m */; }; + 08F4AA381C6E9776004DAAF7 /* TilemapTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D340E10D185660BE006E605C /* TilemapTest.m */; }; + 08F4AA391C6E9776004DAAF7 /* MainMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E2622017E7D3B2007067F0 /* MainMenu.m */; }; + 08F4AA3A1C6E9776004DAAF7 /* CCRendererTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D3D6CF5E18BD5F0500A51531 /* CCRendererTest.m */; }; + 08F4AA3B1C6E9776004DAAF7 /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899496B1C67F1BE00ECC92C /* CCClippingNode.m */; }; + 08F4AA3C1C6E9776004DAAF7 /* CCPackageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499A1C67F40000ECC92C /* CCPackageManager.m */; }; + 08F4AA3D1C6E9776004DAAF7 /* CCTransitionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B70AFC2F180F2D7400516435 /* CCTransitionTest.m */; }; + 08F4AA3E1C6E9776004DAAF7 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E61C67F97D00ECC92C /* unzip.c */; }; + 08F4AA3F1C6E9776004DAAF7 /* ParticleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 758A6C7A18440D5C00D1A8D2 /* ParticleTest.m */; }; + 08F4AA401C6E9776004DAAF7 /* CCTableViewTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B7C6238B17ECDF6A00928F91 /* CCTableViewTest.m */; }; + 08F4AA411C6E9776004DAAF7 /* CCPackageUnzipper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0899499F1C67F40000ECC92C /* CCPackageUnzipper.m */; }; + 08F4AA421C6E9776004DAAF7 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 089949E81C67F97D00ECC92C /* zip.c */; }; + 08F4AA451C6E9776004DAAF7 /* CCPhysicsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D340E10C185660BE006E605C /* CCPhysicsTest.m */; }; + 08F4AA471C6E9776004DAAF7 /* CCBMFontTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D3B2A7E4187DD60B00406C5A /* CCBMFontTest.m */; }; + 08F4AA4A1C6E9776004DAAF7 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3F52DE21A51FE2C00A18F54 /* Metal.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 08F4AA4C1C6E9776004DAAF7 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D34CD3C118ABEE9C00D8E537 /* GLKit.framework */; }; + 08F4AA4D1C6E9776004DAAF7 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E1E1954F7E900ADC03D /* OpenGLES.framework */; }; + 08F4AA4E1C6E9776004DAAF7 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E171954F68200ADC03D /* UIKit.framework */; }; + 08F4AA4F1C6E9776004DAAF7 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2604B17E7D278007067F0 /* QuartzCore.framework */; }; + 08F4AA501C6E9776004DAAF7 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2604F17E7D278007067F0 /* OpenAL.framework */; }; + 08F4AA511C6E9776004DAAF7 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605117E7D278007067F0 /* AudioToolbox.framework */; }; + 08F4AA521C6E9776004DAAF7 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605317E7D278007067F0 /* AVFoundation.framework */; }; + 08F4AA531C6E9776004DAAF7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605717E7D278007067F0 /* Foundation.framework */; }; + 08F4AA541C6E9776004DAAF7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605917E7D278007067F0 /* CoreGraphics.framework */; }; + 08F4AA551C6E9776004DAAF7 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605B17E7D278007067F0 /* CoreText.framework */; }; + 08F4AA581C6E9776004DAAF7 /* CCRendererSharedTypes.h in Resources */ = {isa = PBXBuildFile; fileRef = D3269DE919CCC11800406282 /* CCRendererSharedTypes.h */; }; + 08F4AA591C6E9776004DAAF7 /* bitmapFontTest.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E01977100000261299 /* bitmapFontTest.fnt */; }; + 08F4AA5A1C6E9776004DAAF7 /* bitmapFontTest5.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E81977100000261299 /* bitmapFontTest5.png */; }; + 08F4AA5B1C6E9776004DAAF7 /* TileMaps in Resources */ = {isa = PBXBuildFile; fileRef = 758A6C6A1843E5BE00D1A8D2 /* TileMaps */; }; + 08F4AA5C1C6E9776004DAAF7 /* Images in Resources */ = {isa = PBXBuildFile; fileRef = 758A6C6B1843E5C500D1A8D2 /* Images */; }; + 08F4AA5D1C6E9776004DAAF7 /* Sounds in Resources */ = {isa = PBXBuildFile; fileRef = 75F76496185A831B00E2FAFE /* Sounds */; }; + 08F4AA5E1C6E9776004DAAF7 /* bitmapFontTest4.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E61977100000261299 /* bitmapFontTest4.png */; }; + 08F4AA5F1C6E9776004DAAF7 /* font-issue1343.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8EE1977100000261299 /* font-issue1343.png */; }; + 08F4AA601C6E9776004DAAF7 /* font-issue1343.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8ED1977100000261299 /* font-issue1343.fnt */; }; + 08F4AA611C6E9776004DAAF7 /* RobotoSlab-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE90A1977100000261299 /* RobotoSlab-Regular.ttf */; }; + 08F4AA621C6E9776004DAAF7 /* Particles in Resources */ = {isa = PBXBuildFile; fileRef = 758A6C7F184410EE00D1A8D2 /* Particles */; }; + 08F4AA631C6E9776004DAAF7 /* A Damn Mess.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8D81977100000261299 /* A Damn Mess.ttf */; }; + 08F4AA641C6E9776004DAAF7 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620217E7D34D007067F0 /* Default-568h@2x.png */; }; + 08F4AA651C6E9776004DAAF7 /* helvetica-geneva-32.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8FA1977100000261299 /* helvetica-geneva-32.png */; }; + 08F4AA661C6E9776004DAAF7 /* bitmapFontTest2.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E21977100000261299 /* bitmapFontTest2.fnt */; }; + 08F4AA671C6E9776004DAAF7 /* Default-Landscape~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620317E7D34D007067F0 /* Default-Landscape~ipad.png */; }; + 08F4AA681C6E9776004DAAF7 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620417E7D34D007067F0 /* Default.png */; }; + 08F4AA691C6E9776004DAAF7 /* Paint Boy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9071977100000261299 /* Paint Boy.ttf */; }; + 08F4AA6A1C6E9776004DAAF7 /* ThisFontIsAbdFont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8DA1977100000261299 /* ThisFontIsAbdFont.ttf */; }; + 08F4AA6B1C6E9776004DAAF7 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620517E7D34D007067F0 /* Default@2x.png */; }; + 08F4AA6C1C6E9776004DAAF7 /* markerFelt-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9041977100000261299 /* markerFelt-hd.png */; }; + 08F4AA6D1C6E9776004DAAF7 /* markerFelt-hd.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9031977100000261299 /* markerFelt-hd.fnt */; }; + 08F4AA6E1C6E9776004DAAF7 /* futura-48.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F71977100000261299 /* futura-48.png */; }; + 08F4AA6F1C6E9776004DAAF7 /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620617E7D34D007067F0 /* Icon-72.png */; }; + 08F4AA701C6E9776004DAAF7 /* font-issue1343-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8EC1977100000261299 /* font-issue1343-hd.png */; }; + 08F4AA711C6E9776004DAAF7 /* futura-48.GlyphProject in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F61977100000261299 /* futura-48.GlyphProject */; }; + 08F4AA721C6E9776004DAAF7 /* Icon-Small-50.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620717E7D34D007067F0 /* Icon-Small-50.png */; }; + 08F4AA731C6E9776004DAAF7 /* konqa32-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8FC1977100000261299 /* konqa32-hd.png */; }; + 08F4AA741C6E9776004DAAF7 /* arial-unicode-26.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8DB1977100000261299 /* arial-unicode-26.fnt */; }; + 08F4AA751C6E9776004DAAF7 /* Icon-Small.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620817E7D34D007067F0 /* Icon-Small.png */; }; + 08F4AA761C6E9776004DAAF7 /* konqa32-hd.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8FB1977100000261299 /* konqa32-hd.fnt */; }; + 08F4AA771C6E9776004DAAF7 /* larabie-16.plist in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9011977100000261299 /* larabie-16.plist */; }; + 08F4AA781C6E9776004DAAF7 /* larabie-16-hd.plist in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8FF1977100000261299 /* larabie-16-hd.plist */; }; + 08F4AA791C6E9776004DAAF7 /* bitmapFontTest3.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E31977100000261299 /* bitmapFontTest3.fnt */; }; + 08F4AA7A1C6E9776004DAAF7 /* bitmapFontTest5.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E71977100000261299 /* bitmapFontTest5.fnt */; }; + 08F4AA7B1C6E9776004DAAF7 /* font-issue1343-hd.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8EB1977100000261299 /* font-issue1343-hd.fnt */; }; + 08F4AA7C1C6E9776004DAAF7 /* fps_images-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F01977100000261299 /* fps_images-hd.png */; }; + 08F4AA7D1C6E9776004DAAF7 /* arial16.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8DF1977100000261299 /* arial16.png */; }; + 08F4AA7E1C6E9776004DAAF7 /* RobotoSlab-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9081977100000261299 /* RobotoSlab-Bold.ttf */; }; + 08F4AA7F1C6E9776004DAAF7 /* RobotoSlab-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE90B1977100000261299 /* RobotoSlab-Thin.ttf */; }; + 08F4AA801C6E9776004DAAF7 /* bitmapFontTest3.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E41977100000261299 /* bitmapFontTest3.png */; }; + 08F4AA811C6E9776004DAAF7 /* RobotoSlab-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9091977100000261299 /* RobotoSlab-Light.ttf */; }; + 08F4AA821C6E9776004DAAF7 /* Schwarzwald Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE90C1977100000261299 /* Schwarzwald Regular.ttf */; }; + 08F4AA831C6E9776004DAAF7 /* larabie-16-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9001977100000261299 /* larabie-16-hd.png */; }; + 08F4AA841C6E9776004DAAF7 /* futura-48.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F51977100000261299 /* futura-48.fnt */; }; + 08F4AA851C6E9776004DAAF7 /* Resources-shared in Resources */ = {isa = PBXBuildFile; fileRef = B7C6237517EA695100928F91 /* Resources-shared */; }; + 08F4AA861C6E9776004DAAF7 /* tuffy_bold_italic-charmap-hd.plist in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE90E1977100000261299 /* tuffy_bold_italic-charmap-hd.plist */; }; + 08F4AA871C6E9776004DAAF7 /* konqa32.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8FE1977100000261299 /* konqa32.png */; }; + 08F4AA881C6E9776004DAAF7 /* helvetica-32.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F91977100000261299 /* helvetica-32.fnt */; }; + 08F4AA891C6E9776004DAAF7 /* arial-unicode-26.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8DD1977100000261299 /* arial-unicode-26.png */; }; + 08F4AA8A1C6E9776004DAAF7 /* Icon-Small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620917E7D34D007067F0 /* Icon-Small@2x.png */; }; + 08F4AA8B1C6E9776004DAAF7 /* Scissor Cuts.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE90D1977100000261299 /* Scissor Cuts.ttf */; }; + 08F4AA8C1C6E9776004DAAF7 /* MetalShaders in Resources */ = {isa = PBXBuildFile; fileRef = D3E1842A19E861FC00A08B01 /* MetalShaders */; }; + 08F4AA8D1C6E9776004DAAF7 /* bitmapFontTest.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E11977100000261299 /* bitmapFontTest.png */; }; + 08F4AA8E1C6E9776004DAAF7 /* boundsTestFont.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8EA1977100000261299 /* boundsTestFont.png */; }; + 08F4AA8F1C6E9776004DAAF7 /* tuffy_bold_italic-charmap.plist in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE90F1977100000261299 /* tuffy_bold_italic-charmap.plist */; }; + 08F4AA901C6E9776004DAAF7 /* fps_images.GlyphProject in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F21977100000261299 /* fps_images.GlyphProject */; }; + 08F4AA911C6E9776004DAAF7 /* Abberancy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8D91977100000261299 /* Abberancy.ttf */; }; + 08F4AA921C6E9776004DAAF7 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620A17E7D34D007067F0 /* Icon.png */; }; + 08F4AA931C6E9776004DAAF7 /* bitmapFontTest4.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E51977100000261299 /* bitmapFontTest4.fnt */; }; + 08F4AA941C6E9776004DAAF7 /* west_england-64.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9121977100000261299 /* west_england-64.png */; }; + 08F4AA951C6E9776004DAAF7 /* arial16.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8DE1977100000261299 /* arial16.fnt */; }; + 08F4AA961C6E9776004DAAF7 /* west_england-64.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9111977100000261299 /* west_england-64.fnt */; }; + 08F4AA971C6E9776004DAAF7 /* konqa32.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8FD1977100000261299 /* konqa32.fnt */; }; + 08F4AA981C6E9776004DAAF7 /* Music in Resources */ = {isa = PBXBuildFile; fileRef = D2D59896198747DE00BDAF25 /* Music */; }; + 08F4AA991C6E9776004DAAF7 /* markerFelt.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9061977100000261299 /* markerFelt.png */; }; + 08F4AA9A1C6E9776004DAAF7 /* geneva-32.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F81977100000261299 /* geneva-32.fnt */; }; + 08F4AA9B1C6E9776004DAAF7 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620B17E7D34D007067F0 /* Icon@2x.png */; }; + 08F4AA9C1C6E9776004DAAF7 /* fps_images-ipadhd.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F11977100000261299 /* fps_images-ipadhd.png */; }; + 08F4AA9E1C6E9776004DAAF7 /* tuffy_bold_italic-charmap.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9101977100000261299 /* tuffy_bold_italic-charmap.png */; }; + 08F4AA9F1C6E9776004DAAF7 /* fps_images-hd.plist in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8EF1977100000261299 /* fps_images-hd.plist */; }; + 08F4AAA01C6E9776004DAAF7 /* fps_images.plist in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F31977100000261299 /* fps_images.plist */; }; + 08F4AAA11C6E9776004DAAF7 /* arial-unicode-26.GlyphProject in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8DC1977100000261299 /* arial-unicode-26.GlyphProject */; }; + 08F4AAA21C6E9776004DAAF7 /* markerFelt.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9051977100000261299 /* markerFelt.fnt */; }; + 08F4AAA31C6E9776004DAAF7 /* boundsTestFont.fnt in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8E91977100000261299 /* boundsTestFont.fnt */; }; + 08F4AAA41C6E9776004DAAF7 /* larabie-16.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE9021977100000261299 /* larabie-16.png */; }; + 08F4AAA51C6E9776004DAAF7 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = B7E2620D17E7D34D007067F0 /* iTunesArtwork */; }; + 08F4AAA61C6E9776004DAAF7 /* fps_images.png in Resources */ = {isa = PBXBuildFile; fileRef = D4AFE8F41977100000261299 /* fps_images.png */; }; + 08F4AB6B1C6E98D3004DAAF7 /* libcocos2d-tvos.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 08F4AB6A1C6E98CD004DAAF7 /* libcocos2d-tvos.a */; }; 0E28FE1A197FCE4500F78989 /* CCCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E28FE19197FCE4500F78989 /* CCCacheTest.m */; }; 75556A04185636F100ED1B0F /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75556A03185636F100ED1B0F /* XCTest.framework */; }; 75556A05185636F100ED1B0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7E2605717E7D278007067F0 /* Foundation.framework */; }; @@ -392,6 +536,20 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 08F4A9F61C6E9776004DAAF7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3763BB019E72F85006C050D /* cocos2d.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5018F24C0DFDEAC400C013A5; + remoteInfo = "cocos2d-ios"; + }; + 08F4AB691C6E98CD004DAAF7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3763BB019E72F85006C050D /* cocos2d.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 08F4AB671C6E98A1004DAAF7; + remoteInfo = "cocos2d-tvos"; + }; 0E1D2C9B1B53AA6A00EB2D29 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D3763BB019E72F85006C050D /* cocos2d.xcodeproj */; @@ -566,6 +724,8 @@ 089949EB1C67F97D00ECC92C /* SSZipArchive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SSZipArchive.m; path = external/SSZipArchive/SSZipArchive/SSZipArchive.m; sourceTree = SOURCE_ROOT; }; 089949FC1C67FAB000ECC92C /* CCParallaxNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParallaxNode.h; sourceTree = ""; }; 089949FD1C67FAB000ECC92C /* CCParallaxNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParallaxNode.m; sourceTree = ""; }; + 08F4AAAA1C6E9776004DAAF7 /* cocos2d-tests-tvos.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "cocos2d-tests-tvos.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 08F4AAAD1C6E9776004DAAF7 /* cocos2d-tests-ios copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "cocos2d-tests-ios copy-Info.plist"; path = "/Users/s1ddok/Documents/projects/cc3.5/cocos2d-objc/cocos2d-tests-ios copy-Info.plist"; sourceTree = ""; }; 0E28FE19197FCE4500F78989 /* CCCacheTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCCacheTest.m; path = "cocos2d-ui-tests/tests/CCCacheTest.m"; sourceTree = SOURCE_ROOT; }; 755569E31856361100ED1B0F /* CCFileUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtilTests.m; sourceTree = ""; }; 755569E41856361100ED1B0F /* CCNodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNodeTests.m; sourceTree = ""; }; @@ -737,6 +897,25 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 08F4AA491C6E9776004DAAF7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 08F4AB6B1C6E98D3004DAAF7 /* libcocos2d-tvos.a in Frameworks */, + 08F4AA4A1C6E9776004DAAF7 /* Metal.framework in Frameworks */, + 08F4AA4C1C6E9776004DAAF7 /* GLKit.framework in Frameworks */, + 08F4AA4D1C6E9776004DAAF7 /* OpenGLES.framework in Frameworks */, + 08F4AA4E1C6E9776004DAAF7 /* UIKit.framework in Frameworks */, + 08F4AA4F1C6E9776004DAAF7 /* QuartzCore.framework in Frameworks */, + 08F4AA501C6E9776004DAAF7 /* OpenAL.framework in Frameworks */, + 08F4AA511C6E9776004DAAF7 /* AudioToolbox.framework in Frameworks */, + 08F4AA521C6E9776004DAAF7 /* AVFoundation.framework in Frameworks */, + 08F4AA531C6E9776004DAAF7 /* Foundation.framework in Frameworks */, + 08F4AA541C6E9776004DAAF7 /* CoreGraphics.framework in Frameworks */, + 08F4AA551C6E9776004DAAF7 /* CoreText.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 755569FF185636F100ED1B0F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1132,6 +1311,7 @@ D3763D9A19E7356C006C050D /* Resources-Mac */, B7E2604A17E7D278007067F0 /* Frameworks */, B7E2604917E7D278007067F0 /* Products */, + 08F4AAAD1C6E9776004DAAF7 /* cocos2d-tests-ios copy-Info.plist */, ); indentWidth = 4; sourceTree = ""; @@ -1144,6 +1324,7 @@ B7E2604817E7D278007067F0 /* cocos2d-tests-ios.app */, 75556A02185636F100ED1B0F /* UnitTests.xctest */, D3763C5A19E73188006C050D /* cocos2d-tests-mac.app */, + 08F4AAAA1C6E9776004DAAF7 /* cocos2d-tests-tvos.app */, ); name = Products; sourceTree = ""; @@ -1238,6 +1419,7 @@ D3763BB919E72F85006C050D /* libcocos2d.a */, D3763BBF19E72F85006C050D /* libcocos2d-mac.a */, 0E1D2C9C1B53AA6A00EB2D29 /* cocos2dMacFramework.framework */, + 08F4AB6A1C6E98CD004DAAF7 /* libcocos2d-tvos.a */, ); name = Products; sourceTree = ""; @@ -1375,6 +1557,25 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 08F4A9F41C6E9776004DAAF7 /* cocos2d-tests-tvos */ = { + isa = PBXNativeTarget; + buildConfigurationList = 08F4AAA71C6E9776004DAAF7 /* Build configuration list for PBXNativeTarget "cocos2d-tests-tvos" */; + buildPhases = ( + 08F4A9F71C6E9776004DAAF7 /* Sources */, + 08F4AA491C6E9776004DAAF7 /* Frameworks */, + 08F4AA561C6E9776004DAAF7 /* Compile Metal Shaders */, + 08F4AA571C6E9776004DAAF7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 08F4A9F51C6E9776004DAAF7 /* PBXTargetDependency */, + ); + name = "cocos2d-tests-tvos"; + productName = "cocos2d-ui-tests-ios"; + productReference = 08F4AAAA1C6E9776004DAAF7 /* cocos2d-tests-tvos.app */; + productType = "com.apple.product-type.application"; + }; 75556A01185636F100ED1B0F /* UnitTests */ = { isa = PBXNativeTarget; buildConfigurationList = 75556A12185636F100ED1B0F /* Build configuration list for PBXNativeTarget "UnitTests" */; @@ -1472,11 +1673,19 @@ B7E2604717E7D278007067F0 /* cocos2d-tests-ios */, 75556A01185636F100ED1B0F /* UnitTests */, D3763BD619E73188006C050D /* cocos2d-tests-mac */, + 08F4A9F41C6E9776004DAAF7 /* cocos2d-tests-tvos */, ); }; /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + 08F4AB6A1C6E98CD004DAAF7 /* libcocos2d-tvos.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libcocos2d-tvos.a"; + remoteRef = 08F4AB691C6E98CD004DAAF7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 0E1D2C9C1B53AA6A00EB2D29 /* cocos2dMacFramework.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -1501,6 +1710,91 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ + 08F4AA571C6E9776004DAAF7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 08F4AA581C6E9776004DAAF7 /* CCRendererSharedTypes.h in Resources */, + 08F4AA591C6E9776004DAAF7 /* bitmapFontTest.fnt in Resources */, + 08F4AA5A1C6E9776004DAAF7 /* bitmapFontTest5.png in Resources */, + 08F4AA5B1C6E9776004DAAF7 /* TileMaps in Resources */, + 08F4AA5C1C6E9776004DAAF7 /* Images in Resources */, + 08F4AA5D1C6E9776004DAAF7 /* Sounds in Resources */, + 08F4AA5E1C6E9776004DAAF7 /* bitmapFontTest4.png in Resources */, + 08F4AA5F1C6E9776004DAAF7 /* font-issue1343.png in Resources */, + 08F4AA601C6E9776004DAAF7 /* font-issue1343.fnt in Resources */, + 08F4AA611C6E9776004DAAF7 /* RobotoSlab-Regular.ttf in Resources */, + 08F4AA621C6E9776004DAAF7 /* Particles in Resources */, + 08F4AA631C6E9776004DAAF7 /* A Damn Mess.ttf in Resources */, + 08F4AA641C6E9776004DAAF7 /* Default-568h@2x.png in Resources */, + 08F4AA651C6E9776004DAAF7 /* helvetica-geneva-32.png in Resources */, + 08F4AA661C6E9776004DAAF7 /* bitmapFontTest2.fnt in Resources */, + 08F4AA671C6E9776004DAAF7 /* Default-Landscape~ipad.png in Resources */, + 08F4AA681C6E9776004DAAF7 /* Default.png in Resources */, + 08F4AA691C6E9776004DAAF7 /* Paint Boy.ttf in Resources */, + 08F4AA6A1C6E9776004DAAF7 /* ThisFontIsAbdFont.ttf in Resources */, + 08F4AA6B1C6E9776004DAAF7 /* Default@2x.png in Resources */, + 08F4AA6C1C6E9776004DAAF7 /* markerFelt-hd.png in Resources */, + 08F4AA6D1C6E9776004DAAF7 /* markerFelt-hd.fnt in Resources */, + 08F4AA6E1C6E9776004DAAF7 /* futura-48.png in Resources */, + 08F4AA6F1C6E9776004DAAF7 /* Icon-72.png in Resources */, + 08F4AA701C6E9776004DAAF7 /* font-issue1343-hd.png in Resources */, + 08F4AA711C6E9776004DAAF7 /* futura-48.GlyphProject in Resources */, + 08F4AA721C6E9776004DAAF7 /* Icon-Small-50.png in Resources */, + 08F4AA731C6E9776004DAAF7 /* konqa32-hd.png in Resources */, + 08F4AA741C6E9776004DAAF7 /* arial-unicode-26.fnt in Resources */, + 08F4AA751C6E9776004DAAF7 /* Icon-Small.png in Resources */, + 08F4AA761C6E9776004DAAF7 /* konqa32-hd.fnt in Resources */, + 08F4AA771C6E9776004DAAF7 /* larabie-16.plist in Resources */, + 08F4AA781C6E9776004DAAF7 /* larabie-16-hd.plist in Resources */, + 08F4AA791C6E9776004DAAF7 /* bitmapFontTest3.fnt in Resources */, + 08F4AA7A1C6E9776004DAAF7 /* bitmapFontTest5.fnt in Resources */, + 08F4AA7B1C6E9776004DAAF7 /* font-issue1343-hd.fnt in Resources */, + 08F4AA7C1C6E9776004DAAF7 /* fps_images-hd.png in Resources */, + 08F4AA7D1C6E9776004DAAF7 /* arial16.png in Resources */, + 08F4AA7E1C6E9776004DAAF7 /* RobotoSlab-Bold.ttf in Resources */, + 08F4AA7F1C6E9776004DAAF7 /* RobotoSlab-Thin.ttf in Resources */, + 08F4AA801C6E9776004DAAF7 /* bitmapFontTest3.png in Resources */, + 08F4AA811C6E9776004DAAF7 /* RobotoSlab-Light.ttf in Resources */, + 08F4AA821C6E9776004DAAF7 /* Schwarzwald Regular.ttf in Resources */, + 08F4AA831C6E9776004DAAF7 /* larabie-16-hd.png in Resources */, + 08F4AA841C6E9776004DAAF7 /* futura-48.fnt in Resources */, + 08F4AA851C6E9776004DAAF7 /* Resources-shared in Resources */, + 08F4AA861C6E9776004DAAF7 /* tuffy_bold_italic-charmap-hd.plist in Resources */, + 08F4AA871C6E9776004DAAF7 /* konqa32.png in Resources */, + 08F4AA881C6E9776004DAAF7 /* helvetica-32.fnt in Resources */, + 08F4AA891C6E9776004DAAF7 /* arial-unicode-26.png in Resources */, + 08F4AA8A1C6E9776004DAAF7 /* Icon-Small@2x.png in Resources */, + 08F4AA8B1C6E9776004DAAF7 /* Scissor Cuts.ttf in Resources */, + 08F4AA8C1C6E9776004DAAF7 /* MetalShaders in Resources */, + 08F4AA8D1C6E9776004DAAF7 /* bitmapFontTest.png in Resources */, + 08F4AA8E1C6E9776004DAAF7 /* boundsTestFont.png in Resources */, + 08F4AA8F1C6E9776004DAAF7 /* tuffy_bold_italic-charmap.plist in Resources */, + 08F4AA901C6E9776004DAAF7 /* fps_images.GlyphProject in Resources */, + 08F4AA911C6E9776004DAAF7 /* Abberancy.ttf in Resources */, + 08F4AA921C6E9776004DAAF7 /* Icon.png in Resources */, + 08F4AA931C6E9776004DAAF7 /* bitmapFontTest4.fnt in Resources */, + 08F4AA941C6E9776004DAAF7 /* west_england-64.png in Resources */, + 08F4AA951C6E9776004DAAF7 /* arial16.fnt in Resources */, + 08F4AA961C6E9776004DAAF7 /* west_england-64.fnt in Resources */, + 08F4AA971C6E9776004DAAF7 /* konqa32.fnt in Resources */, + 08F4AA981C6E9776004DAAF7 /* Music in Resources */, + 08F4AA991C6E9776004DAAF7 /* markerFelt.png in Resources */, + 08F4AA9A1C6E9776004DAAF7 /* geneva-32.fnt in Resources */, + 08F4AA9B1C6E9776004DAAF7 /* Icon@2x.png in Resources */, + 08F4AA9C1C6E9776004DAAF7 /* fps_images-ipadhd.png in Resources */, + 08F4AA9E1C6E9776004DAAF7 /* tuffy_bold_italic-charmap.png in Resources */, + 08F4AA9F1C6E9776004DAAF7 /* fps_images-hd.plist in Resources */, + 08F4AAA01C6E9776004DAAF7 /* fps_images.plist in Resources */, + 08F4AAA11C6E9776004DAAF7 /* arial-unicode-26.GlyphProject in Resources */, + 08F4AAA21C6E9776004DAAF7 /* markerFelt.fnt in Resources */, + 08F4AAA31C6E9776004DAAF7 /* boundsTestFont.fnt in Resources */, + 08F4AAA41C6E9776004DAAF7 /* larabie-16.png in Resources */, + 08F4AAA51C6E9776004DAAF7 /* iTunesArtwork in Resources */, + 08F4AAA61C6E9776004DAAF7 /* fps_images.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 75556A00185636F100ED1B0F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1675,6 +1969,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 08F4AA561C6E9776004DAAF7 /* Compile Metal Shaders */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/cocos2d-ui-tests/MetalShaders/*.metal", + "$(SRCROOT)/cocos2d/Platforms/iOS/CCShaders.metal", + ); + name = "Compile Metal Shaders"; + outputPaths = ( + "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/default.metallib", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /usr/bin/ruby; + shellScript = "# Special thanks to Filip Iliescu at Apple for the help with this.\n\n# Environment variables.\nSDK = ENV[\"PLATFORM_NAME\"]\nOBJECT_FILE_DIR = ENV[\"OBJECT_FILE_DIR\"]\nSRCROOT = ENV[\"SRCROOT\"]\nBUILT_PRODUCTS_DIR = ENV[\"BUILT_PRODUCTS_DIR\"]\nPRODUCT_NAME = ENV[\"PRODUCT_NAME\"]\n\n# User variables\n# Directory with your custom .metal files in it.\nSHADER_DIR = \"#{SRCROOT}/cocos2d-ui-tests/MetalShaders\"\n# Location of the cocos2d library directory.\nCOCOS2D_DIR = \"#{SRCROOT}/cocos2d\"\n\nMETAL_ARGS = [\n\t\"-arch air64\",\n\t\"-emit-llvm\",\n\t\"-c\",\n\t\"-gline-tables-only\",\n\t\"-ffast-math\",\n\t\"-std=ios-metal1.0\",\n\t%{-I \"#{COCOS2D_DIR}\"},\n]\n\ndef system(cmd)\n\tputs cmd\n\tKernel.system cmd\nend\n\nPRODUCTS = \"#{OBJECT_FILE_DIR}/CCMetalShaders\"\nARCHIVE = \"#{PRODUCTS}/default.metal-ar\"\n\ndef compile_shader(src)\n\tdst = \"#{PRODUCTS}/#{File.basename(src, \".metal\")}.air\"\n\t\n\t# Compile and archive the shader.\n\tsystem %{xcrun -sdk #{SDK} metal #{METAL_ARGS.join(\" \")} \"#{src}\" -o \"#{dst}\"}\n\tsystem %{xcrun -sdk #{SDK} ar r \"#{ARCHIVE}\" \"#{dst}\"}\nend\n\nif SDK == \"iphoneos\"\n\t# Cannot use default.metallib to avoid clashing with Xcode build magic.\n\t# This is part of a workaround due to the iOS simulator not supporting Metal and may go away in the future.\n\tmetal_lib = \"#{BUILT_PRODUCTS_DIR}/#{PRODUCT_NAME}.app/CCShaders.metallib\"\n\t\t\n\t# Delete the old products dir and metal lib.\n\tsystem %{rm -rf \"#{PRODUCTS}\"}\n\tsystem %{rm -f \"#{metal_lib}\"}\n\tsystem %{mkdir -p \"#{PRODUCTS}\"}\n\t\n\t# Compile the builtin shaders.\n\tcompile_shader(%{#{COCOS2D_DIR}/Platforms/iOS/CCShaders.metal})\n\t\n\t# Compile/archive all the shaders in the shader directory.\n\tDir.glob(\"#{SHADER_DIR}/*.metal\").each{|src| compile_shader(src)}\n\t\n\t# Link all shaders into default lib.\n\tsystem %{xcrun -sdk #{SDK} metallib -o \"#{metal_lib}\" \"#{ARCHIVE}\"}\nend\n"; + }; D3E1842919E8572700A08B01 /* Compile Metal Shaders */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1695,6 +2006,67 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 08F4A9F71C6E9776004DAAF7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 08F4A9F81C6E9776004DAAF7 /* CCParallaxNode.m in Sources */, + 08F4A9F91C6E9776004DAAF7 /* TestBase.m in Sources */, + 08F4A9FA1C6E9776004DAAF7 /* SpritePerformanceTest.m in Sources */, + 08F4A9FE1C6E9776004DAAF7 /* CCTiledMapLayer.m in Sources */, + 08F4A9FF1C6E9776004DAAF7 /* SSZipArchive.m in Sources */, + 08F4AA031C6E9776004DAAF7 /* CCScrollViewTest.m in Sources */, + 08F4AA041C6E9776004DAAF7 /* CCTextFieldTest.m in Sources */, + 08F4AA051C6E9776004DAAF7 /* AppDelegate.m in Sources */, + 08F4AA061C6E9776004DAAF7 /* CCCacheTest.m in Sources */, + 08F4AA081C6E9776004DAAF7 /* CCTextureCacheTest.m in Sources */, + 08F4AA0A1C6E9776004DAAF7 /* CCPackage.m in Sources */, + 08F4AA0C1C6E9776004DAAF7 /* PositioningTest.m in Sources */, + 08F4AA0D1C6E9776004DAAF7 /* main.m in Sources */, + 08F4AA101C6E9776004DAAF7 /* CCSprite9SliceTest.m in Sources */, + 08F4AA111C6E9776004DAAF7 /* CCSliderTest.m in Sources */, + 08F4AA121C6E9776004DAAF7 /* CCParticleExamples.m in Sources */, + 08F4AA131C6E9776004DAAF7 /* CCTiledMapObjectGroup.m in Sources */, + 08F4AA141C6E9776004DAAF7 /* CCPackageInstaller.m in Sources */, + 08F4AA161C6E9776004DAAF7 /* CCMotionStreak.m in Sources */, + 08F4AA181C6E9776004DAAF7 /* CCTMXXMLParser.m in Sources */, + 08F4AA191C6E9776004DAAF7 /* CCTiledMap.m in Sources */, + 08F4AA1A1C6E9776004DAAF7 /* CCPackageHelper.m in Sources */, + 08F4AA1B1C6E9776004DAAF7 /* VertexZTest.m in Sources */, + 08F4AA1C1C6E9776004DAAF7 /* CCResponderTest.m in Sources */, + 08F4AA1D1C6E9776004DAAF7 /* CCParticleBatchNode.m in Sources */, + 08F4AA1E1C6E9776004DAAF7 /* CCParticleSystem.m in Sources */, + 08F4AA1F1C6E9776004DAAF7 /* CCPackageDownloadManager.m in Sources */, + 08F4AA201C6E9776004DAAF7 /* CCEffectsTest.m in Sources */, + 08F4AA211C6E9776004DAAF7 /* NSMutableDictionary+WeakReferences.m in Sources */, + 08F4AA231C6E9776004DAAF7 /* ioapi.c in Sources */, + 08F4AA241C6E9776004DAAF7 /* CCLayoutTest.m in Sources */, + 08F4AA251C6E9776004DAAF7 /* CCLabelTTFTest.m in Sources */, + 08F4AA261C6E9776004DAAF7 /* CCPackageConstants.m in Sources */, + 08F4AA271C6E9776004DAAF7 /* CCPackageCocos2dEnabler.m in Sources */, + 08F4AA281C6E9776004DAAF7 /* CCPackageDownload.m in Sources */, + 08F4AA291C6E9776004DAAF7 /* ParallaxTest.m in Sources */, + 08F4AA2B1C6E9776004DAAF7 /* mztools.c in Sources */, + 08F4AA2C1C6E9776004DAAF7 /* TextureTest.m in Sources */, + 08F4AA2D1C6E9776004DAAF7 /* CCSchedulerTest.m in Sources */, + 08F4AA341C6E9776004DAAF7 /* ColorTest.m in Sources */, + 08F4AA371C6E9776004DAAF7 /* CCParticleSystemBase.m in Sources */, + 08F4AA381C6E9776004DAAF7 /* TilemapTest.m in Sources */, + 08F4AA391C6E9776004DAAF7 /* MainMenu.m in Sources */, + 08F4AA3A1C6E9776004DAAF7 /* CCRendererTest.m in Sources */, + 08F4AA3B1C6E9776004DAAF7 /* CCClippingNode.m in Sources */, + 08F4AA3C1C6E9776004DAAF7 /* CCPackageManager.m in Sources */, + 08F4AA3D1C6E9776004DAAF7 /* CCTransitionTest.m in Sources */, + 08F4AA3E1C6E9776004DAAF7 /* unzip.c in Sources */, + 08F4AA3F1C6E9776004DAAF7 /* ParticleTest.m in Sources */, + 08F4AA401C6E9776004DAAF7 /* CCTableViewTest.m in Sources */, + 08F4AA411C6E9776004DAAF7 /* CCPackageUnzipper.m in Sources */, + 08F4AA421C6E9776004DAAF7 /* zip.c in Sources */, + 08F4AA451C6E9776004DAAF7 /* CCPhysicsTest.m in Sources */, + 08F4AA471C6E9776004DAAF7 /* CCBMFontTest.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 755569FE185636F100ED1B0F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1926,6 +2298,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 08F4A9F51C6E9776004DAAF7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "cocos2d-ios"; + targetProxy = 08F4A9F61C6E9776004DAAF7 /* PBXContainerItemProxy */; + }; 75556A11185636F100ED1B0F /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = B7E2604717E7D278007067F0 /* cocos2d-tests-ios */; @@ -1971,6 +2348,102 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 08F4AAA81C6E9776004DAAF7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ENABLE_OBJC_ARC = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "cocos2d-ui-tests/ios/Prefix.pch"; + HEADER_SEARCH_PATHS = ( + external/kazmath/include, + "cocos2d/**", + "cocos2d-ui/**", + "cocos2d-ui-tests/**", + external/Chipmunk/include, + external/Chipmunk/objectivec/include, + "external/ObjectAL/**", + "external/SSZipArchive/SSZipArchive/**", + ); + INFOPLIST_FILE = "cocos2d-tests-ios copy-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + MTL_HEADER_SEARCH_PATHS = "/Users/slembcke/Development/cocos2d-iphone/cocos2d"; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "-lz", + "-lsqlite3", + "-ObjC", + ); + "OTHER_LDFLAGS[sdk=iphoneos8.0]" = ( + "-lz", + "-lsqlite3", + "-ObjC", + "-weak_framework", + Metal, + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocos2d.Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 08F4AAA91C6E9776004DAAF7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ENABLE_OBJC_ARC = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "cocos2d-ui-tests/ios/Prefix.pch"; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + external/kazmath/include, + "cocos2d/**", + "cocos2d-ui/**", + "cocos2d-ui-tests/**", + external/Chipmunk/include, + external/Chipmunk/objectivec/include, + "external/ObjectAL/**", + "external/SSZipArchive/SSZipArchive/**", + ); + INFOPLIST_FILE = "cocos2d-tests-ios copy-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + MTL_HEADER_SEARCH_PATHS = "/Users/slembcke/Development/cocos2d-iphone/cocos2d"; + OTHER_LDFLAGS = ( + "-lz", + "-lsqlite3", + "-ObjC", + ); + "OTHER_LDFLAGS[sdk=iphoneos8.0]" = ( + "-lz", + "-lsqlite3", + "-ObjC", + "-weak_framework", + Metal, + ); + PRODUCT_BUNDLE_IDENTIFIER = org.cocos2d.Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; 75556A13185636F100ED1B0F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2356,6 +2829,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 08F4AAA71C6E9776004DAAF7 /* Build configuration list for PBXNativeTarget "cocos2d-tests-tvos" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 08F4AAA81C6E9776004DAAF7 /* Debug */, + 08F4AAA91C6E9776004DAAF7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 75556A12185636F100ED1B0F /* Build configuration list for PBXNativeTarget "UnitTests" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/cocos2d-ui-tests/ios/Resources/Launch Screen.xib b/cocos2d-ui-tests/ios/Resources/Launch Screen.xib index 56b75a45824..1ec9d216b84 100644 --- a/cocos2d-ui-tests/ios/Resources/Launch Screen.xib +++ b/cocos2d-ui-tests/ios/Resources/Launch Screen.xib @@ -1,8 +1,8 @@ - + - + diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index cecc2eb3595..30f3a031306 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -23,6 +23,184 @@ /* Begin PBXBuildFile section */ 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = 0529445911098D6F00E500F3 /* CCProfiling.h */; }; 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; + 08F4AAB01C6E98A1004DAAF7 /* NSValue+CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6219C3A0FD009BED7A /* NSValue+CCRenderer.m */; }; + 08F4AAB11C6E98A1004DAAF7 /* CCAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2530DFDEAFF00C013A5 /* CCAction.m */; }; + 08F4AAB21C6E98A1004DAAF7 /* CCNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2550DFDEAFF00C013A5 /* CCNode.m */; }; + 08F4AAB31C6E98A1004DAAF7 /* CCDirector.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2570DFDEAFF00C013A5 /* CCDirector.m */; }; + 08F4AAB41C6E98A1004DAAF7 /* CCActionInstant.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2590DFDEAFF00C013A5 /* CCActionInstant.m */; }; + 08F4AAB51C6E98A1004DAAF7 /* CCActionInterval.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25B0DFDEAFF00C013A5 /* CCActionInterval.m */; }; + 08F4AAB61C6E98A1004DAAF7 /* CCTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = D26A0429194B815500503BEC /* CCTouchEvent.m */; }; + 08F4AAB71C6E98A1004DAAF7 /* CCLabelTTF.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25D0DFDEAFF00C013A5 /* CCLabelTTF.m */; }; + 08F4AAB81C6E98A1004DAAF7 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */; }; + 08F4AAB91C6E98A1004DAAF7 /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2610DFDEAFF00C013A5 /* CCScene.m */; }; + 08F4AABA1C6E98A1004DAAF7 /* CCTextureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2680DFDEAFF00C013A5 /* CCTextureCache.m */; }; + 08F4AABB1C6E98A1004DAAF7 /* CCMetalSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C794F19994126007921E1 /* CCMetalSupport.m */; }; + 08F4AABC1C6E98A1004DAAF7 /* CCScheduler.m in Sources */ = {isa = PBXBuildFile; fileRef = 506602100E38A70D000B500E /* CCScheduler.m */; }; + 08F4AABD1C6E98A1004DAAF7 /* cocos2d.m in Sources */ = {isa = PBXBuildFile; fileRef = 50A07B7A0E4CBCD300AAF0BB /* cocos2d.m */; }; + 08F4AABE1C6E98A1004DAAF7 /* TGAlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 501CCFAB0E99657C00B86F68 /* TGAlib.m */; }; + 08F4AABF1C6E98A1004DAAF7 /* CCTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E260D718171D2000A0E872 /* CCTextField.m */; }; + 08F4AAC01C6E98A1004DAAF7 /* CCActionEase.m in Sources */ = {isa = PBXBuildFile; fileRef = 50F7B2770F28DE7C00057537 /* CCActionEase.m */; }; + 08F4AAC11C6E98A1004DAAF7 /* CCPlatformTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD01F19649E03003D460C /* CCPlatformTextField.m */; }; + 08F4AAC21C6E98A1004DAAF7 /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; + 08F4AAC31C6E98A1004DAAF7 /* CCSprite.m in Sources */ = {isa = PBXBuildFile; fileRef = 509A79960F6188420032F449 /* CCSprite.m */; }; + 08F4AAC41C6E98A1004DAAF7 /* CCFileUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 50C508C50F7C194400799124 /* CCFileUtils.m */; }; + 08F4AAC51C6E98A1004DAAF7 /* CCTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = D25B4F4A194A499700DA9D60 /* CCTouch.m */; }; + 08F4AAC61C6E98A1004DAAF7 /* CGPointExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 503798C50F912C2000986724 /* CGPointExtension.m */; }; + 08F4AAC71C6E98A1004DAAF7 /* CCActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */; }; + 08F4AAC81C6E98A1004DAAF7 /* CCRenderDispatch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0F199528A0003AA81A /* CCRenderDispatch.m */; }; + 08F4AAC91C6E98A1004DAAF7 /* CCAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E775CF18527EF0004221AA /* CCAppDelegate.m */; }; + 08F4AACA1C6E98A1004DAAF7 /* CCMetalView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B13199528B6003AA81A /* CCMetalView.m */; }; + 08F4AACB1C6E98A1004DAAF7 /* base64.c in Sources */ = {isa = PBXBuildFile; fileRef = 50F29F5510204FD60046CA73 /* base64.c */; }; + 08F4AACC1C6E98A1004DAAF7 /* ZipUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 50F2A102102094550046CA73 /* ZipUtils.m */; }; + 08F4AACD1C6E98A1004DAAF7 /* CCPlatformTextFieldIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 571CD02219649E03003D460C /* CCPlatformTextFieldIOS.m */; }; + 08F4AACE1C6E98A1004DAAF7 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AA510291280003ACFE7 /* CCRenderTexture.m */; }; + 08F4AACF1C6E98A1004DAAF7 /* CCSpriteFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E2A14F10A45E7F00D894CE /* CCSpriteFrame.m */; }; + 08F4AAD01C6E98A1004DAAF7 /* CCSpriteFrameCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 502C8BDF10A661E200D137BA /* CCSpriteFrameCache.m */; }; + 08F4AAD11C6E98A1004DAAF7 /* CCTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E1357210ADEB1B00C9E7FA /* CCTexture.m */; }; + 08F4AAD21C6E98A1004DAAF7 /* CCConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 503862D911007181005D2C92 /* CCConfiguration.m */; }; + 08F4AAD31C6E98A1004DAAF7 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; + 08F4AAD41C6E98A1004DAAF7 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50150436113300F900A9CA65 /* CCActionProgressTimer.m */; }; + 08F4AAD51C6E98A1004DAAF7 /* CCActionTween.m in Sources */ = {isa = PBXBuildFile; fileRef = 50FBB2D9117613F500150761 /* CCActionTween.m */; }; + 08F4AAD61C6E98A1004DAAF7 /* CCSpriteBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C3655A11F0AE9B001C08F9 /* CCSpriteBatchNode.m */; }; + 08F4AAD71C6E98A1004DAAF7 /* CCNoARC.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0C1995288D003AA81A /* CCNoARC.m */; }; + 08F4AAD81C6E98A1004DAAF7 /* ccUtils.c in Sources */ = {isa = PBXBuildFile; fileRef = E0C54DC811F9CF2700B9E4CB /* ccUtils.c */; }; + 08F4AAD91C6E98A1004DAAF7 /* CCLabelBMFont.m in Sources */ = {isa = PBXBuildFile; fileRef = E01E6D8B121F130E001A484F /* CCLabelBMFont.m */; }; + 08F4AADA1C6E98A1004DAAF7 /* CCDirectorIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = E0EAD0EB121F4B4600B0C81C /* CCDirectorIOS.m */; }; + 08F4AADB1C6E98A1004DAAF7 /* CCGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = E0EAD0F4121F4B4600B0C81C /* CCGLView.m */; }; + 08F4AADC1C6E98A1004DAAF7 /* CCTexturePVR.m in Sources */ = {isa = PBXBuildFile; fileRef = E0F924701224140400EF2362 /* CCTexturePVR.m */; }; + 08F4AADD1C6E98A1004DAAF7 /* CCAnimationCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E02BB6D5126CA93A006E46A2 /* CCAnimationCache.m */; }; + 08F4AADE1C6E98A1004DAAF7 /* CCAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = E02BB703126CADEA006E46A2 /* CCAnimation.m */; }; + 08F4AADF1C6E98A1004DAAF7 /* CCShader.m in Sources */ = {isa = PBXBuildFile; fileRef = E0BC7D9C1342CE7B001B4DCC /* CCShader.m */; }; + 08F4AAE01C6E98A1004DAAF7 /* CCDirectorMac.m in Sources */ = {isa = PBXBuildFile; fileRef = A046E28C14C1DB7D0005BBF2 /* CCDirectorMac.m */; }; + 08F4AAE11C6E98A1004DAAF7 /* CCGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = A046E29014C1DB7D0005BBF2 /* CCGLView.m */; }; + 08F4AAE21C6E98A1004DAAF7 /* CCWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = A046E29214C1DB7D0005BBF2 /* CCWindow.m */; }; + 08F4AAE31C6E98A1004DAAF7 /* NSThread+performBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C87D1914F9A3A100C0E8B2 /* NSThread+performBlock.m */; }; + 08F4AAE41C6E98A1004DAAF7 /* CCActionCatmullRom.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A7A53B1514F27D00C8BD16 /* CCActionCatmullRom.m */; }; + 08F4AAE51C6E98A1004DAAF7 /* CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D38058191889AD6000822437 /* CCRenderer.m */; }; + 08F4AAE61C6E98A1004DAAF7 /* CCRendererBasicTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6819C3A7B3009BED7A /* CCRendererBasicTypes.m */; }; + 08F4AAE71C6E98A1004DAAF7 /* CCNode+Debug.m in Sources */ = {isa = PBXBuildFile; fileRef = A039EBFE155C686B0061EE37 /* CCNode+Debug.m */; }; + 08F4AAE81C6E98A1004DAAF7 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; + 08F4AAE91C6E98A1004DAAF7 /* CCDrawNode.m in Sources */ = {isa = PBXBuildFile; fileRef = A0DA0BC215BCDCA200E80A92 /* CCDrawNode.m */; }; + 08F4AAEA1C6E98A1004DAAF7 /* CCLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69DD1819E75700B983FE /* CCLayout.m */; }; + 08F4AAEB1C6E98A1004DAAF7 /* ccFPSImages.m in Sources */ = {isa = PBXBuildFile; fileRef = A003AC8E16572D6000C7B792 /* ccFPSImages.m */; }; + 08F4AAEC1C6E98A1004DAAF7 /* CCTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B79F905917FE2A2E00908504 /* CCTableView.m */; }; + 08F4AAED1C6E98A1004DAAF7 /* CCSprite9Slice.m in Sources */ = {isa = PBXBuildFile; fileRef = B74C2B9A17BDA63A00A829C0 /* CCSprite9Slice.m */; }; + 08F4AAEE1C6E98A1004DAAF7 /* NSAttributedString+CCAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B75C2E7B17C5908B002B0E0D /* NSAttributedString+CCAdditions.m */; }; + 08F4AAEF1C6E98A1004DAAF7 /* CCLayoutBox.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69DF1819E75700B983FE /* CCLayoutBox.m */; }; + 08F4AAF01C6E98A1004DAAF7 /* CCColor.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E776201857A159004221AA /* CCColor.m */; }; + 08F4AAF11C6E98A1004DAAF7 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; + 08F4AAF21C6E98A1004DAAF7 /* CCResponderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734417C788EB004343C8 /* CCResponderManager.m */; }; + 08F4AAF31C6E98A1004DAAF7 /* CCTouchIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = D23C5CB3194BC108007CA669 /* CCTouchIOS.m */; }; + 08F4AAF41C6E98A1004DAAF7 /* CCResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734917C78EF3004343C8 /* CCResponder.m */; }; + 08F4AAF51C6E98A1004DAAF7 /* CCButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45B17E7AF1C0028BE0B /* CCButton.m */; }; + 08F4AAF61C6E98A1004DAAF7 /* CCControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45D17E7AF1C0028BE0B /* CCControl.m */; }; + 08F4AAF71C6E98A1004DAAF7 /* CCControlTextureFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45F17E7AF1C0028BE0B /* CCControlTextureFactory.m */; }; + 08F4AAF81C6E98A1004DAAF7 /* CCCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D380581F1889CE7700822437 /* CCCache.m */; }; + 08F4AAF91C6E98A1004DAAF7 /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; + 08F4AAFA1C6E98A1004DAAF7 /* CCScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46117E7AF1C0028BE0B /* CCScrollView.m */; }; + 08F4AAFB1C6E98A1004DAAF7 /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */; }; + 08F4AAFD1C6E98A1004DAAF7 /* CCAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2520DFDEAFF00C013A5 /* CCAction.h */; }; + 08F4AAFE1C6E98A1004DAAF7 /* CCNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2540DFDEAFF00C013A5 /* CCNode.h */; }; + 08F4AAFF1C6E98A1004DAAF7 /* CCDirector.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2560DFDEAFF00C013A5 /* CCDirector.h */; }; + 08F4AB001C6E98A1004DAAF7 /* CCActionInstant.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2580DFDEAFF00C013A5 /* CCActionInstant.h */; }; + 08F4AB011C6E98A1004DAAF7 /* CCActionInterval.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25A0DFDEAFF00C013A5 /* CCActionInterval.h */; }; + 08F4AB021C6E98A1004DAAF7 /* CCLabelTTF.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25C0DFDEAFF00C013A5 /* CCLabelTTF.h */; }; + 08F4AB031C6E98A1004DAAF7 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; + 08F4AB041C6E98A1004DAAF7 /* CCScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2600DFDEAFF00C013A5 /* CCScene.h */; }; + 08F4AB051C6E98A1004DAAF7 /* CCTextureCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2670DFDEAFF00C013A5 /* CCTextureCache.h */; }; + 08F4AB061C6E98A1004DAAF7 /* CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D38058181889AD6000822437 /* CCRenderer.h */; }; + 08F4AB071C6E98A1004DAAF7 /* ccTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F9E8160E1AA34E000E7616 /* ccTypes.h */; }; + 08F4AB081C6E98A1004DAAF7 /* CCScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5066020F0E38A70D000B500E /* CCScheduler.h */; }; + 08F4AB091C6E98A1004DAAF7 /* cocos2d.h in Headers */ = {isa = PBXBuildFile; fileRef = 50305AF30E40E33200F63373 /* cocos2d.h */; }; + 08F4AB0A1C6E98A1004DAAF7 /* TGAlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 501CCFAC0E99657C00B86F68 /* TGAlib.h */; }; + 08F4AB0B1C6E98A1004DAAF7 /* CCActionEase.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F7B2760F28DE7C00057537 /* CCActionEase.h */; }; + 08F4AB0C1C6E98A1004DAAF7 /* CCPlatformTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD01E19649E03003D460C /* CCPlatformTextField.h */; }; + 08F4AB0D1C6E98A1004DAAF7 /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; + 08F4AB0E1C6E98A1004DAAF7 /* ccMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BAF3970F33CCD8003F654C /* ccMacros.h */; }; + 08F4AB0F1C6E98A1004DAAF7 /* CCNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D13C181F2E4500E7BFCD /* CCNode_Private.h */; }; + 08F4AB101C6E98A1004DAAF7 /* CCSprite.h in Headers */ = {isa = PBXBuildFile; fileRef = 509A79950F6188420032F449 /* CCSprite.h */; }; + 08F4AB111C6E98A1004DAAF7 /* CCFileUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C508C40F7C194400799124 /* CCFileUtils.h */; }; + 08F4AB121C6E98A1004DAAF7 /* CGPointExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 503798C40F912C2000986724 /* CGPointExtension.h */; }; + 08F4AB131C6E98A1004DAAF7 /* CCPlatformTextFieldIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD02119649E03003D460C /* CCPlatformTextFieldIOS.h */; }; + 08F4AB141C6E98A1004DAAF7 /* CCTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B706B19718209A8300B27A2C /* CCTexture_Private.h */; }; + 08F4AB151C6E98A1004DAAF7 /* CCLayoutBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE69DE1819E75700B983FE /* CCLayoutBox.h */; }; + 08F4AB161C6E98A1004DAAF7 /* CCTouchIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CB2194BC108007CA669 /* CCTouchIOS.h */; }; + 08F4AB171C6E98A1004DAAF7 /* CCRenderDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B0E199528A0003AA81A /* CCRenderDispatch.h */; }; + 08F4AB181C6E98A1004DAAF7 /* CCTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E260D618171D2000A0E872 /* CCTextField.h */; }; + 08F4AB191C6E98A1004DAAF7 /* CCRendererBasicTypes_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD6A19C3AA10009BED7A /* CCRendererBasicTypes_Private.h */; }; + 08F4AB1A1C6E98A1004DAAF7 /* CCActionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */; }; + 08F4AB1B1C6E98A1004DAAF7 /* base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F29F6E102053370046CA73 /* base64.h */; }; + 08F4AB1C1C6E98A1004DAAF7 /* CCMetalSupport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D31C795119994197007921E1 /* CCMetalSupport_Private.h */; }; + 08F4AB1D1C6E98A1004DAAF7 /* CCRendererBasicTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD6519C3A7A5009BED7A /* CCRendererBasicTypes.h */; }; + 08F4AB1E1C6E98A1004DAAF7 /* ZipUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F2A103102094550046CA73 /* ZipUtils.h */; }; + 08F4AB1F1C6E98A1004DAAF7 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; + 08F4AB201C6E98A1004DAAF7 /* CCCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D380581E1889CE7700822437 /* CCCache.h */; }; + 08F4AB211C6E98A1004DAAF7 /* CCRenderer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D309054F18AC23110081BF11 /* CCRenderer_Private.h */; }; + 08F4AB221C6E98A1004DAAF7 /* ccConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 505462FB1062768000AB7C52 /* ccConfig.h */; }; + 08F4AB231C6E98A1004DAAF7 /* CCSpriteFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E2A14E10A45E7F00D894CE /* CCSpriteFrame.h */; }; + 08F4AB241C6E98A1004DAAF7 /* CCColor.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E7761F1857A159004221AA /* CCColor.h */; }; + 08F4AB251C6E98A1004DAAF7 /* CCProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E2A25110A46CC600D894CE /* CCProtocols.h */; }; + 08F4AB261C6E98A1004DAAF7 /* CCSpriteFrameCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C8BDE10A661E200D137BA /* CCSpriteFrameCache.h */; }; + 08F4AB271C6E98A1004DAAF7 /* CCTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = B79F905817FE2A2E00908504 /* CCTableView.h */; }; + 08F4AB281C6E98A1004DAAF7 /* CCTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E1357110ADEB1B00C9E7FA /* CCTexture.h */; }; + 08F4AB291C6E98A1004DAAF7 /* CCProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = 0529445911098D6F00E500F3 /* CCProfiling.h */; }; + 08F4AB2A1C6E98A1004DAAF7 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; + 08F4AB2B1C6E98A1004DAAF7 /* CCActionTween.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FBB2D8117613F500150761 /* CCActionTween.h */; }; + 08F4AB2C1C6E98A1004DAAF7 /* uthash.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D898EF1192CB7500458C29 /* uthash.h */; }; + 08F4AB2D1C6E98A1004DAAF7 /* utlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 508EAC2F1193F8B0007F058D /* utlist.h */; }; + 08F4AB2E1C6E98A1004DAAF7 /* CCSpriteBatchNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C3655911F0AE9B001C08F9 /* CCSpriteBatchNode.h */; }; + 08F4AB2F1C6E98A1004DAAF7 /* ccUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C54DC911F9CF2700B9E4CB /* ccUtils.h */; }; + 08F4AB301C6E98A1004DAAF7 /* CCLabelBMFont.h in Headers */ = {isa = PBXBuildFile; fileRef = E01E6D8A121F130E001A484F /* CCLabelBMFont.h */; }; + 08F4AB311C6E98A1004DAAF7 /* CCDirectorIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD0EA121F4B4600B0C81C /* CCDirectorIOS.h */; }; + 08F4AB321C6E98A1004DAAF7 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD0F3121F4B4600B0C81C /* CCGLView.h */; }; + 08F4AB331C6E98A1004DAAF7 /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; + 08F4AB341C6E98A1004DAAF7 /* CCGL.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD19C121F4D7300B0C81C /* CCGL.h */; }; + 08F4AB351C6E98A1004DAAF7 /* CCConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD1F0121F522A00B0C81C /* CCConfiguration.h */; }; + 08F4AB361C6E98A1004DAAF7 /* CCTexturePVR.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F9246F1224140400EF2362 /* CCTexturePVR.h */; }; + 08F4AB371C6E98A1004DAAF7 /* CCNS.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F92AC31224559800EF2362 /* CCNS.h */; }; + 08F4AB381C6E98A1004DAAF7 /* CCAnimationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E02BB6D4126CA93A006E46A2 /* CCAnimationCache.h */; }; + 08F4AB391C6E98A1004DAAF7 /* CCAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = E02BB702126CADEA006E46A2 /* CCAnimation.h */; }; + 08F4AB3A1C6E98A1004DAAF7 /* CCRendererSharedTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D3E3752E19CC842A0076CDBB /* CCRendererSharedTypes.h */; }; + 08F4AB3B1C6E98A1004DAAF7 /* CCAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E775CE18527EF0004221AA /* CCAppDelegate.h */; }; + 08F4AB3C1C6E98A1004DAAF7 /* CCShader.h in Headers */ = {isa = PBXBuildFile; fileRef = E0BC7D9B1342CE7B001B4DCC /* CCShader.h */; }; + 08F4AB3D1C6E98A1004DAAF7 /* CCShader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D39FA9C718C1BC6B00441627 /* CCShader_Private.h */; }; + 08F4AB3E1C6E98A1004DAAF7 /* CCDirectorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E28B14C1DB7D0005BBF2 /* CCDirectorMac.h */; }; + 08F4AB3F1C6E98A1004DAAF7 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E28F14C1DB7D0005BBF2 /* CCGLView.h */; }; + 08F4AB401C6E98A1004DAAF7 /* NSValue+CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD5F19C3A0B5009BED7A /* NSValue+CCRenderer.h */; }; + 08F4AB411C6E98A1004DAAF7 /* CCWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E29114C1DB7D0005BBF2 /* CCWindow.h */; }; + 08F4AB421C6E98A1004DAAF7 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; + 08F4AB431C6E98A1004DAAF7 /* CCLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE69DC1819E75700B983FE /* CCLayout.h */; }; + 08F4AB441C6E98A1004DAAF7 /* NSThread+performBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C87D1814F9A3A100C0E8B2 /* NSThread+performBlock.h */; }; + 08F4AB451C6E98A1004DAAF7 /* CCMetalView.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B12199528B6003AA81A /* CCMetalView.h */; }; + 08F4AB461C6E98A1004DAAF7 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; + 08F4AB471C6E98A1004DAAF7 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; + 08F4AB481C6E98A1004DAAF7 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; + 08F4AB491C6E98A1004DAAF7 /* CCActionCatmullRom.h in Headers */ = {isa = PBXBuildFile; fileRef = A0A7A53A1514F27D00C8BD16 /* CCActionCatmullRom.h */; }; + 08F4AB4A1C6E98A1004DAAF7 /* CCNode+Debug.h in Headers */ = {isa = PBXBuildFile; fileRef = A039EBFD155C686B0061EE37 /* CCNode+Debug.h */; }; + 08F4AB4B1C6E98A1004DAAF7 /* CCDrawNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DA0BC115BCDCA200E80A92 /* CCDrawNode.h */; }; + 08F4AB4C1C6E98A1004DAAF7 /* CCSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE6A1C181AE34600B983FE /* CCSlider.h */; }; + 08F4AB4D1C6E98A1004DAAF7 /* ccFPSImages.h in Headers */ = {isa = PBXBuildFile; fileRef = A003AC8B1657071100C7B792 /* ccFPSImages.h */; }; + 08F4AB4E1C6E98A1004DAAF7 /* CCSprite9Slice.h in Headers */ = {isa = PBXBuildFile; fileRef = B74C2B9917BDA63A00A829C0 /* CCSprite9Slice.h */; }; + 08F4AB4F1C6E98A1004DAAF7 /* NSAttributedString+CCAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B75C2E7A17C5908B002B0E0D /* NSAttributedString+CCAdditions.h */; }; + 08F4AB501C6E98A1004DAAF7 /* CCResponderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734317C788EB004343C8 /* CCResponderManager.h */; }; + 08F4AB511C6E98A1004DAAF7 /* CCResponder.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734817C78EF3004343C8 /* CCResponder.h */; }; + 08F4AB521C6E98A1004DAAF7 /* CCButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45A17E7AF1C0028BE0B /* CCButton.h */; }; + 08F4AB531C6E98A1004DAAF7 /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; + 08F4AB541C6E98A1004DAAF7 /* CCControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45C17E7AF1C0028BE0B /* CCControl.h */; }; + 08F4AB551C6E98A1004DAAF7 /* CCControlTextureFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45E17E7AF1C0028BE0B /* CCControlTextureFactory.h */; }; + 08F4AB561C6E98A1004DAAF7 /* CCScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46017E7AF1C0028BE0B /* CCScrollView.h */; }; + 08F4AB571C6E98A1004DAAF7 /* UITouch+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */; }; + 08F4AB591C6E98A1004DAAF7 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3903B1919952ABD003AA81A /* Metal.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 08F4AB5A1C6E98A1004DAAF7 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D24FAEEB198014B90043E27D /* GLKit.framework */; }; + 08F4AB5B1C6E98A1004DAAF7 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E201954F85700ADC03D /* AVFoundation.framework */; }; + 08F4AB5C1C6E98A1004DAAF7 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E1C1954F7E000ADC03D /* OpenGLES.framework */; }; + 08F4AB5D1C6E98A1004DAAF7 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E1A1954F68D00ADC03D /* QuartzCore.framework */; }; + 08F4AB5E1C6E98A1004DAAF7 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E151954F66E00ADC03D /* UIKit.framework */; }; + 08F4AB5F1C6E98A1004DAAF7 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E3876E10446C6E00150883 /* AudioToolbox.framework */; }; + 08F4AB601C6E98A1004DAAF7 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E3877010446C6E00150883 /* OpenAL.framework */; }; + 08F4AB611C6E98A1004DAAF7 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A06D9C131728D5F600704732 /* CoreText.framework */; }; + 08F4AB621C6E98A1004DAAF7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; + 08F4AB631C6E98A1004DAAF7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; }; 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; @@ -396,6 +574,7 @@ /* Begin PBXFileReference section */ 0529445911098D6F00E500F3 /* CCProfiling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProfiling.h; sourceTree = ""; }; 0529445A11098D6F00E500F3 /* CCProfiling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCProfiling.m; sourceTree = ""; }; + 08F4AB671C6E98A1004DAAF7 /* libcocos2d-tvos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libcocos2d-tvos.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 0E0094961B3ACC3E006EA7FC /* install.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install.sh; sourceTree = ""; }; 0E0094971B3ACC4B006EA7FC /* templates */ = {isa = PBXFileReference; lastKnownFileType = folder; path = templates; sourceTree = ""; }; 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRendererGLSupport.m; sourceTree = ""; }; @@ -620,6 +799,24 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 08F4AB581C6E98A1004DAAF7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 08F4AB591C6E98A1004DAAF7 /* Metal.framework in Frameworks */, + 08F4AB5A1C6E98A1004DAAF7 /* GLKit.framework in Frameworks */, + 08F4AB5B1C6E98A1004DAAF7 /* AVFoundation.framework in Frameworks */, + 08F4AB5C1C6E98A1004DAAF7 /* OpenGLES.framework in Frameworks */, + 08F4AB5D1C6E98A1004DAAF7 /* QuartzCore.framework in Frameworks */, + 08F4AB5E1C6E98A1004DAAF7 /* UIKit.framework in Frameworks */, + 08F4AB5F1C6E98A1004DAAF7 /* AudioToolbox.framework in Frameworks */, + 08F4AB601C6E98A1004DAAF7 /* OpenAL.framework in Frameworks */, + 08F4AB611C6E98A1004DAAF7 /* CoreText.framework in Frameworks */, + 08F4AB621C6E98A1004DAAF7 /* Foundation.framework in Frameworks */, + 08F4AB631C6E98A1004DAAF7 /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5018F24B0DFDEAC400C013A5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -680,6 +877,7 @@ 5018F24D0DFDEAC400C013A5 /* libcocos2d.a */, 7A4037A819E37038007B6E8F /* libcocos2d-mac.a */, B7E7DE341A76DB7D004234B7 /* cocos2dMacFramework.framework */, + 08F4AB671C6E98A1004DAAF7 /* libcocos2d-tvos.a */, ); name = Products; sourceTree = ""; @@ -1166,6 +1364,104 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 08F4AAFC1C6E98A1004DAAF7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 08F4AAFD1C6E98A1004DAAF7 /* CCAction.h in Headers */, + 08F4AAFE1C6E98A1004DAAF7 /* CCNode.h in Headers */, + 08F4AAFF1C6E98A1004DAAF7 /* CCDirector.h in Headers */, + 08F4AB001C6E98A1004DAAF7 /* CCActionInstant.h in Headers */, + 08F4AB011C6E98A1004DAAF7 /* CCActionInterval.h in Headers */, + 08F4AB021C6E98A1004DAAF7 /* CCLabelTTF.h in Headers */, + 08F4AB031C6E98A1004DAAF7 /* CCNodeColor.h in Headers */, + 08F4AB041C6E98A1004DAAF7 /* CCScene.h in Headers */, + 08F4AB051C6E98A1004DAAF7 /* CCTextureCache.h in Headers */, + 08F4AB061C6E98A1004DAAF7 /* CCRenderer.h in Headers */, + 08F4AB071C6E98A1004DAAF7 /* ccTypes.h in Headers */, + 08F4AB081C6E98A1004DAAF7 /* CCScheduler.h in Headers */, + 08F4AB091C6E98A1004DAAF7 /* cocos2d.h in Headers */, + 08F4AB0A1C6E98A1004DAAF7 /* TGAlib.h in Headers */, + 08F4AB0B1C6E98A1004DAAF7 /* CCActionEase.h in Headers */, + 08F4AB0C1C6E98A1004DAAF7 /* CCPlatformTextField.h in Headers */, + 08F4AB0D1C6E98A1004DAAF7 /* CCSprite_Private.h in Headers */, + 08F4AB0E1C6E98A1004DAAF7 /* ccMacros.h in Headers */, + 08F4AB0F1C6E98A1004DAAF7 /* CCNode_Private.h in Headers */, + 08F4AB101C6E98A1004DAAF7 /* CCSprite.h in Headers */, + 08F4AB111C6E98A1004DAAF7 /* CCFileUtils.h in Headers */, + 08F4AB121C6E98A1004DAAF7 /* CGPointExtension.h in Headers */, + 08F4AB131C6E98A1004DAAF7 /* CCPlatformTextFieldIOS.h in Headers */, + 08F4AB141C6E98A1004DAAF7 /* CCTexture_Private.h in Headers */, + 08F4AB151C6E98A1004DAAF7 /* CCLayoutBox.h in Headers */, + 08F4AB161C6E98A1004DAAF7 /* CCTouchIOS.h in Headers */, + 08F4AB171C6E98A1004DAAF7 /* CCRenderDispatch.h in Headers */, + 08F4AB181C6E98A1004DAAF7 /* CCTextField.h in Headers */, + 08F4AB191C6E98A1004DAAF7 /* CCRendererBasicTypes_Private.h in Headers */, + 08F4AB1A1C6E98A1004DAAF7 /* CCActionManager.h in Headers */, + 08F4AB1B1C6E98A1004DAAF7 /* base64.h in Headers */, + 08F4AB1C1C6E98A1004DAAF7 /* CCMetalSupport_Private.h in Headers */, + 08F4AB1D1C6E98A1004DAAF7 /* CCRendererBasicTypes.h in Headers */, + 08F4AB1E1C6E98A1004DAAF7 /* ZipUtils.h in Headers */, + 08F4AB1F1C6E98A1004DAAF7 /* CCRenderTexture.h in Headers */, + 08F4AB201C6E98A1004DAAF7 /* CCCache.h in Headers */, + 08F4AB211C6E98A1004DAAF7 /* CCRenderer_Private.h in Headers */, + 08F4AB221C6E98A1004DAAF7 /* ccConfig.h in Headers */, + 08F4AB231C6E98A1004DAAF7 /* CCSpriteFrame.h in Headers */, + 08F4AB241C6E98A1004DAAF7 /* CCColor.h in Headers */, + 08F4AB251C6E98A1004DAAF7 /* CCProtocols.h in Headers */, + 08F4AB261C6E98A1004DAAF7 /* CCSpriteFrameCache.h in Headers */, + 08F4AB271C6E98A1004DAAF7 /* CCTableView.h in Headers */, + 08F4AB281C6E98A1004DAAF7 /* CCTexture.h in Headers */, + 08F4AB291C6E98A1004DAAF7 /* CCProfiling.h in Headers */, + 08F4AB2A1C6E98A1004DAAF7 /* CCActionProgressTimer.h in Headers */, + 08F4AB2B1C6E98A1004DAAF7 /* CCActionTween.h in Headers */, + 08F4AB2C1C6E98A1004DAAF7 /* uthash.h in Headers */, + 08F4AB2D1C6E98A1004DAAF7 /* utlist.h in Headers */, + 08F4AB2E1C6E98A1004DAAF7 /* CCSpriteBatchNode.h in Headers */, + 08F4AB2F1C6E98A1004DAAF7 /* ccUtils.h in Headers */, + 08F4AB301C6E98A1004DAAF7 /* CCLabelBMFont.h in Headers */, + 08F4AB311C6E98A1004DAAF7 /* CCDirectorIOS.h in Headers */, + 08F4AB321C6E98A1004DAAF7 /* CCGLView.h in Headers */, + 08F4AB331C6E98A1004DAAF7 /* CCLabelBMFont_Private.h in Headers */, + 08F4AB341C6E98A1004DAAF7 /* CCGL.h in Headers */, + 08F4AB351C6E98A1004DAAF7 /* CCConfiguration.h in Headers */, + 08F4AB361C6E98A1004DAAF7 /* CCTexturePVR.h in Headers */, + 08F4AB371C6E98A1004DAAF7 /* CCNS.h in Headers */, + 08F4AB381C6E98A1004DAAF7 /* CCAnimationCache.h in Headers */, + 08F4AB391C6E98A1004DAAF7 /* CCAnimation.h in Headers */, + 08F4AB3A1C6E98A1004DAAF7 /* CCRendererSharedTypes.h in Headers */, + 08F4AB3B1C6E98A1004DAAF7 /* CCAppDelegate.h in Headers */, + 08F4AB3C1C6E98A1004DAAF7 /* CCShader.h in Headers */, + 08F4AB3D1C6E98A1004DAAF7 /* CCShader_Private.h in Headers */, + 08F4AB3E1C6E98A1004DAAF7 /* CCDirectorMac.h in Headers */, + 08F4AB3F1C6E98A1004DAAF7 /* CCGLView.h in Headers */, + 08F4AB401C6E98A1004DAAF7 /* NSValue+CCRenderer.h in Headers */, + 08F4AB411C6E98A1004DAAF7 /* CCWindow.h in Headers */, + 08F4AB421C6E98A1004DAAF7 /* CCProgressNode.h in Headers */, + 08F4AB431C6E98A1004DAAF7 /* CCLayout.h in Headers */, + 08F4AB441C6E98A1004DAAF7 /* NSThread+performBlock.h in Headers */, + 08F4AB451C6E98A1004DAAF7 /* CCMetalView.h in Headers */, + 08F4AB461C6E98A1004DAAF7 /* CCTransition.h in Headers */, + 08F4AB471C6E98A1004DAAF7 /* CCProgressNode_Private.h in Headers */, + 08F4AB481C6E98A1004DAAF7 /* CCTouch.h in Headers */, + 08F4AB491C6E98A1004DAAF7 /* CCActionCatmullRom.h in Headers */, + 08F4AB4A1C6E98A1004DAAF7 /* CCNode+Debug.h in Headers */, + 08F4AB4B1C6E98A1004DAAF7 /* CCDrawNode.h in Headers */, + 08F4AB4C1C6E98A1004DAAF7 /* CCSlider.h in Headers */, + 08F4AB4D1C6E98A1004DAAF7 /* ccFPSImages.h in Headers */, + 08F4AB4E1C6E98A1004DAAF7 /* CCSprite9Slice.h in Headers */, + 08F4AB4F1C6E98A1004DAAF7 /* NSAttributedString+CCAdditions.h in Headers */, + 08F4AB501C6E98A1004DAAF7 /* CCResponderManager.h in Headers */, + 08F4AB511C6E98A1004DAAF7 /* CCResponder.h in Headers */, + 08F4AB521C6E98A1004DAAF7 /* CCButton.h in Headers */, + 08F4AB531C6E98A1004DAAF7 /* CCTouchEvent.h in Headers */, + 08F4AB541C6E98A1004DAAF7 /* CCControl.h in Headers */, + 08F4AB551C6E98A1004DAAF7 /* CCControlTextureFactory.h in Headers */, + 08F4AB561C6E98A1004DAAF7 /* CCScrollView.h in Headers */, + 08F4AB571C6E98A1004DAAF7 /* UITouch+CC.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5018F2490DFDEAC400C013A5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1379,6 +1675,23 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 08F4AAAE1C6E98A1004DAAF7 /* cocos2d-tvos */ = { + isa = PBXNativeTarget; + buildConfigurationList = 08F4AB641C6E98A1004DAAF7 /* Build configuration list for PBXNativeTarget "cocos2d-tvos" */; + buildPhases = ( + 08F4AAAF1C6E98A1004DAAF7 /* Sources */, + 08F4AAFC1C6E98A1004DAAF7 /* Headers */, + 08F4AB581C6E98A1004DAAF7 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "cocos2d-tvos"; + productName = cocos2d; + productReference = 08F4AB671C6E98A1004DAAF7 /* libcocos2d-tvos.a */; + productType = "com.apple.product-type.library.static"; + }; 5018F24C0DFDEAC400C013A5 /* cocos2d-ios */ = { isa = PBXNativeTarget; buildConfigurationList = 5018F2500DFDEAE300C013A5 /* Build configuration list for PBXNativeTarget "cocos2d-ios" */; @@ -1468,6 +1781,7 @@ B772F6B118120CC9005C069B /* appledoc */, 7A4037A719E37038007B6E8F /* cocos2d-mac */, B7E7DE331A76DB7D004234B7 /* cocos2dMacFramework */, + 08F4AAAE1C6E98A1004DAAF7 /* cocos2d-tvos */, ); }; /* End PBXProject section */ @@ -1499,6 +1813,89 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 08F4AAAF1C6E98A1004DAAF7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 08F4AAB01C6E98A1004DAAF7 /* NSValue+CCRenderer.m in Sources */, + 08F4AAB11C6E98A1004DAAF7 /* CCAction.m in Sources */, + 08F4AAB21C6E98A1004DAAF7 /* CCNode.m in Sources */, + 08F4AAB31C6E98A1004DAAF7 /* CCDirector.m in Sources */, + 08F4AAB41C6E98A1004DAAF7 /* CCActionInstant.m in Sources */, + 08F4AAB51C6E98A1004DAAF7 /* CCActionInterval.m in Sources */, + 08F4AAB61C6E98A1004DAAF7 /* CCTouchEvent.m in Sources */, + 08F4AAB71C6E98A1004DAAF7 /* CCLabelTTF.m in Sources */, + 08F4AAB81C6E98A1004DAAF7 /* CCNodeColor.m in Sources */, + 08F4AAB91C6E98A1004DAAF7 /* CCScene.m in Sources */, + 08F4AABA1C6E98A1004DAAF7 /* CCTextureCache.m in Sources */, + 08F4AABB1C6E98A1004DAAF7 /* CCMetalSupport.m in Sources */, + 08F4AABC1C6E98A1004DAAF7 /* CCScheduler.m in Sources */, + 08F4AABD1C6E98A1004DAAF7 /* cocos2d.m in Sources */, + 08F4AABE1C6E98A1004DAAF7 /* TGAlib.m in Sources */, + 08F4AABF1C6E98A1004DAAF7 /* CCTextField.m in Sources */, + 08F4AAC01C6E98A1004DAAF7 /* CCActionEase.m in Sources */, + 08F4AAC11C6E98A1004DAAF7 /* CCPlatformTextField.m in Sources */, + 08F4AAC21C6E98A1004DAAF7 /* CCSlider.m in Sources */, + 08F4AAC31C6E98A1004DAAF7 /* CCSprite.m in Sources */, + 08F4AAC41C6E98A1004DAAF7 /* CCFileUtils.m in Sources */, + 08F4AAC51C6E98A1004DAAF7 /* CCTouch.m in Sources */, + 08F4AAC61C6E98A1004DAAF7 /* CGPointExtension.m in Sources */, + 08F4AAC71C6E98A1004DAAF7 /* CCActionManager.m in Sources */, + 08F4AAC81C6E98A1004DAAF7 /* CCRenderDispatch.m in Sources */, + 08F4AAC91C6E98A1004DAAF7 /* CCAppDelegate.m in Sources */, + 08F4AACA1C6E98A1004DAAF7 /* CCMetalView.m in Sources */, + 08F4AACB1C6E98A1004DAAF7 /* base64.c in Sources */, + 08F4AACC1C6E98A1004DAAF7 /* ZipUtils.m in Sources */, + 08F4AACD1C6E98A1004DAAF7 /* CCPlatformTextFieldIOS.m in Sources */, + 08F4AACE1C6E98A1004DAAF7 /* CCRenderTexture.m in Sources */, + 08F4AACF1C6E98A1004DAAF7 /* CCSpriteFrame.m in Sources */, + 08F4AAD01C6E98A1004DAAF7 /* CCSpriteFrameCache.m in Sources */, + 08F4AAD11C6E98A1004DAAF7 /* CCTexture.m in Sources */, + 08F4AAD21C6E98A1004DAAF7 /* CCConfiguration.m in Sources */, + 08F4AAD31C6E98A1004DAAF7 /* CCProfiling.m in Sources */, + 08F4AAD41C6E98A1004DAAF7 /* CCActionProgressTimer.m in Sources */, + 08F4AAD51C6E98A1004DAAF7 /* CCActionTween.m in Sources */, + 08F4AAD61C6E98A1004DAAF7 /* CCSpriteBatchNode.m in Sources */, + 08F4AAD71C6E98A1004DAAF7 /* CCNoARC.m in Sources */, + 08F4AAD81C6E98A1004DAAF7 /* ccUtils.c in Sources */, + 08F4AAD91C6E98A1004DAAF7 /* CCLabelBMFont.m in Sources */, + 08F4AADA1C6E98A1004DAAF7 /* CCDirectorIOS.m in Sources */, + 08F4AADB1C6E98A1004DAAF7 /* CCGLView.m in Sources */, + 08F4AADC1C6E98A1004DAAF7 /* CCTexturePVR.m in Sources */, + 08F4AADD1C6E98A1004DAAF7 /* CCAnimationCache.m in Sources */, + 08F4AADE1C6E98A1004DAAF7 /* CCAnimation.m in Sources */, + 08F4AADF1C6E98A1004DAAF7 /* CCShader.m in Sources */, + 08F4AAE01C6E98A1004DAAF7 /* CCDirectorMac.m in Sources */, + 08F4AAE11C6E98A1004DAAF7 /* CCGLView.m in Sources */, + 08F4AAE21C6E98A1004DAAF7 /* CCWindow.m in Sources */, + 08F4AAE31C6E98A1004DAAF7 /* NSThread+performBlock.m in Sources */, + 08F4AAE41C6E98A1004DAAF7 /* CCActionCatmullRom.m in Sources */, + 08F4AAE51C6E98A1004DAAF7 /* CCRenderer.m in Sources */, + 08F4AAE61C6E98A1004DAAF7 /* CCRendererBasicTypes.m in Sources */, + 08F4AAE71C6E98A1004DAAF7 /* CCNode+Debug.m in Sources */, + 08F4AAE81C6E98A1004DAAF7 /* CCProgressNode.m in Sources */, + 08F4AAE91C6E98A1004DAAF7 /* CCDrawNode.m in Sources */, + 08F4AAEA1C6E98A1004DAAF7 /* CCLayout.m in Sources */, + 08F4AAEB1C6E98A1004DAAF7 /* ccFPSImages.m in Sources */, + 08F4AAEC1C6E98A1004DAAF7 /* CCTableView.m in Sources */, + 08F4AAED1C6E98A1004DAAF7 /* CCSprite9Slice.m in Sources */, + 08F4AAEE1C6E98A1004DAAF7 /* NSAttributedString+CCAdditions.m in Sources */, + 08F4AAEF1C6E98A1004DAAF7 /* CCLayoutBox.m in Sources */, + 08F4AAF01C6E98A1004DAAF7 /* CCColor.m in Sources */, + 08F4AAF11C6E98A1004DAAF7 /* CCTransition.m in Sources */, + 08F4AAF21C6E98A1004DAAF7 /* CCResponderManager.m in Sources */, + 08F4AAF31C6E98A1004DAAF7 /* CCTouchIOS.m in Sources */, + 08F4AAF41C6E98A1004DAAF7 /* CCResponder.m in Sources */, + 08F4AAF51C6E98A1004DAAF7 /* CCButton.m in Sources */, + 08F4AAF61C6E98A1004DAAF7 /* CCControl.m in Sources */, + 08F4AAF71C6E98A1004DAAF7 /* CCControlTextureFactory.m in Sources */, + 08F4AAF81C6E98A1004DAAF7 /* CCCache.m in Sources */, + 08F4AAF91C6E98A1004DAAF7 /* CCRendererGLSupport.m in Sources */, + 08F4AAFA1C6E98A1004DAAF7 /* CCScrollView.m in Sources */, + 08F4AAFB1C6E98A1004DAAF7 /* UITouch+CC.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5018F24A0DFDEAC400C013A5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1681,6 +2078,86 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 08F4AB651C6E98A1004DAAF7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "CD_DEBUG=1", + DEBUG, + "COCOS2D_DEBUG=1", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_THUMB_SUPPORT = NO; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; + GCC_WARN_SHADOW = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/external/kazmath/include", + "cocos2d/**", + "cocos2d-ui/**", + "cocos2d-ui-tests/**", + "$(SRCROOT)/external/Chipmunk/include", + "$(SRCROOT)/external/Chipmunk/objectivec/include", + "$(SRCROOT)/external/ObjectAL/**", + "$(SRCROOT)/external/SSZipArchive/**", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/build/Debug-iphonesimulator\"", + ); + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 08F4AB661C6E98A1004DAAF7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_THUMB_SUPPORT = NO; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; + GCC_WARN_SHADOW = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/external/kazmath/include", + "cocos2d/**", + "cocos2d-ui/**", + "cocos2d-ui-tests/**", + "$(SRCROOT)/external/Chipmunk/include", + "$(SRCROOT)/external/Chipmunk/objectivec/include", + "$(SRCROOT)/external/ObjectAL/**", + "$(SRCROOT)/external/SSZipArchive/**", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/build/Debug-iphonesimulator\"", + ); + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + ZERO_LINK = NO; + }; + name = Release; + }; 5018F24E0DFDEAC500C013A5 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2036,6 +2513,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 08F4AB641C6E98A1004DAAF7 /* Build configuration list for PBXNativeTarget "cocos2d-tvos" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 08F4AB651C6E98A1004DAAF7 /* Debug */, + 08F4AB661C6E98A1004DAAF7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 5018F2500DFDEAE300C013A5 /* Build configuration list for PBXNativeTarget "cocos2d-ios" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/cocos2d/CCConfiguration.m b/cocos2d/CCConfiguration.m index 7b000518d12..9a2a40b3b68 100644 --- a/cocos2d/CCConfiguration.m +++ b/cocos2d/CCConfiguration.m @@ -187,8 +187,16 @@ -(NSInteger) runningDevice { return ([UIScreen mainScreen].scale == 2) ? CCDeviceiPadRetinaDisplay : CCDeviceiPad; } +#if defined(__TV_OS_VERSION_MAX_ALLOWED) + else if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomTV) { + //FIXME: Temporary solution + return CCDeviceiPadRetinaDisplay; + + } +#endif else if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ) { +#if !defined(__TV_OS_VERSION_MAX_ALLOWED) CGSize preferredSize = [[UIScreen mainScreen] preferredMode].size; // This code makes me sad. Very glad it's going away in v4. @@ -201,6 +209,7 @@ -(NSInteger) runningDevice } else { return ([UIScreen mainScreen].scale == 2 ? CCDeviceiPhone6 : CCDeviceiPhone6Plus); } +#endif } #elif __CC_PLATFORM_MAC diff --git a/cocos2d/CCProtocols.h b/cocos2d/CCProtocols.h index 28d90ea0ca7..01384ebd4d6 100644 --- a/cocos2d/CCProtocols.h +++ b/cocos2d/CCProtocols.h @@ -175,9 +175,10 @@ -(GLKMatrix4) updateProjection; #if __CC_PLATFORM_IOS +#if !defined(__TV_OS_VERSION_MAX_ALLOWED) /** Returns a Boolean value indicating whether the CCDirector supports the specified orientation. Default value is YES (supports all possible orientations) */ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation; - +#endif // Commented. See issue #1453 for further info: http://code.google.com/p/cocos2d-iphone/issues/detail?id=1453 //- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; diff --git a/cocos2d/Platforms/iOS/CCAppDelegate.m b/cocos2d/Platforms/iOS/CCAppDelegate.m index 82ad0b25bb8..36b73f173dd 100644 --- a/cocos2d/Platforms/iOS/CCAppDelegate.m +++ b/cocos2d/Platforms/iOS/CCAppDelegate.m @@ -119,10 +119,12 @@ @implementation CCAppDelegate @synthesize window=window_, navController=navController_; +#if !defined(__TV_OS_VERSION_MAX_ALLOWED) - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return UIInterfaceOrientationMaskAll; } +#endif static CGFloat FindPOTScale(CGFloat size, CGFloat fixedSize) @@ -177,8 +179,6 @@ - (void) setupCocos2dWithOptions:(NSDictionary*)config CCDirectorIOS* director = (CCDirectorIOS*) [CCDirector sharedDirector]; - director.wantsFullScreenLayout = YES; - // Display FSP and SPF [director setDisplayStats:[config[CCSetupShowDebugStats] boolValue]]; @@ -263,7 +263,7 @@ - (void)setupFixedScreenMode:(NSDictionary *)config director:(CCDirectorIOS *)di // iOS8 hack around orientation bug -(void)forceOrientation { -#if __CC_PLATFORM_IOS && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0 +#if __CC_PLATFORM_IOS && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0 && !defined(__TV_OS_VERSION_MAX_ALLOWED) if([navController_.screenOrientation isEqual:CCScreenOrientationAll]) { [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationUnknown]; diff --git a/cocos2d/Platforms/iOS/CCDirectorIOS.m b/cocos2d/Platforms/iOS/CCDirectorIOS.m index 69084227665..762b66a1c2f 100644 --- a/cocos2d/Platforms/iOS/CCDirectorIOS.m +++ b/cocos2d/Platforms/iOS/CCDirectorIOS.m @@ -188,6 +188,7 @@ -(void) setView:(CC_VIEW *)view } } +#if !defined(__TV_OS_VERSION_MAX_ALLOWED) // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -197,6 +198,7 @@ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interface return ret; } +#endif // Commented. See issue #1453 for further info: http://code.google.com/p/cocos2d-iphone/issues/detail?id=1453 //-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration diff --git a/cocos2d/Platforms/iOS/CCGLView.m b/cocos2d/Platforms/iOS/CCGLView.m index c768439f0c8..98941f64a21 100644 --- a/cocos2d/Platforms/iOS/CCGLView.m +++ b/cocos2d/Platforms/iOS/CCGLView.m @@ -230,10 +230,11 @@ - (id) initWithFrame:(CGRect)frame pixelFormat:(NSString*)format depthFormat:(GL if( ! [self setupSurfaceWithSharegroup:sharegroup] ) { return nil; } - +#if !defined(__TV_OS_VERSION_MAX_ALLOWED) /** Multiple touch default enabled */ self.multipleTouchEnabled = YES; +#endif _touchEvent = [[CCTouchEvent alloc] init]; } From 29437742a00f7bbab7db82e0c451d283ef73c06c Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 19:54:12 +0300 Subject: [PATCH 24/94] remove OAL headers include --- cocos2d/CCActionInstant.m | 1 - cocos2d/Platforms/iOS/CCAppDelegate.m | 2 -- cocos2d/cocos2d.h | 3 --- 3 files changed, 6 deletions(-) diff --git a/cocos2d/CCActionInstant.m b/cocos2d/CCActionInstant.m index 90ecc3eafdf..948fd3af541 100644 --- a/cocos2d/CCActionInstant.m +++ b/cocos2d/CCActionInstant.m @@ -30,7 +30,6 @@ #import "CCNode.h" #import "CCSprite.h" #import -#import "OALSimpleAudio.h" // // InstantAction diff --git a/cocos2d/Platforms/iOS/CCAppDelegate.m b/cocos2d/Platforms/iOS/CCAppDelegate.m index 36b73f173dd..b82831d33c9 100644 --- a/cocos2d/Platforms/iOS/CCAppDelegate.m +++ b/cocos2d/Platforms/iOS/CCAppDelegate.m @@ -33,8 +33,6 @@ #import "CCScheduler.h" #import "CCGLView.h" -#import "OALSimpleAudio.h" - #if __CC_METAL_SUPPORTED_AND_ENABLED #import "CCMetalView.h" #endif diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index 68c7a1ca089..0cc363dc21a 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -85,9 +85,6 @@ // Shaders #import "CCShader.h" -// Sound -#import "OALSimpleAudio.h" - // Retiring #import "CCAnimation.h" // put this back for v3.4 because it's still in use, and would otherwise be unavailable to Swift //#import "CCAnimationCache.h" From 8b567c19db00fbc8b288c720cdb45ae1e1daea02 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 20:15:05 +0300 Subject: [PATCH 25/94] Remove android leftovers in CCTouch --- cocos2d/CCTouch.h | 11 +++-------- cocos2d/CCTouch.m | 4 ++-- cocos2d/CCTouchEvent.m | 16 ++++++++-------- cocos2d/Platforms/iOS/UITouch+CC.h | 2 +- cocos2d/Platforms/iOS/UITouch+CC.m | 2 +- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/cocos2d/CCTouch.h b/cocos2d/CCTouch.h index a842326e8d8..0cfa48602b1 100644 --- a/cocos2d/CCTouch.h +++ b/cocos2d/CCTouch.h @@ -8,12 +8,7 @@ #import "ccMacros.h" -#if __CC_PLATFORM_IOS #import -#define PlatformTouch UITouch -#else -#define PlatformTouch NSObject -#endif @class CCGLView; @class CCNode; @@ -63,10 +58,10 @@ typedef NS_ENUM (NSInteger, CCTouchPhase) { PlatformTouch is equivalent to UITouch on iOS and NSObject on OS X. @since v3.2 and later */ -@property (nonatomic, strong) PlatformTouch* uiTouch; +@property (nonatomic, strong) UITouch* uiTouch; -- (instancetype)initWithPlatformTouch:(PlatformTouch*)touch; -+ (instancetype)touchWithPlatformTouch:(PlatformTouch*)touch; +- (instancetype)initWithUITouch:(UITouch*)touch; ++ (instancetype)touchWithUITouch:(UITouch*)touch; /** @name Convert Touch Location to Node Coordinate System */ diff --git a/cocos2d/CCTouch.m b/cocos2d/CCTouch.m index 56f39ce0199..80a11240f0d 100644 --- a/cocos2d/CCTouch.m +++ b/cocos2d/CCTouch.m @@ -12,7 +12,7 @@ @implementation CCTouch -- (instancetype)initWithPlatformTouch:(PlatformTouch*)touch +- (instancetype)initWithUITouch:(UITouch*)touch { if((self = [super init])) { @@ -24,7 +24,7 @@ - (instancetype)initWithPlatformTouch:(PlatformTouch*)touch return self; } -+ (instancetype)touchWithPlatformTouch:(PlatformTouch*)touch ++ (instancetype)touchWithUITouch:(UITouch*)touch { return [[self alloc] initWithPlatformTouch:touch]; } diff --git a/cocos2d/CCTouchEvent.m b/cocos2d/CCTouchEvent.m index f9b2d30ccf5..917b49d5eb4 100644 --- a/cocos2d/CCTouchEvent.m +++ b/cocos2d/CCTouchEvent.m @@ -31,7 +31,7 @@ - (id)init _deadTouches = [[NSMutableSet alloc] init]; for(int i = 0; i < 10; i++) { - [_deadTouches addObject:[CCTouch touchWithPlatformTouch:nil]]; + [_deadTouches addObject:[CCTouch touchWithUITouch:nil]]; } _allTouches = [[NSMutableDictionary alloc] init]; @@ -47,7 +47,7 @@ - (void)updateTouchesBegan:(NSSet*)touches [_currentTouches removeAllObjects]; // Began touches - move touches from dead pool to allTouches - for(PlatformTouch* touch in touches) + for(UITouch* touch in touches) { CCTouch* ccTouch = [_deadTouches anyObject]; ccTouch.uiTouch = touch; @@ -58,7 +58,7 @@ - (void)updateTouchesBegan:(NSSet*)touches } // Set currentTouches - for(PlatformTouch* touch in touches) + for(UITouch* touch in touches) { CCTouch* ccTouch = [_allTouches objectForKey:[NSValue valueWithNonretainedObject:touch]]; if(ccTouch) @@ -75,7 +75,7 @@ - (void)updateTouchesMoved:(NSSet*)touches [_currentTouches removeAllObjects]; // Set currentTouches - for(PlatformTouch* touch in touches) + for(UITouch* touch in touches) { CCTouch* ccTouch = [_allTouches objectForKey:[NSValue valueWithNonretainedObject:touch]]; if(ccTouch) @@ -94,7 +94,7 @@ - (void)updateTouchesEnded:(NSSet*)touches NSMutableArray* keys = [[NSMutableArray alloc] init]; // Set currentTouches - for(PlatformTouch* touch in touches) + for(UITouch* touch in touches) { CCTouch* ccTouch = [_allTouches objectForKey:[NSValue valueWithNonretainedObject:touch]]; if(ccTouch) @@ -109,7 +109,7 @@ - (void)updateTouchesEnded:(NSSet*)touches // Ended touches - remove touches from allTouches and place them back into the deadpool - NSArray* deadTouches = [_allTouches objectsForKeys:keys notFoundMarker:[CCTouch touchWithPlatformTouch:nil]]; + NSArray* deadTouches = [_allTouches objectsForKeys:keys notFoundMarker:[CCTouch touchWithUITouch:nil]]; [_deadTouches addObjectsFromArray:deadTouches]; [_allTouches removeObjectsForKeys:keys]; } @@ -121,7 +121,7 @@ - (void)updateTouchesCancelled:(NSSet*)touches NSMutableArray* keys = [[NSMutableArray alloc] init]; // Set currentTouches - for(PlatformTouch* touch in touches) + for(UITouch* touch in touches) { CCTouch* ccTouch = [_allTouches objectForKey:[NSValue valueWithNonretainedObject:touch]]; if(ccTouch) @@ -136,7 +136,7 @@ - (void)updateTouchesCancelled:(NSSet*)touches // Ended touches - remove touches from allTouches and place them back into the deadpool - NSArray* deadTouches = [_allTouches objectsForKeys:keys notFoundMarker:[CCTouch touchWithPlatformTouch:nil]]; + NSArray* deadTouches = [_allTouches objectsForKeys:keys notFoundMarker:[CCTouch touchWithUITouch:nil]]; [_deadTouches addObjectsFromArray:deadTouches]; [_allTouches removeObjectsForKeys:keys]; } diff --git a/cocos2d/Platforms/iOS/UITouch+CC.h b/cocos2d/Platforms/iOS/UITouch+CC.h index 717789f5def..5e9eb78f258 100644 --- a/cocos2d/Platforms/iOS/UITouch+CC.h +++ b/cocos2d/Platforms/iOS/UITouch+CC.h @@ -31,7 +31,7 @@ #import "cocos2d.h" #import -@interface PlatformTouch (CC) +@interface UITouch (CC) - (CGPoint) locationInNode:(CCNode*) node; - (CGPoint) locationInWorld; diff --git a/cocos2d/Platforms/iOS/UITouch+CC.m b/cocos2d/Platforms/iOS/UITouch+CC.m index b5a7ca2d3c3..ec5e4c97183 100644 --- a/cocos2d/Platforms/iOS/UITouch+CC.m +++ b/cocos2d/Platforms/iOS/UITouch+CC.m @@ -29,7 +29,7 @@ #import "UITouch+CC.h" -@implementation PlatformTouch (CC) +@implementation UITouch (CC) - (CGPoint) locationInNode:(CCNode*) node { From 0d7e90ab2a166ee881b9e2994e370e7c35782430 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 20:40:31 +0300 Subject: [PATCH 26/94] Forget about CCTouch --- cocos2d-ui/CCControl.m | 3 +- cocos2d-ui/CCScrollView.m | 3 +- cocos2d-ui/CCSlider.m | 2 +- cocos2d.xcodeproj/project.pbxproj | 42 ------- cocos2d/CCResponderManager.h | 5 +- cocos2d/CCResponderManager.m | 3 +- cocos2d/CCTouch.h | 95 ---------------- cocos2d/CCTouch.m | 82 -------------- cocos2d/CCTouchEvent.h | 34 ------ cocos2d/CCTouchEvent.m | 152 -------------------------- cocos2d/Platforms/iOS/CCDirectorIOS.m | 1 - cocos2d/Platforms/iOS/CCGLView.m | 21 +--- cocos2d/Platforms/iOS/CCTouchIOS.h | 20 ---- cocos2d/Platforms/iOS/CCTouchIOS.m | 30 ----- cocos2d/ccMacros.h | 6 + cocos2d/cocos2d.h | 1 + 16 files changed, 16 insertions(+), 484 deletions(-) delete mode 100644 cocos2d/CCTouch.h delete mode 100644 cocos2d/CCTouch.m delete mode 100644 cocos2d/CCTouchEvent.h delete mode 100644 cocos2d/CCTouchEvent.m delete mode 100644 cocos2d/Platforms/iOS/CCTouchIOS.h delete mode 100644 cocos2d/Platforms/iOS/CCTouchIOS.m diff --git a/cocos2d-ui/CCControl.m b/cocos2d-ui/CCControl.m index 70d5ea46681..aa5a49655b9 100644 --- a/cocos2d-ui/CCControl.m +++ b/cocos2d-ui/CCControl.m @@ -26,8 +26,7 @@ #import "CCControlSubclass.h" #import #import -#import "CCTouch.h" -#import "CCTouchEvent.h" +#import "UITouch+CC.h" #if __CC_PLATFORM_IOS diff --git a/cocos2d-ui/CCScrollView.m b/cocos2d-ui/CCScrollView.m index 489e4c8938a..7a3fd41218d 100755 --- a/cocos2d-ui/CCScrollView.m +++ b/cocos2d-ui/CCScrollView.m @@ -29,8 +29,7 @@ #import "CCActionEase.h" #import "CCActionInstant.h" #import "CCResponderManager.h" -#import "CCTouch.h" - +#import "UITouch+CC.h" #if __CC_PLATFORM_IOS diff --git a/cocos2d-ui/CCSlider.m b/cocos2d-ui/CCSlider.m index 73fdb6a9c3f..74a1f26f63a 100644 --- a/cocos2d-ui/CCSlider.m +++ b/cocos2d-ui/CCSlider.m @@ -8,7 +8,7 @@ #import "CCSlider.h" #import "CCControlSubclass.h" -#import "CCTouch.h" +#include "UITouch+CC.h" @interface CCSlider (Inputs) - (void) inputEnteredWithWorlPos:(CGPoint)worldLocation; diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 30f3a031306..cca595719d7 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -29,7 +29,6 @@ 08F4AAB31C6E98A1004DAAF7 /* CCDirector.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2570DFDEAFF00C013A5 /* CCDirector.m */; }; 08F4AAB41C6E98A1004DAAF7 /* CCActionInstant.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2590DFDEAFF00C013A5 /* CCActionInstant.m */; }; 08F4AAB51C6E98A1004DAAF7 /* CCActionInterval.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25B0DFDEAFF00C013A5 /* CCActionInterval.m */; }; - 08F4AAB61C6E98A1004DAAF7 /* CCTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = D26A0429194B815500503BEC /* CCTouchEvent.m */; }; 08F4AAB71C6E98A1004DAAF7 /* CCLabelTTF.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25D0DFDEAFF00C013A5 /* CCLabelTTF.m */; }; 08F4AAB81C6E98A1004DAAF7 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */; }; 08F4AAB91C6E98A1004DAAF7 /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2610DFDEAFF00C013A5 /* CCScene.m */; }; @@ -44,7 +43,6 @@ 08F4AAC21C6E98A1004DAAF7 /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; 08F4AAC31C6E98A1004DAAF7 /* CCSprite.m in Sources */ = {isa = PBXBuildFile; fileRef = 509A79960F6188420032F449 /* CCSprite.m */; }; 08F4AAC41C6E98A1004DAAF7 /* CCFileUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 50C508C50F7C194400799124 /* CCFileUtils.m */; }; - 08F4AAC51C6E98A1004DAAF7 /* CCTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = D25B4F4A194A499700DA9D60 /* CCTouch.m */; }; 08F4AAC61C6E98A1004DAAF7 /* CGPointExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 503798C50F912C2000986724 /* CGPointExtension.m */; }; 08F4AAC71C6E98A1004DAAF7 /* CCActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */; }; 08F4AAC81C6E98A1004DAAF7 /* CCRenderDispatch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0F199528A0003AA81A /* CCRenderDispatch.m */; }; @@ -90,7 +88,6 @@ 08F4AAF01C6E98A1004DAAF7 /* CCColor.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E776201857A159004221AA /* CCColor.m */; }; 08F4AAF11C6E98A1004DAAF7 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; 08F4AAF21C6E98A1004DAAF7 /* CCResponderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734417C788EB004343C8 /* CCResponderManager.m */; }; - 08F4AAF31C6E98A1004DAAF7 /* CCTouchIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = D23C5CB3194BC108007CA669 /* CCTouchIOS.m */; }; 08F4AAF41C6E98A1004DAAF7 /* CCResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734917C78EF3004343C8 /* CCResponder.m */; }; 08F4AAF51C6E98A1004DAAF7 /* CCButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45B17E7AF1C0028BE0B /* CCButton.m */; }; 08F4AAF61C6E98A1004DAAF7 /* CCControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE45D17E7AF1C0028BE0B /* CCControl.m */; }; @@ -124,7 +121,6 @@ 08F4AB131C6E98A1004DAAF7 /* CCPlatformTextFieldIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD02119649E03003D460C /* CCPlatformTextFieldIOS.h */; }; 08F4AB141C6E98A1004DAAF7 /* CCTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B706B19718209A8300B27A2C /* CCTexture_Private.h */; }; 08F4AB151C6E98A1004DAAF7 /* CCLayoutBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE69DE1819E75700B983FE /* CCLayoutBox.h */; }; - 08F4AB161C6E98A1004DAAF7 /* CCTouchIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CB2194BC108007CA669 /* CCTouchIOS.h */; }; 08F4AB171C6E98A1004DAAF7 /* CCRenderDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B0E199528A0003AA81A /* CCRenderDispatch.h */; }; 08F4AB181C6E98A1004DAAF7 /* CCTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E260D618171D2000A0E872 /* CCTextField.h */; }; 08F4AB191C6E98A1004DAAF7 /* CCRendererBasicTypes_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD6A19C3AA10009BED7A /* CCRendererBasicTypes_Private.h */; }; @@ -174,7 +170,6 @@ 08F4AB451C6E98A1004DAAF7 /* CCMetalView.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B12199528B6003AA81A /* CCMetalView.h */; }; 08F4AB461C6E98A1004DAAF7 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; 08F4AB471C6E98A1004DAAF7 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; - 08F4AB481C6E98A1004DAAF7 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; 08F4AB491C6E98A1004DAAF7 /* CCActionCatmullRom.h in Headers */ = {isa = PBXBuildFile; fileRef = A0A7A53A1514F27D00C8BD16 /* CCActionCatmullRom.h */; }; 08F4AB4A1C6E98A1004DAAF7 /* CCNode+Debug.h in Headers */ = {isa = PBXBuildFile; fileRef = A039EBFD155C686B0061EE37 /* CCNode+Debug.h */; }; 08F4AB4B1C6E98A1004DAAF7 /* CCDrawNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DA0BC115BCDCA200E80A92 /* CCDrawNode.h */; }; @@ -185,7 +180,6 @@ 08F4AB501C6E98A1004DAAF7 /* CCResponderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734317C788EB004343C8 /* CCResponderManager.h */; }; 08F4AB511C6E98A1004DAAF7 /* CCResponder.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734817C78EF3004343C8 /* CCResponder.h */; }; 08F4AB521C6E98A1004DAAF7 /* CCButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45A17E7AF1C0028BE0B /* CCButton.h */; }; - 08F4AB531C6E98A1004DAAF7 /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; 08F4AB541C6E98A1004DAAF7 /* CCControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45C17E7AF1C0028BE0B /* CCControl.h */; }; 08F4AB551C6E98A1004DAAF7 /* CCControlTextureFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE45E17E7AF1C0028BE0B /* CCControlTextureFactory.h */; }; 08F4AB561C6E98A1004DAAF7 /* CCScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46017E7AF1C0028BE0B /* CCScrollView.h */; }; @@ -290,8 +284,6 @@ 7A59468A19E372F000F65F90 /* CCSpriteFrameCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C8BDE10A661E200D137BA /* CCSpriteFrameCache.h */; }; 7A59468C19E372F000F65F90 /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; 7A59468D19E372F000F65F90 /* CCResponder.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734817C78EF3004343C8 /* CCResponder.h */; }; - 7A59469119E372F000F65F90 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; - 7A59469319E372F000F65F90 /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2600DFDEAFF00C013A5 /* CCScene.h */; }; 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; @@ -339,7 +331,6 @@ 7A59473719E3730900F65F90 /* UITouch+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */; }; 7A59473919E3730900F65F90 /* CCDirectorIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD0EA121F4B4600B0C81C /* CCDirectorIOS.h */; }; 7A59473D19E3730A00F65F90 /* CCAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E775CE18527EF0004221AA /* CCAppDelegate.h */; }; - 7A59473F19E3730B00F65F90 /* CCTouchIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CB2194BC108007CA669 /* CCTouchIOS.h */; }; 7A59474119E3730B00F65F90 /* CCMetalSupport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D31C795119994197007921E1 /* CCMetalSupport_Private.h */; }; 7A59474319E3730C00F65F90 /* CCDirectorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E28B14C1DB7D0005BBF2 /* CCDirectorMac.h */; }; 7A59474519E3730C00F65F90 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E28F14C1DB7D0005BBF2 /* CCGLView.h */; }; @@ -504,13 +495,7 @@ B7EE69E31819E75700B983FE /* CCLayoutBox.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69DF1819E75700B983FE /* CCLayoutBox.m */; }; B7EE6A1E181AE34600B983FE /* CCSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE6A1C181AE34600B983FE /* CCSlider.h */; }; B7EE6A1F181AE34600B983FE /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE6A1D181AE34600B983FE /* CCSlider.m */; }; - D23C5CB4194BC108007CA669 /* CCTouchIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D23C5CB2194BC108007CA669 /* CCTouchIOS.h */; }; - D23C5CB5194BC108007CA669 /* CCTouchIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = D23C5CB3194BC108007CA669 /* CCTouchIOS.m */; }; D24FAEEC198014B90043E27D /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D24FAEEB198014B90043E27D /* GLKit.framework */; }; - D25B4F4B194A499700DA9D60 /* CCTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = D25B4F49194A499700DA9D60 /* CCTouch.h */; }; - D25B4F4C194A499700DA9D60 /* CCTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = D25B4F4A194A499700DA9D60 /* CCTouch.m */; }; - D26A042A194B815500503BEC /* CCTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D26A0428194B815500503BEC /* CCTouchEvent.h */; }; - D26A042B194B815500503BEC /* CCTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = D26A0429194B815500503BEC /* CCTouchEvent.m */; }; D28A2E161954F66E00ADC03D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E151954F66E00ADC03D /* UIKit.framework */; }; D28A2E1B1954F68D00ADC03D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E1A1954F68D00ADC03D /* QuartzCore.framework */; }; D28A2E1D1954F7E000ADC03D /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D28A2E1C1954F7E000ADC03D /* OpenGLES.framework */; }; @@ -735,13 +720,7 @@ B7EE69DF1819E75700B983FE /* CCLayoutBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLayoutBox.m; sourceTree = ""; }; B7EE6A1C181AE34600B983FE /* CCSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCSlider.h; path = "cocos2d-ui/CCSlider.h"; sourceTree = ""; }; B7EE6A1D181AE34600B983FE /* CCSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCSlider.m; path = "cocos2d-ui/CCSlider.m"; sourceTree = ""; }; - D23C5CB2194BC108007CA669 /* CCTouchIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouchIOS.h; sourceTree = ""; }; - D23C5CB3194BC108007CA669 /* CCTouchIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouchIOS.m; sourceTree = ""; }; D24FAEEB198014B90043E27D /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; - D25B4F49194A499700DA9D60 /* CCTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouch.h; sourceTree = ""; }; - D25B4F4A194A499700DA9D60 /* CCTouch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouch.m; sourceTree = ""; }; - D26A0428194B815500503BEC /* CCTouchEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouchEvent.h; sourceTree = ""; }; - D26A0429194B815500503BEC /* CCTouchEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouchEvent.m; sourceTree = ""; }; D28A2E151954F66E00ADC03D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; D28A2E1A1954F68D00ADC03D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; D28A2E1C1954F7E000ADC03D /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; @@ -1204,10 +1183,6 @@ A6A0734917C78EF3004343C8 /* CCResponder.m */, A6A0734317C788EB004343C8 /* CCResponderManager.h */, A6A0734417C788EB004343C8 /* CCResponderManager.m */, - D25B4F49194A499700DA9D60 /* CCTouch.h */, - D25B4F4A194A499700DA9D60 /* CCTouch.m */, - D26A0428194B815500503BEC /* CCTouchEvent.h */, - D26A0429194B815500503BEC /* CCTouchEvent.m */, ); name = "Touch & Mouse Handling"; sourceTree = ""; @@ -1353,8 +1328,6 @@ E0EAD0F4121F4B4600B0C81C /* CCGLView.m */, B7E775CE18527EF0004221AA /* CCAppDelegate.h */, B7E775CF18527EF0004221AA /* CCAppDelegate.m */, - D23C5CB2194BC108007CA669 /* CCTouchIOS.h */, - D23C5CB3194BC108007CA669 /* CCTouchIOS.m */, D31C795119994197007921E1 /* CCMetalSupport_Private.h */, D31C794F19994126007921E1 /* CCMetalSupport.m */, ); @@ -1393,7 +1366,6 @@ 08F4AB131C6E98A1004DAAF7 /* CCPlatformTextFieldIOS.h in Headers */, 08F4AB141C6E98A1004DAAF7 /* CCTexture_Private.h in Headers */, 08F4AB151C6E98A1004DAAF7 /* CCLayoutBox.h in Headers */, - 08F4AB161C6E98A1004DAAF7 /* CCTouchIOS.h in Headers */, 08F4AB171C6E98A1004DAAF7 /* CCRenderDispatch.h in Headers */, 08F4AB181C6E98A1004DAAF7 /* CCTextField.h in Headers */, 08F4AB191C6E98A1004DAAF7 /* CCRendererBasicTypes_Private.h in Headers */, @@ -1443,7 +1415,6 @@ 08F4AB451C6E98A1004DAAF7 /* CCMetalView.h in Headers */, 08F4AB461C6E98A1004DAAF7 /* CCTransition.h in Headers */, 08F4AB471C6E98A1004DAAF7 /* CCProgressNode_Private.h in Headers */, - 08F4AB481C6E98A1004DAAF7 /* CCTouch.h in Headers */, 08F4AB491C6E98A1004DAAF7 /* CCActionCatmullRom.h in Headers */, 08F4AB4A1C6E98A1004DAAF7 /* CCNode+Debug.h in Headers */, 08F4AB4B1C6E98A1004DAAF7 /* CCDrawNode.h in Headers */, @@ -1454,7 +1425,6 @@ 08F4AB501C6E98A1004DAAF7 /* CCResponderManager.h in Headers */, 08F4AB511C6E98A1004DAAF7 /* CCResponder.h in Headers */, 08F4AB521C6E98A1004DAAF7 /* CCButton.h in Headers */, - 08F4AB531C6E98A1004DAAF7 /* CCTouchEvent.h in Headers */, 08F4AB541C6E98A1004DAAF7 /* CCControl.h in Headers */, 08F4AB551C6E98A1004DAAF7 /* CCControlTextureFactory.h in Headers */, 08F4AB561C6E98A1004DAAF7 /* CCScrollView.h in Headers */, @@ -1491,7 +1461,6 @@ 571CD02A19649E03003D460C /* CCPlatformTextFieldIOS.h in Headers */, B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */, B7EE69E21819E75700B983FE /* CCLayoutBox.h in Headers */, - D23C5CB4194BC108007CA669 /* CCTouchIOS.h in Headers */, D3903B10199528A0003AA81A /* CCRenderDispatch.h in Headers */, B7E260D818171D2000A0E872 /* CCTextField.h in Headers */, D34CAD6C19C3AA10009BED7A /* CCRendererBasicTypes_Private.h in Headers */, @@ -1541,7 +1510,6 @@ D3903B14199528B6003AA81A /* CCMetalView.h in Headers */, A6DC4E0918055DCC00C280A6 /* CCTransition.h in Headers */, B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */, - D25B4F4B194A499700DA9D60 /* CCTouch.h in Headers */, A0A7A53C1514F27D00C8BD16 /* CCActionCatmullRom.h in Headers */, A039EBFF155C686B0061EE37 /* CCNode+Debug.h in Headers */, A0DA0BC315BCDCA200E80A92 /* CCDrawNode.h in Headers */, @@ -1552,7 +1520,6 @@ A6A0734517C788EB004343C8 /* CCResponderManager.h in Headers */, A6A0734A17C78EF3004343C8 /* CCResponder.h in Headers */, B78AE46217E7AF1C0028BE0B /* CCButton.h in Headers */, - D26A042A194B815500503BEC /* CCTouchEvent.h in Headers */, B78AE46417E7AF1C0028BE0B /* CCControl.h in Headers */, B78AE46617E7AF1C0028BE0B /* CCControlTextureFactory.h in Headers */, B78AE46817E7AF1C0028BE0B /* CCScrollView.h in Headers */, @@ -1582,8 +1549,6 @@ 7A59468A19E372F000F65F90 /* CCSpriteFrameCache.h in Headers */, 7A59468C19E372F000F65F90 /* CCSprite_Private.h in Headers */, 7A59468D19E372F000F65F90 /* CCResponder.h in Headers */, - 7A59469119E372F000F65F90 /* CCTouch.h in Headers */, - 7A59469319E372F000F65F90 /* CCTouchEvent.h in Headers */, 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */, 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */, 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */, @@ -1632,7 +1597,6 @@ 7A59473719E3730900F65F90 /* UITouch+CC.h in Headers */, 7A59473919E3730900F65F90 /* CCDirectorIOS.h in Headers */, 7A59473D19E3730A00F65F90 /* CCAppDelegate.h in Headers */, - 7A59473F19E3730B00F65F90 /* CCTouchIOS.h in Headers */, 7A59474119E3730B00F65F90 /* CCMetalSupport_Private.h in Headers */, 7A59474319E3730C00F65F90 /* CCDirectorMac.h in Headers */, 7A59474519E3730C00F65F90 /* CCGLView.h in Headers */, @@ -1823,7 +1787,6 @@ 08F4AAB31C6E98A1004DAAF7 /* CCDirector.m in Sources */, 08F4AAB41C6E98A1004DAAF7 /* CCActionInstant.m in Sources */, 08F4AAB51C6E98A1004DAAF7 /* CCActionInterval.m in Sources */, - 08F4AAB61C6E98A1004DAAF7 /* CCTouchEvent.m in Sources */, 08F4AAB71C6E98A1004DAAF7 /* CCLabelTTF.m in Sources */, 08F4AAB81C6E98A1004DAAF7 /* CCNodeColor.m in Sources */, 08F4AAB91C6E98A1004DAAF7 /* CCScene.m in Sources */, @@ -1838,7 +1801,6 @@ 08F4AAC21C6E98A1004DAAF7 /* CCSlider.m in Sources */, 08F4AAC31C6E98A1004DAAF7 /* CCSprite.m in Sources */, 08F4AAC41C6E98A1004DAAF7 /* CCFileUtils.m in Sources */, - 08F4AAC51C6E98A1004DAAF7 /* CCTouch.m in Sources */, 08F4AAC61C6E98A1004DAAF7 /* CGPointExtension.m in Sources */, 08F4AAC71C6E98A1004DAAF7 /* CCActionManager.m in Sources */, 08F4AAC81C6E98A1004DAAF7 /* CCRenderDispatch.m in Sources */, @@ -1884,7 +1846,6 @@ 08F4AAF01C6E98A1004DAAF7 /* CCColor.m in Sources */, 08F4AAF11C6E98A1004DAAF7 /* CCTransition.m in Sources */, 08F4AAF21C6E98A1004DAAF7 /* CCResponderManager.m in Sources */, - 08F4AAF31C6E98A1004DAAF7 /* CCTouchIOS.m in Sources */, 08F4AAF41C6E98A1004DAAF7 /* CCResponder.m in Sources */, 08F4AAF51C6E98A1004DAAF7 /* CCButton.m in Sources */, 08F4AAF61C6E98A1004DAAF7 /* CCControl.m in Sources */, @@ -1906,7 +1867,6 @@ 5018F26E0DFDEAFF00C013A5 /* CCDirector.m in Sources */, 5018F2700DFDEAFF00C013A5 /* CCActionInstant.m in Sources */, 5018F2720DFDEAFF00C013A5 /* CCActionInterval.m in Sources */, - D26A042B194B815500503BEC /* CCTouchEvent.m in Sources */, 5018F2740DFDEAFF00C013A5 /* CCLabelTTF.m in Sources */, 5018F2760DFDEAFF00C013A5 /* CCNodeColor.m in Sources */, 5018F2780DFDEAFF00C013A5 /* CCScene.m in Sources */, @@ -1921,7 +1881,6 @@ B7EE6A1F181AE34600B983FE /* CCSlider.m in Sources */, 509A79980F6188420032F449 /* CCSprite.m in Sources */, 50C508C70F7C194400799124 /* CCFileUtils.m in Sources */, - D25B4F4C194A499700DA9D60 /* CCTouch.m in Sources */, 503798C70F912C2000986724 /* CGPointExtension.m in Sources */, 50CB3B0F100AC43A00B7A750 /* CCActionManager.m in Sources */, D3903B11199528A0003AA81A /* CCRenderDispatch.m in Sources */, @@ -1967,7 +1926,6 @@ B7E776221857A159004221AA /* CCColor.m in Sources */, A6DC4E0A18055DCC00C280A6 /* CCTransition.m in Sources */, A6A0734617C788EB004343C8 /* CCResponderManager.m in Sources */, - D23C5CB5194BC108007CA669 /* CCTouchIOS.m in Sources */, A6A0734B17C78EF3004343C8 /* CCResponder.m in Sources */, B78AE46317E7AF1C0028BE0B /* CCButton.m in Sources */, B78AE46517E7AF1C0028BE0B /* CCControl.m in Sources */, diff --git a/cocos2d/CCResponderManager.h b/cocos2d/CCResponderManager.h index 3669ca74df5..598e4288953 100644 --- a/cocos2d/CCResponderManager.h +++ b/cocos2d/CCResponderManager.h @@ -31,10 +31,7 @@ // TODO: Grab mouse and touch by implementing onPressed, onReleased, onClicked #import - -#import "CCTouch.h" -#import "CCTouchEvent.h" - +#import "ccMacros.h" #if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) #import diff --git a/cocos2d/CCResponderManager.m b/cocos2d/CCResponderManager.m index dcaca1ea868..f575d4c396f 100644 --- a/cocos2d/CCResponderManager.m +++ b/cocos2d/CCResponderManager.m @@ -32,12 +32,11 @@ #import "CCDirector.h" #import "CCDirectorMac.h" #import "CCScene.h" -#import "CCTouch.h" // ----------------------------------------------------------------- #pragma mark - // ----------------------------------------------------------------- - +@class CCGLView; @implementation CCRunningResponder @end diff --git a/cocos2d/CCTouch.h b/cocos2d/CCTouch.h deleted file mode 100644 index 0cfa48602b1..00000000000 --- a/cocos2d/CCTouch.h +++ /dev/null @@ -1,95 +0,0 @@ -// -// CCTouch.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/12/14. -// -// - -#import "ccMacros.h" - -#import - -@class CCGLView; -@class CCNode; - -/** Touch phases, equivalent to [UITouch phases](https://developer.apple.com/library/ios/documentation/uikit/reference/UITouch_Class/index.html#//apple_ref/c/tdef/UITouchPhase). - Used by touch events received through CCResponder. */ -typedef NS_ENUM (NSInteger, CCTouchPhase) { - /** A finger just touched the screen. */ - CCTouchPhaseBegan, - /** A finger on the screen just moved. */ - CCTouchPhaseMoved, - /** A finger touches the screen but hasn't moved recently. */ - CCTouchPhaseStationary, - /** A finger was lifted from the screen. */ - CCTouchPhaseEnded, - /** The system cancelled touch events. This can have many reasons, for instance when receiving a call and the screen goes black or a gesture recognizer cancelling touch events. */ - CCTouchPhaseCancelled, -}; - -/** Thin wrapper around platform-specific touch events (ie [UITouch](https://developer.apple.com/library/ios/documentation/uikit/reference/UITouch_Class/index.html)). - CCTouch is platform independent version of the touch event objects sent by iOS and OS X. - - @note You should never create instances of CCTouch. */ -@interface CCTouch : NSObject - -/** @name Touch Information */ -/** The CCTouchPhase this touch is currently in. - @since v3.2 and later - */ -@property (nonatomic, readonly) CCTouchPhase phase; -/** The number of taps for this touch event. - @since v3.2 and later -*/ -@property (nonatomic, readonly) NSUInteger tapCount; -/** The timestamp of the most recent touch phase change. - @since v3.2 and later -*/ -@property (nonatomic, readonly) NSTimeInterval timestamp; - -/** @name Associated View and Platform Touch */ - -/** The associated Cocos2D view. - @since v3.2 and later -*/ -@property (nonatomic, strong) CCGLView *view; -/** The associated platform-specific touch event (ie UITouch). - PlatformTouch is equivalent to UITouch on iOS and NSObject on OS X. - @since v3.2 and later -*/ -@property (nonatomic, strong) UITouch* uiTouch; - -- (instancetype)initWithUITouch:(UITouch*)touch; -+ (instancetype)touchWithUITouch:(UITouch*)touch; - -/** @name Convert Touch Location to Node Coordinate System */ - -/** - @param node The node to which this touch should be relative to. - @returns The touch location relative to the given node's position. - @since v3.2 and later -*/ -- (CGPoint)locationInNode:(CCNode*) node; -/** - @returns The touch location relative to the scene (aka "world"). - @since v3.2 and later -*/ -- (CGPoint)locationInWorld; - -/** @name Convert Touch Location to View Coordinate System */ - -/** - @param view The view to which this touch should be relative to. - @returns The touch location relative to the given view. - @since v3.2 and later -*/ -- (CGPoint)locationInView:(CCGLView *)view; -/** - @param view The view to which this touch should be relative to. - @returns The previous touch location relative to the given view. - @since v3.2 and later -*/ -- (CGPoint)previousLocationInView:(CCGLView *)view; - -@end diff --git a/cocos2d/CCTouch.m b/cocos2d/CCTouch.m deleted file mode 100644 index 80a11240f0d..00000000000 --- a/cocos2d/CCTouch.m +++ /dev/null @@ -1,82 +0,0 @@ -// -// CCTouch.m -// cocos2d-ios -// -// Created by Oleg Osin on 6/12/14. -// -// - -#import "cocos2d.h" -#import "CCTouch.h" -#import "CCDirector.h" - -@implementation CCTouch - -- (instancetype)initWithUITouch:(UITouch*)touch -{ - if((self = [super init])) - { - _uiTouch = touch; - _view = (CCGLView*)[CCDirector sharedDirector].view; - return self; - } - - return self; -} - -+ (instancetype)touchWithUITouch:(UITouch*)touch -{ - return [[self alloc] initWithPlatformTouch:touch]; -} - -- (CCTouchPhase)phase -{ - return (CCTouchPhase)_uiTouch.phase; -} - -- (NSUInteger)tapCount -{ - return _uiTouch.tapCount; -} - -- (NSTimeInterval)timestamp -{ - return _uiTouch.timestamp; -} - -- (CGPoint)locationInNode:(CCNode*) node -{ - CCDirector* dir = [CCDirector sharedDirector]; - - CGPoint touchLocation = [self locationInView: [self view]]; - touchLocation = [dir convertToGL: touchLocation]; - return [node convertToNodeSpace:touchLocation]; -} - -- (CGPoint)locationInWorld -{ - CCDirector* dir = [CCDirector sharedDirector]; - - CGPoint touchLocation = [self locationInView: [self view]]; - return [dir convertToGL: touchLocation]; -} - -- (CGPoint)locationInView:(CCGLView *)view -{ - return (CGPoint){0, 0}; -} - -- (CGPoint)previousLocationInView:(CCGLView *)view -{ - return (CGPoint){0, 0}; -} - -- (NSString *)description -{ - CGPoint loc = [self locationInView:nil]; - return [NSString stringWithFormat:@"<%@: %p location: {%f, %f} phase: %ld>", [self class], self, loc.x, loc.y, (unsigned long)self.phase]; -} - -@end - - diff --git a/cocos2d/CCTouchEvent.h b/cocos2d/CCTouchEvent.h deleted file mode 100644 index f4e7f70a340..00000000000 --- a/cocos2d/CCTouchEvent.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// CCTouchEvent.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/13/14. -// -// - -#import - -/** Thin wrapper around platform-specific touch event objects. - @note You should never create instances of CCTouchEvent. - */ -@interface CCTouchEvent : NSObject - -/** Timestamp for this event. */ -@property(nonatomic) NSTimeInterval timestamp; -/** A dictionary containing the current touches. The keys are `PlatformTouch` pointers (UITouch on iOS, NSObject on Mac) - and the values are CCTouch objects. - @see CCTouch */ -@property(nonatomic, readonly) NSMutableDictionary* allTouches; -/** The list of touches for this particular event. Items are CCTouch instances. - @see CCTouch */ -@property(nonatomic, readonly) NSMutableSet* currentTouches; // CCTouches - -// purposefully undocumented: following methods are for internal use only -- (id)init; - -- (void)updateTouchesBegan:(NSSet*)touches; -- (void)updateTouchesMoved:(NSSet*)touches; -- (void)updateTouchesEnded:(NSSet*)touches; -- (void)updateTouchesCancelled:(NSSet*)touches; - -@end diff --git a/cocos2d/CCTouchEvent.m b/cocos2d/CCTouchEvent.m deleted file mode 100644 index 917b49d5eb4..00000000000 --- a/cocos2d/CCTouchEvent.m +++ /dev/null @@ -1,152 +0,0 @@ -// -// CCTouchEvent.m -// cocos2d-ios -// -// Created by Oleg Osin on 6/13/14. -// -// - -#import "CCTouchEvent.h" -#import "CCDirector.h" -#import "ccMacros.h" - -#if __CC_PLATFORM_IOS -#import "Platforms/iOS/CCTouchIOS.h" -#define CCTouch CCTouchIOS -#endif - -#ifndef __CC_TOUCH_MAX -#define __CC_TOUCH_MAX 10 -#endif - - -@implementation CCTouchEvent { - NSMutableSet* _deadTouches; -} - -- (id)init -{ - if((self = [super init])) - { - _deadTouches = [[NSMutableSet alloc] init]; - for(int i = 0; i < 10; i++) - { - [_deadTouches addObject:[CCTouch touchWithUITouch:nil]]; - } - - _allTouches = [[NSMutableDictionary alloc] init]; - _currentTouches = [[NSMutableSet alloc] init]; - return self; - } - - return self; -} - -- (void)updateTouchesBegan:(NSSet*)touches -{ - [_currentTouches removeAllObjects]; - - // Began touches - move touches from dead pool to allTouches - for(UITouch* touch in touches) - { - CCTouch* ccTouch = [_deadTouches anyObject]; - ccTouch.uiTouch = touch; - - [_allTouches setObject:ccTouch forKey:[NSValue valueWithNonretainedObject:touch]]; - - [_deadTouches removeObject:ccTouch]; - } - - // Set currentTouches - for(UITouch* touch in touches) - { - CCTouch* ccTouch = [_allTouches objectForKey:[NSValue valueWithNonretainedObject:touch]]; - if(ccTouch) - { - ccTouch.view = (CCGLView*)[CCDirector sharedDirector].view; - ccTouch.uiTouch = touch; - [_currentTouches addObject:ccTouch]; - } - } -} - -- (void)updateTouchesMoved:(NSSet*)touches -{ - [_currentTouches removeAllObjects]; - - // Set currentTouches - for(UITouch* touch in touches) - { - CCTouch* ccTouch = [_allTouches objectForKey:[NSValue valueWithNonretainedObject:touch]]; - if(ccTouch) - { - ccTouch.view = (CCGLView*)[CCDirector sharedDirector].view; - ccTouch.uiTouch = touch; - [_currentTouches addObject:ccTouch]; - } - } -} - -- (void)updateTouchesEnded:(NSSet*)touches -{ - [_currentTouches removeAllObjects]; - - NSMutableArray* keys = [[NSMutableArray alloc] init]; - - // Set currentTouches - for(UITouch* touch in touches) - { - CCTouch* ccTouch = [_allTouches objectForKey:[NSValue valueWithNonretainedObject:touch]]; - if(ccTouch) - { - ccTouch.view = (CCGLView*)[CCDirector sharedDirector].view; - ccTouch.uiTouch = touch; - [_currentTouches addObject:ccTouch]; - } - - [keys addObject:[NSValue valueWithNonretainedObject:touch]]; - } - - - // Ended touches - remove touches from allTouches and place them back into the deadpool - NSArray* deadTouches = [_allTouches objectsForKeys:keys notFoundMarker:[CCTouch touchWithUITouch:nil]]; - [_deadTouches addObjectsFromArray:deadTouches]; - [_allTouches removeObjectsForKeys:keys]; -} - -- (void)updateTouchesCancelled:(NSSet*)touches -{ - [_currentTouches removeAllObjects]; - - NSMutableArray* keys = [[NSMutableArray alloc] init]; - - // Set currentTouches - for(UITouch* touch in touches) - { - CCTouch* ccTouch = [_allTouches objectForKey:[NSValue valueWithNonretainedObject:touch]]; - if(ccTouch) - { - ccTouch.view = (CCGLView*)[CCDirector sharedDirector].view; - ccTouch.uiTouch = touch; - [_currentTouches addObject:ccTouch]; - } - - [keys addObject:[NSValue valueWithNonretainedObject:touch]]; - } - - - // Ended touches - remove touches from allTouches and place them back into the deadpool - NSArray* deadTouches = [_allTouches objectsForKeys:keys notFoundMarker:[CCTouch touchWithUITouch:nil]]; - [_deadTouches addObjectsFromArray:deadTouches]; - [_allTouches removeObjectsForKeys:keys]; -} - -- (NSString *)description -{ - return [NSString stringWithFormat:@"<%@: %p allTouches: %@ currentTouches: %@>", [self class], self, _allTouches, _currentTouches]; -} - -@end - - - diff --git a/cocos2d/Platforms/iOS/CCDirectorIOS.m b/cocos2d/Platforms/iOS/CCDirectorIOS.m index 762b66a1c2f..db75ad8945a 100644 --- a/cocos2d/Platforms/iOS/CCDirectorIOS.m +++ b/cocos2d/Platforms/iOS/CCDirectorIOS.m @@ -43,7 +43,6 @@ #import "../../ccFPSImages.h" #import "../../CCConfiguration.h" #import "CCRenderer_Private.h" -#import "CCTouch.h" #import "CCRenderDispatch_Private.h" // support imports diff --git a/cocos2d/Platforms/iOS/CCGLView.m b/cocos2d/Platforms/iOS/CCGLView.m index 98941f64a21..317fb3250a0 100644 --- a/cocos2d/Platforms/iOS/CCGLView.m +++ b/cocos2d/Platforms/iOS/CCGLView.m @@ -77,8 +77,6 @@ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE #import "../../ccMacros.h" #import "../../CCConfiguration.h" #import "CCScene.h" -#import "CCTouch.h" -#import "CCTouchEvent.h" #import "CCDirector_Private.h" #import "CCRenderDispatch.h" @@ -152,7 +150,6 @@ -(BOOL)isComplete @end @implementation CCGLView { - CCTouchEvent* _touchEvent; NSMutableArray *_fences; EAGLContext *_context; @@ -235,8 +232,6 @@ - (id) initWithFrame:(CGRect)frame pixelFormat:(NSString*)format depthFormat:(GL */ self.multipleTouchEnabled = YES; #endif - - _touchEvent = [[CCTouchEvent alloc] init]; } return self; @@ -484,31 +479,23 @@ -(GLenum)convertPixelFormat:(NSString*)pixelFormat - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - _touchEvent.timestamp = event.timestamp; - [_touchEvent updateTouchesBegan:touches]; - [[CCDirector sharedDirector].responderManager touchesBegan:_touchEvent.currentTouches withEvent:_touchEvent]; + [[CCDirector sharedDirector].responderManager touchesBegan:touches withEvent:event]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { - _touchEvent.timestamp = event.timestamp; - [_touchEvent updateTouchesMoved:touches]; - [[CCDirector sharedDirector].responderManager touchesMoved:_touchEvent.currentTouches withEvent:_touchEvent]; + [[CCDirector sharedDirector].responderManager touchesMoved:touches withEvent:event]; } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - _touchEvent.timestamp = event.timestamp; - [_touchEvent updateTouchesEnded:touches]; - [[CCDirector sharedDirector].responderManager touchesEnded:_touchEvent.currentTouches withEvent:_touchEvent]; + [[CCDirector sharedDirector].responderManager touchesEnded:touches withEvent:event]; } - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { - _touchEvent.timestamp = event.timestamp; - [_touchEvent updateTouchesCancelled:touches]; - [[CCDirector sharedDirector].responderManager touchesCancelled:_touchEvent.currentTouches withEvent:_touchEvent]; + [[CCDirector sharedDirector].responderManager touchesCancelled:touches withEvent:event]; } @end diff --git a/cocos2d/Platforms/iOS/CCTouchIOS.h b/cocos2d/Platforms/iOS/CCTouchIOS.h deleted file mode 100644 index 31ef12abaec..00000000000 --- a/cocos2d/Platforms/iOS/CCTouchIOS.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// CCTouchIOS.h -// cocos2d-ios -// -// Created by Oleg Osin on 6/13/14. -// -// - -#import "CCTouch.h" - -#if __CC_PLATFORM_IOS - -@interface CCTouchIOS : CCTouch - -- (CGPoint)locationInView:(CCGLView *)view; -- (CGPoint)previousLocationInView:(CCGLView *)view; - -@end - -#endif diff --git a/cocos2d/Platforms/iOS/CCTouchIOS.m b/cocos2d/Platforms/iOS/CCTouchIOS.m deleted file mode 100644 index 26236b528da..00000000000 --- a/cocos2d/Platforms/iOS/CCTouchIOS.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// CCTouchIOS.m -// cocos2d-ios -// -// Created by Oleg Osin on 6/13/14. -// -// - -#import "CCTouchIOS.h" -#import "cocos2d.h" -#import "CCTouch.h" -#import "CCDirector.h" - -#if __CC_PLATFORM_IOS - -@implementation CCTouchIOS - -- (CGPoint)locationInView:(CCGLView *)view -{ - return [self.uiTouch locationInView:view]; -} - -- (CGPoint)previousLocationInView:(CCGLView *)view -{ - return [self.uiTouch previousLocationInView:view]; -} - -@end - -#endif diff --git a/cocos2d/ccMacros.h b/cocos2d/ccMacros.h index 65dfef8ffd2..905c7c74ff9 100644 --- a/cocos2d/ccMacros.h +++ b/cocos2d/ccMacros.h @@ -54,6 +54,12 @@ #define __CC_METAL_SUPPORTED_AND_ENABLED 0 #endif +// Android legacy +#if __CC_PLATFORM_IOS +#define CCTouch UITouch +#define CCTouchEvent UIEvent +#endif + /* * if COCOS2D_DEBUG is not defined, or if it is 0 then * all CCLOGXXX macros will be disabled diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index 0cc363dc21a..b7d67641d24 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -77,6 +77,7 @@ #import "CCTransition.h" #import "CCTexture.h" #import "CCTexturePVR.h" +#import "UITouch+CC.h" // Layouts #import "CCLayout.h" From 87f484b30e880697b9c1a706bd348c409047ad60 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 20:44:24 +0300 Subject: [PATCH 27/94] Eliminate warnings --- cocos2d/CCActionInstant.h | 3 ++- cocos2d/CCResponderManager.m | 6 +++--- cocos2d/CCSprite.h | 7 ++++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/cocos2d/CCActionInstant.h b/cocos2d/CCActionInstant.h index 5a6ee9603e2..6ad5dab62f1 100644 --- a/cocos2d/CCActionInstant.h +++ b/cocos2d/CCActionInstant.h @@ -368,4 +368,5 @@ */ -(id) initWithSpriteFrame:(CCSpriteFrame*)spriteFrame; -@end \ No newline at end of file +@end + diff --git a/cocos2d/CCResponderManager.m b/cocos2d/CCResponderManager.m index f575d4c396f..897fd6408ef 100644 --- a/cocos2d/CCResponderManager.m +++ b/cocos2d/CCResponderManager.m @@ -240,7 +240,7 @@ - (void)touchesBegan:(NSSet *)touches withEvent:(CCTouchEvent *)event // go through all touches for (CCTouch *touch in touches) { - CGPoint worldTouchLocation = [[CCDirector sharedDirector] convertToGL:[touch locationInView:(CCGLView*)[CCDirector sharedDirector].view]]; + CGPoint worldTouchLocation = [[CCDirector sharedDirector] convertToGL:[touch locationInView:[CCDirector sharedDirector].view]]; // scan backwards through touch responders for (int index = _responderListCount - 1; index >= 0; index --) @@ -317,7 +317,7 @@ - (void)touchesMoved:(NSSet *)touches withEvent:(CCTouchEvent *)event else { // as node does not lock touch, check if it was moved outside - if (![node hitTestWithWorldPos:[[CCDirector sharedDirector] convertToGL:[touch locationInView:(CCGLView*)[CCDirector sharedDirector].view]]]) + if (![node hitTestWithWorldPos:[[CCDirector sharedDirector] convertToGL:[touch locationInView:[CCDirector sharedDirector].view]]]) { // cancel the touch if ([node respondsToSelector:@selector(touchCancelled:withEvent:)]) @@ -346,7 +346,7 @@ - (void)touchesMoved:(NSSet *)touches withEvent:(CCTouchEvent *)event CCNode *node = _responderList[index]; // if the touch responder does not lock touch, it will receive a touchBegan if a touch is moved inside - if (!node.claimsUserInteraction && [node hitTestWithWorldPos:[[CCDirector sharedDirector] convertToGL:[touch locationInView:(CCGLView*)[CCDirector sharedDirector].view ]]]) + if (!node.claimsUserInteraction && [node hitTestWithWorldPos:[[CCDirector sharedDirector] convertToGL:[touch locationInView:[CCDirector sharedDirector].view]]]) { // check if node has exclusive touch if (node.isExclusiveTouch) diff --git a/cocos2d/CCSprite.h b/cocos2d/CCSprite.h index a6d0d2c8927..059fc7c2187 100644 --- a/cocos2d/CCSprite.h +++ b/cocos2d/CCSprite.h @@ -54,7 +54,12 @@ typedef struct CCSpriteTexCoordSet { The default anchorPoint in CCSprite is (0.5, 0.5). */ -@interface CCSprite : CCNode +@interface CCSprite : CCNode /// ----------------------------------------------------------------------- /// @name Creating a Sprite with an Image File or Sprite Frame Name From 20181f062735888adf1bbd0ba141f2dfcfccb21c Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 22:22:31 +0300 Subject: [PATCH 28/94] xcasset support for texture cache + refactoring --- cocos2d/CCTextureCache.m | 89 +++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 47 deletions(-) diff --git a/cocos2d/CCTextureCache.m b/cocos2d/CCTextureCache.m index 294ec66074c..73d6186fa60 100644 --- a/cocos2d/CCTextureCache.m +++ b/cocos2d/CCTextureCache.m @@ -290,58 +290,53 @@ -(CCTexture*) addImage: (NSString*) path CGFloat contentScale; NSString *fullpath = [fileUtils fullPathForFilename:path contentScale:&contentScale]; - if( ! fullpath ) { - CCLOG(@"cocos2d: Couldn't find file:%@", path); - return nil; - } - - NSString *lowerCase = [fullpath lowercaseString]; - + // all images are handled by UIKit/AppKit except PVR extension that is handled by cocos2d's handler + // main bundle loading is priotirized for backwards compatibility reasons + if( fullpath ) { + NSString *lowerCase = [fullpath lowercaseString]; - if ( [lowerCase hasSuffix:@".pvr"] || [lowerCase hasSuffix:@".pvr.gz"] || [lowerCase hasSuffix:@".pvr.ccz"] ) - tex = [self addPVRImage:path]; - + if ( [lowerCase hasSuffix:@".pvr"] || [lowerCase hasSuffix:@".pvr.gz"] || [lowerCase hasSuffix:@".pvr.ccz"] ) + tex = [self addPVRImage:path]; #if __CC_PLATFORM_IOS - - else { - UIImage *image = [[UIImage alloc] initWithContentsOfFile:fullpath]; - tex = [[CCTexture alloc] initWithCGImage:image.CGImage contentScale:contentScale]; - - CCLOGINFO(@"Texture loaded: %@", path); - - if( tex ){ - dispatch_sync(_dictQueue, ^{ - [_textures setObject: tex forKey:path]; - CCLOGINFO(@"Texture %@ cached: %p", path, tex); - }); - }else{ - CCLOG(@"cocos2d: Couldn't create texture for file:%@ in CCTextureCache", path); - } - } - - + else { + UIImage *image = [[UIImage alloc] initWithContentsOfFile:fullpath]; + tex = [[CCTexture alloc] initWithCGImage:image.CGImage contentScale:contentScale]; + } #elif __CC_PLATFORM_MAC - else { - - NSData *data = [[NSData alloc] initWithContentsOfFile:fullpath]; - NSBitmapImageRep *image = [[NSBitmapImageRep alloc] initWithData:data]; - tex = [ [CCTexture alloc] initWithCGImage:[image CGImage] contentScale:contentScale]; - - - if( tex ){ - dispatch_sync(_dictQueue, ^{ - [_textures setObject: tex forKey:path]; - }); - }else{ - CCLOG(@"cocos2d: Couldn't create texture for file:%@ in CCTextureCache", path); - } - - // autorelease prevents possible crash in multithreaded environments - //[tex autorelease]; - } + else { + NSData *data = [[NSData alloc] initWithContentsOfFile:fullpath]; + NSBitmapImageRep *image = [[NSBitmapImageRep alloc] initWithData:data]; + tex = [ [CCTexture alloc] initWithCGImage:[image CGImage] contentScale:contentScale]; + + // autorelease prevents possible crash in multithreaded environments + //[tex autorelease]; + } #endif // __CC_PLATFORM_MAC - + // if we cant find a file in the main bundle then we trying to load it from xcassets + } else { +#if __CC_PLATFORM_IOS + UIImage *image = [UIImage imageNamed:path]; + + if (image) + tex = [[CCTexture alloc] initWithCGImage:image.CGImage contentScale:image.scale]; +#elif __CC_PLATFORM_MAC + NSImage *image = [NSImage imageNamed:path]; + + if (image) + tex = [[CCTexture alloc] initWithCGImage:[image CGImageForProposedRect:nil context:nil hints:nil] contentScale:contentScale]; +#endif + } + + //if we could load a tex from anywhere we add it to the cache + if( tex ){ + dispatch_sync(_dictQueue, ^{ + [_textures setObject: tex forKey:path]; + }); + }else{ + CCLOG(@"cocos2d: Couldn't create texture for file:%@ in CCTextureCache", path); + return nil; + } } return((id)tex.proxy); From 81dc83fe7969ca7d42400f8734c3b3b4e8e09e18 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 23:20:46 +0300 Subject: [PATCH 29/94] exclude CCResponderTest from mac --- cocos2d-tests.xcodeproj/project.pbxproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index d2cea083b14..ef184970d59 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -432,7 +432,6 @@ D3763D3F19E734C5006C050D /* CCSchedulerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C9C866188078B900C58900 /* CCSchedulerTest.m */; }; D3763D4019E734C5006C050D /* CCTableViewTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B7C6238B17ECDF6A00928F91 /* CCTableViewTest.m */; }; D3763D4119E734C5006C050D /* CCTransitionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B70AFC2F180F2D7400516435 /* CCTransitionTest.m */; }; - D3763D4219E734C5006C050D /* CCResponderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B772F69E1811C8D9005C069B /* CCResponderTest.m */; }; D3763D4319E734C5006C050D /* CCSprite9SliceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69801818760700B983FE /* CCSprite9SliceTest.m */; }; D3763D4419E734C5006C050D /* CCTextFieldTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE697818186D5200B983FE /* CCTextFieldTest.m */; }; D3763D4519E734C5006C050D /* CCLayoutTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69CE1819D82300B983FE /* CCLayoutTest.m */; }; @@ -2246,7 +2245,6 @@ 084782141C66669300C3817B /* CCTMXXMLParser.m in Sources */, 0847820B1C66669300C3817B /* CCTiledMap.m in Sources */, 089949B21C67F40000ECC92C /* CCPackageHelper.m in Sources */, - D3763D4219E734C5006C050D /* CCResponderTest.m in Sources */, D3763D4319E734C5006C050D /* CCSprite9SliceTest.m in Sources */, 0899497C1C67F2D600ECC92C /* CCParticleBatchNode.m in Sources */, 089949821C67F2D600ECC92C /* CCParticleSystem.m in Sources */, From 5d7ab7e65aebcef1ea20976e3caa8e2601cc22c2 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 23:30:31 +0300 Subject: [PATCH 30/94] CCProgressNode moved to -ui --- .../CCActionProgressTimer.h | 0 .../CCActionProgressTimer.m | 0 {cocos2d => cocos2d-ui}/CCProgressNode.h | 1 + {cocos2d => cocos2d-ui}/CCProgressNode.m | 0 cocos2d-ui/cocos2d-ui.h | 1 + cocos2d.xcodeproj/project.pbxproj | 64 +++++++++---------- cocos2d/cocos2d.h | 1 - 7 files changed, 34 insertions(+), 33 deletions(-) rename {cocos2d => cocos2d-ui}/CCActionProgressTimer.h (100%) rename {cocos2d => cocos2d-ui}/CCActionProgressTimer.m (100%) rename {cocos2d => cocos2d-ui}/CCProgressNode.h (99%) rename {cocos2d => cocos2d-ui}/CCProgressNode.m (100%) diff --git a/cocos2d/CCActionProgressTimer.h b/cocos2d-ui/CCActionProgressTimer.h similarity index 100% rename from cocos2d/CCActionProgressTimer.h rename to cocos2d-ui/CCActionProgressTimer.h diff --git a/cocos2d/CCActionProgressTimer.m b/cocos2d-ui/CCActionProgressTimer.m similarity index 100% rename from cocos2d/CCActionProgressTimer.m rename to cocos2d-ui/CCActionProgressTimer.m diff --git a/cocos2d/CCProgressNode.h b/cocos2d-ui/CCProgressNode.h similarity index 99% rename from cocos2d/CCProgressNode.h rename to cocos2d-ui/CCProgressNode.h index 438fc288dc2..eb851d90a8e 100644 --- a/cocos2d/CCProgressNode.h +++ b/cocos2d-ui/CCProgressNode.h @@ -26,6 +26,7 @@ #import #import "CCSprite.h" +#import "CCActionProgressTimer.h" /** Progress Node type used by CCProgressNode. */ typedef NS_ENUM(NSUInteger, CCProgressNodeType) { diff --git a/cocos2d/CCProgressNode.m b/cocos2d-ui/CCProgressNode.m similarity index 100% rename from cocos2d/CCProgressNode.m rename to cocos2d-ui/CCProgressNode.m diff --git a/cocos2d-ui/cocos2d-ui.h b/cocos2d-ui/cocos2d-ui.h index 1e1190cfccc..2c47a462fca 100644 --- a/cocos2d-ui/cocos2d-ui.h +++ b/cocos2d-ui/cocos2d-ui.h @@ -29,6 +29,7 @@ #import "CCTableView.h" #import "CCTextField.h" #import "CCSlider.h" +#import "CCProgressNode.h" #if CC_CCBREADER // CCBReader diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index cca595719d7..f2073045568 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -23,6 +23,18 @@ /* Begin PBXBuildFile section */ 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = 0529445911098D6F00E500F3 /* CCProfiling.h */; }; 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; + 08A4EB6F1C7A553E00A08923 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A4EB6B1C7A553E00A08923 /* CCActionProgressTimer.h */; }; + 08A4EB701C7A553E00A08923 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A4EB6B1C7A553E00A08923 /* CCActionProgressTimer.h */; }; + 08A4EB711C7A553E00A08923 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A4EB6B1C7A553E00A08923 /* CCActionProgressTimer.h */; }; + 08A4EB721C7A553E00A08923 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB6C1C7A553E00A08923 /* CCActionProgressTimer.m */; }; + 08A4EB731C7A553E00A08923 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB6C1C7A553E00A08923 /* CCActionProgressTimer.m */; }; + 08A4EB741C7A553E00A08923 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB6C1C7A553E00A08923 /* CCActionProgressTimer.m */; }; + 08A4EB751C7A553E00A08923 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A4EB6D1C7A553E00A08923 /* CCProgressNode.h */; }; + 08A4EB761C7A553E00A08923 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A4EB6D1C7A553E00A08923 /* CCProgressNode.h */; }; + 08A4EB771C7A553E00A08923 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A4EB6D1C7A553E00A08923 /* CCProgressNode.h */; }; + 08A4EB781C7A553E00A08923 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */; }; + 08A4EB791C7A553E00A08923 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */; }; + 08A4EB7A1C7A553E00A08923 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */; }; 08F4AAB01C6E98A1004DAAF7 /* NSValue+CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6219C3A0FD009BED7A /* NSValue+CCRenderer.m */; }; 08F4AAB11C6E98A1004DAAF7 /* CCAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2530DFDEAFF00C013A5 /* CCAction.m */; }; 08F4AAB21C6E98A1004DAAF7 /* CCNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2550DFDEAFF00C013A5 /* CCNode.m */; }; @@ -57,7 +69,6 @@ 08F4AAD11C6E98A1004DAAF7 /* CCTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E1357210ADEB1B00C9E7FA /* CCTexture.m */; }; 08F4AAD21C6E98A1004DAAF7 /* CCConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 503862D911007181005D2C92 /* CCConfiguration.m */; }; 08F4AAD31C6E98A1004DAAF7 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0529445A11098D6F00E500F3 /* CCProfiling.m */; }; - 08F4AAD41C6E98A1004DAAF7 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50150436113300F900A9CA65 /* CCActionProgressTimer.m */; }; 08F4AAD51C6E98A1004DAAF7 /* CCActionTween.m in Sources */ = {isa = PBXBuildFile; fileRef = 50FBB2D9117613F500150761 /* CCActionTween.m */; }; 08F4AAD61C6E98A1004DAAF7 /* CCSpriteBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C3655A11F0AE9B001C08F9 /* CCSpriteBatchNode.m */; }; 08F4AAD71C6E98A1004DAAF7 /* CCNoARC.m in Sources */ = {isa = PBXBuildFile; fileRef = D3903B0C1995288D003AA81A /* CCNoARC.m */; }; @@ -77,7 +88,6 @@ 08F4AAE51C6E98A1004DAAF7 /* CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D38058191889AD6000822437 /* CCRenderer.m */; }; 08F4AAE61C6E98A1004DAAF7 /* CCRendererBasicTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6819C3A7B3009BED7A /* CCRendererBasicTypes.m */; }; 08F4AAE71C6E98A1004DAAF7 /* CCNode+Debug.m in Sources */ = {isa = PBXBuildFile; fileRef = A039EBFE155C686B0061EE37 /* CCNode+Debug.m */; }; - 08F4AAE81C6E98A1004DAAF7 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; 08F4AAE91C6E98A1004DAAF7 /* CCDrawNode.m in Sources */ = {isa = PBXBuildFile; fileRef = A0DA0BC215BCDCA200E80A92 /* CCDrawNode.m */; }; 08F4AAEA1C6E98A1004DAAF7 /* CCLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = B7EE69DD1819E75700B983FE /* CCLayout.m */; }; 08F4AAEB1C6E98A1004DAAF7 /* ccFPSImages.m in Sources */ = {isa = PBXBuildFile; fileRef = A003AC8E16572D6000C7B792 /* ccFPSImages.m */; }; @@ -140,7 +150,6 @@ 08F4AB271C6E98A1004DAAF7 /* CCTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = B79F905817FE2A2E00908504 /* CCTableView.h */; }; 08F4AB281C6E98A1004DAAF7 /* CCTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E1357110ADEB1B00C9E7FA /* CCTexture.h */; }; 08F4AB291C6E98A1004DAAF7 /* CCProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = 0529445911098D6F00E500F3 /* CCProfiling.h */; }; - 08F4AB2A1C6E98A1004DAAF7 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; 08F4AB2B1C6E98A1004DAAF7 /* CCActionTween.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FBB2D8117613F500150761 /* CCActionTween.h */; }; 08F4AB2C1C6E98A1004DAAF7 /* uthash.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D898EF1192CB7500458C29 /* uthash.h */; }; 08F4AB2D1C6E98A1004DAAF7 /* utlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 508EAC2F1193F8B0007F058D /* utlist.h */; }; @@ -164,7 +173,6 @@ 08F4AB3F1C6E98A1004DAAF7 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E28F14C1DB7D0005BBF2 /* CCGLView.h */; }; 08F4AB401C6E98A1004DAAF7 /* NSValue+CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD5F19C3A0B5009BED7A /* NSValue+CCRenderer.h */; }; 08F4AB411C6E98A1004DAAF7 /* CCWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E29114C1DB7D0005BBF2 /* CCWindow.h */; }; - 08F4AB421C6E98A1004DAAF7 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; 08F4AB431C6E98A1004DAAF7 /* CCLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE69DC1819E75700B983FE /* CCLayout.h */; }; 08F4AB441C6E98A1004DAAF7 /* NSThread+performBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C87D1814F9A3A100C0E8B2 /* NSThread+performBlock.h */; }; 08F4AB451C6E98A1004DAAF7 /* CCMetalView.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B12199528B6003AA81A /* CCMetalView.h */; }; @@ -197,8 +205,6 @@ 08F4AB631C6E98A1004DAAF7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; }; 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */; }; - 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; - 5015043C113300F900A9CA65 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50150436113300F900A9CA65 /* CCActionProgressTimer.m */; }; 5018F2690DFDEAFF00C013A5 /* CCAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2520DFDEAFF00C013A5 /* CCAction.h */; }; 5018F26A0DFDEAFF00C013A5 /* CCAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2530DFDEAFF00C013A5 /* CCAction.m */; }; 5018F26B0DFDEAFF00C013A5 /* CCNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2540DFDEAFF00C013A5 /* CCNode.h */; }; @@ -287,7 +293,6 @@ 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2600DFDEAFF00C013A5 /* CCScene.h */; }; 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; - 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D2B840C31909F447008063EA /* CCRenderTexture_Private.h */; }; @@ -298,7 +303,6 @@ 7A5946E419E372F800F65F90 /* CCActionInterval.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25A0DFDEAFF00C013A5 /* CCActionInterval.h */; }; 7A5946E619E372F900F65F90 /* CCActionEase.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F7B2760F28DE7C00057537 /* CCActionEase.h */; }; 7A5946E819E372F900F65F90 /* CCActionCatmullRom.h in Headers */ = {isa = PBXBuildFile; fileRef = A0A7A53A1514F27D00C8BD16 /* CCActionCatmullRom.h */; }; - 7A5946EA19E372F900F65F90 /* CCActionProgressTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50150435113300F900A9CA65 /* CCActionProgressTimer.h */; }; 7A5946EC19E372FA00F65F90 /* CCActionTween.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FBB2D8117613F500150761 /* CCActionTween.h */; }; 7A5946EE19E372FA00F65F90 /* CCTexturePVR.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F9246F1224140400EF2362 /* CCTexturePVR.h */; }; 7A5946F019E372FA00F65F90 /* CCTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E1357110ADEB1B00C9E7FA /* CCTexture.h */; }; @@ -378,7 +382,6 @@ 7A5947F619E375A200F65F90 /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2610DFDEAFF00C013A5 /* CCScene.m */; }; 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */; }; - 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50316AA510291280003ACFE7 /* CCRenderTexture.m */; }; 7A59482A19E375A700F65F90 /* CCActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */; }; 7A59482C19E375A800F65F90 /* CCAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2530DFDEAFF00C013A5 /* CCAction.m */; }; @@ -386,7 +389,6 @@ 7A59483019E375A800F65F90 /* CCActionInterval.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F25B0DFDEAFF00C013A5 /* CCActionInterval.m */; }; 7A59483219E375A800F65F90 /* CCActionEase.m in Sources */ = {isa = PBXBuildFile; fileRef = 50F7B2770F28DE7C00057537 /* CCActionEase.m */; }; 7A59483419E375A900F65F90 /* CCActionCatmullRom.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A7A53B1514F27D00C8BD16 /* CCActionCatmullRom.m */; }; - 7A59483619E375A900F65F90 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50150436113300F900A9CA65 /* CCActionProgressTimer.m */; }; 7A59483819E375A900F65F90 /* CCActionTween.m in Sources */ = {isa = PBXBuildFile; fileRef = 50FBB2D9117613F500150761 /* CCActionTween.m */; }; 7A59483A19E375A900F65F90 /* CCTexturePVR.m in Sources */ = {isa = PBXBuildFile; fileRef = E0F924701224140400EF2362 /* CCTexturePVR.m */; }; 7A59483C19E375A900F65F90 /* CCTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E1357210ADEB1B00C9E7FA /* CCTexture.m */; }; @@ -469,7 +471,6 @@ B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */; }; B78AE46D17E7AF6C0028BE0B /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */; }; B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; - B791E85E182074C500DAE1D7 /* CCProgressNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85B182074C500DAE1D7 /* CCProgressNode.h */; }; B798D13D181F2E4500E7BFCD /* CCNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D13C181F2E4500E7BFCD /* CCNode_Private.h */; }; B798D143181F469100E7BFCD /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; B798D1451820305400E7BFCD /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; @@ -508,7 +509,6 @@ D34CAD6719C3A7A5009BED7A /* CCRendererBasicTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD6519C3A7A5009BED7A /* CCRendererBasicTypes.h */; }; D34CAD6C19C3AA10009BED7A /* CCRendererBasicTypes_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD6A19C3AA10009BED7A /* CCRendererBasicTypes_Private.h */; }; D369415F19CFDF170092A0BD /* CCRendererBasicTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6819C3A7B3009BED7A /* CCRendererBasicTypes.m */; }; - D36D31B718BD3CAA00E45F08 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; }; D37D197B18B6666E00B23FDE /* CCSpriteBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C3655A11F0AE9B001C08F9 /* CCSpriteBatchNode.m */; }; D380581A1889AD6000822437 /* CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D38058181889AD6000822437 /* CCRenderer.h */; }; D380581B1889AD6000822437 /* CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D38058191889AD6000822437 /* CCRenderer.m */; }; @@ -559,6 +559,10 @@ /* Begin PBXFileReference section */ 0529445911098D6F00E500F3 /* CCProfiling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProfiling.h; sourceTree = ""; }; 0529445A11098D6F00E500F3 /* CCProfiling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCProfiling.m; sourceTree = ""; }; + 08A4EB6B1C7A553E00A08923 /* CCActionProgressTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCActionProgressTimer.h; path = "cocos2d-ui/CCActionProgressTimer.h"; sourceTree = ""; }; + 08A4EB6C1C7A553E00A08923 /* CCActionProgressTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCActionProgressTimer.m; path = "cocos2d-ui/CCActionProgressTimer.m"; sourceTree = ""; }; + 08A4EB6D1C7A553E00A08923 /* CCProgressNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCProgressNode.h; path = "cocos2d-ui/CCProgressNode.h"; sourceTree = ""; }; + 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCProgressNode.m; path = "cocos2d-ui/CCProgressNode.m"; sourceTree = ""; }; 08F4AB671C6E98A1004DAAF7 /* libcocos2d-tvos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libcocos2d-tvos.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 0E0094961B3ACC3E006EA7FC /* install.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install.sh; sourceTree = ""; }; 0E0094971B3ACC4B006EA7FC /* templates */ = {isa = PBXFileReference; lastKnownFileType = folder; path = templates; sourceTree = ""; }; @@ -566,8 +570,6 @@ 1435EB821A37BA7000BD04D4 /* GLActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLActivityKit.framework; path = "../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/GLActivityKit.framework"; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 50150435113300F900A9CA65 /* CCActionProgressTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionProgressTimer.h; sourceTree = ""; }; - 50150436113300F900A9CA65 /* CCActionProgressTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionProgressTimer.m; sourceTree = ""; }; 5018F24D0DFDEAC400C013A5 /* libcocos2d.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libcocos2d.a; sourceTree = BUILT_PRODUCTS_DIR; }; 5018F2520DFDEAFF00C013A5 /* CCAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAction.h; sourceTree = ""; }; 5018F2530DFDEAFF00C013A5 /* CCAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCAction.m; sourceTree = ""; }; @@ -690,8 +692,6 @@ B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITouch+CC.h"; sourceTree = ""; }; B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITouch+CC.m"; sourceTree = ""; }; B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProgressNode_Private.h; sourceTree = ""; }; - B791E85B182074C500DAE1D7 /* CCProgressNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProgressNode.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - B791E85C182074C500DAE1D7 /* CCProgressNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCProgressNode.m; sourceTree = ""; }; B798D13C181F2E4500E7BFCD /* CCNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNode_Private.h; sourceTree = ""; }; B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLabelBMFont_Private.h; sourceTree = ""; }; B798D1441820305400E7BFCD /* CCSprite_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite_Private.h; sourceTree = ""; }; @@ -1070,8 +1070,6 @@ 50F7B2770F28DE7C00057537 /* CCActionEase.m */, A0A7A53A1514F27D00C8BD16 /* CCActionCatmullRom.h */, A0A7A53B1514F27D00C8BD16 /* CCActionCatmullRom.m */, - 50150435113300F900A9CA65 /* CCActionProgressTimer.h */, - 50150436113300F900A9CA65 /* CCActionProgressTimer.m */, 50FBB2D8117613F500150761 /* CCActionTween.h */, 50FBB2D9117613F500150761 /* CCActionTween.m */, ); @@ -1118,8 +1116,6 @@ children = ( 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */, 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */, - B791E85B182074C500DAE1D7 /* CCProgressNode.h */, - B791E85C182074C500DAE1D7 /* CCProgressNode.m */, 50316AA410291280003ACFE7 /* CCRenderTexture.h */, 50316AA510291280003ACFE7 /* CCRenderTexture.m */, B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */, @@ -1192,6 +1188,10 @@ children = ( 571CD01A19649E03003D460C /* Platform */, B7C6237917EA7D8600928F91 /* cocos2d-ui.h */, + 08A4EB6B1C7A553E00A08923 /* CCActionProgressTimer.h */, + 08A4EB6C1C7A553E00A08923 /* CCActionProgressTimer.m */, + 08A4EB6D1C7A553E00A08923 /* CCProgressNode.h */, + 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */, B78AE45C17E7AF1C0028BE0B /* CCControl.h */, B750162218124B6000708A2F /* CCControlSubclass.h */, B78AE45D17E7AF1C0028BE0B /* CCControl.m */, @@ -1342,6 +1342,7 @@ buildActionMask = 2147483647; files = ( 08F4AAFD1C6E98A1004DAAF7 /* CCAction.h in Headers */, + 08A4EB711C7A553E00A08923 /* CCActionProgressTimer.h in Headers */, 08F4AAFE1C6E98A1004DAAF7 /* CCNode.h in Headers */, 08F4AAFF1C6E98A1004DAAF7 /* CCDirector.h in Headers */, 08F4AB001C6E98A1004DAAF7 /* CCActionInstant.h in Headers */, @@ -1385,9 +1386,9 @@ 08F4AB271C6E98A1004DAAF7 /* CCTableView.h in Headers */, 08F4AB281C6E98A1004DAAF7 /* CCTexture.h in Headers */, 08F4AB291C6E98A1004DAAF7 /* CCProfiling.h in Headers */, - 08F4AB2A1C6E98A1004DAAF7 /* CCActionProgressTimer.h in Headers */, 08F4AB2B1C6E98A1004DAAF7 /* CCActionTween.h in Headers */, 08F4AB2C1C6E98A1004DAAF7 /* uthash.h in Headers */, + 08A4EB771C7A553E00A08923 /* CCProgressNode.h in Headers */, 08F4AB2D1C6E98A1004DAAF7 /* utlist.h in Headers */, 08F4AB2E1C6E98A1004DAAF7 /* CCSpriteBatchNode.h in Headers */, 08F4AB2F1C6E98A1004DAAF7 /* ccUtils.h in Headers */, @@ -1409,7 +1410,6 @@ 08F4AB3F1C6E98A1004DAAF7 /* CCGLView.h in Headers */, 08F4AB401C6E98A1004DAAF7 /* NSValue+CCRenderer.h in Headers */, 08F4AB411C6E98A1004DAAF7 /* CCWindow.h in Headers */, - 08F4AB421C6E98A1004DAAF7 /* CCProgressNode.h in Headers */, 08F4AB431C6E98A1004DAAF7 /* CCLayout.h in Headers */, 08F4AB441C6E98A1004DAAF7 /* NSThread+performBlock.h in Headers */, 08F4AB451C6E98A1004DAAF7 /* CCMetalView.h in Headers */, @@ -1437,6 +1437,7 @@ buildActionMask = 2147483647; files = ( 5018F2690DFDEAFF00C013A5 /* CCAction.h in Headers */, + 08A4EB6F1C7A553E00A08923 /* CCActionProgressTimer.h in Headers */, 5018F26B0DFDEAFF00C013A5 /* CCNode.h in Headers */, 5018F26D0DFDEAFF00C013A5 /* CCDirector.h in Headers */, 5018F26F0DFDEAFF00C013A5 /* CCActionInstant.h in Headers */, @@ -1480,9 +1481,9 @@ B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */, 50E1357510ADEB1B00C9E7FA /* CCTexture.h in Headers */, 0529445D11098D6F00E500F3 /* CCProfiling.h in Headers */, - 5015043B113300F900A9CA65 /* CCActionProgressTimer.h in Headers */, 50FBB2DA117613F500150761 /* CCActionTween.h in Headers */, 50D898F31192CB7500458C29 /* uthash.h in Headers */, + 08A4EB751C7A553E00A08923 /* CCProgressNode.h in Headers */, 508EAC311193F8B0007F058D /* utlist.h in Headers */, E0C3655B11F0AE9B001C08F9 /* CCSpriteBatchNode.h in Headers */, E0C54DCB11F9CF2700B9E4CB /* ccUtils.h in Headers */, @@ -1504,7 +1505,6 @@ A046E29714C1DB7D0005BBF2 /* CCGLView.h in Headers */, D34CAD6119C3A0B5009BED7A /* NSValue+CCRenderer.h in Headers */, A046E29914C1DB7E0005BBF2 /* CCWindow.h in Headers */, - B791E85E182074C500DAE1D7 /* CCProgressNode.h in Headers */, B7EE69E01819E75700B983FE /* CCLayout.h in Headers */, A0C87D1A14F9A3A100C0E8B2 /* NSThread+performBlock.h in Headers */, D3903B14199528B6003AA81A /* CCMetalView.h in Headers */, @@ -1535,6 +1535,7 @@ 7A59467019E372EE00F65F90 /* CCNode+Debug.h in Headers */, 7A59467219E372EF00F65F90 /* CCNode_Private.h in Headers */, 7A59467319E372EF00F65F90 /* CCLayout.h in Headers */, + 08A4EB701C7A553E00A08923 /* CCActionProgressTimer.h in Headers */, 7A59467519E372EF00F65F90 /* CCLayoutBox.h in Headers */, 7A59467719E372EF00F65F90 /* CCDrawNode.h in Headers */, 7A59467919E372EF00F65F90 /* CCLabelBMFont.h in Headers */, @@ -1552,7 +1553,6 @@ 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */, 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */, 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */, - 7A5946BF19E372F400F65F90 /* CCProgressNode.h in Headers */, 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */, 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */, 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */, @@ -1563,7 +1563,6 @@ 7A5946E419E372F800F65F90 /* CCActionInterval.h in Headers */, 7A5946E619E372F900F65F90 /* CCActionEase.h in Headers */, 7A5946E819E372F900F65F90 /* CCActionCatmullRom.h in Headers */, - 7A5946EA19E372F900F65F90 /* CCActionProgressTimer.h in Headers */, 7A5946EC19E372FA00F65F90 /* CCActionTween.h in Headers */, 7A5946EE19E372FA00F65F90 /* CCTexturePVR.h in Headers */, 7A5946F019E372FA00F65F90 /* CCTexture.h in Headers */, @@ -1621,6 +1620,7 @@ 7A59477B19E3731E00F65F90 /* CCControlSubclass.h in Headers */, 7A59477D19E3731F00F65F90 /* CCButton.h in Headers */, 7A59477F19E3731F00F65F90 /* CCTableView.h in Headers */, + 08A4EB761C7A553E00A08923 /* CCProgressNode.h in Headers */, 7A59478119E3732000F65F90 /* CCScrollView.h in Headers */, 7A59478319E3732100F65F90 /* CCControlTextureFactory.h in Headers */, 7A59478519E3732100F65F90 /* CCTextField.h in Headers */, @@ -1785,6 +1785,7 @@ 08F4AAB11C6E98A1004DAAF7 /* CCAction.m in Sources */, 08F4AAB21C6E98A1004DAAF7 /* CCNode.m in Sources */, 08F4AAB31C6E98A1004DAAF7 /* CCDirector.m in Sources */, + 08A4EB741C7A553E00A08923 /* CCActionProgressTimer.m in Sources */, 08F4AAB41C6E98A1004DAAF7 /* CCActionInstant.m in Sources */, 08F4AAB51C6E98A1004DAAF7 /* CCActionInterval.m in Sources */, 08F4AAB71C6E98A1004DAAF7 /* CCLabelTTF.m in Sources */, @@ -1815,7 +1816,6 @@ 08F4AAD11C6E98A1004DAAF7 /* CCTexture.m in Sources */, 08F4AAD21C6E98A1004DAAF7 /* CCConfiguration.m in Sources */, 08F4AAD31C6E98A1004DAAF7 /* CCProfiling.m in Sources */, - 08F4AAD41C6E98A1004DAAF7 /* CCActionProgressTimer.m in Sources */, 08F4AAD51C6E98A1004DAAF7 /* CCActionTween.m in Sources */, 08F4AAD61C6E98A1004DAAF7 /* CCSpriteBatchNode.m in Sources */, 08F4AAD71C6E98A1004DAAF7 /* CCNoARC.m in Sources */, @@ -1835,7 +1835,6 @@ 08F4AAE51C6E98A1004DAAF7 /* CCRenderer.m in Sources */, 08F4AAE61C6E98A1004DAAF7 /* CCRendererBasicTypes.m in Sources */, 08F4AAE71C6E98A1004DAAF7 /* CCNode+Debug.m in Sources */, - 08F4AAE81C6E98A1004DAAF7 /* CCProgressNode.m in Sources */, 08F4AAE91C6E98A1004DAAF7 /* CCDrawNode.m in Sources */, 08F4AAEA1C6E98A1004DAAF7 /* CCLayout.m in Sources */, 08F4AAEB1C6E98A1004DAAF7 /* ccFPSImages.m in Sources */, @@ -1850,6 +1849,7 @@ 08F4AAF51C6E98A1004DAAF7 /* CCButton.m in Sources */, 08F4AAF61C6E98A1004DAAF7 /* CCControl.m in Sources */, 08F4AAF71C6E98A1004DAAF7 /* CCControlTextureFactory.m in Sources */, + 08A4EB7A1C7A553E00A08923 /* CCProgressNode.m in Sources */, 08F4AAF81C6E98A1004DAAF7 /* CCCache.m in Sources */, 08F4AAF91C6E98A1004DAAF7 /* CCRendererGLSupport.m in Sources */, 08F4AAFA1C6E98A1004DAAF7 /* CCScrollView.m in Sources */, @@ -1865,6 +1865,7 @@ 5018F26A0DFDEAFF00C013A5 /* CCAction.m in Sources */, 5018F26C0DFDEAFF00C013A5 /* CCNode.m in Sources */, 5018F26E0DFDEAFF00C013A5 /* CCDirector.m in Sources */, + 08A4EB721C7A553E00A08923 /* CCActionProgressTimer.m in Sources */, 5018F2700DFDEAFF00C013A5 /* CCActionInstant.m in Sources */, 5018F2720DFDEAFF00C013A5 /* CCActionInterval.m in Sources */, 5018F2740DFDEAFF00C013A5 /* CCLabelTTF.m in Sources */, @@ -1895,7 +1896,6 @@ 50E1357610ADEB1B00C9E7FA /* CCTexture.m in Sources */, 503862E6110072BC005D2C92 /* CCConfiguration.m in Sources */, 0529445E11098D6F00E500F3 /* CCProfiling.m in Sources */, - 5015043C113300F900A9CA65 /* CCActionProgressTimer.m in Sources */, 50FBB2DB117613F500150761 /* CCActionTween.m in Sources */, D37D197B18B6666E00B23FDE /* CCSpriteBatchNode.m in Sources */, D3903B0D1995288D003AA81A /* CCNoARC.m in Sources */, @@ -1915,7 +1915,6 @@ D380581B1889AD6000822437 /* CCRenderer.m in Sources */, D369415F19CFDF170092A0BD /* CCRendererBasicTypes.m in Sources */, A039EC00155C686B0061EE37 /* CCNode+Debug.m in Sources */, - D36D31B718BD3CAA00E45F08 /* CCProgressNode.m in Sources */, A0DA0BC415BCDCA200E80A92 /* CCDrawNode.m in Sources */, B7EE69E11819E75700B983FE /* CCLayout.m in Sources */, A003AC8F16572D6000C7B792 /* ccFPSImages.m in Sources */, @@ -1930,6 +1929,7 @@ B78AE46317E7AF1C0028BE0B /* CCButton.m in Sources */, B78AE46517E7AF1C0028BE0B /* CCControl.m in Sources */, B78AE46717E7AF1C0028BE0B /* CCControlTextureFactory.m in Sources */, + 08A4EB781C7A553E00A08923 /* CCProgressNode.m in Sources */, D38058211889CE7700822437 /* CCCache.m in Sources */, 0EFC792D1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */, B78AE46917E7AF1C0028BE0B /* CCScrollView.m in Sources */, @@ -1945,6 +1945,7 @@ 7A5947BC19E3759C00F65F90 /* CCNode+Debug.m in Sources */, 7A5947BF19E3759C00F65F90 /* CCLayout.m in Sources */, 7A5947C119E3759C00F65F90 /* CCLayoutBox.m in Sources */, + 08A4EB731C7A553E00A08923 /* CCActionProgressTimer.m in Sources */, 7A5947C319E3759D00F65F90 /* CCDrawNode.m in Sources */, 7A5947C519E3759D00F65F90 /* CCLabelBMFont.m in Sources */, 7A5947C719E3759D00F65F90 /* CCLabelTTF.m in Sources */, @@ -1960,7 +1961,6 @@ 7A5947F619E375A200F65F90 /* CCScene.m in Sources */, 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */, 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */, - 7A59480B19E375A400F65F90 /* CCProgressNode.m in Sources */, 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */, 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */, 7A59482A19E375A700F65F90 /* CCActionManager.m in Sources */, @@ -1969,7 +1969,6 @@ 7A59483019E375A800F65F90 /* CCActionInterval.m in Sources */, 7A59483219E375A800F65F90 /* CCActionEase.m in Sources */, 7A59483419E375A900F65F90 /* CCActionCatmullRom.m in Sources */, - 7A59483619E375A900F65F90 /* CCActionProgressTimer.m in Sources */, 7A59483819E375A900F65F90 /* CCActionTween.m in Sources */, 7A59483A19E375A900F65F90 /* CCTexturePVR.m in Sources */, 7A59483C19E375A900F65F90 /* CCTexture.m in Sources */, @@ -2010,6 +2009,7 @@ 7A5948C719E375BC00F65F90 /* CCControl.m in Sources */, 7A5948C919E375BD00F65F90 /* CCButton.m in Sources */, 7A5948CB19E375BD00F65F90 /* CCTableView.m in Sources */, + 08A4EB791C7A553E00A08923 /* CCProgressNode.m in Sources */, 7A5948CD19E375BD00F65F90 /* CCScrollView.m in Sources */, 7A5948CF19E375BE00F65F90 /* CCControlTextureFactory.m in Sources */, 7A5948D119E375BE00F65F90 /* CCTextField.m in Sources */, diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index b7d67641d24..976820210ca 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -55,7 +55,6 @@ #import "CCActionEase.h" #import "CCActionInstant.h" #import "CCActionInterval.h" -#import "CCActionProgressTimer.h" #import "CCActionTween.h" #import "CCColor.h" #import "CCConfiguration.h" From 6d05b22aff1432881edeaacc7c680d74ef7a755f Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 23:32:25 +0300 Subject: [PATCH 31/94] New potentiometer control in -UI --- cocos2d-ui/CCPotentiometer.h | 120 +++++++++++++ cocos2d-ui/CCPotentiometer.m | 285 ++++++++++++++++++++++++++++++ cocos2d.xcodeproj/project.pbxproj | 16 ++ 3 files changed, 421 insertions(+) create mode 100755 cocos2d-ui/CCPotentiometer.h create mode 100755 cocos2d-ui/CCPotentiometer.m diff --git a/cocos2d-ui/CCPotentiometer.h b/cocos2d-ui/CCPotentiometer.h new file mode 100755 index 00000000000..b71272381f6 --- /dev/null +++ b/cocos2d-ui/CCPotentiometer.h @@ -0,0 +1,120 @@ +/* + * CCControlPotentiometer.h + * + * Copyright 2015 Volodin Andrey. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +#import "CCControl.h" + +@class CCProgressNode, CCSprite, CCColor; + +/** + * Potentiometer control for Cocos2D. + * + * A CCPotentiometer object is a visual control used to select a + * single value in a circular motion from a continuous range of values. + * An indicator notes the current value of the potentiometer and can be + * moved by the user to change the setting. + */ +@interface CCPotentiometer : CCControl { +@public + float _value; + float _minimumValue; + float _maximumValue; + +@protected + CCSprite *_thumbSprite; + CCSprite *_trackSprite; + CCProgressNode *_progressTimer; +} +#pragma mark Contructors - Initializers +/** @name Creating Potentiometers */ + +/** + * Initializes a potentiometer with a track sprite and a progress bar. + * + * @param trackSprite CCSprite, that is used as a background. + * @param progressTimer CCProgressTimer, that is used as a progress bar. + * @param thumbSprite CCSprite, that is used as a thumb. + */ +- (id)initWithTrackSprite:(CCSprite *)trackSprite progressSprite:(CCProgressNode *)progressTimer thumbSprite:(CCSprite *)thumbSprite; + +/** + * Creates potentiometer with a track filename and a progress filename. + * + * @see initWithTrackSprite:progressSprite:thumbSprite: + */ ++ (id)potentiometerWithTrackFile:(NSString *)backgroundFile progressFile:(NSString *)progressFile thumbFile:(NSString *)thumbFile; + +#pragma mark - Properties +#pragma mark Accessing the Potentiometer’s Value +/** @name Accessing the Potentiometer’s Value */ +/** + * @abstract Contains the receiver’s current value. + * @discussion Setting this property causes the receiver to redraw itself + * using the new value. To render an animated transition from the current + * value to the new value, you should use the setValue:animated: method + * instead. + * + * If you try to set a value that is below the minimum or above the maximum + * value, the minimum or maximum value is set instead. The default value of + * this property is 0.0. + */ +@property (nonatomic, assign) float value; + +/** + * @abstract Sets the receiver’s current value, allowing you to animate the + * change visually. + * + * @param value The new value to assign to the value property. + * @param animated Specify YES to animate the change in value when the + * receiver is redrawn; otherwise, specify NO to draw the receiver with the + * new value only. Animations are performed asynchronously and do not block + * the calling thread. + * @discussion If you try to set a value that is below the minimum or above + * the maximum value, the minimum or maximum value is set instead. The + * default value of this property is 0.0. + * @see value + */ +- (void)setValue:(float)value animated:(BOOL)animated; + +#pragma mark Accessing the Potentiometer’s Value Limits +/** @name Accessing the Potentiometer’s Value Limits */ +/** Contains the minimum value of the receiver. + * The default value of this property is 0.0. */ +@property (nonatomic, assign) float minimumValue; +/** Contains the maximum value of the receiver. + * The default value of this property is 1.0. */ +@property (nonatomic, assign) float maximumValue; + +#pragma mark Customizing the Appearance of the Slider +/** @name Customizing the Appearance of the Slider */ + +/** + * @abstract The color used to tint the appearance of the thumb when the + * potentiometer is pushed. + * @discussion The default color is ccGRAY. + */ +@property(nonatomic, assign) CCColor* onThumbTintColor; + +#pragma mark - Public Methods + +@end diff --git a/cocos2d-ui/CCPotentiometer.m b/cocos2d-ui/CCPotentiometer.m new file mode 100755 index 00000000000..973dbdf7cf1 --- /dev/null +++ b/cocos2d-ui/CCPotentiometer.m @@ -0,0 +1,285 @@ +/* + * CCControlPotentiometer.h + * + * Copyright 2015 Volodin Andrey. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + + +#import "CCPotentiometer.h" +#import "CCControlSubclass.h" +#import "CCSprite.h" +#import "CCProgressNode.h" +#import "CCActionEase.h" +#import "CCActionTween.h" + +@interface CCPotentiometer () +@property (nonatomic, strong) CCSprite *thumbSprite; +@property (nonatomic, strong) CCSprite *trackSprite; +@property (nonatomic, strong) CCProgressNode *progressTimer; +@property (nonatomic, assign) CGPoint previousLocation; +@property (nonatomic, assign) float animatedValue; + +/** Factorize the event dispath into these methods. */ +- (void)potentiometerBegan:(CGPoint)location; +- (void)potentiometerMoved:(CGPoint)location; +- (void)potentiometerEnded:(CGPoint)location; + +/** Returns the distance between the point1 and point2. */ +- (float)distanceBetweenPoint:(CGPoint)point1 andPoint:(CGPoint)point2; +/** Returns the angle in degree between line1 and line2. */ +- (float)angleInDegreesBetweenLineFromPoint:(CGPoint)beginLineA + toPoint:(CGPoint)endLineA + toLineFromPoint:(CGPoint)beginLineB + toPoint:(CGPoint)endLineB; + +/** Layout the slider with the given value. */ +- (void)layoutWithValue:(float)value; + +@end + +@implementation CCPotentiometer +@synthesize value = _value; +@synthesize minimumValue = _minimumValue; +@synthesize maximumValue = _maximumValue; +@synthesize onThumbTintColor = _onThumbTintColor; +@synthesize thumbSprite = _thumbSprite; +@synthesize progressTimer = _progressTimer; +@synthesize previousLocation = _previousLocation; +@synthesize animatedValue = _animatedValue; +@synthesize trackSprite = _trackSprite; + ++ (id)potentiometerWithTrackFile:(NSString *)backgroundFile progressFile:(NSString *)progressFile thumbFile:(NSString *)thumbFile +{ + // Prepare track for potentiometer + CCSprite *backgroundSprite = [CCSprite spriteWithImageNamed:backgroundFile]; + + // Prepare thumb for potentiometer + CCSprite *thumbSprite = [CCSprite spriteWithImageNamed:thumbFile]; + + // Prepare progress for potentiometer + CCProgressNode *progressNode = [CCProgressNode progressWithSprite:[CCSprite spriteWithImageNamed:progressFile]]; + progressNode.type = CCProgressNodeTypeRadial; + + return [[self alloc] initWithTrackSprite:backgroundSprite progressSprite:progressNode thumbSprite:thumbSprite]; +} + +- (id)initWithTrackSprite:(CCSprite *)trackSprite progressSprite:(CCProgressNode *)progressTimer thumbSprite:(CCSprite *)thumbSprite +{ + if ((self = [super init])) { + self.progressTimer = progressTimer ?: [[CCProgressNode alloc] init]; + self.thumbSprite = thumbSprite ?: [[CCSprite alloc] init]; + self.trackSprite = trackSprite ?: [[CCSprite alloc] init]; + thumbSprite.position = _progressTimer.position; + + [self addChild:_thumbSprite z:2]; + [self addChild:_progressTimer z:1]; + [self addChild:_trackSprite]; + + self.contentSize = CGSizeMake(MAX(MAX(trackSprite.contentSize.width, + thumbSprite.contentSize.width), + progressTimer.contentSize.width), + MAX(MAX(trackSprite.contentSize.height, + thumbSprite.contentSize.height), + progressTimer.contentSize.height)); + + // Init default values + _onThumbTintColor = [CCColor grayColor]; + _minimumValue = 0.0f; + _maximumValue = 1.0f; + self.value = _minimumValue; + self.userInteractionEnabled = YES; + } + return self; +} + +#pragma mark Properties + +- (void)setEnabled:(BOOL)enabled +{ + super.enabled = enabled; + + _thumbSprite.opacity = (enabled) ? 1.0f : 0.5f; +} + +- (void)setValue:(float)value +{ + [self setValue:value animated:NO]; +} + +- (void)setAnimatedValue:(float)animatedValue +{ + [self layoutWithValue:animatedValue]; +} + +- (void)setMinimumValue:(float)minimumValue +{ + _minimumValue = minimumValue; + + if (_minimumValue >= _maximumValue) { + _maximumValue = _minimumValue + 1.0f; + } + + self.value = _maximumValue; +} + +- (void)setMaximumValue:(float)maximumValue +{ + _maximumValue = maximumValue; + + if (_maximumValue <= _minimumValue) { + _minimumValue = _maximumValue - 1.0f; + } + + self.value = _minimumValue; +} + +#pragma mark CCTargetedTouch Delegate Methods + +-(BOOL)hitTestWithWorldPos:(CGPoint)pos { + CGPoint touchLocation = [self convertToNodeSpace:pos]; + + float distance = [self distanceBetweenPoint:_progressTimer.position andPoint:touchLocation]; + + return distance < MIN(self.contentSize.width / 2, self.contentSize.height / 2); + +} + +-(void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event { + + _previousLocation = [touch locationInNode:self]; + + [self potentiometerBegan:_previousLocation]; +} + +-(void)touchMoved:(CCTouch *)touch withEvent:(CCTouchEvent *)event { + + CGPoint location = [touch locationInNode:self]; + + [self potentiometerMoved:location]; +} + +-(void)touchEnded:(CCTouch *)touch withEvent:(CCTouchEvent *)event { + [self potentiometerEnded:CGPointZero]; +} + +-(void)touchCancelled:(CCTouch *)touch withEvent:(CCTouchEvent *)event { + [self touchEnded:touch withEvent:event]; +} + +#pragma mark - +#pragma mark CCControlPotentiometer Public Methods + +- (void)setValue:(float)value animated:(BOOL)animated +{ + // set new value with sentinel + if (value < _minimumValue) { + value = _minimumValue; + } + + if (value > _maximumValue) { + value = _maximumValue; + } + + if (animated) { + [self runAction: + [CCActionEaseInOut actionWithAction:[CCActionTween actionWithDuration:0.2f key:@"animatedValue" from:_value to:value] + rate:1.5f]]; + } + else { + [self layoutWithValue:value]; + } + + _value = value; +} + +#pragma mark CCControlPotentiometer Private Methods + +- (float)distanceBetweenPoint:(CGPoint)point1 andPoint:(CGPoint)point2 +{ + CGFloat dx = point1.x - point2.x; + CGFloat dy = point1.y - point2.y; + return sqrt(dx*dx + dy*dy); +} + +- (float)angleInDegreesBetweenLineFromPoint:(CGPoint)beginLineA + toPoint:(CGPoint)endLineA + toLineFromPoint:(CGPoint)beginLineB + toPoint:(CGPoint)endLineB; +{ + CGFloat a = endLineA.x - beginLineA.x; + CGFloat b = endLineA.y - beginLineA.y; + CGFloat c = endLineB.x - beginLineB.x; + CGFloat d = endLineB.y - beginLineB.y; + + CGFloat atanA = atan2(a, b); + CGFloat atanB = atan2(c, d); + + // convert radiants to degrees + return (atanA - atanB) * 180 / M_PI; +} + +- (void)potentiometerBegan:(CGPoint)location +{ + self.selected = YES; + self.thumbSprite.color = _onThumbTintColor; +} + +- (void)potentiometerMoved:(CGPoint)location +{ + CGFloat angle = [self angleInDegreesBetweenLineFromPoint:_progressTimer.position + toPoint:location + toLineFromPoint:_progressTimer.position + toPoint:_previousLocation]; + + // fix value, if the 12 o'clock position is between location and previousLocation + if (angle > 180) { + angle -= 360; + } + else if (angle < -180) { + angle += 360; + } + + self.value += angle / 360.0f * (_maximumValue - _minimumValue); + + _previousLocation = location; + + if (self.continuous) + [self triggerAction]; +} + +- (void)potentiometerEnded:(CGPoint)location +{ + self.thumbSprite.color = [CCColor whiteColor]; + self.selected = NO; + + [self triggerAction]; +} + +- (void)layoutWithValue:(float)value +{ + // Update thumb and progress position for new value + float percent = (value - _minimumValue) / (_maximumValue - _minimumValue); + _progressTimer.percentage = percent * 100.0f; + _thumbSprite.rotation = percent * 360.0f; +} + +@end diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index f2073045568..4fd3d0808f9 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -35,6 +35,12 @@ 08A4EB781C7A553E00A08923 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */; }; 08A4EB791C7A553E00A08923 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */; }; 08A4EB7A1C7A553E00A08923 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */; }; + 08A4EB7D1C7A563900A08923 /* CCPotentiometer.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A4EB7B1C7A563900A08923 /* CCPotentiometer.h */; }; + 08A4EB7E1C7A563900A08923 /* CCPotentiometer.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A4EB7B1C7A563900A08923 /* CCPotentiometer.h */; }; + 08A4EB7F1C7A563900A08923 /* CCPotentiometer.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A4EB7B1C7A563900A08923 /* CCPotentiometer.h */; }; + 08A4EB801C7A563900A08923 /* CCPotentiometer.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB7C1C7A563900A08923 /* CCPotentiometer.m */; }; + 08A4EB811C7A563900A08923 /* CCPotentiometer.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB7C1C7A563900A08923 /* CCPotentiometer.m */; }; + 08A4EB821C7A563900A08923 /* CCPotentiometer.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A4EB7C1C7A563900A08923 /* CCPotentiometer.m */; }; 08F4AAB01C6E98A1004DAAF7 /* NSValue+CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = D34CAD6219C3A0FD009BED7A /* NSValue+CCRenderer.m */; }; 08F4AAB11C6E98A1004DAAF7 /* CCAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2530DFDEAFF00C013A5 /* CCAction.m */; }; 08F4AAB21C6E98A1004DAAF7 /* CCNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5018F2550DFDEAFF00C013A5 /* CCNode.m */; }; @@ -563,6 +569,8 @@ 08A4EB6C1C7A553E00A08923 /* CCActionProgressTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCActionProgressTimer.m; path = "cocos2d-ui/CCActionProgressTimer.m"; sourceTree = ""; }; 08A4EB6D1C7A553E00A08923 /* CCProgressNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCProgressNode.h; path = "cocos2d-ui/CCProgressNode.h"; sourceTree = ""; }; 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCProgressNode.m; path = "cocos2d-ui/CCProgressNode.m"; sourceTree = ""; }; + 08A4EB7B1C7A563900A08923 /* CCPotentiometer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPotentiometer.h; path = "cocos2d-ui/CCPotentiometer.h"; sourceTree = ""; }; + 08A4EB7C1C7A563900A08923 /* CCPotentiometer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCPotentiometer.m; path = "cocos2d-ui/CCPotentiometer.m"; sourceTree = ""; }; 08F4AB671C6E98A1004DAAF7 /* libcocos2d-tvos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libcocos2d-tvos.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 0E0094961B3ACC3E006EA7FC /* install.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install.sh; sourceTree = ""; }; 0E0094971B3ACC4B006EA7FC /* templates */ = {isa = PBXFileReference; lastKnownFileType = folder; path = templates; sourceTree = ""; }; @@ -1192,6 +1200,8 @@ 08A4EB6C1C7A553E00A08923 /* CCActionProgressTimer.m */, 08A4EB6D1C7A553E00A08923 /* CCProgressNode.h */, 08A4EB6E1C7A553E00A08923 /* CCProgressNode.m */, + 08A4EB7B1C7A563900A08923 /* CCPotentiometer.h */, + 08A4EB7C1C7A563900A08923 /* CCPotentiometer.m */, B78AE45C17E7AF1C0028BE0B /* CCControl.h */, B750162218124B6000708A2F /* CCControlSubclass.h */, B78AE45D17E7AF1C0028BE0B /* CCControl.m */, @@ -1360,6 +1370,7 @@ 08F4AB0C1C6E98A1004DAAF7 /* CCPlatformTextField.h in Headers */, 08F4AB0D1C6E98A1004DAAF7 /* CCSprite_Private.h in Headers */, 08F4AB0E1C6E98A1004DAAF7 /* ccMacros.h in Headers */, + 08A4EB7F1C7A563900A08923 /* CCPotentiometer.h in Headers */, 08F4AB0F1C6E98A1004DAAF7 /* CCNode_Private.h in Headers */, 08F4AB101C6E98A1004DAAF7 /* CCSprite.h in Headers */, 08F4AB111C6E98A1004DAAF7 /* CCFileUtils.h in Headers */, @@ -1455,6 +1466,7 @@ 571CD02819649E03003D460C /* CCPlatformTextField.h in Headers */, B798D1451820305400E7BFCD /* CCSprite_Private.h in Headers */, 50BAF3990F33CCD8003F654C /* ccMacros.h in Headers */, + 08A4EB7D1C7A563900A08923 /* CCPotentiometer.h in Headers */, B798D13D181F2E4500E7BFCD /* CCNode_Private.h in Headers */, 509A79970F6188420032F449 /* CCSprite.h in Headers */, 50C508C60F7C194400799124 /* CCFileUtils.h in Headers */, @@ -1596,6 +1608,7 @@ 7A59473719E3730900F65F90 /* UITouch+CC.h in Headers */, 7A59473919E3730900F65F90 /* CCDirectorIOS.h in Headers */, 7A59473D19E3730A00F65F90 /* CCAppDelegate.h in Headers */, + 08A4EB7E1C7A563900A08923 /* CCPotentiometer.h in Headers */, 7A59474119E3730B00F65F90 /* CCMetalSupport_Private.h in Headers */, 7A59474319E3730C00F65F90 /* CCDirectorMac.h in Headers */, 7A59474519E3730C00F65F90 /* CCGLView.h in Headers */, @@ -1800,6 +1813,7 @@ 08F4AAC01C6E98A1004DAAF7 /* CCActionEase.m in Sources */, 08F4AAC11C6E98A1004DAAF7 /* CCPlatformTextField.m in Sources */, 08F4AAC21C6E98A1004DAAF7 /* CCSlider.m in Sources */, + 08A4EB821C7A563900A08923 /* CCPotentiometer.m in Sources */, 08F4AAC31C6E98A1004DAAF7 /* CCSprite.m in Sources */, 08F4AAC41C6E98A1004DAAF7 /* CCFileUtils.m in Sources */, 08F4AAC61C6E98A1004DAAF7 /* CGPointExtension.m in Sources */, @@ -1880,6 +1894,7 @@ 50F7B2790F28DE7C00057537 /* CCActionEase.m in Sources */, 571CD02919649E03003D460C /* CCPlatformTextField.m in Sources */, B7EE6A1F181AE34600B983FE /* CCSlider.m in Sources */, + 08A4EB801C7A563900A08923 /* CCPotentiometer.m in Sources */, 509A79980F6188420032F449 /* CCSprite.m in Sources */, 50C508C70F7C194400799124 /* CCFileUtils.m in Sources */, 503798C70F912C2000986724 /* CGPointExtension.m in Sources */, @@ -1960,6 +1975,7 @@ 7A5947DB19E3759F00F65F90 /* CCResponderManager.m in Sources */, 7A5947F619E375A200F65F90 /* CCScene.m in Sources */, 7A5947F819E375A200F65F90 /* CCTransition.m in Sources */, + 08A4EB811C7A563900A08923 /* CCPotentiometer.m in Sources */, 7A59480519E375A300F65F90 /* CCNodeColor.m in Sources */, 7A59480D19E375A400F65F90 /* CCRenderTexture.m in Sources */, 0EFC792E1B3B0E14008926DD /* CCRendererGLSupport.m in Sources */, From 4b32f3341d574caba89fb4ed269f268feaa2ee52 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 23:34:04 +0300 Subject: [PATCH 32/94] head imports --- cocos2d-ui/CCPotentiometer.m | 1 + cocos2d-ui/cocos2d-ui.h | 1 + 2 files changed, 2 insertions(+) diff --git a/cocos2d-ui/CCPotentiometer.m b/cocos2d-ui/CCPotentiometer.m index 973dbdf7cf1..58863a87249 100755 --- a/cocos2d-ui/CCPotentiometer.m +++ b/cocos2d-ui/CCPotentiometer.m @@ -30,6 +30,7 @@ #import "CCProgressNode.h" #import "CCActionEase.h" #import "CCActionTween.h" +#import "cocos2d.h" @interface CCPotentiometer () @property (nonatomic, strong) CCSprite *thumbSprite; diff --git a/cocos2d-ui/cocos2d-ui.h b/cocos2d-ui/cocos2d-ui.h index 2c47a462fca..3f5bf3f8e59 100644 --- a/cocos2d-ui/cocos2d-ui.h +++ b/cocos2d-ui/cocos2d-ui.h @@ -30,6 +30,7 @@ #import "CCTextField.h" #import "CCSlider.h" #import "CCProgressNode.h" +#import "CCPotentiometer.h" #if CC_CCBREADER // CCBReader From f7a27f7cb43cb78cdc8d5e1ee29bd02abf5ea00b Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 23:43:35 +0300 Subject: [PATCH 33/94] remove -x related files --- migration/1-2-3.doc | Bin 15872 -> 0 bytes migration/demo project.doc | Bin 20480 -> 0 bytes migration/step one.doc | Bin 25088 -> 0 bytes migration/step three.doc | Bin 23552 -> 0 bytes migration/step two.doc | Bin 22528 -> 0 bytes migration/template.doc | Bin 13824 -> 0 bytes .../AppIcon.appiconset/Contents.json | 68 ------------------ .../AppIcon.appiconset/Icon-29.png | Bin 2401 -> 0 bytes .../AppIcon.appiconset/Icon-29@2x.png | Bin 4119 -> 0 bytes .../AppIcon.appiconset/Icon-40.png | Bin 3043 -> 0 bytes .../AppIcon.appiconset/Icon-40@2x.png | Bin 5476 -> 0 bytes .../AppIcon.appiconset/Icon-50.png | Bin 3602 -> 0 bytes .../AppIcon.appiconset/Icon-50@2x.png | Bin 6868 -> 0 bytes .../AppIcon.appiconset/Icon-72.png | Bin 4908 -> 0 bytes .../AppIcon.appiconset/Icon-72@2x.png | Bin 9958 -> 0 bytes .../AppIcon.appiconset/Icon-76.png | Bin 5156 -> 0 bytes .../AppIcon.appiconset/Icon-76@2x.png | Bin 10456 -> 0 bytes .../LaunchImage.launchimage/Contents.json | 61 ---------------- .../Default-Landscape.png | Bin 32739 -> 0 bytes 19 files changed, 129 deletions(-) delete mode 100644 migration/1-2-3.doc delete mode 100644 migration/demo project.doc delete mode 100644 migration/step one.doc delete mode 100644 migration/step three.doc delete mode 100644 migration/step two.doc delete mode 100644 migration/template.doc delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-29.png delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-40.png delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-50.png delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-50@2x.png delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-72.png delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-76.png delete mode 100644 pong-objc/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png delete mode 100644 pong-objc/Images.xcassets/LaunchImage.launchimage/Contents.json delete mode 100644 pong-objc/Images.xcassets/LaunchImage.launchimage/Default-Landscape.png diff --git a/migration/1-2-3.doc b/migration/1-2-3.doc deleted file mode 100644 index 0497f29bbbc9f200fce0bf003289070f19a2ba2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15872 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 diff --git a/migration/step three.doc b/migration/step three.doc deleted file mode 100644 index 5721cf3252914ebb24d5fb43dfd34b855ba26832..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23552 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 E2d3oLzW@LL diff --git a/migration/step two.doc b/migration/step two.doc deleted file mode 100644 index f69e788c22febec647090bd6db280d2628461488..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22528 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 P&mP+sV1G>cUyRlst diff --git a/migration/template.doc b/migration/template.doc deleted file mode 100644 index 9dcddee3e6abc6bf7d4b9863b1b8479d5938de93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13824 zcmeHOTWnOv8UAPY?E0+1W^Ejo5H4%tfa`$4#(+r(u?;203cheNZ3%S2YwUu(_O5AZ zpG-reyi|hrp?!#2Q9)EGQU$%JeTWozp`uMyqAF6OR28(9qDqyzMwO~a4cqUVv&UY0 z&v+Mu2yJ&(-mLoZBijQv&V}<==0GOCvzm)-xFHdp`WcrjQ1=Ul=5zZ7^1SOzQyRsbu32v7s80-gqHfoFi#z#56_v;bRy=YZ#dZNLk_cHl*z6`+mnnRvPs z|9|cjO2Cf+o)!l~oY6(D>8tEw{p}e#o`@&o1LKjtc%pyZ&iKjG!?BTZJtyqh$F!aC z> ze)<91%O3!?X}<3P*yaxbobN^f&Uxnm(!2q1?)wqI`R``{=fG{m%k3NFpWAkw{#W74?SC8d^uHPp8O&p{ zq0vBZvZ2jDZ?d7+!-nQOHbgySFptTGF$2BHhO-8GlMNR}Y`AWq z&$Xf1nLGSk0hH>wV|qQb!Dz(>o$HRDt6r~Mxpp`?CXG3AEpc)v%Ot~OONHfSi+OeD z$f@y^<2~OwIU0>QOt!QcbC_)D^|Zyj>U1=VddgugQ@xBCbC_&7Ys`^r%QoFwE?C?n zSI=7WN3c`kYAq@!^mP=gxQOh6--sR~hI-`wwsp~}$Nd8RrXTO~nE+)=MG ztKzE`N753kAGxnMrRkDL;mSUU6>(5{fFnSs90=b{U$?lXE0f(?W(<0a=sXdu(}r+= z5^p2eg@i^2MJBNSNNa4bSKNLa1;&A0&{N5utzBAn2RKBrE@l1`n)@DEd?_VWm(EDA zR>9ZZ-B|)%O0cC_27PSkV`Ce$3?7B{F!|845R(1ia|U)su=>jJW&<0vSGba}H3dZ6VQ zt>r>!S*|x+n{CDY)hjku>&#sl;4UJd%d21O$ERLl4rgsk{kgU+h1{=zA^|;4;_9r< zDQ9m^Y4}hYzD#M9Le~YlG`N0O(iGtOeF188C{v^Ty6#VA>?^~5AY1QBS8tk}(Y;P{ zY7f+bQ*cUma-jD6wf0UK9hM!afxUslcoX)hfe5tV&Lf5^+vsvRFrz-U)XEX;^IrkJ zbncc9J2AI@qMg<7G%W}BV}Z5EY3ugPw(PcO?)ncReMe^%6t6;yj(|E5V2ch;QL{v; zTc4EOu*J8d;AXD$03JUk&3z!a@+a z(3x$KF8~2%Mtm3uW*E^2Lca%n8;fhI(oamlqmgpic*R7CQw=PDW5I5`T)5#v-v&b%>ROQe@x;HIYseJ}K4t$eAjW zz6)_>CS7|HU{_KWq&WDTRVx01er z7X+WH2oriVsZ)k8RiD>vG}RoJ{b+l`Xn9GAU=)bSR}s_CK8&6`f_$66hozP;?88Vh ztjCm7Al}yQ|5~ zVaX0lUq9wDTrGL^JmZ92#aAJB~Zyx^&tnhjxuafPaMkghWplJA}`A# z!NV?rzh72rPb9>du<{*;xl?bbVy+Fax{St8MMqjZYBOY2%VtczZir-VxPI^o>GUGq z`#C!Bp6d?xem4EI0%)$xf9XzyG^`*9o(*Py11;S5cg{w+qH9_)=? z!uhcX=HEulRn8mJD&Vm)zo-n>c+UabfmWa$=mL6xy}*8e{-Qs<{q`?}zhZcR5(xRf z%-jcT)s6!*^eVdtWj5I|&>=GR>r%X@cMot5&iJ*D)jc?aHFxN&sH;muPet0wc;ZpX)53?U$%YJzL?r}&l z+h<>PBOvO-kWBfC%it@<5yYK17I!17p7bV$8yTw)-hLH@i+#SF9(BHwW?6aV*80em z+b`5y8L?Jf`J?^x`OCp2S1t!@&wpq)_27i%`9r=9qcQMaRcLf z|F`eI(ePCGJKx3myR{$x8098`S!wj&YtJ%b79lnnde_7=b*6NX6vIO*frokioAo#Q z45^oz++1H{MI$JD-=bG@6knl^i5?xD7X@A`(OTHnEZ}~=i@1^$mMs$}ZIY?DO}59Lw*oK3e8c|7|dj-$WVy0~75^3jhEB diff --git a/pong-objc/Images.xcassets/AppIcon.appiconset/Contents.json b/pong-objc/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 0d44aa0468a..00000000000 --- a/pong-objc/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-29.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-40.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "50x50", - "idiom" : "ipad", - "filename" : "Icon-50.png", - "scale" : "1x" - }, - { - "size" : "50x50", - "idiom" : "ipad", - "filename" : "Icon-50@2x.png", - "scale" : "2x" - }, - { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "Icon-72.png", - "scale" : "1x" - }, - { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "Icon-72@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76@2x.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-29.png b/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-29.png deleted file mode 100644 index a830703ead758ba43f2f917fcdd0b9e554fce860..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2401 zcmV-n37+4Tx062|}Ro!pfR1`mnZ(O7nKcKOW4i$^9Ra0BJ8yc;~21%2p=|UR0&DbiW z$#rfTQ`a`O(`{9s_5yDV_yd5l2Of}kLK+Oj_Ok5(v`JGz71bo9J#^YYXp{DWs&KBa zQ@dTpxRI}aIp=pi@6k0t$5)!;m`NF6-tt{FpOKHBn3g+MAqmexC-gw4rh87hTrL7G z#)U`L!(So6-Zux@>;H3gR;i~0B%VTSS3P|m@o9jRsXML@Al^p#@G0Lx-0?i(9WEw_ zSYddU<1E8793KxjQ|c&UmW!mTC>k>?{om1c9S zUx<6_jj_!T&^M{wWM#>IBbOSf*xP<^F{$j$aOQ5Y{cT zROCL1M7^NKKL z&(yA}mSw#iM0^;IB{ZO5!wl{^Sg-*ysE~&Yz8!E;Qv(A`lu*=Clo*MpVGd>OdF6n^ zam1Jntk;<}MrqIC5$=Q>n{*R}?8oOIDUw5En2dl--Xw34!z7E+5pr-OgyQ-soSab)C%saskMla`aQLVzg0+MZf20tJU&K{hZoBrUc+U4e9&3o zw|KmGEe4#xz17wBu{f`SS_4i66?j31EjY7n{zGfhONK~c+td!TS#B}JoR}5UAd7p& z5phTyXSkK0xCeD3xaYP^o&J~#Xp9xFb0C;HHml5fA<%h1eR|qw7wxF+oNL9T1Aits?sKNIwvGaN)^WO$I^cUV)HzL_| z1K?{9p!>B*)`xfEv!4N6IG{J&h49W#Bz^(#YWw%`e_a{8n{G9m5AeR~_yl0%<7V@p zBf>=CYej_Mh=Pv-#6pc9WI#!0i4zbI$qB?LTK$VV>+U6hp;YEzC>Y+6#+JaJJ-o z4xaU3lqQEG14OF1Y5+U8h*bevhoI~UlQ?tOJ2v^9dK+nB;0bxZDvn!Ef1twH1L`n@ za|d!rA^@4Vc;*%ltuV;4J`k&i+W8rm-P!^a zS8-FpcDxJQei$g*3`Jv9ysg%o>Dl>e)A>(S=JQCK7f~M?=Q#OEnx4%OynoQ((mxiH zQ;ao#i?f0g@_?I46>9HPsH@fphl!n`f|5q)Jx6Jofq8!~P#FhCF90>WpbvaZrQPt4 zw?3x)FQQ}AQyyeU02B1A`!|EJgmvD^-f|LeEv=|1Q@HI;h&raey6p6om#Zn}R~R5;p7cAmukVXq1-FApuVI!!7e;K@H=+8^g@(M3;-vf-82C7tGnv7H%WXVKwocxhoQx?VSF6peOz@~Kj6WejH)l+4mm@>*G#lTKdr ztVIq~+L?5d(pa{&ttFJ}Ty%*1EtPEc^Bpc1pX@Dw7BknI>b097`IuMR7tp#I4bdad zt5G(*dM#?`DUEz>~M%Fmz>ZKuzkx|PD#M=|WL~%5tT*1`bp-^@+ z#~C#Yk63hc(?i}gghxhRECOub>ftt~Owt!nPSD^`gr!UQ4Am@^iJ(|s#G8U^D+Cim zgoJlw%%ZEuI1gR8c`l=`X-hU5!Y9#M6;zl4T3i?+n2W@qB=1l^|LWt)RqOH`q@8ldVkC%E_+6VgXE(?_3V(;Ju`e#a4KC8L_M?QFo-C#yDvfmniYZwO0{Tp5L0s*^A!IPbjsK(G{*%SCsAOC?JQ0y zYueO)BRM_a|GgYyw5}{%HwxCAn^B6!Wb9c#jVDwh)uIlh&kN^&$Au3r Ts5e-N00000NkvXXu0mjf$yJmN diff --git a/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png b/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png deleted file mode 100644 index 95fb78d08747701c16a243e136cb7be06f3acf62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4119 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 a+WUWlhPFi*Ji?Ix0000 diff --git a/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-50.png b/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-50.png deleted file mode 100644 index af462a62f7c5b423265ad1ccb66a3a300fe76738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3602 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 Y2gY>cgJI&dMF0Q*07*qoM6N<$f*|PgB>(^b diff --git a/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-50@2x.png b/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-50@2x.png deleted file mode 100644 index f56dafcebd70d180612d04a99acd58036253bfa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6868 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

1uCA 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 diff --git a/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-76.png b/pong-objc/Images.xcassets/AppIcon.appiconset/Icon-76.png deleted file mode 100644 index ca7cefe0cd079f5ec8b20e008eb14d26d2c801fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5156 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 O0000|NgF6Hd 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 ZweTot Date: Sun, 21 Feb 2016 23:46:08 +0300 Subject: [PATCH 34/94] remove templates from repo --- cocos2d-template/Info.plist | 69 - cocos2d-template/Prefix.pch | 14 - cocos2d-template/main.m | 17 - cocos2d.xcodeproj/project.pbxproj | 12 - install.sh | 337 --- .../CCNode/___FILEBASENAME___.h | 35 - .../CCNode/___FILEBASENAME___.m | 45 - .../CCNode class.xctemplate/TemplateIcon.icns | Bin 269138 -> 0 bytes .../TemplateInfo.plist | 48 - .../Base/base.xctemplate/TemplateInfo.plist | 200 -- .../Resources/Default-568h@2x.png | Bin 54448 -> 0 bytes .../Resources/Default-Landscape~ipad.png | Bin 39921 -> 0 bytes .../base_ios.xctemplate/Resources/Default.png | Bin 17607 -> 0 bytes .../Resources/Default@2x.png | Bin 53238 -> 0 bytes .../Resources/Icons/Icon-120.png | Bin 12353 -> 0 bytes .../Resources/Icons/Icon-72.png | Bin 7891 -> 0 bytes .../Resources/Icons/Icon-72@2x.png | Bin 14841 -> 0 bytes .../Resources/Icons/Icon-76.png | Bin 8252 -> 0 bytes .../Resources/Icons/Icon-76@2x.png | Bin 15598 -> 0 bytes .../Resources/Icons/Icon-Small-50.png | Bin 5925 -> 0 bytes .../Resources/Icons/Icon-Small.png | Bin 4215 -> 0 bytes .../Resources/Icons/Icon-Small@2x.png | Bin 6659 -> 0 bytes .../Resources/Icons/Icon-Spotlight-iOS7.png | Bin 5057 -> 0 bytes .../Icons/Icon-Spotlight-iOS7@2x.png | Bin 8632 -> 0 bytes .../Icons/Icon-iPad-Spotlight-iOS7@2x.png | Bin 10523 -> 0 bytes .../Resources/Icons/Icon.png | Bin 6488 -> 0 bytes .../Resources/Icons/Icon@2x.png | Bin 11886 -> 0 bytes .../base_ios.xctemplate/Resources/Info.plist | 67 - .../base_ios.xctemplate/Resources/angry.png | Bin 120691 -> 0 bytes .../Resources/iTunesArtwork | Bin 54425 -> 0 bytes .../Resources/iTunesArtwork@2x | Bin 102279 -> 0 bytes .../base_ios.xctemplate/TemplateInfo.plist | 319 --- .../Resources/English.lproj/InfoPlist.strings | 2 - .../Resources/English.lproj/MainMenu.xib | 896 ------- .../base_osx.xctemplate/Resources/Info.plist | 32 - .../base_osx.xctemplate/Resources/icon.icns | Bin 269138 -> 0 bytes .../base_osx.xctemplate/TemplateInfo.plist | 143 -- .../bundle.xctemplate/TemplateInfo.plist | 28 - .../chipmunk.xctemplate/TemplateInfo.plist | 1129 --------- .../TemplateInfo.plist | 2124 ----------------- .../cocos2d-ccb.xctemplate/TemplateInfo.plist | 280 --- .../TemplateInfo.plist | 954 -------- .../TemplateInfo.plist | 437 ---- .../TemplateInfo.plist | 402 ---- .../cocos2d-ui.xctemplate/TemplateInfo.plist | 302 --- .../objectal.xctemplate/TemplateInfo.plist | 920 ------- .../Classes/AppDelegate.h | 55 - .../Classes/AppDelegate.m | 107 - .../Classes/HelloWorldScene.h | 61 - .../Classes/HelloWorldScene.m | 73 - .../Resources/base-4x.png | Bin 9496 -> 0 bytes .../Resources/white_square.png | Bin 2878 -> 0 bytes .../Supporting Files/Prefix.pch | 14 - .../Supporting Files/main.m | 17 - .../cocos2d iOS.xctemplate/TemplateIcon.icns | Bin 269138 -> 0 bytes .../cocos2d iOS.xctemplate/TemplateInfo.plist | 111 - 56 files changed, 9250 deletions(-) delete mode 100755 cocos2d-template/Info.plist delete mode 100755 cocos2d-template/Prefix.pch delete mode 100755 cocos2d-template/main.m delete mode 100755 install.sh delete mode 100755 templates/CCNode class.xctemplate/CCNode/___FILEBASENAME___.h delete mode 100755 templates/CCNode class.xctemplate/CCNode/___FILEBASENAME___.m delete mode 100755 templates/CCNode class.xctemplate/TemplateIcon.icns delete mode 100755 templates/CCNode class.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Base/base.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Default-568h@2x.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Default-Landscape~ipad.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Default.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Default@2x.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-120.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-72.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-72@2x.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-76.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-76@2x.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Small-50.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Small.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Small@2x.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Spotlight-iOS7.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Spotlight-iOS7@2x.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-iPad-Spotlight-iOS7@2x.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon@2x.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/Info.plist delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/angry.png delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/iTunesArtwork delete mode 100755 templates/Support/Base/base_ios.xctemplate/Resources/iTunesArtwork@2x delete mode 100755 templates/Support/Base/base_ios.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Base/base_osx.xctemplate/Resources/English.lproj/InfoPlist.strings delete mode 100755 templates/Support/Base/base_osx.xctemplate/Resources/English.lproj/MainMenu.xib delete mode 100755 templates/Support/Base/base_osx.xctemplate/Resources/Info.plist delete mode 100755 templates/Support/Base/base_osx.xctemplate/Resources/icon.icns delete mode 100755 templates/Support/Base/base_osx.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Bundle/bundle.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Libraries/chipmunk.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Libraries/cocos2d-base.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Libraries/cocos2d-ccb.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Libraries/cocos2d-effects.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Libraries/cocos2d-platform.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Libraries/cocos2d-support.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Libraries/cocos2d-ui.xctemplate/TemplateInfo.plist delete mode 100755 templates/Support/Libraries/objectal.xctemplate/TemplateInfo.plist delete mode 100755 templates/cocos2d iOS.xctemplate/Classes/AppDelegate.h delete mode 100755 templates/cocos2d iOS.xctemplate/Classes/AppDelegate.m delete mode 100755 templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.h delete mode 100755 templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.m delete mode 100644 templates/cocos2d iOS.xctemplate/Resources/base-4x.png delete mode 100644 templates/cocos2d iOS.xctemplate/Resources/white_square.png delete mode 100755 templates/cocos2d iOS.xctemplate/Supporting Files/Prefix.pch delete mode 100755 templates/cocos2d iOS.xctemplate/Supporting Files/main.m delete mode 100755 templates/cocos2d iOS.xctemplate/TemplateIcon.icns delete mode 100755 templates/cocos2d iOS.xctemplate/TemplateInfo.plist diff --git a/cocos2d-template/Info.plist b/cocos2d-template/Info.plist deleted file mode 100755 index 1c0f231f020..00000000000 --- a/cocos2d-template/Info.plist +++ /dev/null @@ -1,69 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIconFiles - - Icon.png - Icon@2x.png - Icon-72.png - Icon-72@2x.png - Icon-76.png - Icon-76@2x.png - Icon-120.png - Icon-iPad-Spotlight-iOS7@2x.png - Icon-Small-50.png - Icon-Small.png - Icon-Small@2x.png - Icon-Spotlight-iOS7.png - Icon-Spotlight-iOS7@2x.png - - CFBundleIdentifier - cocos2d.org.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIPrerenderedIcon - - UIRequiredDeviceCapabilities - - accelerometer - - opengles-2 - - - UIStatusBarHidden - - UISupportedInterfaceOrientations - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationPortrait - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/cocos2d-template/Prefix.pch b/cocos2d-template/Prefix.pch deleted file mode 100755 index f2861ffe94d..00000000000 --- a/cocos2d-template/Prefix.pch +++ /dev/null @@ -1,14 +0,0 @@ -// -// Prefix header for all source files of the 'Test' target in the 'Test' project -// - -#import - -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iPhone SDK 3.0 and later." -#endif - -#ifdef __OBJC__ -#import -#import -#endif diff --git a/cocos2d-template/main.m b/cocos2d-template/main.m deleted file mode 100755 index cee33bd86b9..00000000000 --- a/cocos2d-template/main.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// main.m -// cocos2d-template -// -// Created by Lars Birkemose on 24/06/15. -// Copyright cocos2d.org 2015. All rights reserved. -// - -#import - -int main(int argc, char *argv[]) { - - @autoreleasepool { - int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); - return retVal; - } -} diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 4fd3d0808f9..7266e1e7af1 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -572,8 +572,6 @@ 08A4EB7B1C7A563900A08923 /* CCPotentiometer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPotentiometer.h; path = "cocos2d-ui/CCPotentiometer.h"; sourceTree = ""; }; 08A4EB7C1C7A563900A08923 /* CCPotentiometer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCPotentiometer.m; path = "cocos2d-ui/CCPotentiometer.m"; sourceTree = ""; }; 08F4AB671C6E98A1004DAAF7 /* libcocos2d-tvos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libcocos2d-tvos.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0E0094961B3ACC3E006EA7FC /* install.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install.sh; sourceTree = ""; }; - 0E0094971B3ACC4B006EA7FC /* templates */ = {isa = PBXFileReference; lastKnownFileType = folder; path = templates; sourceTree = ""; }; 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRendererGLSupport.m; sourceTree = ""; }; 1435EB821A37BA7000BD04D4 /* GLActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLActivityKit.framework; path = "../../Library/Application Support/Developer/Shared/Xcode/Platforms/Android.platform/Developer/SDKs/SBAndroid.sdk/System/Library/Frameworks/GLActivityKit.framework"; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -849,15 +847,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0E0094951B3ACC24006EA7FC /* Installer */ = { - isa = PBXGroup; - children = ( - 0E0094961B3ACC3E006EA7FC /* install.sh */, - 0E0094971B3ACC4B006EA7FC /* templates */, - ); - name = Installer; - sourceTree = ""; - }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( @@ -872,7 +861,6 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( - 0E0094951B3ACC24006EA7FC /* Installer */, E0BC7D711342CC58001B4DCC /* LICENSE_cocos2d.txt */, E0BC7D6E1342CC58001B4DCC /* LICENSE_artwork.txt */, E0BC7D701342CC58001B4DCC /* LICENSE_Chipmunk.txt */, diff --git a/install.sh b/install.sh deleted file mode 100755 index e5faff5d755..00000000000 --- a/install.sh +++ /dev/null @@ -1,337 +0,0 @@ -#!/bin/bash -# ---------------------------------------------------- -# Cocos2D Installer -# Author: Lars Birkemose (based on original script made by Dominik Hadl, Stuart Carnie and Ricardo Quesada) -# Date: June 2015 -# ---------------------------------------------------- - -VERSION="Cocos2D-ObjC v3.4.x" -TEMPLATE_NAME="cocos2d v3.4" -EXECUTION_FOLDER="$(dirname $0)" - -BASE_FOLDER="$HOME/Library/Developer/Xcode/Templates" -TEMPLATE_FOLDER="$HOME/Library/Developer/Xcode/Templates/$TEMPLATE_NAME" -LOG_FOLDER="/tmp/cocos2d-install" -LOG_FILE="${LOG_FOLDER}/error.log" - -# ---------------------------------------------------- - -log_error() -{ - echo "" - if [[ "$1" -eq "1" ]]; then - echo "Invoke the installer with the following options" - echo "./install.sh -i to install Cocos2D" - echo "./install.sh -u to update Cocos2D" - echo "./install.sh -d to delete Cocos2D" - elif [[ "$1" -eq "2" ]]; then - echo "Cocos2D is already installed" - echo "Invoke the installer with option -u, to update Cocos2D" - elif [[ "$1" -eq "3" ]]; then - echo "Installer was executes as root" - echo "To install Cocos2D, run './install.sh -i' from the folder where you downloaded Cocos2D" - else - echo "An unknown error occured" - fi - echo "" - echo "Cocos2d exited with an error" - echo "For details see: $LOG_FILE" - echo "" - - mv -f "${LOG_FILE}" "${HOME}/Desktop/cocos2d-install.log" - - exit "$1" -} - -# ---------------------------------------------------- - -check_status() -{ - if [[ "$?" != "0" ]]; then - log_error 99 - fi -} - -# ---------------------------------------------------- - -status_ok() -{ - printf " [Ok]\n" -} - -# ---------------------------------------------------- - -check_folders() -{ - if [[ ! -d "$BASE_FOLDER" ]]; then - mkdir -p "$BASE_FOLDER" 1>/dev/null 2>>"${LOG_FILE}" - check_status - else - perms=$(find "$HOME/Library/Developer/Xcode/Templates" -name "Templates" -perm 0755 -type d) - if [[ ! "$perms" =~ "$BASE_FOLDER" ]]; then - didPrint=true - echo "In order to install templates you need access to the Xcode templates folder. Please enter your password if prompted." - sudo chmod 755 "$BASE_FOLDER" 1>/dev/null 2>>"${LOG_FILE}" - check_status - echo "" - fi - fi - - if [[ ! -d "$HOME/Library/Developer/Xcode/Templates/File Templates" ]]; then - mkdir "$HOME/Library/Developer/Xcode/Templates/File Templates" 1>/dev/null 2>>"${LOG_FILE}" - check_status - fi -} - -# ---------------------------------------------------- - -copy_files() -{ - if [[ ! -d "$2" ]]; then - mkdir -p "$2" - fi - SOURCE_DIR="${EXECUTION_FOLDER}/${1}" - rsync -r --exclude=".*" "$SOURCE_DIR" "$2" 1>/dev/null 2>>"${LOG_FILE}" - check_status -} - -# ---------------------------------------------------- - -download_chipmunk() -{ - echo -n "Downloading Chipmunk" - DOWNLOAD_DIR="$EXECUTION_FOLDER/external" - mkdir -p "$DOWNLOAD_DIR" 1>/dev/null 2>>"${LOG_FILE}" - check_status - - curl -L -# "https://github.com/slembcke/Chipmunk2D/archive/Cocos2D-3.0.zip" -o "$DOWNLOAD_DIR/chipmunk.zip" 1>/dev/null 2>>"${LOG_FILE}" - check_status - - if [[ ! -d "${DOWNLOAD_DIR}/Chipmunk/" ]]; then - mkdir -p "${DOWNLOAD_DIR}/Chipmunk/" 1>/dev/null 2>>"${LOG_FILE}" - check_status - fi - - tar -xf "$DOWNLOAD_DIR/chipmunk.zip" -C "${DOWNLOAD_DIR}/Chipmunk/" --strip-components=1 1>>"${LOG_FILE}" 2>>"${LOG_FILE}" - check_status - rm "$DOWNLOAD_DIR/chipmunk.zip" - status_ok -} - -# ---------------------------------------------------- - -download_objectal() -{ - echo -n "Downloading ObjectAL" - DOWNLOAD_DIR="$EXECUTION_FOLDER/external" - mkdir -p "$DOWNLOAD_DIR" 1>/dev/null 2>>"${LOG_FILE}" - check_status - - curl -L -# "http://github.com/kstenerud/ObjectAL-for-iPhone/tarball/v2.2" -o "$DOWNLOAD_DIR/objectal.tar.gz" 1>/dev/null 2>>"${LOG_FILE}" - check_status - - if [[ ! -d "${DOWNLOAD_DIR}/ObjectAL/" ]]; then - mkdir -p "${DOWNLOAD_DIR}/ObjectAL/" 1>/dev/null 2>>"${LOG_FILE}" - check_status - fi - - tar -xf "$DOWNLOAD_DIR/objectal.tar.gz" -C "${DOWNLOAD_DIR}/ObjectAL/" --strip-components=1 1>>"${LOG_FILE}" 2>>"${LOG_FILE}" - check_status - rm "$DOWNLOAD_DIR/objectal.tar.gz" - status_ok -} - -# ---------------------------------------------------- - -install_cocos2d() -{ - echo -n "Installing Cocos2D Libraries" - - LIBS_DIR="$TEMPLATE_FOLDER/Support/Libraries/cocos2d-base.xctemplate/Libraries/" - copy_files "cocos2d" "$LIBS_DIR" - copy_files "LICENSE_cocos2d.txt" "$LIBS_DIR" - - LIBS_DIR="$TEMPLATE_FOLDER/Support/Libraries/cocos2d-effects.xctemplate/Libraries/" - copy_files "cocos2d" "$LIBS_DIR" - - LIBS_DIR="$TEMPLATE_FOLDER/Support/Libraries/cocos2d-platform.xctemplate/Libraries/" - copy_files "cocos2d" "$LIBS_DIR" - - LIBS_DIR="$TEMPLATE_FOLDER/Support/Libraries/cocos2d-support.xctemplate/Libraries/" - copy_files "cocos2d" "$LIBS_DIR" - - LIBS_DIR="$TEMPLATE_FOLDER/Support/Libraries/cocos2d-ui.xctemplate/Libraries/" - copy_files "cocos2d-ui" "$LIBS_DIR" - - LIBS_DIR="$TEMPLATE_FOLDER/Support/Libraries/cocos2d-ccb.xctemplate/Libraries/" - copy_files "cocos2d-ui/CCBReader" "$LIBS_DIR" - - check_status - status_ok -} - -# ---------------------------------------------------- - -install_chipmunk() -{ - echo -n "Installing Chipmunk Libraries" - - LIBS_DIR="$TEMPLATE_FOLDER/Support/Libraries/chipmunk.xctemplate/Libraries/" - copy_files "external/Chipmunk/objectivec/include" "$LIBS_DIR/Chipmunk/objectivec" - copy_files "external/Chipmunk/objectivec/src" "$LIBS_DIR/Chipmunk/objectivec" - copy_files "external/Chipmunk/include" "$LIBS_DIR/Chipmunk/chipmunk" - copy_files "external/Chipmunk/src" "$LIBS_DIR/Chipmunk/chipmunk" - - check_status - status_ok -} - -# ---------------------------------------------------- - -install_objectal() -{ - echo -n "Installing ObjectAL Libraries" - - LIBS_DIR="$TEMPLATE_FOLDER/Support/Libraries/objectal.xctemplate/Libraries/ObjectAL" - copy_files "external/ObjectAL/ObjectAL/ObjectAL (iOS)/" "$LIBS_DIR" - - check_status - status_ok -} - -# ---------------------------------------------------- - -install_templates() -{ - echo -n "Installing Xcode Templates" - - copy_files "templates/" "$TEMPLATE_FOLDER" - check_status - - if [[ ! -d "$HOME/Library/Developer/Xcode/Templates/File Templates/$TEMPLATE_NAME" ]]; then - mkdir "$HOME/Library/Developer/Xcode/Templates/File Templates/$TEMPLATE_NAME" 1>/dev/null 2>>"${LOG_FILE}" - check_status - fi - - TEMPLATE_FOLDER="$HOME/Library/Developer/Xcode/Templates/File Templates/$TEMPLATE_NAME" - OLD_DIR="$HOME/Library/Developer/Xcode/Templates/$TEMPLATE_NAME/" - - mv -f "$OLD_DIR/CCNode class.xctemplate" "$TEMPLATE_FOLDER/CCNode class.xctemplate" 1>/dev/null 2>>"${LOG_FILE}" - - check_status - status_ok -} - -# ---------------------------------------------------- - -delete_libraries() -{ - echo -n "Deleting Libraries" - rm -rf "$TEMPLATE_FOLDER" - - check_status - status_ok -} - -# ---------------------------------------------------- - -delete_templates() -{ - echo -n "Deleting Templates" - rm -rf "$HOME/Library/Developer/Xcode/Templates/File Templates/$TEMPLATE_NAME/" - - check_status - status_ok -} - -# ---------------------------------------------------- -# Script start -# ---------------------------------------------------- - -# Header -echo "" -echo "Cocos2D Installer (${VERSION})" -echo "--------------------------------------" -echo "" - -# Root exectuion -if [[ "$(id -u)" == "0" ]]; then - log_error 3 -fi - -mkdir -p "${LOG_FOLDER}" - -# Check for arguments -if [[ "${1}" = "-i" ]]; then - - # ---------------------------------------------------- - # Install - # ---------------------------------------------------- - if [[ -d $TEMPLATE_FOLDER ]]; then - log_error 2 - fi - - check_folders - - download_chipmunk - download_objectal - - install_cocos2d - install_chipmunk - install_objectal - - install_templates - - echo "" - echo "Cocos2D was successfully installed" - echo "" - -elif [[ "${1}" = "-u" ]]; then - - # ---------------------------------------------------- - # Update - # ---------------------------------------------------- - - delete_libraries - delete_templates - - check_folders - - download_chipmunk - download_objectal - - install_cocos2d - install_chipmunk - install_objectal - - install_templates - - echo "" - echo "Cocos2D was successfully updated" - echo "" - -elif [[ "${1}" = "-d" ]]; then - - # ---------------------------------------------------- - # Delete - # ---------------------------------------------------- - - delete_libraries - delete_templates - - echo "" - echo "Cocos2D was successfully deleted" - echo "" - -else - - # ---------------------------------------------------- - # Unknown - # ---------------------------------------------------- - log_error 1 - -fi - -rm -rf "${LOG_FOLDER}" 1>/dev/null 2>/dev/null - - diff --git a/templates/CCNode class.xctemplate/CCNode/___FILEBASENAME___.h b/templates/CCNode class.xctemplate/CCNode/___FILEBASENAME___.h deleted file mode 100755 index 583ac79f22c..00000000000 --- a/templates/CCNode class.xctemplate/CCNode/___FILEBASENAME___.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// ___FILENAME___ -// -// Created by : ___FULLUSERNAME___ -// Project : ___PROJECTNAME___ -// Date : ___DATE___ -// -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. -// All rights reserved. -// -// ----------------------------------------------------------------- - -#import -#import "cocos2d.h" - -// ----------------------------------------------------------------- - -@interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocos2DSubclass___ - -// ----------------------------------------------------------------- -// properties - -// ----------------------------------------------------------------- -// methods - -+ (instancetype)node; -- (instancetype)init; - -// ----------------------------------------------------------------- - -@end - - - - diff --git a/templates/CCNode class.xctemplate/CCNode/___FILEBASENAME___.m b/templates/CCNode class.xctemplate/CCNode/___FILEBASENAME___.m deleted file mode 100755 index 679316f36a3..00000000000 --- a/templates/CCNode class.xctemplate/CCNode/___FILEBASENAME___.m +++ /dev/null @@ -1,45 +0,0 @@ -// -// ___FILENAME___ -// -// Created by : ___FULLUSERNAME___ -// Project : ___PROJECTNAME___ -// Date : ___DATE___ -// -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. -// All rights reserved. -// -// ----------------------------------------------------------------- - -#import "___FILEBASENAME___.h" - -// ----------------------------------------------------------------- - -@implementation ___FILEBASENAMEASIDENTIFIER___ - -// ----------------------------------------------------------------- - -+ (instancetype)node -{ - return [[self alloc] init]; -} - -- (instancetype)init -{ - self = [super init]; - NSAssert(self, @"Unable to create class %@", [self class]); - // class initalization goes here - - - - - return self; -} - -// ----------------------------------------------------------------- - -@end - - - - - diff --git a/templates/CCNode class.xctemplate/TemplateIcon.icns b/templates/CCNode class.xctemplate/TemplateIcon.icns deleted file mode 100755 index 2dc0371c1856a1f41063b680751b2247242827fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269138 zcmeFZWk6iZ(l$CX*bH%jxDj_3Vnj%YLEJ+~h!PhP5=Jt{;1FDcySoKV0wg$r;4Z

jy;#WWFKjG*`M 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 z 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

Zm-!Bv9n*Q!jo(hT0w{eq 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 - - - - AllowedTypes - - public.objective-c-source - - DefaultCompletionName - MyCocos2DClass - Description - A CCNode descendant class, with a header that includes the <Foundation/Foundation.h> and "cocos2d.h" headers. - Kind - Xcode.IDEKit.TextSubstitutionFileTemplateKind - MainTemplateFile - ___FILEBASENAME___.m - Options - - - Default - CCNode - Description - What class to subclass in the new file - Identifier - cocos2DSubclass - Name - Subclass of - Required - YES - Type - combo - Values - - CCNode - - - - Platforms - - com.apple.platform.iphoneos - com.apple.platform.macosx - - SortOrder - 1 - Summary - A CCNode descendant class with a header - - diff --git a/templates/Support/Base/base.xctemplate/TemplateInfo.plist b/templates/Support/Base/base.xctemplate/TemplateInfo.plist deleted file mode 100755 index 595bd0fcc9e..00000000000 --- a/templates/Support/Base/base.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,200 +0,0 @@ - - - - - Identifier - com.cocos2d-v3.base - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Options - - - Identifier - productName - Required - - Name - Product Name - NotPersisted - - Description - Your new product's name - EmptyReplacement - ProductName - Type - text - - - Identifier - organizationName - Name - Organization Name - Description - Your company's name - Type - text - Default - ___FULLUSERNAME___ - - - Identifier - bundleIdentifierPrefix - Required - - Name - Company Identifier - Description - Your company's bundle identifier prefix - EmptyReplacement - com.yourcompany - Type - text - - - Identifier - bundleIdentifier - Name - Bundle Identifier - NotPersisted - - Description - Your new product's bundle identifier - Default - ___VARIABLE_bundleIdentifierPrefix:bundleIdentifier___.___VARIABLE_productName:RFC1034Identifier___ - Type - static - - - Project - - Configurations - - Debug - - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG - COCOS2D_DEBUG=1 - - GCC_SYMBOLS_PRIVATE_EXTERN - NO - - Release - - GCC_PREPROCESSOR_DEFINITIONS - - NDEBUG - NS_BLOCK_ASSERTIONS=1 - - - - SharedSettings - - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_WARN_ABOUT_RETURN_TYPE - YES - GCC_WARN_UNUSED_VARIABLE - YES - GCC_VERSION - com.apple.compilers.llvm.clang.1_0 - CLANG_ENABLE_OBJC_ARC - YES - - - Targets - - - Name - ___PACKAGENAME___ - SharedSettings - - CLANG_ENABLE_MODULES - YES - ARCHS - $(ARCHS_STANDARD) - ALWAYS_SEARCH_USER_PATHS - NO - PRODUCT_NAME - $(TARGET_NAME) - WRAPPER_EXTENSION - app - OTHER_LDFLAGS - - -lz - -ObjC - - - BuildPhases - - - Class - Sources - - - Class - Frameworks - - - Class - Resources - - - Configurations - - Debug - - COPY_PHASE_STRIP - NO - GCC_DYNAMIC_NO_PIC - NO - - Release - - COPY_PHASE_STRIP - YES - - - ProductType - com.apple.product-type.application - - - Name - ObjectiveChipmunk - ProductType - com.apple.product-type.library.static - SharedSettings - - ARCHS - $(ARCHS_STANDARD) - ALWAYS_SEARCH_USER_PATHS - NO - PRODUCT_NAME - $(TARGET_NAME) - EXECUTABLE_PREFIX - lib - EXECUTABLE_EXTENSION - a - HEADER_SEARCH_PATHS - - "$(SRCROOT)/$(PROJECT_NAME)/Libraries/Chipmunk/chipmunk/include" - "$(SRCROOT)/$(PROJECT_NAME)/Libraries/Chipmunk/objectivec/include" - - CLANG_ENABLE_OBJC_ARC - NO - SKIP_INSTALL - YES - - BuildPhases - - - Class - Sources - - - - - - diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Default-568h@2x.png b/templates/Support/Base/base_ios.xctemplate/Resources/Default-568h@2x.png deleted file mode 100755 index 7059fa6b5efa973a69a563eb04b41a9ff1d605e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54448 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

XU7xdJ; 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 SPTferkFvbFT$PMz=>G!}fJFcR diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Default-Landscape~ipad.png b/templates/Support/Base/base_ios.xctemplate/Resources/Default-Landscape~ipad.png deleted file mode 100755 index c6e06823019a0bac85262b26147551a9c792ec0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39921 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 S94`X`hn2-I=J{r>k^co~xh)d_ diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Default.png b/templates/Support/Base/base_ios.xctemplate/Resources/Default.png deleted file mode 100755 index e52be68eef38eef16252616b8ba4deac4e7657ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17607 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 diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-120.png b/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-120.png deleted file mode 100755 index b339374c1268cc4eeff1f6e932ba34dc6f970cf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12353 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 diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-72.png b/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-72.png deleted file mode 100755 index 3120bcbfc4372b7746e064717941b7f0b55a87ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7891 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 diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-72@2x.png b/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-72@2x.png deleted file mode 100755 index 85a10076441346a9c8f0dfa24a983756af630c76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14841 zcmVKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C zFD6MuK~#9!?45Uf6m|N?-?N+ENgyE!fzU!Pf?%UqPO;-*Ir~}8cIw$UJ-z1L&pX?x zsAoOTJL}m&#g3o?Dk!~42@pyG3F!$*w#@wgcxJORyR$9X1QK{&uYD0_XLn}j`}uyJ z`hC8Nwg78U!ahC}7z>O71_F6NE|AHgF6u#aFA8-ilmex|Hed~~3RvxTu4eIh&H8I& z+ITzp!0EubzzIMchs9^W?2tMFGq-=WvHfu_p!)kbjDX5y|d#I3(?0~AzX5im!8 zZHxFa5i(FN3O4{Z9%h(O>|=+4e}{rQJ0CmFVH3J_g-Ond<^gb zklnrLAO;F<23I9CRRs=Jbd*$m2{EaVer(5l|I$Cgy0^_fu?=Y155;pJcLJpK5B?po znb7NeaF#;NO0W?JoDD1owuHk#y@7XtUfoWexLlAj298(+eXjP}D4oefn`gq#hob-e zrC-Cc$E^b@F+gKAG?s<;UA6=m@-OIny@!bsfLDQ{PykYZ{{n-$XKV(j{0QQ5VCV}l z>TO6GC=W^NL=bJd3wAvgMX##`zPSmU&DN~i0*t#BiY|#Pj#czD8IOaXOuv+^v_VX7Gf>l za{~F}VA7-BW4q^@ZK7a^FM1BrMtYvjk!aj){5?hn>IFR7tvw9Rp%7hGfw~|3kN27Z6P7~uSzabO*g@oOg8A2gTlH669{X?yD%du^l6P-i>ZU|28t6O?bX&S*M;@xOtgS3vc8cy|h{eo>gprW@8xRWRpN*b@d5 z72FQV1)j-uIU1vlD(p-k^^gec*?`)Gk{1dj`M-uE7eU66G7z1?M4Rq{osUGQx*oAs zT@Ik%B$)I#Y@Z8nPl2-K;-MLt$__MD!v|;S>MRKD+LNKrEuK?ifD1g2QvrU#p&|<4 zsE39XA!vInjQbJ>+%B_D?cjS-fQ>VuB#dBVOAUN^6=<5j>T&^D1L4%S;m7;n!|Bjm zX$>?F6l!bWo8N%5G5B@!uYtrI4~Q-XQf+7qLSyP7p}ssXH&E-N`<)HosP&n3X)yQ^ z82tvsWOS@b^T?)qU`GfhT7Ey2Z}FrXe2nHSnDQ7by%)auBPgo>dB*b{z{nYJ=0^~l z68yUMG{~IhQDgnl7;gi{6BwV}mxb!S_nEnk@ZCMI^9%p;bAACwegj!kJu#6^V4?sv z(XM&$<0Jk7Lk+MeK+z0X^#m+`4&n(MZFd0i8F2DbaN4`zsDVvyL+L^(1qmd%zXV(B zmrk@HX^TTkY(V`gDQWOXLQhC5g#CMA-M>Ulm{i&*8235!y|!ajng>Kb-32>*ytC$g z@byigx~+kc+8atfg>CZ$JXWIVfyIK!aPHSI^4GBF4tQ-ed~^Z4GX-X!1f}0te?Dy@ zB;j_og zfZN$|`7{Nn_)P90{TMm+{qJGJN0L~uI=`g`n(G4BnYxhQHen{5{1U{a!YAj$s+S-} zmCxCL>g}-Uf0D`1ndme5;-F$KG?suugAJ)+KD5LQ#AiW_PuQ#H7^wM49@>a&MV*y= zV&T%>1mosHV!w_HJbJvd^|yPOC~qpHBnMZcwg9Z-0J4U{IiJF@4+@Z0JPhkT6hIm$ zLM&3nIPYdyJk$UCl8QWbTbBLa%lSQrQhBNiNErx6yazp|_*<2A+a>T8lK{PshVms) z_8nx60-IrKCl*4^&&8H%+!eeqroHOS!$gHwLiSkL`T@8c;a$_CZiin2r@sT4!@ckI z7zWi#plXM;p=}3teg}#J`kdrF-mnrX7l4fx`@NU(XM7T5-5NaEC&3XPLh?`xmo@=* zel858=%bf4TBh*ES0H1E*;9$hfZi8Ca|zU}?HCYwr2I38NrJ*FAa^2cejD7b;Ma5j zDLrA@OEBRN5aTnBhcq(aOP|Q zygPt<-U1Aq1{ZuUc3mKeO@%Y&K;KF783!=tIyi43?6-8-8J+wX_Ir%JtZ zY?2v7P9$-9(qnMe$B;HqKVA>}_XGe@3QYeT3a7yMo8kCpA$Jn=J54vd0hb%Tx=uVm zTWqV%Wb5|eQGp?Ufx!dzrW=zD7VPUC+7G^q)mfpgW*?8ux-PCK=nzM^|=8? zJR>9Bp-glKY=0Q~o+cnl=>rpQg>ybPyWXk;KDhw4ehC#D;KQ?_POnUD+6y0_3oHI3 z$4fqzy8Yh0`?>r{U6Bxm5&$J z1Z$sz_)HjhE+pw|BpXX%$7itl4Ox_DvqSYyp|92NG{_nQYn~Px!vv!1py|dOTqcc82j}jkplbfw-s6$=KE}kl-HU-# zK#7OZFF~$P{jZ}AR?UK(2~cn{xb}{rv`GDi$gnxO> zfNo_(tAM7!*w-NE0`q%K<*@2;7;>363cGJ5#P^T~vFBSDY$%5+I9YN;<;xM z;2c=_n7{or;(5q9spCN8QDK8JaQ3H`fc)cSbwWykFpyD(T<&kv zgd;tM3W!!c4oBP}@e+{O)0kJ``{SX0V_4CIHi-?`aF@iT3h#ivr$BNlwA9OcPGHpK zFiEdBD*YPf{v4e9&G)3}cHxn~5B}V{ybAMxXVgC-|4Q?Fjb*UmMHqIK89bU>JQYoY zeQTibjKC4vwn)|}C^!k${L`!&;(Eilx5Z%X=u(jNGhyrfkdzBY{hvAcYLAx(w{#Bh)~>n($ej|pLa|GG zVJ@KXYAE`<&yTN#jju|aCf#CzZQVAg-3*!&vd4EE!26sCF)6Thjt{t|!|(??wmjCu zL~Cz@l38%t2T*Xd07C)xu8~Bn)!cCcnSJ1x`w3X=q;+)_<^*z1gptpgkGoqW&eP{4 zu}7?=a*cRdc~d(6J_nsAY*@C~e7ygi(C7S)^~^km_3GPT&wt>Y1yFE|cvSWP*l+?# zS#a8$QqmHZ+0_-9C#?v^yyCBZ*1sSn2R(yS={g%F0GOQLIba`lr2w{WyZQL27of+; zjxW@=0V{715KW&4BQKQLkkfFE$7N5=gR|a)-eGhP>5>ej0&y8I?hT0dDWu%^Dr5`} z+|sRe;BJJ$7k1t~+hRqXZhl<~_gnqnG#K|*aHBdJwvva5R{R=DUzBCer@aO_W98o5 zNOH939JpYy*gg?R*K*@kV8o-4c7*x(&M)Li7n~Bt13dt9COJ>yOB?c(JfGPAyoY&hICSI$cV5ZOP6CHCou3v=;PzA zS8tHKRV1xT4uoV+5VcwIsrh)pHPHWBe|ty;2HXm{H^F||51>|?=vLVJu>2=;IOI)= z96Vjl266$JV`0es{x12Jx5ds-y1-oMf2IK5*B%=Fi2Od6A+}|=L+WT4d=)q|pvm6@ zYV%tBHFv_+N80{7x|A2DA=&ZK&q;f@)*0%OdYqz*!-`iN6r#jPN@erw;BGbq_flZ= zGg6}J8Jy%oDcp}sg@Uu75{c#5qQpdNX2O;Sq7wW*xWxqw{w-wqtWPTWSSUEXi#1bA z>?!upmUqm@GmeH~dem42(#K0r9)Ka&2qV=-8AR*uhOLiwV*t64c*G!|oJ{3fDTwNO zYL^USkv&1mN%pPuQE|6G-ZTMG&UEkboXL=TjMzyvNGvB>Hqn|pp!lJ70O(-1e@4ub zh;FMf-2gj2Irxp{P%`8)S+r;@pH*UE#AA?}1DQU}!3SLIt#I@(QM7EL)pxOc8zp5J9Qh{1`83HLa3N&mc?Yi!Z)&2w zOk@XE-yS)L4q66M0edVA_tDSQKS?kyZ!+CNdXACExNq%I)>PBV2LR%FK;P+Jci+fF zN|cyrWtbp3=)EvEkUs;`$N3x1{kqwf9Yq&G=~q&d6G{qam`6<2nW!a-OtdO8CbAur z>=Ty^!~X6Mp7g;I)$L9an<|Cs+dm9_Zq8)rHO8FB>L@1K@=zDGfm}fTxsWu#z(_4p z$K3Z6x~23!R*dQT?ZMBp$BQlGyPP@NOk~py>*7bc7z3$5TnY^So%t?zdeY1J zRQjC?+dc?=UcngQg-BD8dihADl zrTKXAJ5s~#k<5|OC&*>N99l;((cQ4+(JsJ1DiE6p18+0m;qC=e{MDV=$0L1DlOU;Q zrK{=?H@|wld1MRE4P547RA@eukz?F=O z4~U#mWTNH2g5oD3M(HFQNCnbHz_9y*chl&1jg&ihq`pK-9uj+U$Vt{nSv8xbtMlyf zvbNtSc_%`wE$}l}4S(0_OcV{9NCV0j%euNwv4IqX|FTbl{+C%--lgO~-Z|#u6)U=K zwmlj$?zht96J+JAv)?~MsqqBp)B%Rrt*Zl1(oQUQ#9*gI=9 zz^=#|DWg=bg`Q)(Mwx1-8P^m1yXP02>RlWd4zs94FN@!445TRD$~u6)mqG6FLZ@yZ zeHdi;7|L~9#Tz*+UP;W6_>gfQi_B4wkQ%uSQy)Dh>VzpCBXn!@AdYwnViSaZ`~S+@ z#R8sCg zyK*QI3{5*hWb3qzZo`qvwW8AxO8^y?Drp_J!(a#H3Ny8*op3wUStl@11So2$@!y~7 zu$aXjFS`r2{yzay3WGo54pe6y4A0pOen;M%lL#lJX7%B$UMW@Q+CM9P8~gAE|$X1xsl_V|Yx|3E6nJRMr_KsW?eEU!*_J)`?aDgxT7)1?_i8_{n6x{|=eKsRW>j6Bxl>Rv>B&?45N^L78vEYQ-)EQU#|-3%AX09a?3p?P3Of&TDS7D<7L0 zUMxrr@e1@A4~Xb=BN}kl`9B0ze*nX-fXdZE&4(p?%hwnhvB!%E(B4>3ut;_QChGVm zn;PJ#_K#(F>>^t%OrF&-9pk$#h7_HFV!abG6o9lSjb$T{jC8o~GzMy^^3mCe=4Jwi z!4o+PX+DUEwhf=d}54_6Z!?6U{vWyPNDUm;L7}R!V}{Q7un9u7~XY+;c4S zo7N7sZ82!Jc>e`~9YF>jX%Hrg>68cB;GwnLA0c9JM3El`zu6E+LIt9SC$8P zwz%vlDP0I_Uy!x@b>-#^xzYGkfQ)=u4?pJS;GOj?2U7Ddk@0NBt#sh;Q+&X*zcT=2 z0~&W3o}BKA?pq~$c11(>t%fb{%B-(k3r!8?*~_OYr;FFrTm?=0^~D7Gxy}ao{vWV=5lnk2^d={*-d8&! z&w&`F4bnL_kfRow_Zk3{?w{U>RCa#_^L_;t#WE1_`fPW54ZPMsn5sW-yACc#EiC?< zwA!8em^3wLi>!SH=HDzK2@h}pdXJSgZF!SqU4LAf+(=V}thU|#4Q!hW)jMShCjh&@ zhdHOg+3!mSj!*zneCR}T2d|t_+Q2f}!2%$sQ#QFz({o)hNkZ4o#Lo{vZg*UTee%OSOMkBp<)@-S9=GoawE(>1CD=8HfD=NRy_vuZx>L; z=-2N#1dh5F2A^;3S;nTwroMwOgk$~&D`&y7hr!V#0Ib>ybI*bEzk|d8%;;|RPfmk8 zi)esGvG`jH46x2IqTN8_4)d|3Tw#Jp0km~Ce0sT{#xrn9=`j9U81ozd9SXs_J5S?o zsRUU495j>*8>t$6d87Qx#RroFMB2tU(#?Op1N&Bx->pt&-#@2Ok^UtBFTZbLG~ zeJ8_(Kf-YjS%b$Y$@y^9U*Y2AF#Hm4ra2Z^_(xd(uh93c;Y7)nwL;gpvlF3D?P|L}j-o8G#bqy@6C{o`y1f8g6PegVF>bBgK}-PJWpVlQZp z06=S>h3yN)({TX(kB4cmhnIwPHi`%28+)4Y2RPvonfW%r<$!rt1m3N9&v&qSj&6tp zgHDE{|8DJKZ+r#jTm=6+0^XhsWs8E}W6nf4?r&c2t-4f_%zgmc@83h(-7LQ?R0UzA zS|g0_={yE%*lNy+CH91d6916Am8ecw{e;}D8`%orq!&Y%fb94TJ~#_r9S$!KfzogM z&l!6=jJ;X_5d)O1mtBCY55eryVar^o+yMoX1Md+(=~3uaB;OqaEPGJAH=|UogOV@2hWpr?p~tYm z*H6rbIDMewfTmhlcuVl`MNA@$zD4iUkL+u2>W`?~K)%~sHCGDDV(>^EfISAXhR6VD zQ82LaXQIwq7v=`4R+w+5$8dAcn?SPu-`*Hcb`gxcA^7qi{PF?cFu#wI`0&X1NJPJkU}u&Hw}_g^eP4w z_I&Td#%})&gR9m-y<3%njL+P+S0^Q!<=E6v9;23xPt zFwt`zRQxCd>qfTHwui_(uYOwJsLq(~SQ%pAPKTTkG6;5H<7-~^p}AydM7!>F^_gro z-1mMDOaCg3Asn^RRsZXo@LOx+#D5ELD+9mhSno%7&G$E$eY>_bmx~%c{Z+Vd4V>{2 zjQ<^EjmEkBF&r)pmn#ZhmxXHUJOJ5%>Q&}Sy5xL)t#=SUt=R$%d%cn5P#f#I8YRzW zjBv#QE1!W~3k(l^pLuW;I}E$Zt3FDhzqt?PIjP>rrCC>B0-5NbR4X zHc)5vfwloPo1uEO+1PY8Nclq`DPIasP2UDGQ|hRL1}z=_r6P*%y}UmSKKlhMo(ZoX z3F~~~K7-DOq$Dp}lrNRP>x!X8|IRp@BxQY>G%Z6y3=Mm{T}^#$hd89?btp+6HQ7y8P=Qp zj=K{I#>sY+s?SVq0n)Nz>Qmvh?F*#l>Ua3B2@9mjmpuk<`AMEvt10F*1hXTF6KPgn zSZ9h2*tb;dl-AjsBlbw32csHSAB4H|=ZKk*-QU~p-}fOj1LJ2(vuEjK4HtqAz zGuh+)8)kVT>(f7niMNP~aq4OiyF|>-T@ZfZn6tqwE8y*O1=I$Nd&2-W%AZZ?&76y!Y5TIxYfs_)f@zDYIbgEwW94>XH)H ztdWsDr~PFH#!L4`+Z%R?z1UDDd#dd(mwPi7lW8ihCHJAIK}J^xf>T#zc6)${779dK zX9Eb`4K9Ag3m||#CrFJ|HA9iPU~jc&gZ4L5xqo zrx=%RFluY{bV86&LR$aOfzDu3_N_N4*kia?r45)N?CpsIt$h{-|H8~ZTV|scFA#%0 zfL&u$XD*$E{6M6H2d2&kkR2%fQc4m$-CL9MC9&GP4-$N09KFVQUHHm1a$dL_?%ES! z$VKuBR~)row(_XVq~2ZtHP=XcmG};70_tvpvW4EbSDzEi#1arky5|Y`@lRv zO)G?0{mDCAQg_`^Qn34;TY^@=c}l zMP(V?@Axz*|ItScCCEPUZk@fhz29+zSF;&vioF2xcxiFzvh9*fH%xbY5qf{qwn$wu ztb5U$G#-AHzpb@zmGlSlshf5#{sUU|9{%}<))^<6@%@OC4Ywf z4Z7Wx3`2kE<9jzsiOP^m{ep(>HLpON1?vPbqJy31_ArqZb6E`Kfe{5*H_IDk1!?D> z&=dChR0ZZvg6z>UD^(4Cyx*Kti-tJrq>3;`SCu(q%sVCK9}ijmzBK$R(g0s4IaaJ-VNY(iL<7J0FI5YlBq724~Trhbie@=15~UN zkIX22e&)|YiXBGZtnaG|>|81(pV5?M_e1SoZ_(PYE6st+m?ViExjpWD6MS)Hbk?_( zErJEV@p@i8^5E$E%;)U+PO1WWA8R%z7u|zewk~kcQ1JmyICEPEi60YL*g*$=)7_PS zGb`1kY-v8Vcd7Y?hh71FkCqfgEU@$eSsf7#Dg6e1eAsJy^vH!G3)jEsBFG;r3=s>I zu7uAoGbcMEm0j~;?s?Eu<@NrKf6^SzXs(od95BOdn(X-j_p-+YJQg-eNbgGv?5!zQ z>g<50GOSo=*CHrg;A0C-l?Q9gs@r0u4NQXG#>CwMpIju%ncE{(Yvp^4t1Kq|$y63$ zGW1V)0pgPcXz{?7kKz5(y`>*viw3Lz2_K#VjeF%;IDiRv_yL8DuR#ClX4U1W!}-~j zV(}`G**GR<^01RF44cT}efzyp+L657*ehV_)BbLKYCpg2uUzwQMBVtAc^S9jzhD&$k4#Y_ zNWN>{+g6NGY&qU^-~nU@s^;7So!L<)|{2+s;x?s~BXxJuo zIZ4@}ui0D)E1!gUSIe4tkKvk@4`+QCdY{&wqah(3O6G}CAB&V-Z2JN>zXG+zQYGl9 zl~6_9c3Cd8xplTyBH+G$qT4DH~@qWfYDdO?7L{eB1;J?~s)vPR$ES9~EF)v*ps$6#Y(xNe@Hj z2p@*5f;ImX&(oOqYp%rc)(L23YvlJT2CpfIx(f7OP|$>Em#2g1AOesExD`106&U1G zb6otcFi^kK{XbX!BYbtUlx=vDuEwq$8rB<&c&Z17Uj~yN30>(JO7<*~b@$sp7Ngkh zGYFpGWO5$#KLbWwBm1EGin9?`&62w7)I!q(a=kwT_qsXK7{bFm5U}HXIN(vj*-In9 zaRJbC2MK^Ysw^Q3&iO{l7>u&|NnwcI7MszjPU+LL>|p_v)54E6hT!93q2On55CMQNm=Nwg4v_ zAZZ>Ib}#`5U8UrVf$59PrK9dVJ(Sj8Y@FO< zA#)f9mAD*`ZOTXwM#G0P@&F zMbly0Z1YoaHb_&ays6!5Uoq7IYo3Md@iIY-Z>@V7=Z9BrM zTd3;b+?YKM*z`Vpv64~w1$$`Vl)xtUnJ*6W@YG41k zu>4tE3x1E*P}Le?wgga^>=Q5!6pVdB*iykdo2eR`73~?`1!i+8wy3L^ z089}nfFc2pRU%dkA3%x%E|sN<_6!dLGrJlCfjoFuB{Xb@n9*mGc>3Mg3y-$`Ok=5+ zk?iqOz@IfzR-Lv-8cSuNVRHqzS|Bk?>XxmNvu+2jWzXaK_Cd7DT_}kG)Q=J&paL*g zC|BO^y+FG+2LRB12X8Cd(_9X`)MbNlc5u}~!zR#TV~C%69SJAgj4gXekU`%qD?6Ji zWW(CnBw2rzkO>Jrggs(Yy-f>Lm#o@osSz8irCJ&!(}Y+I0H(KM(7*+c;tNHKn|0YEkT`IDkO%_v~yK_3$e1)@4=ECF{T*fZ0K zn{+*KM_qr>cDE0x6rJWN@r9~28)WYz_H1B=ws^T<7dkP!y4R9P?S?u7d zmn}I|hq(Nxmg~tkhX|hK6mbLM@($^V>&JcPs%Fl!V|ORK&(}FqTn* z=gWewTn%LxX|488S$Q2JVstI{ZkGp;8)8x+xvwyhY6sjcIKF!m=MQgUFBnPe#4Cs$ zek!({p@EC$+Z-gU$6dA(_lDWH*Sv{VUD_H+S7HwWo6*41sxVFRW83>3DZ9H78n31i7~xE@$lBS$&hEcE~g;91~0x`TMs z*-k85{d>Sa}iMD?qTFp+h`ZBb--DtHt zQEPWX<6g98Sx=_uYxn&O;r6PlaDmd!U}CsIL`8x6X5Qac$vKJwMga8%)&VKq0z@`3 zs2g|4qPT#$CA|Z_X4n`;v6}}$GkPNWB0R;8cP)A_L%6MM6RGzV4uC>s^TS~uJFG9| zsLBSG+HGdfYX|Tbx{Ih_Pln_ISwRqRPZxcURV7{wT_pioDje&5DRGAP;&l}j!CLc9 zjg1BKsDjxw#?J+^k8H5FhUaUWSQ-}tcAJ@j0OHX28aTS!0Lc#SdI|lgZtu(vl-+KV zi`^c!QLH_qc1NVGSSf%(tSG^O<+(Sv#-`P~IHtCVDqDc&3J%~>U|+WZkQ?l&kd&`8 zks5{B-PZF0*%hHu2m$_9v@lpG#62m&?%SZcHI0^CRa~k;RaP=&B+1LltSSaB1{%8) zh+p>kuhix*Y>`50fp(iiUl=K>Yo5k!hTh?)qc zMj`=$(he5V!equs?k&tMDHH`%ji&uAT%&0`6R4v{sQlL_z*OM-ZV4h=m?|KeDyxk^ z)I!-eZ3TFMn2@Tnp{kJ+YWDMQrJY+|ZU9aK{)+YP6I~NT$<`p!q6wU~s~y$zui4F8d+Yf&DGqE3XkqH|w(ga&LVrC7OaLYVqk#U%3XfE}N@CU%vCh{w z$x)+^Q^h!tnm@oa%_mYEtX@Y6431zW8XB}{P_JoJxm0#EI9RK|530rzhl^^vjs%KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z6=_LCK~#9!%$#|2RQ1`%Kljd-ecym2B!RF)K&c8^4KGpwwTfDWs#t1$+ge+CYPIcK zt=6Nqp4!&BpyjmHmKOE36h)90eMJG;mjsY~Pe=&am&r_Kx%d6!xs$mwne2-^=gi6E zZgYR%`z+t*`8~g@=o<-&(&76!U>;Bm6ap!LjW1dh3)nJ2bNBrk)+q3|f#2!F=dMTN z1S*?Q`8Tj1-E^$!yV40@1t>fQ+y%sNDT$6ev(dkSVGr~TG}Q*xdmv>Z_?y6W5}I~E z^(tsC^#H3-c^Wv>6TlV&zXj5U3;?As=S0DT*CBmj?|-xL6ufm6OkM&rpEF(812t>m z%rBv7e_@am9gl@3^90U!7QwKpaSXg;|3F2v+RTv6|Sd&5Gg zIsoTC1HBc7e;HJ(n0oAZ$hrr7HBmI|y$J;c_@rGqO_#X`o!_DxgBk3P1~{@|(mIGQ z0Hr{^nx?uSE5;KJ)Y2kXGgaB>4UjL{!>1>E(a$5`TF>~hF^6ns1Zd_M@7+&~^W zFAf=4fdM;DK+G7pYzvJ1p=|f}1+;I$g%#a{ReuDw{tsA9*O>hV#14bA>pLDl>Nyy` z2)sOp&Ls4phCK-+54i*P`Js9>SmL1Y_fWJBqVvJmOY_tk3i% zKm~3BqP`eD1vKpje~bL@X##sDOk4pIUIrz$=h_x9&w~*(t^NpXeN0qB1JVj%*i2Y+ zBUB$0umX{=^#WMJsAk4p5S6B)ajS|>@sRp1^9R6H2F}mrd)Y^D{u9u=ko`TF{t3iS zmVnS3pLSpgRK6kC^tQmp2f$^RqQwUG7})s~xN3xkdjWeQ%=-%zEP#K10}h)4i7f?E z=YpSWRdmLFp@4Y+=TZ5dG67<;pmHm?sv%)IOy3AuxAi=VwrkqApk@`+pM*18Ob*8f z)ur-K0={g-47hVUcpBmTd*IODVEs2?!`$!Uo*K_^=UlD;s;?gK_Ig^b&S>54TL zGOvKTL(p&>Y^hMR3JM;U2&(mj$s3^UTL>J5Im_id&G29BeUA`I$WBobSPu6`RXUDAN(F6j0qzlX$&--5}M&@0eifhlRO@p%b;R2WX*uAuLBk+y&E)t_tZlH zbRXa^7Y zme&avcR^GN#EyXaW8kinC+V&YJvTl_d`!g_@Vg=FE||D1Xqr8x93_jvv(NDTPT2FT z0Ac|){s1z+1XI2Sr?*1QVIztIx$_`(68J%Fx9h?B1f07i4yL^Wsk6m5Rc(jV$r2UY z>g2%T*NXpgUFm2XOLu|&&0OEi4tPY|6B z^~VK7y8{a5!sQQ$DJvEOu%XZ_#Rk*fgtWPaBi{uXUjloAgmPzvPzr$D8^m`-lIV1K z(v{o9p%*?4x%UcaJuM^Yeki$DQnIO!N&v_z5_Z349$Y993ewgFS3M(OMI}qI(Ug1- zUPVF&Ccg&hH-WbmF7Aem=>nFo6>1Mad_gc$1uCkYNpuDz6^e!eOneQ}X7--k?p_FK zaZt1f&TWU4(L+x50Y`}cL*ry=-o1l4Qkm;8Rs|I1(s$HCZZzL`o zqBEhUL~^~UDX^53G2A z+&kg2x8?te&5$@+N-6D8(?}H6KIZ*ZJ4NFX^5EhJu;V6B3}UJ}q=Jgxc~w^f)M%LY z7ih7-k(CfX0;c~2;&MWdt^F9b&aP7j#mRet#6p;~On$6-FT@TH1uFoQ+K(bh#&l>p zEq*a$K8$@_e%lM=eg|T22>Q3q0)fv3dlo~Y9d2F?#V>aR%LK4GC|pamz?9`+Ple_) z;xiIQ4MMd;l>kw_Pg0)3$06ftaRtL}g^>?JLl@LTH<8=zx5N3rcQg4i7=ZbJ{O>|) zF?gDx>5TZT!4i9d__Vr%k|j*}BP8WR>{!U215tSbT6Y-%e%SL3D0`!uLkBuXj822X z#|*na0I5^Dj(P(jiKE0U-L()u5w3U_?CFxs7u*TWKvNH+=id9Fd_|{PrVe;i9Q`Ob zGNJjbq&HD142h&oh1!E+nh8^koD?Wn1a=i#dkUHcyO%@;Z9oC@0SWn#_Z@js&1WT@ z87i^GN?>U`9=bhc3S?X<_vh+`rtOLV+JFM)2MT^5$#ugqNoCX_?kY$eEm?!#ExfO# zTmnPEqF{BSx1g07py~Y~uKo!B$7jRH`$eVQb%PTXyN#NPR5$952q~`EEZcK#gy`rX zm2e||t=oEK>D0urNAC7fPwg~_#D1aNgOS}C5-`B zm24aFmC!kXfO)o<6rnRs^SR;FpFr380GI~EWBuRl%u|nGAkpWXo=GiS^eR^^R zDYPZR6@Qo69@j-F)hOzv1(-DkS`9yzab+k-N|=Lh1Dtd@PoVaB0=7MuOO{`7*FtxW!Ea2)CXEZKNN3~e#ytB-T#Y)G*J-MMHH!LQYGQRrAOi7Wc6&#V!p+ldXc_|n zm_~bjn~F~*e?ymv1l4xw0fr*30$s8XM@si|nu^Ih`|ZPYz-N$`xE$%;t3BAUbP zT?&QPIGIT4>C{{slC<~Rhj|)UwdgJ9%Ew)ie9s-0?@4n+4Eu#3T8@j81)R=urq^VaCT)$^Or!pV1` zx&*w9LTS>b!RT8%uf>N1fvCQ9le7gitPei4UBgtH%q?~&u4*{+2AqB$nompV#gPgb zSHReXFmi4WZnyz9zRHEHm8$juLM;g)1#7BsN_6e|-b26vsNRlp>&g8^9 zuy!GMHJE%0O!=-XSFuJ(y{i0U*!Kr0`KJu@mUY6F!ZqvtTj9(;D7po%`5h#N9W!n* zO!+>1xCBbygV?1|{Krrg2}E(fClsV!j$iGQdbXYica_Z8bS4eQ;KOf8L2=$|aMQce zHxZW&QE5`Xp8Oyz+zD4Kf$}4;{tn4U&9e0oIK2<1FNPccC173L1?8Ux9XZH!+k*eV z@B-Mq9LhFCHp#&Cm0o=MMJoW>oZviXgzMJe47OQzJO&L-aNVzA(ziqRm3;)89){Ze zVpiAx1uk0zC-=ebr-R4UltSt2kTV8~UkN_nrgQMW#qh6Lp`AW4!(i4+;@3)kAF4)y z9M@fIP$RnU(2hVk`UaQ}s5Sbmtg+H-WtRFQaAY;)Plahe4&7Js0=zW`j;(+MQyIJX z6&RKadtZ{dOn`&0fy)n9Jr!DGOBw?<6;5o19Z!T_f8;zEIStNjlos-KGqea;jmIG> z5k}vLKK5>OztVXDF#>pfFD+DUGLqW_so|UD{3p=rgYn-CEmeCOVb8CmfeqE@3p1X& zBUz$cV=J6qBiqldhl~u!ze&t*+t0=4eY6-fP1-3hZ13nZ3Kl?1o0O>mw6-88n!N(< zJ_z&I;`Q5TbL!}N=O!2)Db+r&6RO)QNqBS`v{r^*y!L>sxEOwQ7zb++(5!&73jTF1 zthxdAJumz7ZkBa)~N|975oaciLXsS^=55EJ&0<)F_--U{;5R(L# zFNK`11dDx9>C%%CSWpl?xpCJvIQyYE@sV>x`@$vQB4Vt-@6+5gWk8@Q+bGZb7)Jc#y0xGtd zsv|wg`5NHFdyqah=*#Mlfg=&D(P(EkpdDQUwlE*B2d&uWjSwmOS8)xPr4LU0BUl@& zKW5AU&VqzkIQ-X8a@n0!ZiW`GG|E|H#8hi);P{(8zeefrp{^0eFA*2uX%>2sJPzIK z#QVv^A+)UBV3goT*TL(Rzx`+WAym#bywH1FUdH-;S99n$Krwnz7&V zu*Ai|{8gd7 zup^40aTgrl3a3_x7F(l4EnL-5u?e>S0yaG<1ay!yX zdaFx?)mNN?_!yYKQix@TqN5WwErtDm77phCqHNNe+G^CqhL45f7a(`8tP85%+x~h5 z@7jfE``?CWQ}i>LWF!WlL?8tg3v~knm=0(bxN(j2Ftk?6O0eNymi^UxVB6zxV!eQC zHU$SzFb8HnBdbHYl8P;G>`hr5(OM<6BxyY4&4a=_rQ^}-gsL5~ZpapoZ~HU&KYk3N zOpZPPh?zQ=L5jq~#Ek0{{j~uAOfeGj*i5)}6C{p-#uH*PSu;%e=S~@P;|cLK@%b=( zW)RrkPHI?ep(gHYm1Q*Zz|9+s z6>3MpT?3g{_OBnmN0~>HXkOY>h)O{_whHfii$L>AXMc~BL@JL-o1yU=bBb~6n*t<{QFl*3N)fv26+Bc3Hkk%<}%S-i$i>%uHoIV6z{qR zQ53&Xa|@*o5j9Kc2$q5b2*qTc2KCSs{Z)SR!DXjLV6*MATF%vNv&9eg{3CoDoL5w>?iC(Ly+P3MfF zFJm1rf6)AkV!YF=H3#dpkKnlO+b9-0=w4_zDbCvOmfC)Fx@b&b#JXR2ovT`ov)Ej03_ji!Y=dqqsU&Bs8JU6Hj%pz}# zX*mgGP9kddL)fR@juL0Q(@paTC_a~%ZJ;kzwM*7ujfR+v_C`Lvu^eCN3jDj4q1Tm1 z)+!TFA%IzeX0P;)V>gGI39e5&Ct_6z)}%`Ka<&v5IMT z0H-U!dg}Pi+7UczFnxjO8{WZ+4 z-9&Ucokvv63-h~Lv~T)f>FyZdLLdTHO51 zHG};kBTc3>W3mnN^heN&!FXp`1QRsTH(VapS2Z!Kxs6|kX91m+ z5K4gC(7DnewbudJKmx&}W5AxcYJ->&(iEh7O?R$^aU(tK5$j#-i=1^@s67{VYS00009a7bBm000XU z000XU0RWnu7ytkYO=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C zG8;)mK~#9!?45Uf9Od!<-+OnulU1x{%aYuUi`=`hjR8|^Omm@=1imEH5JD1?0D%-p zekmjnAoK)CfP~OOH#h;~UNG*)y*F8stzNJ0?~mE_?d@JuJ6p2n^*WGu?{1%a_Omme znP+AmMO{E-QQ|xX-GQ@#VL(41ALs^j1#Fy_pr|L|h!o0!5}*j!2W$qG0(;^bf0W8tD?Hb5VOT3!P-WdkJ0$I~f9LN+0*ptB52mufHYrt0ybzejEa;RMg zbsNCz7qE%_sn9_76e`=BqQRO1FgtJ;aGz!ZPfK$^mXr%4K7jOzCuR(#Yhlj^F!ABY z@2Oo2$3BG8H=%Z$;6Q*@13U@*QTw~q05%$U960whN?IrZASnxmz6DtqCidEXH@rIq z_N|7A--omR665`~Q1&4ld>krQi;59UYy`d!ERF>*`$IRy1lTO#J)rP3I$DVX`5U3^ zW5}2U$-NVI?NtxK<~Jc3IJgSD$DsEmCM~OiqG=YJ6H5C4+(7452UiHlx=#h0J^It;%!O{(gSQAO*XzhQ2XICLStRhx1fJ{gTqu1sj9vy= zlficaVpKN3TLBwqLDk~6yUw~l!hw~dYs?^b0xKSaeILa+<`gLWJM{Xl%$djozz^aD z*htMRcI*JD4X9cUX~SXk0vPlt*i*rOfWC_D)pJGJ&q+zWhMd z%HXe08!g&w!0$lm6a-o#UW%^CW<%AI)&bb+UqjJGt7$YkIOo3rozKt!*9c$S0!!|W z|H&BiBBb`0xl}m=csP=Y%m;pP%7qN7zcd}QL+_u#m<7;zL}Im>%>c5>7HYC1%iya= zg=0lBjU&Gc{jQLISMP-nX2ANFVD(e5>?iSECn*OCpO?^v%+npfsBi$g6XV+C0PrTz zTzV>D{pHQmWUGG-hgOF-jXt1rH<dqc1AH}2=VZkz;Hy7|2Uh^FIpC7F zAvp&=y&9JPE*N+<(+3x@=2=*LH~8wKUpKiY7M z_68I_21;^bOs3As*2l@od=0Sh4)FQHn?@gS-jk5l1KyqlTi+27DKX|}%ga!;JNESp zZU_7EFS`gxvY}Fd%IH(hJQ~eW-8S%)hE7()(eO`guX|wZ=a5#I7?Y_0o^n_}D>lf! zdML8j=mAFG3h8~}jqy;jQNR^Vv%7&_Q{cMwkTX0sz|uzIF!*s<3=SmHT$(tUy8;&68rf@frh;OF)qjM5*UGnyu`xH0Hx{m3 z026)%o1TGx4TF!agb!xIzemHG-&^P7xJP+DI2=02hS^Z*bIO`Wqc>UlA3{*lDOVW&=mGfXGH3`B-bot{oqFruWFH$)a9V?DA&Gz|c+AlW zQoBQA8T7sw`d>0ac!<`<77sVW%iewA4!X<{$Q?sq@ZhBcewOT znEDJPrNf5DVcDa?(~O|BYu@FqdGOves5aGwC{D=?kq0;1hE)HYnxbl+RsKvE`5xGk zL(jW1g^K}X4unznz>%e}U0K-{S12C(DtDW-CVBI%;nHK;DV8N@3ntbZK5HKxF9DhzuS2L7_?H@i6?^Hjjv*-$ZrxM}AupQ2aH_zbW)VlWQq9PR3Huw$@yZ z3>f_m^te6xdmSmD2B5LrdM!O?YLf{x#TQU8%^wWTJrYvyw8ECJcz?+D0L zoAtUr?ZKM-bC~l5T_m82d4}y0&fP-)02aQUTfdCQjxC zat6cfPvOkph?&=A$q!)dAHsik=~v*XhMAwjtoLEix8(Sqcc7s<=s4IAPdg9@(fYPi z3S23@VEjDDnrb~?vrlr@&5|=r-1JD|%z)89g{qz5$$#b)81o6Zy0kqfGitJ7-xcET z*G%HDZ;46lVJekd_7hn37g+o=*!V=~xsos8z3K4b4Dm$!Y7gc9PvEm#KsChO96;G_ zC|NBY_$dW2AJBOyjGqtbW3A`EejYYF8KT@?*%f)z?gZ^slQ39xnbkeQr**YS`c83 zWs;^+vtO1;>Wjrp#FGA3iTAbXX{$C&9}A=3hotNT5dSJzd!=Zy!kb{w4c4(9nh#6w z7f(LKu{p}|)@ZRd+0$@nKc3`4)6txak`ONwCkJV5>g;d#DB z!&i26%{BT%aGGMt4M*iE?R^pCPnI02PMY~Rx=u`8!8sC+*zzJ|oDpM@*CahJguIDz zlXO#iJnDY|41ZbfQlPChSp}?~4Hc#=3|}2o?FzrNqyi3`a7%!pw?z(j7$0O;Cpi1b zAb>lx2J-<~qcjiB)TgEXh;Xg}*Fsl~kJXnzO1_x2ga3nm8kx;1gl^+u=UY(nRnx{$ za4vK|PfW14F7#a9bx`<7+vk)W=VY^?Vo|7PoRn$}Pz8{so{L_EA-Bk};uYaJrz2Uk zmK#XRhl~F$>z8J$+2NvKI=IGt3eG%}r??-s{7oh=y^p5as{~w0Y2qDa70N=lF8OCe zV+B-fY5G|5Cd$oR|2T}fS5lO9>GKn4JPf;@XjzxGcq9H_T@K?vhOBeIo(x?^!qMG9 zE~O&<%ci{y1HU21cE1fP9||3xs@dRauSvSO-v|BYK&Nh@@9B^l%nx)fgs~rn2iMlW z!_eD<-~x%nr{oH6IJyq{TxR{=zB6IW{mmOw?pQII8~+$gmN zVarP}>~=^qoh$oVG}xYZq1Q#>mxfv@c@rgS{qH@MeyF}>SfF_DxE81;q(V*Mm0{ram}P`MnYz63daM0+Ixn_q_4hrk!NO6rn5 z0=akDpy%}HzqiAfNEPX0HR?6Uni6`>T`t+EgTHOf768faOiB|X+iQB;kG22R;z;cK zIP`dGA&mN`qzfe?{n}Fjt1g53^)T~)(78ZBW&>)ABilCJJD>Dx=sG&?%e8NC`GH|i zLAN<3vfm&cT;Ev|W(X&>hhgu>keUab`zB`0LvDtO?bgJ_E*C-J!-*-2)8k|-XMm#y z<}85B-eN8zB_`@w7~}4Su@5!@&+R?d)&ED(^EPWBapP0Msj`Pe{`Kw(@HarOixc}` z48H>oePLaK>U%Hrye2U{F>FZs_3~-psD`UoK+nk%cJPPcw_aevkAktTILu@FHjzG{ z;9@9z)Ov37U!lv0uyL6X$r�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 IM6N<$f~Zt0fdBvi diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Small-50.png b/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Small-50.png deleted file mode 100755 index b544f7703a3c9d082f23cf84c0e2392e3531e41f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5925 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 Hu0mjf1$-_^ diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Small.png b/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Small.png deleted file mode 100755 index 2529aae782db9f0373aa3a2aac93987193a49f04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4215 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 N002ovPDHLkV1fx6Bq9I+ diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Small@2x.png b/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Small@2x.png deleted file mode 100755 index 4a6c3ae5f2519019afd7bab4efc38e5c276c1f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6659 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 N002ovPDHLkV1mg+vZ(+7 diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Spotlight-iOS7.png b/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Spotlight-iOS7.png deleted file mode 100755 index b03ab1404de7ecf3069d36040320172d360d4f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5057 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 XJjEq9rnB$V00000NkvXXu0mjfbcySJ diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Spotlight-iOS7@2x.png b/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-Spotlight-iOS7@2x.png deleted file mode 100755 index af3564c1f374b0246f26a9b3ea1600f09068eadc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8632 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 KMNUMnLSTXicW1)@ diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-iPad-Spotlight-iOS7@2x.png b/templates/Support/Base/base_ios.xctemplate/Resources/Icons/Icon-iPad-Spotlight-iOS7@2x.png deleted file mode 100755 index 085b60d3d45976804c827cd4852d82f6231402bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10523 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 diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/Info.plist b/templates/Support/Base/base_ios.xctemplate/Resources/Info.plist deleted file mode 100755 index cd56154f960..00000000000 --- a/templates/Support/Base/base_ios.xctemplate/Resources/Info.plist +++ /dev/null @@ -1,67 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIconFiles - - Icon.png - Icon@2x.png - Icon-72.png - Icon-72@2x.png - Icon-76.png - Icon-76@2x.png - Icon-120.png - Icon-iPad-Spotlight-iOS7@2x.png - Icon-Small-50.png - Icon-Small.png - Icon-Small@2x.png - Icon-Spotlight-iOS7.png - Icon-Spotlight-iOS7@2x.png - - CFBundleIdentifier - ___VARIABLE_bundleIdentifierPrefix:bundleIdentifier___.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIPrerenderedIcon - - UIStatusBarHidden - - UIRequiredDeviceCapabilities - - accelerometer - - opengles-2 - - - UISupportedInterfaceOrientations - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/angry.png b/templates/Support/Base/base_ios.xctemplate/Resources/angry.png deleted file mode 100755 index 4fb9d275a0c3a6b09ba7fac0f2b48c127117306b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120691 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ΜfY75=b;b`+l-zS& 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�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 DxM637 diff --git a/templates/Support/Base/base_ios.xctemplate/Resources/iTunesArtwork b/templates/Support/Base/base_ios.xctemplate/Resources/iTunesArtwork deleted file mode 100755 index a06be9e78877c81bf30e571154d1dbdb4d95ad5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54425 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

;SM(PSSf_!(utX>*rd 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 diff --git a/templates/Support/Base/base_ios.xctemplate/TemplateInfo.plist b/templates/Support/Base/base_ios.xctemplate/TemplateInfo.plist deleted file mode 100755 index 844bf709829..00000000000 --- a/templates/Support/Base/base_ios.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,319 +0,0 @@ - - - - - Identifier - com.cocos2d-v3.iosbase - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Platforms - - com.apple.platform.iphoneos - - Project - - SDK - iphoneos - SharedSettings - - ARCHS - $(ARCHS_STANDARD_32_BIT) - IPHONEOS_DEPLOYMENT_TARGET - 5.0 - CODE_SIGN_IDENTITY[sdk=iphoneos*] - iPhone Developer - - - Options - - - Default - Universal - Description - What device family to create a project for. - Identifier - universalDeviceFamily - Name - Device Family - SortOrder - 1 - Type - popup - Units - - Universal - - Project - - SharedSettings - - TARGETED_DEVICE_FAMILY - 1,2 - - - - iPad - - Project - - SharedSettings - - TARGETED_DEVICE_FAMILY - 2 - - - - iPhone - - Project - - SharedSettings - - TARGETED_DEVICE_FAMILY - 1 - - - - - - - Targets - - - Frameworks - - SharedSettings - - OTHER_LDFLAGS - - -lz - -ObjC - - - Configurations - - Release - - VALIDATE_PRODUCT - YES - - - - - Definitions - - Resources/Default.png - - Group - Resources - Path - Resources/Default.png - - Resources/Default@2x.png - - Group - Resources - Path - Resources/Default@2x.png - - Resources/Default-568h@2x.png - - Group - Resources - Path - Resources/Default-568h@2x.png - - Resources/Default-Landscape~ipad.png - - Group - Resources - Path - Resources/Default-Landscape~ipad.png - - Resources/Icons/Icon-72.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-72.png - - Resources/Icons/Icon-72@2x.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-72@2x.png - - Resources/Icons/Icon-76.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-76.png - - Resources/Icons/Icon-76@2x.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-76@2x.png - - Resources/Icons/Icon-120.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-120.png - - Resources/Icons/Icon-iPad-Spotlight-iOS7@2x.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-iPad-Spotlight-iOS7@2x.png - - Resources/Icons/Icon-Small-50.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-Small-50.png - - Resources/Icons/Icon-Small.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-Small.png - - Resources/Icons/Icon-Small@2x.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-Small@2x.png - - Resources/Icons/Icon-Spotlight-iOS7.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-Spotlight-iOS7.png - - Resources/Icons/Icon-Spotlight-iOS7@2x.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon-Spotlight-iOS7@2x.png - - Resources/Icons/Icon.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon.png - - Resources/Icons/Icon@2x.png - - Group - - Resources - Icons - - Path - Resources/Icons/Icon@2x.png - - Resources/Info.plist - - Group - Resources - Path - Resources/Info.plist - TargetIndices - - - ../iTunesArtwork - - Group - Resources - Path - Resources/iTunesArtwork - - ../iTunesArtwork@2x - - Group - Resources - Path - Resources/iTunesArtwork@2x - - libObjectiveChipmunk.a - - Group - Frameworks - Path - libObjectiveChipmunk.a - - - Nodes - - Resources/Default.png - Resources/Default@2x.png - Resources/Default-568h@2x.png - Resources/Default-Landscape~ipad.png - Resources/Icons/Icon.png - Resources/Icons/Icon@2x.png - Resources/Icons/Icon-72.png - Resources/Icons/Icon-72@2x.png - Resources/Icons/Icon-76.png - Resources/Icons/Icon-76@2x.png - Resources/Icons/Icon-120.png - Resources/Icons/Icon-iPad-Spotlight-iOS7@2x.png - Resources/Icons/Icon-Small-50.png - Resources/Icons/Icon-Small.png - Resources/Icons/Icon-Small@2x.png - Resources/Icons/Icon-Spotlight-iOS7.png - Resources/Icons/Icon-Spotlight-iOS7@2x.png - Resources/Info.plist - ../iTunesArtwork - ../iTunesArtwork@2x - libObjectiveChipmunk.a - - - diff --git a/templates/Support/Base/base_osx.xctemplate/Resources/English.lproj/InfoPlist.strings b/templates/Support/Base/base_osx.xctemplate/Resources/English.lproj/InfoPlist.strings deleted file mode 100755 index 477b28ff8f8..00000000000 --- a/templates/Support/Base/base_osx.xctemplate/Resources/English.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/templates/Support/Base/base_osx.xctemplate/Resources/English.lproj/MainMenu.xib b/templates/Support/Base/base_osx.xctemplate/Resources/English.lproj/MainMenu.xib deleted file mode 100755 index d30b2b9bee5..00000000000 --- a/templates/Support/Base/base_osx.xctemplate/Resources/English.lproj/MainMenu.xib +++ /dev/null @@ -1,896 +0,0 @@ - - - - 1060 - 10K549 - 1938 - 1038.36 - 461.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 1938 - - - YES - NSOpenGLView - NSWindowTemplate - NSView - NSMenu - NSMenuItem - NSCustomObject - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - YES - - - ___PROJECTNAME___ - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - ___PROJECTNAME___ - - YES - - - About ___PROJECTNAME___ - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences… - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - YES - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide ___PROJECTNAME___ - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit ___PROJECTNAME___ - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - View - - 1048576 - 2147483647 - - - submenuAction: - - View - - YES - - - Toggle Full Screen - f - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - Window - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 2147483647 - - - submenuAction: - - Help - - YES - - - ___PROJECTNAME___ Help - ? - 1048576 - 2147483647 - - - - - _NSHelpMenu - - - - _NSMainMenu - - - 15 - 2 - {{335, 435}, {580, 416}} - 1685585920 - ___PROJECTNAME___ - NSWindow - - - - 256 - - YES - - - 1298 - - {{0, 20}, {580, 396}} - - - - 2 - - - AAAABQAAAGAAAAAIAAAADwAAAAsAAAAIAAAAAA - - - - - {580, 416} - - - - - {{0, 0}, {1680, 1028}} - {1e+13, 1e+13} - - - ___PROJECTNAMEASIDENTIFIER___AppDelegate - - - NSFontManager - - - Item - - 2147483647 - - - - - - - YES - - - terminate: - - - - 449 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - delegate - - - - 495 - - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - performZoom: - - - - 240 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - unhideAllApplications: - - - - 370 - - - - showHelp: - - - - 493 - - - - window - - - - 536 - - - - glView - - - - 537 - - - - toggleFullScreen: - - - - 541 - - - - - YES - - 0 - - YES - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - YES - - - - - - - - - 19 - - - YES - - - - - - 56 - - - YES - - - - - - 57 - - - YES - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 150 - - - - - 136 - - - - - 144 - - - - - 129 - - - - - 143 - - - - - 236 - - - - - 131 - - - YES - - - - - - 149 - - - - - 145 - - - - - 130 - - - - - 24 - - - YES - - - - - - - - - 92 - - - - - 5 - - - - - 239 - - - - - 23 - - - - - 295 - - - YES - - - - - - 296 - - - YES - - - - - - 371 - - - YES - - - - - - 372 - - - YES - - - - - - 420 - - - - - 490 - - - YES - - - - - - 491 - - - YES - - - - - - 492 - - - - - 494 - - - - - 533 - - - - - 538 - - - - - 540 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 129.IBPluginDependency - 130.IBPluginDependency - 131.IBPluginDependency - 134.IBPluginDependency - 136.IBPluginDependency - 143.IBPluginDependency - 144.IBPluginDependency - 145.IBPluginDependency - 149.IBPluginDependency - 150.IBPluginDependency - 19.IBPluginDependency - 23.IBPluginDependency - 236.IBPluginDependency - 239.IBPluginDependency - 24.IBPluginDependency - 29.IBPluginDependency - 295.IBPluginDependency - 296.IBPluginDependency - 371.IBPluginDependency - 371.IBWindowTemplateEditedContentRect - 371.NSWindowTemplate.visibleAtLaunch - 372.IBPluginDependency - 420.IBPluginDependency - 490.IBPluginDependency - 491.IBPluginDependency - 492.IBPluginDependency - 494.IBPluginDependency - 5.IBPluginDependency - 533.CustomClassName - 533.IBPluginDependency - 538.IBPluginDependency - 540.IBPluginDependency - 56.IBPluginDependency - 57.IBPluginDependency - 58.IBPluginDependency - 92.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{395, 107}, {580, 416}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - CCGLView - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - - - - YES - - - - - 541 - - - - YES - - MacGLView - NSOpenGLView - - IBProjectSource - ./Classes/MacGLView.h - - - - ___PROJECTNAMEASIDENTIFIER___AppDelegate - NSObject - - toggleFullScreen: - id - - - toggleFullScreen: - - toggleFullScreen: - id - - - - YES - - YES - glView - window - - - YES - MacGLView - NSWindow - - - - YES - - YES - glView - window - - - YES - - glView - MacGLView - - - window - NSWindow - - - - - IBProjectSource - ./Classes/___PROJECTNAMEASIDENTIFIER___AppDelegate.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - NSMenuCheckmark - NSMenuMixedState - - - YES - {9, 8} - {7, 2} - - - - diff --git a/templates/Support/Base/base_osx.xctemplate/Resources/Info.plist b/templates/Support/Base/base_osx.xctemplate/Resources/Info.plist deleted file mode 100755 index a633214c49f..00000000000 --- a/templates/Support/Base/base_osx.xctemplate/Resources/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - icon - CFBundleIdentifier - ___VARIABLE_bundleIdentifierPrefix:bundleIdentifier___.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSMinimumSystemVersion - ${MACOSX_DEPLOYMENT_TARGET} - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/templates/Support/Base/base_osx.xctemplate/Resources/icon.icns b/templates/Support/Base/base_osx.xctemplate/Resources/icon.icns deleted file mode 100755 index 2dc0371c1856a1f41063b680751b2247242827fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269138 zcmeFZWk6iZ(l$CX*bH%jxDj_3Vnj%YLEJ+~h!PhP5=Jt{;1FDcySoKV0wg$r;4Z

jy;#WWFKjG*`M zk0~OEkv}(d5k^cyFo4I30fiAW5Lpxi*G32v?$O`Ci=h9+aE%osMq-ADDV9ORLJmWO zgHpN}H#W+ni>P7(isG`lJf4synjjD$h;VF_%MdvIuIm@_6qRRlVIsAq7P z&Es=1I81aBHU4y5Y+PzdNnUw6CNe%XHZ~?TFFLLbNht113r~!Qhzv^^sf>vJVHH;L zEhIE7EI77pL|7XdoEhhn7!Vj35ZopZA;RL|ps@BVZyz6zA7Gdw|Ce)MW4gPCS6nY0 zQ55$(*n9iAxOjB(8Hj;6kYVRyZ|~G99&8s18rqO(s*$CQjaA)HUe3?5Zv|~BbOznr z!Zf?FGyD6u!k&uC4-C4ADa*61e4rq&qrAoSJ(b2XVlmR&%LfGw9gzkfK2R8D34 zh0kmAd_|Roll2WhJbU!!J%dWZyrt8q_&e9`JbM0?^cI7~C@}E~N+*u&JvA4j zKqn~9-b0vdi`=A!uEWFK{F;{&C*GKMlCcL*BTSeT+=eg|30gN)m*c5~iIW2aV~F_P zv`HJjslh$w23R<3MVMl@A5WOHF$cA`Vm4voG(2H)8k>O}5$+}s@OZ++cyYs5J|{K{ z(URN~e4C7@E^hBFvhFCNbi%Ww??fY_Wr=sd1j+r1ERR}qqnuBvTkvoX72p5*sg@m` za}~gNRIjte?4i74C@UUJkeRY-#bhd8mOxMdi||+ld71(auYmc}0Wd551!Lp?3H(=L zmi|Wm@!#*ILI1de%OK&u-V4Y6^?vOC>-&G#=il}HcYCDvawQg{_Wnr#rf0M?CMnKU zgd{QP_%Zc!@E1)Oi}CXC`?aCrCa3wyt&~y^2hD``%WnPcU7%f*0y`6Y4ALS+OC9<(?r@% zc_H>dwak=bdzVa-*CkeSGUJY)H(nER{1~zG+mt0M`s6M)e}1dG^8B|OY<|9KqiV;V zj+?dW`*if;UFTdhaSV<4RJ_c=E>PLtL(}YMZ23u<^3X1=^)~s1(>G)(jTQAYFEGRB z_u2G|wKz*N49)9GO;t{3K2usip2MAZwxIlR!pWH#3IeWPqI})R{K2vvvba#36WM+G zyVBg1`?Qv*5v)qq^eBbnQ|0%jR^8v2cw0wi_IJDHi_hkzsNA=S4Y$4hsgWerkFOYUXXffFnHrty>Pxkh*X#ZYKC#E|jK>!HZ)rz& z>|MU)JJaZE{_V{wr+-d=QvY7nx;2++5i=`oz0X)UrLDwWQ`;O|-9nH;-1bbVZih z_x%MwlbcII#6IHSXF)nav&tLyJYvq-6R?cDhP+m^ioBA%QFO{o|7wbgXqmP{y3GbT z)z1TIp3AFrO5IzP07k?w6O2j4JB8l@w}I zkgFJ(nI{51K*lo663ZTf-XEBK_X#W3IqXNo(owJ=P{~bAESJqhLYT z$(DNk#L{=vv5Unk)%PsgITwl8Id_ka3Zh(kZ$#}X=HIW}eA$)Qo zSX^vZ%0(KO9SK|^>b<{uHwEV=KC)JckI>Yb6rQv3y#|(SB*UNQ^;#nG6 z>+%cMJP%v{qM|zERCO~sCPT4XnCLKhOZtoDX-~{gEp@v?NL`x3$j#ThfgQcwaWKhV znBf1jdD1H#A&r!4zC7d2kF5$j7kQ|4YvkqDu3Z~*T0vBI5+zk2iBt|$F_ zP3krWhib3USt=q%U%0$-LCtDQH)PLbCmX(P+HpxoS{%!$v zfg*k1dhD~4Iu1Q|+Vzr)_b;y;{ir|JTyZ7g@C?T>CqcnljElvui-$4Ir~7dawX(jh zZ9hG5E^hcB?{)8wPqvL23uV0auI}in^2}Fb&Q{CQ6fe(v;M2CtR4u7lCn49k#X1P)tv-e_}~Gv^O>)QQ>yPz4SV-IZ5-g z*`g(7$1u*iBRj*VgiRUz=J&wm`6-LdF55C5Fv3Mg) z*elUs%B^Jnw!C_E{<}*LZoPS4n8i7ze7b(ELB40xH_?lBq5Owi=EAw(ud6VN)&yWT zEq5Xo@aH{PGV^3XN~m5}`n!;YKQv#p_8*?JWb4%5_m=+Ne<1F|ku|oPH!be8F-+KG zgdxVvw4ApvU{RFno9*3p+plt87|v^+y-eF+MsV&Xq4~kZIS153v6nX-ej1ye=ld=Z zJA0FC{*t=j^~dM;M0J1NCbMVuWc%Ii5gFPP!JfNV+^M&V7M2;j+o-k>6W{W+F{#>T zmF+xaww}!Er6=x&1n=f8xhem}Td%64s(63dotsfRnAb0 zXTyP2-)EnH5^mlx-&&Mg<*_WzRIxowJ-&PQfd;qY{kmH>UitlEIt7!dJ_jFD@ zZnpg6Ld?t&ueE2{D=^cPueaJZ8;Bi94W`#u9xmFryfr>qGsC|rZt1j^9Ul%q8`ZzR z$>z=;%BhHb@%L|L7BOYw4-#vANC(sP4;9%_D)K&=UD`|Co3uIgh&ViZcp%NIsi*^U zY-a8KJDM)}-wiMyu2I;yt_r(Xix5MhTEvoi2e(s#)AqzynJX0SBa7!Z+}Bk&0M3Ho^pdSvPhM5ZD!qAjF9zU6O$20-x+>yqvGK$ z*V+#hkd8ijKH9U2UF(`GZaTWAwzZ8jnb$s&R4DxD3e(4i_~GkLWyr#tO@73lMZ*de z=LVkp-I!vdmQKj7T;u#JpoQ9_bgrt!u}aBc#$^3SnfUF3#x|3C8gmkw?q4;^e^FJp z`(*lob5jnO-VvVC_%ixiwcIdiv)DU?8B(I_^rf{{slOp&)nK0bhKR>6@t9Y7n1n=` z$FHxe-VF3gT9n(p;+dMxN5SyxD$7hX@2J)`HnB#?dgXEIyg6T-)Uua52o7Gj zG-N3^NEo9h-q;*Y4QlDRYF4<9(`Nehb8*h46vCCX`%8jfZ#sMHWQCY{*!Z<5L2kH* zvN1#8x%uiF{e8_`$2wWON#%*>hpW;)wHU2}kMJCYBFfI5 z;v1Wu)7ZuN$n(`h3yv>bv@}7aR3|z#Upb>gXZZPkQw@w}P4e+Zdxzmck;9tQQSGpm zhoc(yPQ7sOj8CV4KEd>^V6p*X(t7F+qvXa_3b;7^XtUdAcZo->(;{wia{2? zi%)LvHj3IoLf$Aj7Jfai8Zo#o@>>5R+Ji{dWs1HL<@DO~GTLdM`xtKd+4QIP9%wZ? zUOsMOOQ-ox7df7Pd*zrA$r-ZrbZdk`_ zO!`UJpU}wYap}6Mv=Mi{do<5UAvEHiYj^JHi;otQ29=BgIk(x@92&I?r%e__yVeqW z`Li*LdlwKfeQ$RiZMbY^^ummG_TFudUZvBNb8D|%d|UI*n)UI7)8%K@*5-FVYA$h} zWdG1S@^R*&^93pPdcmAxMo_>a`&_+nmm@rlD|s6EE<)0WOW`H)-!9{(KN+1q>0HJ3 z-Rwoii}T%1d_OX)ebsBd*6q&+ozL_rgjpk7?+?tRs^|~yD>L+4tLC|UR>+$5r%u1x zuziN_?=4Q=+hY5sPcl;4fA_V*^rvsT=bB{dKDm@jZm8HQZU zSv2d$LHTEzZnNRp0(1O`mU_gYTl7Cm5L66?Zy_=gV?}%#My6FL7MsJ9KOG^!v%Of< ziopoQ#_0Nhbg=*{5>XMH2*WpphkpbL;Wt7P$-y;WAT|XeEGbCgKoOXYuP~rX5a@!0 z7#0^yB?}Ew7=lVQfgd9YA6ke((0gOVNQ6ZYW0Z`HuTD_m)?9)^D`f%60{CG~f+ey< z%+X3MfodkQmi+#Rn1KYb75t$iR9Fs>K{cSlEi8B-li^wD0+p-7QXvZR7=_$DGHNx2x1B6Mv8U1|}IjPi{|GAM=yK0<$kB!oRW%I34s zaxu6ER%TEv`okNgvauWiOX5kI2nWk2RFNXc8D(=gTrLkNRMd7Ogdk!|i}*Yfkuf4C z1d$vrm4_3cARK>8#6TvA#)i>S9*@r#aX}H~vHoG6P{`xJx{HJW<$_U+5GcH!?%uw> zfx)3+kUPfXi$r`3rWGjD_*?w3M=2-=k59!=F*319 zad9T`xVVfjv@Dsg-!g(Aflnpw$D}=OiV_cQLJ)wL2-0U zY;0r>A3-?Qj@<|^5fc;}!-`gp_$qFWkBE+r$mSt2j0k2iQuiq$DS{QL6dpS?*q0s_ z85x#SPc@?Y`+XHgheoi%XNE;Ih(_2W*`eX#p=p7}Iovdt^km~O<!M+}3l${+E z78aV;oe&yp?wt^16g(>^w3*X0z=mcS`5YJ=9GD&CYvDf>8(AX42x*UBz9i} ztSR}&`?>XrBK(;CGTyly9ut`)9<5K0^!4{mX^HbaAFR z$lCi4c0!lH^9Su1Mn+642bvwh)}tRhE3Wz8M1?+F7#`h-@JAf!G$zKBW~*%D(8)vi zVIg0G5`^N|sD?_9D)EQ|jmpF_==6{CENi*Qw^XEzlayZ_jYRhi`m+Zd%ot22gKkN) znrE8L6^F0~C~@6kQLSdtrL2O1MK)9sHO!Dk8%RiTw#3VGs;*ct@tt88j2R=}cy-pgv#}K~mHE-5dB_{^f$S zw`3{>N2eLnO_W&Xt^5-2D8FzX(&*>ySHZ6&8j>i~4;U)bNS@)+#~-d~ry~j+0l$%M zK%~$<;D`((22+;i(!zsfO$9!$f~s#wBGafiG7VPg<}ztUaouQN;c>g8^*(Hl`1sk&*T6~pKzs?E0z^|8lqs~g*KX+O-hKG^>C0Dd z3=9p?PK1%Oz+>kxr>V#+Uol&bj=>S|ibe#CA}j!IX%oU)s`sZ1syV5Cum7m1owe;5Pp%Dmc_b5?%AFaJJ2X9QkPj+qlRU+8@Q(BPi_MzgziW`79vF()u`!W02>%bChTV`IWoY{~A)l8xe4t zeM3w{R?uU;dj*vsx4i@Tt%PS1a7raTEJS9ssfkD<$Zqc$kQ6@c6B;8j9m9oFXat$< z6|-PHQFiLoX(aS45c_*EKTQwamTw$oy$2UcA!T|#Y0gJ9X$}AhM{S7^2Fyc?a z(w_DKa|Ab3IE_9ISy=Of2PLDmbH_{YO63q?!cgNBDuNeUpT3-c3^y+xC(fLdHG~YG zI`Llp248sfLY&`LKS9ev36V~i={1NL>LIS(x~72_k&9)u2fC^kPN$(20rBae@K{F; z;abtDbE($|j>x5?-m*>OM5Qg=Lnnqgx6co2?X3N5If`6PY6@3`l~f6Xr zU=b!vCsy`A#vkY@)dLAM0!~2=nir2>aQjnoywkNgOi&evm%~8l;1v`U2?`2EfI{OD zU>H12frV;BphF-V<1q>}c_RfZUXF_S^J)X899v9=r7NI+R(>Uaxx*&#t^st6$tGA=C-Ctrq?aoeVreBh)zHsA=?98cO)1TYQ4(r$& zbQts#2a1=jSdw*SN-9De=zpL#RyS)Yn{m7-f1hgpyQTYd0-%V#guU4MB- zF6ZIE=ZHmR25&WMbQ}$iJX-Gm#_HR;MppObR~y-{Qs?N;S^EBFgkN}7_w&R(x0kQ` z71z1=e$zgc>g>g`M=i0%ChHqj0+Q61C2Kut7pT-?;rusVoO$u~S>abPj(D`TCB!rP@ox=a*(bt63GW>2$%Ag|o^!hL@7ps3{44 z{c3q$GpO}`_vYm)^y`Wt_svFz7Y!>OOpoE&7<}7yRhN~qI3QP5OJm-VTbCXrQWkS! zPpXHkwOV{W*G`*6q>?5({L)($IA!yOgk4Gwt}AaI|M9IQOlUmw!GfG=UiY6hWZ(2~ zacoZIJT5wEyhj!nto`D3g!An&^B;#3uXb$iID4@UH*J4f+)b6L_0LVo1A4}>HEXtZ zJy1EaAo~M}S;cd9_=5^_o}jf}OQY;++iq?uFdw^$axG_agJS;~Ycf zr&?Lc!ehP9a&GQC?RUrE_rB$wc9o1h@~>(`Y_rbotNncUL_cP4(W(c7#2^&zgO9`qW{$`TZ&jEfPIz;i|9uo-*x-*%T43uF>LH z!^Vcrm78xo#W_5DIBD9n{Ve>BC2zkz)^*xHBWTZtGd~G7O3%+3*IwFMlI-Se{$c6c z+y^ac!QF#5HW@ar*4@o1`l0;X;=$v)DVk>++;{6#UfJ|zW}Jb!ollW&%_QnU`* zV}4&}Zf#7+l z&?A*UaP*@WHEP^3xwz@f=TpUe_QmQc=8eZRPFA+!wx810I@+c)`xVt6zJ0K;fCa-x^IX+@8gGIM4`_BF^2-jhX!Drq;Su!~2RcyhQb3!_3>? zE@T)4<_wuRQ(jzN?!6@QNmYzo(2NLnOykzKH0O*tD;g{Z z%(~uqRLM;}s(t7erM&mh=Ca1c8+K_t$qVdvI=1L0p*QwZ=gw`V2Epgs1UIR*L}lhV z-O8qr6wg8*gC&&o+1pvFM@*L9e*QpTzeD57<7MsTYB5QndWcV~HG9KB?KVD7_e7cQ zv&^)&yA~)NThe`J6>{QK_KutdYdD&I-Yai3#%;l`S$p==%x@ZRQfCAR9x?fv%CG0L zR=%9-6gU6b7;CEW?TN}MqUpE=&SZN6L7#K=;OR2%EBXLHW1J`-d~8jVn2b^X}&WzR-0L_e;^ zEMF}9tYPBPL-P-s%vZ>HydQVq?&?+db$1OY?Li_~ng?#=zx%DyJ@gDGA(r7Nq=px2mi{cWRYQSXE0 zFU6Zo4aqb}#GZO4FT~&ZwRDr=0#;J|wjS#o{1I(jS2xM!*ii69Yw8p})`O+-(8Go~ zHQIt~ViMJ6`+P=LF!fy6+rXUkwe9A$-kym|tlV&=);;@v70QPTOv7t5Zs{}a0tS9n z&9_)r8h@sJnRi6|9+i(5uFhO~sLE=MSA^CZhhHlkUu7VZW`C~GUAx1_b7gX~R=Kra z@#JR%k9Pf#e>7`D%)RF}w%*vWmv6MD+pm5Tu5Efod3si*=vdPc*8tqyOm+1V;)EL) z8?S%w?Zqd3*z1_Sx;*c2&5O`y6GWPGX4_QlF`YOqp+x%xQ|3nL+{ZJ%JoQ@q#dfXx z*mEJUKO5Y;4mqNdya3lf%W2_b=I`L=WsSkKF8#U8mEJ#zTZR-K zd3|5A1pjrxG<{3OYYP>Y<7yuW+CArUJPse7xAXU-llR|nwXsG&0-g8o+}wP71}WZHC~^NEp+Wa zU)?xmhF;|agPk}0d@Rnp_g@oK%GoX`ed*Apy1yyTEd8e9OO;i(yOZah#w^I3*;#Td zOD4%{PJi`^#cyt}91~WGH(#B4FtMV3g>2sZCBYNUzB%J|AkX`z+X3P>AA*-pM2TbE z4yR>fx9zVm=jIN`yduQUXq&uy>Z;%c$AaEiuV1EeNcG;f@cfqT`=?*n_w%X$A^mgR z`h$Yz^y>=qRy5x@p!m7PriS8HR!7AO~{KW_^GB^hYkAFap$ulvgx+Pv0W#= zl)a7UCGvh8U4BvS0!~%4sPjXdGky{I@_?7^)Hz4PU&}T%JSyj(8JwE(O^>$Ks{}nH?LR2W@dbSta`QZ5DG7-mQ@XD>miw6|c-&DF&pq~J z$+f#XFK@BcZY?*Qs=CEQn>X9LTV~nC9rs3m&D^AuakfP>)tI5BYdvw*O~tE;VrBi#FT9&`HGoN+0?y7iX+Era9~2Z~be+_Peis&rmy+72+R5jKu7hY_7vSjjx z_V8`N+x1f|i4{8(^`EO?IkAg-4@_3{lRsO3X8w1KAhv4J1$%RY{zh|Eo_s?7zD>L5 zn?2E%eK0TsariLn^)1G`S^HnloYq^r^X!!2*6+=lq^Wxt7pG)daE+?YerWzKFpQX& zEo{~GDG@LBnrAz;c3Z<@IzDUH5}%kL&39AU125^3BQGx2>|Fbvdt=`(Q^u6f zeE;3&u1Q0U?`IC2&EkDn^>como9P&gT93jgdF|8vEcS}^F01NAhk7=h8l2-)Vo$ol zY1hHMnV_+q5j}%o(aRZQ@IDPK-FU{(>fL$dd}`N-e_q_jReQfL)}C?@H}A~ld-9f5 zGCk3t@3P}7D>iLQycqSdFI3&oed6?RYkls0@`0+kIzrX+FFyGt=e~Nyn6|Y(<#m9< zD_6GW>oYZi=h|xQ`EP&p1ktpPp54qeCr`g~ZLC9}@=e@S8KiKk7Ot`kz)#SEk>&C@6_}Jh)Ko>T#v7 zVtrlZ+_ya&_>@AYIj$wLDHBzUjAk#&yiT=lo_HY3EmPqFgEjSG^nmfP-+L$e7=FU< z^;r7VscymylSg%%=VGTVTpHiDWN4<|N6qEo2L#lQ@ivu1tIRFKmgiztt++V<{Zq=t zf=oBwcPz8!jH8^qYFpJd)#(cB;*&Y|Y^H2BSywmj{k&;c#=MR!q@A2QnLl4Udg@6J zE#t}=cL#QV6Eqz)sdG{CDc&4qyz8RYMRUEYUs8`OJ7Mqz-!fxA{lvzO>(+hO8K>`e z`tAzk<^5`Vb)ZFl%7i;EaGh1q0b&Fdom_IFuBjTI$z)Q zhwq*9ENi7bXBL$QwKg5ld`o6EE>gPmQ^)#e4?U*RX102I8NS>%aP}u1>tBSQ=O!%D z{}H@2cI|B&roBU*`|N4DtvfX3?EQB0?@u~knG{qM;_>)p#z^!OH-@I|TD>NX^R?Ia z8$a|{H<|w`j&8U1{?3vmVLqPP9Okjr2}fHo7fK$j%RGMJk+`pAV7VG?Q_hkTxBWuH z6|Z9qr+BumP-%!1KUki*1n1^pEh~SfaQ%d>GJ$uxCS<3-CW^>k=L&dt{1Wp^+4*xA z1;Zuz*_5FZVL$Fb&9k*)WiORtuZr{RGn}wMHYnH2yDZdRl zhHH9ZUKR4#GLNp&$y%n)I@|N8zbMjno!z2}onlt=&O4FQURT_4uZhTf+C2F>XF9Sy zz3-|}<@P2WYH)rJUHo8k>fFeU9?E-kruhwws@dK8|M0+P@#KE1vN7zM?nxXil?R>xQMvMOkUKhA&sh z27FRksB!bi66UeRJ_c!bj(Xo#$Go0D-OJZY{L|a+-Q|snEn^G5@jq$MHf8+~{|fqg zzJKJ>@k=TTK4p(C@mNICZrUFAflR%ZNNQR|*>WsdVqZ%I%<<$smD_uS+(heOUa6dMl?Jr#3|_HZmaHh1+ymk=W!>p zlPA;{73%Mkk%_mpb7AN9)^y5O&34PoUOn7%6UTeJIa5}9nyp!C%r@q(VY8&eH+$kV z%Qt)za#N}2wotkbRYXojTnH@#_wRi5Ou^5&^O?N*5`VEnF5x1v`iRd>{*T9jWy?jS zi~PDxd!kk{>lZh@xV>PSR?3Q%oJXG2i7i==?37;fM@zj9TDN>{`3Z_|A|l2 z7k^upvZpP+;FrKW-SP`>YrJ=Iz-u^u~@Kncqc_8Ol$Yy&&`oagV?`&)RHcQvA$@L~L z%)#8N0qF+Z^`bM>F%2dDRKc$a4oT)yTy5HW+iypj0SEae}uI<*>3J)H<&+k$; z_w~7-`~E>oIc2TG=hw@KRkEx14y?4@GgxZ^=9Ax^s1y8<&if$i8?*1Om z;!WWCnhy1E+Wchn)AIr!+cW7N^|OZ^wXdy7K3wGJo@KWzw03n%eCO;Z0VeJ17i|zI zBu3j^-|*{kqvNQPIbF@*tU)&A$C5AaG?oOvU3tin$P$=+qE{qOZhp*6t08o1+r^pd zTyxu%uXMT5Wv9!L^tyF#7dvm{-rM|3NVv&c!D;{Db>G(UR>C?UYGkYF!YW^=fY`=hXoNgYG3?XLETDSviZiIPy5S1T=dm<_;6gj??-Zt z_E>Ac{rlqc0VStiFPg7+`}IL}W?`=&YkT^2^Qk62y8;`-zIR16ym>PX`|j1M-A$-0p8W3xi{e#G#TsU`~Meh%kUGma>c3Obo6-C=Nq+k0D}|ZiQe)aC{CV zm`G|67BDbakvIbOErGfKut2L|NH*fZh6~U^1h3}DqJZ)TVGbwxV8b3F(GuMiHwJsW z1mZ}5(9!*74sc;Atp+bdH@`{k!HL8IDmWk-$V{jVg&Cuj!S+9Z!R|PTVMef#NhD%p zFd}g@I7o_P!A3oBKLY0uL31NS9@N4hLO@`^RE*eOA`>h_Hx!D5EP#Ofga|tp2$D^3 z^l=obp%Bg{f{8exNa`mMTOh?z!2qc+8tflLF_KEDAcTSL$P>hao6voW41n2*WF<~8 z6)A!sRDTitqf7P)3gZBXl40MY1d1}5isVrs_yacU!4+(T1SYg*6!Vvsc9OP)ZFvAe zU5>V=q&eawYM|`^PX1dgQ-Xwj8Q?Z>p)BfhF)9^x9t!&>lm+Mdr27_8Z^i%$bsqzj zh}LC?Zev8{pxQ~w(4Cne4!q9P<{1$37wR0(XX zzbin!30!|dM$(Ak5MJivIY7fD1T@8HT! zG~6A~UvNenP_e*)N}?jsPzd>6T2VY?fbmkax#$vX65vtEQPL`DQXP||Erj+^D%ztY zkQ512S_X+p!Y(btjCV~*Uj{Y)S&F&@t>Cj%B-)4321u0@qj!>i|Ib^DIBlEDUsRuU$l8?<7g1^ zhla|8D3?JiK_TdL162-fIVl``1k(qUZXx{x1C$gkgCdQjcYp9wM?s+&7|@WQq5~<4 zM-ix#$Jx=IMU@ny)%?Wlv@K!Zr^Ha$WG@Jol#COhG0-7OnmS-$gPsV2siF5|OLG#t@v#)LYD zhG-)a5fWSI5-p$)jL$P^;4&19ilG1LD#j8^K>#WP6dN02pd!#A1l8g%88CYg!kH1+ zf&E7W6FNCeT_x4iQLuJHG=Gmud(aE1B50|IKA!T&8xkuXqm42^cOx$5FA3wBj47137dDiGdzq3U zMH-RN1A)hgW6Fh-G9KVPa4~d%zfh7nBy>CJbOUtap?D_8oQvgg(MbeQBxxNz%p~@Z zgeZnD#aN&iFDWMU9~1`1n9Jm0`8?Fc5((%`31kcCqjWZ%!{QpFR5Z3E)baV(AF>hG z6eXk6EYt=+R0Y8Cp<~gZ#Ti_4l_YYxo9*a*G$clJ97-5h|j?>xEJq#xhz)JYV zAEEyRrGY>upDBFng*Zh@IkDsh|d`sph-ATC;s7J00&OQXT!s{0Ih)DtFN69;5OIW1P|9 z!GVFkfxkFWZ(zo#<8@(0TpBC@z;g|U(M|2ac6T#-v3-5?f52%R>KNKcJZVjW0XhaA zoS+_h551SxM;oAz>x5b%fzklV5`bt}d?*m2vT6S#m^OytqF8VbEWWrf!D>`8^?w1Q z8Zb~Ozn6u<@WMnmPWQh-sS?M~#^^jcNCmgR3JZz^>&BI(4gP5y8b^v_NN{EtEL)=L zAFEKHG{pV@Y0!!yK`$)xWPrpm+W%laDv`mL69A5z0V_pgXp@Xl{|6*}jK-t#i31tL4Zl5!{TqS@Gfn|f~v|f5Y4Q(n(ltcJ} zP+2%kG16m!E^LLz#KkAZxy8!G#m2|RggayKX^9C5NogsG@$re+v^2-m32AAmDM?Am z@o@=>X?7U7$oS;+G`PjamN@Yy!70PBp|0v5DamQc@sZXTS!!%TdQw^(Hm1@M!Igvv z;7k>}E+Z~2A(jf&1tz8?WyWEnE9?>3K?}nW=wtHy`joh|#6Va9i%Lunj>E({q5wMt zA3~%NL*Q@*Bo;YNeoT5|6s(0sB&LSM;?m+`9AdH2zhF761dd(dh#_1i%q*&7QW7Iz zK`byXB_vihy0AMv5@3(9uP zC^&f)8yg=UgN>+1 |N86!bv+=qWC_fQ?0x3iQnL?OJjfEw%nA8YBx@PUEzBf>5k7+?jX5LA&Pd5CK* zNT?@5`7rUxkB$t)U?NhYqcMHx!cbjoge}0!VBXhfMxoN=$d-fIbP65t0X&#n4MZnL zV35efsAz0>4cOEBIXvO^$xrMLg5{{p@)#18PLrWf<3K6-Z*h@`Z$wN~BsM%3 zM$fWpm_2aw!y{}Wv0-J9t_#Q@J!_dtC4jk588h?CMG&8J|+Sm1}^Wb>&xu|&aT8T zn+UnEpNQCxNT*@xpxp$LaXwN?hjV{K_db|>i&Emk!egT&6vN{C5rkii@Cs^xb0jkq zI75GmbE#AoO@T`C=tPE1B`t5&0S}Hjk>TNyQ4zS%^br~&UjoWj7x6(se!i3s$)i%4 zG#N5IT|h;qR5Bs9s1&j#9IGn{3lEJ7#|7u`zz5ac!1FtI1mZzl9vb#B9I8ZFQNPZXamuL#i2|LRU3# zh5=_7I0V~00KbZ%x8lU5(2}_JNMM(j)au_)MU+Zuq;v#nG_~nLs##zyF{ds#6uzT| z3k_?4`F%@N55jLnDh439D}SQ=;h`VHWP?kQRv{Ic)X1Pv$>~UxA=x6x2n|2tx0;}k zkPwu;iG~oW%E84o>Fu4(5TNx%Fq6Zzgn|HUP$`_If`S{-$D_hV1Zi&X10Ul?3*k9ip`{Rgs>unk37!EG_;wT;#eM*(V?piY%qlcH zlm`TX0Ble#@Q90A(UPG84lK<#mO=?X4Ok}xlpwi88mSbiMqP#_M#3}_0!qZ*M2cgg5t{G})1_R2{y|v(LTKYsXf7E}K><9C zV9P-jTz6=oO^||r>8L%4f_fK6au@}kGXKCpzaX6d7xW>iq7DM1C$`%TqNoe*YXfY9 zWc_~**h9C&ku5qQ#Q;9QHxTEa!~=R=ImB>Vu05ENI|}#tzP5pizCTC&;EXJVXwwck zt;{#T-zNa)A2tZ|_971iKbQy4lfq=*KxzOsFwi0Z?^7%;bThMz8A21Rk3Yb%{?KB$ zf$suOXjkwzekja8AizI9!`mW2&Zh`LMj&mYSYK~{takxmdAV$FNKSBSn9%6!@9&-0 z?cg6^?vM2;Faw~sudkOs&LVP33H&@fVCVlTnLiBnXbC&~k`{sNdW*VllKoxVw8gzs+ZfWit;{k(mB zJbV>=BH-kf=sPD6awY17{CsH6Y?hh5r7zYC#wnRnFZd22T!Rp7RZ9>eKbnWuIt=-# z|D(CNg9Hb@0i5?IA9=4h7%K-0VR5se4pwm@Ow7&fEPb$^1>o&cPj7%=y}*6gf{_pi zp8OHCtFowO7&{9eoVRB_v>~9p+`Z*J6QG**$}l(^TL_7s>tJGLW@>BcjrGWfz$o_c z@^tr-_iTg4%HxHD5NJ+p5|e5wV`A&&ZSIA2&xa5zc8BxnUh*FCAgi?|0=}jA9n|aN zKoT*bnPN?BEKwj>3_uSzPkDFfMB;pYB%;__jUX9SkgQ#dq(Dyvw;u>nxuR7 zU;sE0WOY?V!Mlun4!f`f>iEp0OQd?r1GpHlHl8vb0lpq|PpljC4Q$D1G(za9Z0@Xr zaiD?4kb>phipH_-$t7+yPkE0(IF30~8jBE$G6mhB1<#R1H^rHm+E{tY1bKM4*?7ph zri!9msUBEYblj`#2JC1%B0&3m41;NcWqq{tka72L1L$PeETqH39sch{5J7=B5s~`| z$MJqKSSHwy?v@@{H&+{Xyz@5%$#Hgfi34%%bxDYPOEWa21{&eApK@cs*w>3Yh-Eq z2UH59&1mUoM7{@F3+CmfDAfe0&NePs`=3BH zOE|zSE(Whx{Fiv2@s0=22t`tnOv9*=6 zX@V~Z)WX7csSS}tr6>THY)J8KH$$e2(_oY)l8hZa+^uQwaRWog9!L=FXzB^2P#Km? zIs;2bWmx`%gk5fmOykFpNK_J$Zf&46dhh z6f$!%kwR~WC3-XyiQT9S8)!!?-P-P>oHKk}puQ7oWLuGm9`InH$mK$Ga6O4+qi#5k zA7V(dg8@oToJKZ_9fgnW3fxJCp)f;5y8z#w#$Xsr6hdWLK{R)v1Ho5AvROYYaF=?R zMM9^N9knGH2Elq-J4_~PU_F*=NqX*Zm z3vo(84&Rnc%mu5&i9{l;4YaDKQYg^6GI54Pf1o>%sqa%@%<&`if3o!yvK6ez$dwaeDhwBsLWsmLXmV>ZxejUsed^)c7i3%X z!vlFlVh9zPh^DnlvQ=3*=XN-LuRlfeniDu+QO4xdp(Ht zA(E>Zh_c8QSjkpDyRyH*5a>c8RU$ctM6{Qe8IXt+DtsWs3Vo*HT9M2~5jJE>xh~3k zLo&mZNdsS6*jvh(Rf1(D;5v~#$*3QF#BwB2sj_4;-5?!i3@L_&$w)NO5b_sp#FR{@ zV&6x@L!H=(WHf;ERY8x8(x<-1kr|N5urv^eHAUT73{O+C91D^q2aHd6Pp9G}?Sd~S z5&aN9BB=uA<#|L<9%pDZ00HhwH0noMTbKyG@54JoLn5e1XR<&=b9)PUGj|wb8`?l3 z+ni(r&y?^44gQp&ybpuvIlhfbazZ>w5`_Xh?xfZwzLeJ6K>%zM^JBjL3={NUTA4w&z!7X16h<;*cOB zvCsxl{7ol*g6_dbs?oV?@EbajM#g+#O7f7IgSot^7l>~~=f!?RN;53$H&aNCNTQ)( z5-jU~CmJTefH(|8t8Am;dqYDbB8FllvB=EHT&@)a7l1=#(hLp1+8~5NBGDHqCX!s? zZ9en>QWcn100WiK^{t^HS}~Rg+%j}J&D7BhYm^KMRf1Ns^<sl^Z6v^o^$TG=bm%!x#xWE{SJf2$2Qq+ zbWQ-)iEz~pnnD2Q9Y(QL3U4dHPK3cgGTkCfMmKpK{6c;JB-NAg4y7<%iw!WuSxqmd+*3roWoC3N9K+svX zZg{kl6Umv%39j8C{v1c756&Y2lx2gBX-_A|7C>7Jc5=uEPqiH4=oqo+3%L|GXNPJa zG1vo2-E|LSfpYS8M!UGeYC!aQ;Encx26WdK7)rH+v->cV7V^PQeu2IJTX3jJi{7v_ zc{<@Ag8j}kf~C*<*b^O4cn{zP1ynYOFuNzgI9DheiIo@_$1oHcsvQXqPr<+Bf?tms z@gUQ$RJ%Gk`b|ODvavULY)c{I=H%gwc66ag#UsiK?FRP?ZHOH==I!X@-VBQfZutrD z5eANub~zrF8MnfZtKh_^8^iI=cwg9HpkG7g0NrFqxQ}um;t5V(&NQ%y!b}r@BE~%e zTnoAd_R=&19;CS z!`u@@gFV3i~X*mx80 zI9SmgT%S;M=@Z0OGz&o#Wdir@M0ECX!8*AB!5D}(`v71JB1GIwh7-7BSpIO}FC6iS zQy|DMdESn|1lGaPCl{74hAB!wzm{Ti|NaIgw6inG1r*DL%E^W39^-*=3#I7I`z~;E zy@{?4Fiwi~Mz%ufoOZ6OB0D3uvU?8pl{59=D{xP3?%e~Ph0eW}|izc?&&d%PRaG#1Ya92l^le-JbiRePHNVhn5G_eeT*j)F}%1)4}8x)3PP@c>-`zO=u2B^5Fq4ZuF8?Vb(c7jd|z-O0_x4Zy)n@NNmf z&okf$Ggd#5Ovd!KuELZy+S~k#8=@l#?x7+OAuY3kLP~VQ5VBylV58o<9#6(BP?A=- z^1C*+Fb2Xs%!W3ApeSw(a8S?{#tBbK0<`E+;B2sAJeG_ZYJmMJ?e|QJySD$1N5S%; zVBlTd0fR`Y2hX?g=Jjk8nQEfB2lo546JfWZFF+#PLxBV^c!&-+`hq+Rg-3!T$t&57 ziewZ04REJg+NZ+-x8)5a%do9Zx9{F1*rNZPQHs-YgRB>kK<(nW;OwjSayL15-)3kH&)zQsx}w1=NTxI42i^odXGI zQM=oy=tO-Yky+1MS~w(9k?-?g$G?0TpI(5JDaZ0F-y1h>-~O8rWmfJ1WB;N9 zj1f@q59dO{qfkWebXQt88x6HfT7JCx6baa& zC@R4byt5nJHAZxyadLA&fl|4pyQ1A}2pTvwHA9aleGr$@t&X>*yP6po-?;hjlx+TQ zN~8@+RNw(1kU|rE9=Y*^Lc~tiO1( zp{UT`yb&FLGKO(-zfVMA2(E6AT*cgMG_PoCYH8_cUD43c($>+|(Ybm}&*-{|iRlKl zTju8fL5*T#7%*UpMY{gY-Cb7{n&6e;3UUW>T3Q4hnyXiJb@lZ04G4zR*EgsUZcyC< zY6J^pLv9-n?~-a2xs8Y!d8<_b6)#$cBpoZc^gu(45*=T7}C|#ut?I$H87}QFa7-6vYrX zLLo;gXIIBNekiOw(bbETPDGPz3EI>@=@9g(VPL=x!IahP28hV~mxw4MBiIsw4iVN_ zS3I?&Gs($8J`jbw2iaM7S7HhQalNYr99@Nh5%jqA4GcF#Wc;^A-3FBc*Ko(0V1u$H z*rDu+_YkmVSfPlHj#i;48oVobDR&YviNN7{_vhgLQm3ENHYS)Mpz0ekvalpr5v(!b zVhMIM6lI5d03BfZZa+X_-3g8^F3C;|L<`XEzeJ=*)TcKz1Qjybu$P+zb1d*1r4wpe>RI~#L9ls}3~AfYHM zrG>5(p`ug%G#c@VVdPWa%OrCNW`qtdfeS)mXb`$81a%$iabf2n=)k?U<%cGk0LqPk zH3-^(^2qu7&4?nr<%4?CkrUc{Q5YO8T`i@J^1%5S0)jmUf#x~{W1YtlI$E3;3XP-9 zM9|y}kqBBJ0#{Th+;gWm2}QV73wRF*&J(Va&q6TgGWjiIgKAc3@Fd$1(6VH_7*ZZ zhmsT4hFj@eQTYhU2^QB;b-Hj09Y~P$a=IckbdltFJ-V|CuoapSCLlx#oC0j!qqzXg z0J8MxH3bqvrAO{O1UKm^0vuHV1F`{!=7P7qpu6Qa03n13062-Y$CNt&DR7vx2;5$W zqRB_lbS1ENTXkRxqx1|tb#lN9Ot{~>FuEb=)bZ!F}p33k6SO#rLcMw@7`TY#+ zn@I>z#_Y=%5eu0z-qfa4iM5o!ZUI*A>4<>PTjXcRv^*~_}kb`}=qCPuiF?+HSa zO(u6_ce=F#LKb%@LZwe$KMGSr=Z0X}ebyrw;a)#+$gN`+_yN8ULAYulEf!3k4$K0K zj{SgPuZM&LnO*5NDP0Wz@V?dHk2`gaYyIiCInFbPz-VnAHcAIf-Kq z0U?t;85JNE%Mi(c+$NKsZsL1OehjxcVo7*F%|g%&zOeDDP=%esCLroW)APzLQn}Y*6MS z9R%wR7^|VMAEb&M@}B_j@D%Q@L{Ex^A{c!#iGWZ=kTc*GPLwhf9Dd@UtSQa=AW9eDX57aT$>^Bp z02fLJ*K2CDG6aBfKuwDRl!%~(DHWxl)+91!$zv4wy9_|#WSKyU?}JJe1u6klfRca6 z%}ycHzxRWQ8{dI2cajr=fYRSEC_U(|H())Lj4sHAecBUx(KYfn{vZk=aOM<3@d%C^ zGCM1tV`(6{fcHT2>NV)|PB0Mq8wTYA-=~#B8S9e|Y#hhI#h~9ZQ$YTbK^#K88y1=O zfl$FJ%7N!nW^M#xhDmoNe|C*IpgnB>Z1!_~EX7xUhV(VO# z*1zWWA%dezg*=VtEL5vfV0tLCMX{s}?jIu5Vt`wbnFDnk4`84J3I(}vZ>RyN8fAC@ z@DP;RXEv9NR6GV923p^?g(EnFpZXkwQ11e?#`9K@I7_uU2g` zSqJXYJpglDlk<#BU0y;azhimu6PM;XnLNsaAifj^KSS$CH0uV?Y`e_B!jV8c1p^pFh8V_HGjRW**AdKL~UteQwK_Mt>%D12j zGM2LF1pU=Qamnkpz{{I7Xo-cYO~EfxMzHs`b^lJzc?FfF3`l7=F+glV;RyjDtw)q3 zkspjg)6;6GDY5?5gi;2q!1c&i5i8JC^Ax6r`&W|!tdzm?^UlOdGWDw*7|f1eEeD__ zbdvo3CA74H-mLHWtA$z+L>T?)Ijk+|FwBF$zTOIn=EPno_H@SGGr391{|vFr2E>tH z5Uc~BHm{({GxY3XL|VfvN(a3)j? zyqBMVtIZPeg4I}O0)*NCDLT}d4R~<)z+>xUxDh!@z!O3exfk%{(waF$nbd4T5@Ngz z;EqHf|Brt06p&8;Lh=EfeF%&$Xu%T3z`?~1O9qJy?!Vptk5;nI2HDxdgw7PC>L# z2uWYmPmw^la~uR4xCEzxv?!2|VYOTc;)d7R8G-}xhOZPx;ee41e4z)Zk11YV;xE=W zrh$?XL`4GJu~A^6_aFfJlF0OL*bqbxvY_j4UO{dSYl0w*H4yx!c7bK={)JDmiJS&V z?|+8y3?bW+ID(u5GO;j?3w*!G(19_w zWI-=>5D9cc0p-CV?n|K8)FaywsVxYyZyX2}(IYI76Q+**OeT+P z+8`8$VBNv1Mgaadeu!fso?JJ8Sf&OT$)!i=z|&LdAcz7?!1_)Y2uZ5TqWvLROhDnO8}Pt;K`_nAQxaM+ltVEx{rhX-Uy-yctJ4ZiOA;T9zfFo2QF9!aOiUh} z2tSD2T`~4PCrm&42dJSmF(A8E$O}Q>W@^)6oy929(!v_H!68!znf#&vD9R#81`KPF zkBG2rjcz13fVUPwkR-ATf?R?Lk9J4UTY+<$X>Npblspy*n%@fV7!05g3P-S!Wb$Mv zh-nFyziuG3DhLKek61v2V~QZx$?6E=3d8)s0bcwH)M3_y5$1Q~&J@rv9amcapHxt4 z01^yQICg>yfjbn)C|!sfC}O9LMUbOpIRr_BINqBQFGFGow-@>%SCoQ1b+M3W{eBXm z<^ur~Rs)gGoCq&v@6x*k5H79(mFIMbFc~H+2X=7&yfCvetx$1U6++ks$q9YquaY1^ zkJ53c_5F(!T{)DkB7oE+7s3tY9&|NqgD?!2;6X3i7Di;mS^gbpUEC-%@OxpFGwe}c72lW)%5(E(<>m!H}_%3$@(S=1~5T+Mh zO79Jq%Ww3Eqgcee9}Jqx96|0uRV5HXWXZt@vS$r4g%qt#1uF^w^ZS0#7w(=1tVjf< z4OEiBz_IxVBDMy#6o{;i$Zd=WV?AJ%Ga%eB2y|Hn@E7C{SC4OCQFDR`jRphOEH6U; z3<@Zd+!WPW1yj|a6i|*JhzW!};~pTDVXgqU1s(7nAmCfTQFZ{{E#M7KfYJMd^}+(~ ziy%yuPyq2k5H>JTbPznMg;EcK8|*jmsD(iuBY}X|$BrNY064)1J%JHUgVhR8K&7M* z0&QEsdyypefMZVd>-iI5EYSA5P z<0$2DxTPJiqY+dnbX*Q{!?kik&;Ahip{K3_+Ai=#=xIp^*O|2|Asp?%q`^a66qXZOIn z2++cf0GSQFqF=H`{v;9uK|T0@2{+2#vTPfG^PMxlZ+3zkz_}|tA=b5IhP91JcLLg9 zgu#z7!Kj~C;m3e2rok6Y!Ju#hilEyvZ()6VrNIfW7T~=60=BJPo-j4vPseQBkN*%T zQl>9I37E`0%m|xw(U4WBTnr~$sGL=?OohTX<~^lcjxvpfx0HgBqa|hmAt4h=6^(@R z;zE0lTRmHWQpE=XW#A-a11t_fD^oUe(XghW))L5=0V3r=gb4Zw%ANSoH4TK*D1Bfu zE&*y0-6U8*&~c1mpm$h!MJf$M?I;u2`4$Aurjju)Jb?jpEK?}u9S)S%Lh~=U*1LZWxRP9Uy7uyjLSUC;WI9}xc5DKoC50{Zp+F%5dN$C_072yFh+~?fD zu%dVKu$!Fi%nc5H1`Z3e60kL#0!NE_1ahEZz6#GJvyN6K1O-JUW#;5OPKXQ)POhDR zIax~;kAzOCAd^D-2%&~I4zOrcLn3}*w7aFDq4nM8CD@G5Mjwcx06}hsCIk2<&`{A! z`onXSRNrfFZI1(SplArF$I#+RgJnBLd_Ltx#x3=x811H~iHBAqDihk=XqXUg$t(B# zV-utO9CQ_SvJf{~;T;C3ENBm>NdQ<9^g)3R`>V}uqb+pfFF2zBJAM>x2>j&>|9k#S ztD$Iv;R}lY{gr4#(FVac6rYOo-M|mr_!HiVvq3umdV+T;&;-6TOjEOo10I1mGUhP|?!hX#G*Y-WHAe&kxsehmwzr|D(@H>HXte|JmPv z{I&IF32emvx1WiUn_K^*)4%`V5BT!G?fMt>F9H02cl!4)SW8%y{;AJrOYGkr|NMnJ z|DWpnXFvJe|G~gsScCrAPsiSWV_?tVKifH_x4}JsGr$ddjDP;q^=k^K3;+4fDLp=+ z{wV>A-_t#rY_ZY*w(;N9|M)fv0|CFQdomdo6BPIV+~xlF@lAjV-umy&|NE9(D0JEX zzL)>rLm3pF{(I~HzGae2;eX%B|E~uH{Qs}@f8U1xt^KlcAy74VP!|5ow; zvHw5z|63LCkNy8v@&B>^KlcAy74VP!|5ow;vHw5z|63LCkNy8v@&B>^KlcAy74VP! z|5ow;vHw5z|63LCkNy8v@&B>^KlcAy74VP!|5ow;vHw5z|63LCkNy8v@&A7N|IN=I zkNoE6ugib)^XHDg`}zCdd;VaG>vx~O_}%AEe*5{G-+BHhkaGU%H=e)Zqx6sZ&F9Zh zzw7*6;a}(PP`~H=VfVkz;qHNZ9scRh(7(=KqELG~|LN{K|NZ-;rE3jfggbDp0P|9}4EI*$L}p1=Qf==WFeH;nd6pirJKy;YRX zFw$|;!S{@cXHTl4P-yrSjiSZDe^;#^nV?YEoi|RLP*FT_f?vhj(&UD@F$yKk>aIR$ z*>`!g!N6izvQ%`=`pb-C(lIwf1VvtQyALsO^Dai)&-i0mAZk@C*iO4B#?^szFY zD1}=?%lA?-pFOgj5od_+U95hhsOBm1Sn(|WOD*$u!6|C>4`p_SLTa^F7rr+g9z6V6 z_Oou^$)kEVilVvHy&^JmV%v6xho*Ce#a;AiFYGu^)sZ=-v^Th^g>Bz+j-}R#54=9K zO;f>N*OeA`R5|#*f8#BnTy4R@>%_IpaH+ZD*3mBeB)F_BIW z+3vlm7doo6T@DF&Ei%E8O$VSKfp?1c zlbQF$*v?O0BWbQaOf4~b#_T;Hx_G(LTduoko@eHKo?dQ=qJazba^UxNN6bCGOY<2a zPBsId&*9uUDnFj1XuDa!<0$A5pio%ScHiaeh00 z<(5TGhQhm?Xst{1KMq96>IOFKzFihx6UNuXRBD&V)x>%3<(n}rgd(np}P6%gK{FlsNYqc4nNDO;L$E5LR1pTJp%Q z0}XEOFPaSY3n;gQ=iX+6W@k=~=t9fPtr-MD1ab~=eTiT)6F5^@szalyw%t5o2}&THY7!TYEWmrYm1 z@9M$l>KU;2`&={YycK^)NKL5`KeG8#*jo8o!I72_Biev0t9Cllu*bk=*? zSGl%+SOQZVSH7&fESQ%@wXhz_E-oW8bbHT*T@4b$u`+iwPR-NV#Jp~~=8PL;N>a?U z>ym8bxYC>ZICnSV*!b+gwazo194!Yq+CB+O+CQtP@lD=YNfHS7qA;*pdCIPz;r3UZ zlb+-n*$E9Zok#3WQ!EQr-0wVQlpIGTl6+|vN-KsxC!Za`1*^&A4X*NzogePEDSmU0 zu%zB5bW)a2ikqAx#VxBRK<0d7JSV4xx^vHbt0+4PC67`(sc`uodNP)Vu(hs}U^-GZ zSF$v4`@Pw|2TZuPvTnM^6_3+xKe~M(T`1@{KXPLy5w+dT#DRwDB?0|5f4AhzmlYod zax~{$EK@qOHOex>mF$Ij9iCd)r%yFcmP<`n+@Cw0$?3tUoDr8Tb!E|CUES|>{&JjP z4vk9cHkllpNOsw7BW=;_3-nhC*S=dbj|@r!yL!o0pW>VbLsf z==MZ}jkIcZL&Z?dr`PVHBHD_sGo3}*^&+Xv9okduz8Q%xAL*7JFHSD|BHFEN@$pUL z-gJ@mZLjl(bB(s&5;l_RG~w!N4cu=r-Xi#t{O#UVr^aQM@SqzynKuV+Sh&94gVk@T zQvb|!R9iWPrV>@7>?Xpbo_)WFe^qk*^(7OX?PZl$HQp=`SgcnDWVxlcjFyaR*toIO zYMeZK)nA2rZa4PBDT{4Ac?F|&`}9L*v94VAijNELR=xE(;z7sI+C=wm_0=iQGKX{)5JUa=H=0;Dv^qbm2>L0i|2#61h3YlX+5He z*SJ}?<6QP=CC-rFkVr3TOWkJGYT~Q){N(q@iw+ZdvfFYsj5#0Zc}=LVa14z+c6l}) zrfEERPCdi^5`V?+9hGknead`G)wi2fe42c*Zu&bbPwR6LyY{2!)Suqf=J`=NyVp44 z{o{@h&#+!pG5?TiwDxiS+Jx3-pYA%bTA+lb3(WzXczudU9>%6R^)~*cq+EFHd0aQ`o<*%J08ngD-vg@O=9ktdY z6W>#5;pM&LsfVk#?b^qbXTuTiSbku-JV^cm_da(0WN(5EzYJC33@&wafMKsmDQ5c7FpfHRkTx^vbxx6JTvsqKEQ!=Ka^n4cal3(vWCp;+T%kaA-~yw1{8PXOXm|A;r8L?dJmS?A2;LG)EdMXgSp<7ua^7BdBr7Ls9E)0@0T^7Dl718KaqRM zq3UzkHXG?1V+Xa)aj@7>ea0?fX{a}|vzCxsqNu9P6zcgb?t14OxKbFWryj9zcY5AB z;5u`PG_fioPMSZ9+>*CG(N*1Y-T6({Ljp=x86PN_0Kp| z^u4_Y(Q)>?!&<@3Yb}7{cgb3RGcKy5K29#Y{K&kVy&|1HSoPR#CA};bvD?E3R8JocXfIWn+a^#pwlXXiE?CwiwfzJC5p69Mfsu*se!jck;7a*9wN8Wk;UC^5|~Y z@qXhO+PtPXQq^I-FIX?Qi0KoS)j|G>*CI_!T4CIW|Z=@DbKTkwg)W7QLN8o6tP!>pXb_U za=NOq-tBdhjI0&u>`Xg$MR3QH9_#C2+lJJ}$C>s>{6J?O@T<8Vbyk`<<-Rq@u680^ zYw<~YEN*wFMYnK8`+*x>`U&>r?y#J?b}`I$&Xj}aM@5UiUQG4m2_9riEKA+L_;O(l z!%5ouCca$3k0GG;l*RKm-lNHlEmwZzu5;KwO<1M9Se?YWi>l-66%!q<6_QMW;)|7P z6A6>l?7Xx-n$*`8gD)SYT_mYKQq&u`;NHal@`CjG%epNuH)R;AXp+;bnnL(YDuUCM zX4E#3ERW_k*ONt6ObcFF^%VJ$;xBEZqh%SyTzP)!dFS`l%r-?258VPb!n;@D_$0IC z9duQVUqViOk!=cInMcK>H8< zvE^lxQPCUPWZ{0(Is$8%$Wa+KrPI6H)83F=m{^y0FV&drEc7;G%K0`OSj4RHHI{*~ z+>H&j|Jx09^;u~71ixxJ_~s-)OojA zDSk}dlatT5so&pa(Jg+@Yb>20+#M^E(UVVBd2CxOeAxP&k#}|LpeyQZ{VsW{@Le?) z+1l#wcS=vXtzM(ziV}Tri|L2;!b1Mj@0x|3Vz&-wmEh$q`%-Mkg+t#%7DvU6OPh8| z6MuxgTRRqWK4SJ$hWZOlv#%nYqfV;i+ez&A9!uL``o=G>eYh*$97UhslIVRvH0D9O z&~a%Go|qFa--nFncpBcF30BQKhP@Sf-+kuEr3z6I5t+KLk6qT>aoe_M&&XqDCU>X{ z30z#$zHOA8^g=hqc(2?+Jab34Xn*YOqN$aV#0B}()#FoX8xrT*kS0-FE!I8(y zXm*<;XsBSw#^Ds3GUM*h{Nd&u8X01ATaBEl!(T)v(u~}?z04rQI`=}4^F_t5*I;Ik zvwhNzEfMWoJxoQ0dp5C}4RoUCUfMP~F5k4sk{d2KeY30nD(U{*@)M;)=XF(Q`|B|%~zjzTUi3#J{hvpcE8uakIKG0sbj{1PwAnx4ET1pX#vGU z=q)`Jbx7=V=84GUU^zV%2We7Mp6+Cx#~bU-S47TZPx6=v3gmsetx4Yc&FBa7vH(v{ zK!I@GZ<`yb-1O^txmP-g| z+TlkuQ-!V#1|{3^8rELP+qRaWsw0WZ5!e()`-CgCLuqpwtK;(<&!_e>UtzxS=%FX- za*?XulR~*Yq||K(dK#;S$Ej8vG6xft4jWoqIu>ptaD1p%L>5(^5mnco9x(2d%r<;o zJ}aBGIKXgHV+E_5XYEpKA!7Hw>h-u$HutAc0l9-@KTt z5jWHI5}V1D%~IOo+o#WrWgQeyDU>Ho+{bpF5?baYc%$Lx^ zu|lUW6dlJ-D-FjE>Z(e!$|))mPg`a6AGt z-=%uxJ819d*D(Z5wH?l1Px5#}g)1B&^Nsw_5^=5%ZY*EV>yM1TIKa$n;ANtbo=0Oc z!0s41eWI{zhi%nd59zhcDXe+P9owLx@)V=nXEVm5yFNaesSfF4Ie)^AUwrFk(TW?A zCeJm0tPt}8YF?k3QOjL*Q5$3WIBP{p_73j}rB@ASqgB{cH#D*N<7Kzifd{8PV!dv55|@-q2|Sj6Bp_4AkC6c# zG|X#d;*MhIb>oXy>ool{{1<*CZ*@p=A4H0{9g@^Z}-Uj zs_W%BwO>HX{RG$HdL^%m8H5gXNtV6!g(~&LCq~6thoqYHJ_##DH1{|?u;5@1;fVD< zwuNyu`o1)6$u_Z)KJG)8`n0MF&eaJ^*uB5q;dFNRQ|5rWiDd00Nj6;jyT~R?#c@yP z!|b?gZUg*G8&j(&l$+zcp)VWewQ*28 zO+{Vx!r(=dxbBdpbc=R!;Ae&NEVuEHvvp z`XB{|3qVys@cu`#O9h%p&qTOX;f-psnS?tz0f&>D5-Uf z$BAh<<2trrvP`>}aeU5sb^-me2}1eDvbEwIzN#K`eyHWlT-7mV z(8&^6nO>vOc0FzN;QlUwfZ};q?IFeS8^vtCfzS1osxMTjMsf9=x^CdtuKl{y=U6Yp z1X)o)FV4v@{EqbOYkX{qq0peavS+Q-e&6lo_VG2_+`1K}YtOkZbA<8Ld-kQCl9)gq zre65iH|>te)zMyXkda_<=~{Ca&A5n@-TlR-snTJltTXI& zCVc((^~er%pU7LX=f4zg(KnLTH`FuMT@6(&V0Ic(u;ZL-d%$qJE-mSp*OqV{E-T^S zr$`@bbn-ocLKbwP*RH2$oEffN$g2w$t@J-OSbB&U6fBV{^rX=F^S&=EIqLaTxrr`X zM09hFX+B@|Y{O^KHGfaD&|SEsB&}~zs(gc4ZJ^^jE zX2+f%Wo^kyw|3mw*`=i4B4YgYJKLGiA8&RG&ODZ#WO}Y_YU>v;jnJsrZvRfccCMXe zXI_b{yj$w9dV{}dGQITcs^|Bj_s{WNd2B?+)u~?CgAP1>`t&eZT=j8+%}&b`<~0#C}s6{$rfMr%Dm`np)Wb$BieggdPbZau<6w7aGxft_S>0$ zKP`?EQXN%CR#%s_E_ocEF&6aY6+e9S#nk0(-5*R=_I%#`!-sfw@(GQ;Y~6WAuZkOr z4&{St#`ay0_~hw->@wtPV3-L(DTI}d-~{TGP$^!qgk2-|_AK9|AEdh^Mk~iB`^Aw% zcA7fuG5R65565t#I{D2`J?;|gZ9d)OSqMa00k1eI#zxN44J}X`VM;Yk|XybSvaM zQBq?sJ}_RHV!>=`B5$HNa(6UPk-3W&3RYP zYIUhRGEz296X$twF=-D+<2dPSDLc>0O*nH#_mkO|>C^6dRkPV(Vrc~Z+}&vX2(;$H zDApd_w#LcQ`u)OJKkWOC&3cWsQP?D)e~M0;yLTYQq)PN^KvsvNjC#g)ynKUaT9q+J zCQ8&)(re30uNG4-pHiAVO)ve*`mTg;v){~@d(EOVytlOPtZ~EvHBADlT5QJSC8NG$SL*l<_gUO& ziOzqEp4@S7)6>uevtayrG>^cLuE0qyQ*Zek8MMNM{OE0m6zcX3iHGhVw6J0R68t%3 z0z1OnyqvG7S7$}b+pI6`muzwA=KK7`{;!*T3_`UE&eo-`1?h90R5aTqNEjR1&NmkP zDV=i?Eq!?QUGmat4<1LwWRWENl=to#%=LwLW}mG5Y$vf=L?s2vl-SK67C zEaCk^eHTUc3h>9d_ndn0PJZXfY7tzZSIU-6wVTU)dV&Yl@+IPrdt&kzNbicA6B7*( zB~+b0he>_8kmT6J^42i#1cgh9t5Z=PAC-v5u^oMZyCtUg3pFfh3!*Cf+iQrfYqw=S zcCFf7pS!zNFG}eI*HINRBYkqD`ylO6*6D(>k3)tBx^8GPo47wd_TZ`Eed&=QwjCJn z?Ao!DLoOdOsSfNop}asyJQt5=W>Uy`-uzB4(t`6?_AvQP!qZQ5fygdW=xOCjQ7X zTJ~y~6E9vTe*N*S>S&7`+Ym0&(TQPB4Vo4ewDGvES*WbH^~~lixlfeM9#gfy(?48Q z$(%`dX!^sG5q9!(u868#!#s6E2O{%>3T5(+y;Z7i{E+o&;zz4|*BQ%d>zgc^a|2~< z^$n(6+~3o+O5OEs`VI@F7k2Gt{zr11xvS-BaY0OM_PCz<3(vh| ze@M>rF4r>_^9;14Qdobbr!tx>^`d*)jlQSRIq1~$_c~FiWhbu)TK19YBKpF{9cF>~ zeXY0&mG=Jon5>n|URA;2Q_OijT)m|p{t>(Oa*WpGzx`?`Z&-M2s^E$6AkBkwM;GN- z(9h6eS9YQI3Ft=%vWlf{IVpq^+Ph9R{QObc_%i343s?R6=?~C<6SB3mX55KknOjc& zT+=RR7%UUMsC$I5;+3QYO&6q7@he|@g9a7FYVAMLect_1`x0Bn;pBIHS_FQVs@W}m z@0;3{XS6Hc-jpr8fJUUm&Wv$Z@AewbdCMY1Z$56;mCmYN?8qbH-2kM1ANp|V zGrSVZ$&s!z%)57;&%Udh^8U~ViK=4NBr>bjv;EuYFjt#+~*R`s9EIh@cuW?yjJ>RarP z4ddka{Vk}(JUXiF7$XaHhc5=H$y+wuGAK=Cj5R_xn@*MH;A~V zBz5>?^<`1PrtTYV`mjUVr<)%$A@9t5=}u~EIfrZ4ZB3JV2U0Ge zFlA|60@xLrizn}{6I8>m6;{4(e#XSLHYgk?Z*I5j?N5k*t1R*3%DHLBP1~IKIU5q0 zzQmO!Fg*NvWYne3R&%na?~ZaOy#;}*z1M>0a#GIAh!0f}ufzRfMV*RXjw+Fq6ha0i{dAFjakB_{1 z?nzh+HP|m}a-U10nm#fwO_qc6;k=ngXUG+mEnmZe+xFBberi0-b9vS@!av85)R1ca zAvW}EH$KpWmlIts9%uMHb!5@?d>9Tl|eGB1|ylGx5j4w|7)a z+U##X`znWE?rv{P&8=xq@(W=U&=EhIaV6_*=(h?>q%GXgH0Rpq)SWtUNa zx3}}x9i#iy_4czd6MqFhdR?(+ebcvMMi;$)hvqwNC-%G5_pmECOD<{#MVb6KuEF?P zwWQkd-qr&<-YpsEopm3-R@J=9q%vDCcC!Ap|H6=k@WTP+y3NCv8CD{_LoWC(tH{#6L2NJ;s$#hevWs<{jvRsb;!wTekLp%u`8CpJv+JRl|Yq7 zz9N5>?K=^%vji=lIFq-fR+C|C0_X17l8Thf1K+!RAKbns^eowNx(QodtP{ z>8Y#k!ZY8VBH@!m?bwhDTwl==9!;NxM(>qp?T3E=s>cW@7lpw z|D&8M{m9cjg*pZP&%QTyPz$QkeeTGY_;};s_hgatv{|k4~n3LFoOG~4c_m3Y+lhMqxx5*EEVqYG( z#KM29HlUPM>&Jx)mppN)H*KD6d-2_FN>G%^t879%hN_=0|N4@9mig6se4)X`djh9L>@ZCF2UBQx34AY0l+KQJ3RE?(IX8%LI;Sh7e0CRGc=cqjXW+I~ zA#>`PrMyW-^UXtB9KJU1v@&~F8>E3AGh8{0ja>D4g8k%KvjkpW&(CqOG;*LdY0A@< zlT$nJ2%F*TM?z_yKpx%d^wE5(v&YwrBYxPOU>{5?V;^xbc5#@T+|3Y_mb&cF#wS3Z zT<$pYFlCsn{{-p_>y?_ljy{|ZJN7tE_?$4o@yr|&*) zYZhy8Iq)N>uKY?V!Mf%9#dB>QL&|G=GZl>HzCI|R4YKb()gas;cKJSEkX)Zkm1ZFF zZQ9zJ_S;qUHLKd}kq z&1ZKQRZ1CSf-KvNn}qnvwx&-^+Dma?8(9$Vsa1$$`W9Fwy~nub`je!i#s@MRZ&uH5 z?eU>29%`p?<9zKG>>%(^afx-0k#kGep_$J7r#-ZJmI-}BxW$9wcUVu+E_z7^oyO`< zGnaCI+Uv0Gr9Agp2PTgFU+1<+=B0o9`Z2j>?S}hob>m5+#0x0yK9cjwsh8so0r^hB zM6E?S>PyS{j%jDA7fltMby^$kRS%TkC&!;tPiEl0cm0c~_JMYh{hxR$OsjZx8Sfmf zY|H+_z!J*Cb?C^MJGI|g(VEsy4S|<%4%bmpMaA;sf=1o@Crkp!--~?)J?INcrccGM z#A=-9Q@Fa7-uMLnnfSBlsZeEG>BJj zw(K^rb`WZEj=aydY0zl$tOkFVm}y$MNVzrdk}LbOZ5Dzh2UH$ews(A@jqBcNgK1?; zjH@pAf_-mmz&V7=UstnEYCAeODjwvk^+t;=XXdV{-B*DX$o$p!J1qrfwr4DNEY5BgxsCAi<+jOL5 zpX`~&cS+tNJ+f9cdz)>#2WM4iAoW>cO$MWXy3IR^-znGlIWo;bk*xZKO5OzY##RZ zs6_ZS4>rrsgT}nxU4!dsog#L%g9T|VXZdk*TO;%5EO;l@^;*65xueRaou++15cpjU zVnRg9@=b>Zg{ftCdC70DRJ$Agp$nm99ZE^y^cYKqdZhslo<1zvTByl|uQL zO^1?YW0hB%cnD>rZzY@A2alB<*dd`=sA4=f%BNN4M00<+Yb|1`YdfYHzqN}@Q{Gf0 z#UJlbtiP?IX=R?P&nx}l7Ks%Nnq7|vCYF%Y1cm`sj3@g&?+U62_AkkXrbk{D%OY>D z)k^1o45Ur-Xxl469%HV)H1GRBRJ#B+^{R_>JlUC!s@|u=KUMY+my%ber$ZCApM5AB zEoJ#UiYAllwu9u!5vz3BdG(tp4flsoOy;j-X_hT6IC_6~M93;m@{E0t|C=fw#tRS1 zBHr2TdWbp`DjKj|jpsy~tg?Q|(x!mB)ABtrU#y=BHvgb{XYB1JytXJ4e1~Lf5cg5A zvqUs*WQ`=%&lzc)Tbj=ibnR~q}4VRvr&^Ca{b}V8w*wug&*NKk9K8OK6Y{ z&wo4MLtPMchGk%VBrg6d5x=bF!d&mQg?K!Fcf#bRgM+&6{%`T*vl+Veo{@RZ=wkye zt~JvKQcI_|#o3+lb>A}n!o|N^ARtZp_GT|5Ir26Z<`?(^hdevBW3v%ursCvzrAPPr zz7UdZKAsawG0v$$yz2Oe2{ME`ZzG+y#(E?-m&G!k;`<=Ja7+?a5oQ)6950=s&Md1v z_U3Z})vG`q2J=T3t_DcgsavjEE}Uk<-Prsfktev9>UeCOwI$#60`Z`t^;P|q)3IAx z8pX1*rlecTXYmoZ^rWHa3-umfBqQXKhTGy}#6>w%=%~0xq&r{Z*A=5O22Gexerz#$ zp}ToElbx<3{}-xt23BcN3HqiNT?_@@i#H!ERe82~x#(wxI2P@X!K4H>mxiARISTc2 zJj3ZRd$q28-pVWc&TE^IoUAn6h3!V5T&GivZOIf)!kDk zcr~*|OG4tKeO_Fq!H-;D)o)Dkf_6L8nOdAACk!GSIyk;i$(udPQ(@_?5|U-mipoD} zbo7Linpwc8w~bfzK@A$t9eu^(VN)nrI~U+ZTX&WCDLF|iac58I=iEy;jpbr36PG6wrSv=m0*inC=Q(sq{hfean7VyTXDedR zu+=yx5a~f{nJ6dBV!eApO z$>@JNhRL866-+KGIH+?}oFmmU(PqM@M{unB8@p11rWe7B%5YByMnw=6EOX8LtqTKd z&*6hb_dkjF9qNgXZ~V0FbIHs(VH_+ZRx&k7JLpaGd*k5SyAlqgfCvGb#!zTyD&SU zR%M1PT5$c={{fdkXusBN$Nd&65W@Oz#+CE5YjE^AYOZ)MHm_U} zUYD*1pqTwm0|Ah4)}fnHnB8VT7Ywlm?UlZaSad`{#DV7H1j+;;W0bf8kp1;8Uqa*T zGnib-;?Mn%{p(n6aTHe>3fBXA((ka4dp&~xfSRf_u{%Yy)6d%TU-J z!2VqybSd1`uUIw{EDZpRXRLy@4F;_;j{6)EkPzZ9;Ardv1~hCjmXtyS*6pg>FF zg693QL}-aX6DS6yt*-W!IRN?Ke!x1i9`jQy)IwPL4fCyso7mwP{kV_r@++?#mRAqx z0f)g^jRPSr4bR^ZN1Pn5ttu*60XQHyZDj|Ra!*Pifj5=2MA*_;A@8?Dpy`c;TDqy; zPf#4s!ut0e$82$KXno?({|v_*r@|@h5}K|Y*|;9i`(MfFH#0eL=ZVmQ^spa51ip-- zZ+LjRk$l&7Z4zl@#&v!YvYwx88)#|FaEO4l7;HLmprxBBU0!@p$t<$l6%34E#h>}` zKlV5#J(i6oWoX(SsO*R+@PF*4`wcUrOw$3tF?ft2dpTt@Kq4u#YVqG4?YIbt(U(pz$slg z0U-i{ge?gUCr}6?;Auyh0Ju8@3aN*m$g`u|Fm9driUsFfA;$! zvmu;Uy$I@!0Nj-8oeuXG1Ds-ILU1^N?UV?V34rslg*|G+29nWe{)2!GD(2B?z{PI54#U;y|)O zWgUR?;brz8fkwYw@Of+E*i)G}wgGG`DMO3(Ky2bQoU8W;v-3xds)O#iH+u&7-eU9N zj03+C-JF2LJ84_u>WBmR5&@4Mpv(a{AG96p<%moCK7S$%_g?1Bo3T+3Hw+3cpd3@M z9^kMIJ??B3fAR9h6)D?dHJX2P?d4pj)6H-3lj{osu?dI)Dbbm)+n z-E(PJG3f;IBmz6O2q0E}L)jhHK1B0B^WPZ!U|ZgG*Ib51Ic;~z7EVC?35ZVMInfE+6IA20@Ew-`h~|IrM2t#;&3Vn-2jC8RludrqhD;GY zRB!^&e&1JSI=TQkjMEJqyQPO8r}W?hm6>zDJ0|U355hFKQ^(xJ0H>5Ik;n@D$P*?m3n&lrTJ@|0W+B*S+ zfE(BraH2@N0f+%(6RQCYCFFKjY((G%IDv)XoInW@0QfWA$ZE^%&-wJK$H9Rg*erb& znUG@>2OSZZrW{dRJ)rmh2}h3qoA0*4R?IAY3G;4d^$vrT>cT2cD+t6g!U8}Kg$oe& zzcEmBL;y}8L>y=&CN-v~^3SVBovh^GN4qAQPcd?8%*YG**vN%JF!MH8M+StP*H(s- z=mFgeho8v%<~@wI1U`O1=^C)#D8;V?wE9EUEcIgcI1Z9(};Ov_Ji|39rCW8`RS2WcH3#DurW5an`9PTwz%|>)I(w z-6X#l{tUi=n*fk?H)}s?T5QV)9%fJXA%UaCqCoKP?|k}aZv2IJ3#jRGwVO(Sd?O~fe3;LKG0=n%)SSO zdkXT&78>Lb0TCIB3`&mx#9CW6&gn-z{5MQgCN)n9smisPwQCgVU5_O1lTdXsGKDWfr{{+>XIVG0A|%et6;J za>qGg&ehFkyYGb)aC8Fh{4I4)-Aa!GsDuL$F2DtP__ve}a`Wt@qm%UzX7*ScCnV!) z#A;0J12~bU4BK%J444Q3m>$?b-3y-&!c_`l3J8`sKO5kB&J}|;kXML6uKAqz7Wi5u z)rix+>{ z2iAB4z$|%*7?y#`%D;df+Kz%d4&qZ|6}a-P9BG4Dg-6@PFZI5kMC7_*kKf1ky&s#Wc%s?Sq|*ZN|2a) z2SLAs5d}Sq=0R!m4c|z{8h-x6Ip0!q%2#p(AcOsPH&+aV_P!SC4iXC$6_9JE9?146 zc7i~hek`4dfe}JA`Y}55hyJJ zAjs^M|D_XMp!*!B^e!m->XLz6b^imQ=D}8dX8u!r>^}Skxk@VEZqGfSVBNw^NR%ghCR6Mo>b`grQNhNvGzak2*22J*!J23j3dq1Fst4RZXsfV zoj`(96gEc00pSFiQ72G(1R$c4P7nQx(nI$__MgB>EekE5nY} z1KoE~YDF*s&|Qgdi%p2kn7M!;a6UhIM>7+F(jx$^qH1Q@HMq|WnDt&9`svI(HvSC7 zn@kyYydLO1L7CM7Cc)AhZ4e{7_Y2ko1R;52d$JjcKHT)Y8w9>WJj0T=|EmY@h) zhVA#kK`F}N+i?%*PAnPMtWS9m%4n)A7xrXxki!9Z5k4bB0Rx(e2$UWHC}1C(h0ozC zs(+dNFJPaRR8iGEtwE4l8^Q(j8k^9R3Gz2LI7FZc-&>KQZcX@-f)y>4*rCP+DAde< zPU#_s7oena5hd9JVpiV1yE1D&QFd9-uMxdiF05dlh|zH3_ZE8y67+ERKP zK)gU70^=XGW`3FdcSgbvdevh40RadC-C+nEA{bbpVQ1gt6(z!+C4+DRO=K)odIX?A zl-MkJ84Yh&JOr^GT!tOD2fB^oP?2B)pjxv!)Tvvv+1Ej2=}qU}@0v?*OMZbSA_6-s z0Z@ykDcu|Pt_(YL59lt#mD#u=xDP7WJ}!D9Kla;;+)gPD(mKzDx;jLlP~}lh>FoxL z*A<}o20QR~k^jraKLzN_(k?=_{&EDIs&}^LWj055-pQW;2vKP6pXdZc91tkLyGxJ* za9W?}gY>`j2=1V>!n(Pv?bbutgSQ7~Eu)-Z`{;qzu=jFqpezXoLC3)fmOd!Hxx*b! zpa7gk=@EeXFb+Vg__Rxv-P{xMQS7Ndo%&)S*e)bhIckUKfy%awgSN_SSQy;g&O=x( z435qz#z9)SM)^5~JNcaF0uh1IatkhvuMgP0<#f!Z&y{)Nd$38Xosi7y(isU8;mnwF z$PU;8x((*Oo0kW+Tz44AQebk6c^KOrSb{4;@(YBOVZE z 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

Zm-!Bv9n*Q!jo(hT0w{eq zWbcSa8TTpkTU;!pxTSWK-gio=#8>HIl?7ensSeV}^>ZU1RiG48DT<}5Gr;FK>K(pu z+Ue}Ul)#)MrGFPSxMnqJ4L}`Yyp7_^^4;7_VKe1U1nuU2CrQ)I_#p?K0~KufT-bomUc8sdjXp}TEzWMu8pojwxjrq|Ey^so zJfJ26LIL9*h3B~#Tloqbh4;o4*-sOL1ua~?pFlN(!HG+5eKzdYz^OQ=5%m$Y$!-;e z8v~6mnOk7VXBm?fJ5@FJ!eGXz32VWBgAG)40+g@F2^4R@ye3_|a1Zy3inlh0(8a$9 zVe>lyEdtg*o7PX;hP1G4pi(RXhBSCFdy}RF)wBd3*^qV;bd0<$G4?lbmiFA>SAFFn#vHPWstDr5l54F+!BHCAf z%>=>DO!|bDl5LgdvYT5#h|z)d-U_?`+{waef`99=uNqB~R8^4UsbmS1R>Lb6^7pSs ztFTElj#B;Ku6qdi^h=?1SoQ`(w^+(LLVwe?CSU%Ebae zgkVo@rb3Gv5)aIJtp8gmj7xrh#KTof^T9ZsMO#D)Tt&~)PH7+~Mjm|8S`-NZYoXSk zD}%_-?kr1j04VKJBcDOUB8N48<^N=J!pctCUym_Y=fw*@ytaO1+8#m)#x+Eh?&7G@ zSnxeFzr@iW6IPNkvaP2+uX^!sau|Yu^doPIi}=JNt6Q2dV+hT?#x|>|Z8g!G;Avkg z$^0nIJij?+Jc26K{{gZP@IOFq_?`*_;TX-(S`gLWf`Pr`2=rP0;&Hxi{|C8i9Q&=Y zD0pf{&2LBNN_gj6VnhdWq6$XI?cf?pNu z4(e4Ci|g;g;=<~hGxCesSg}z;*Cg!geb>aN=9mI&kB&E|XGcXsVQps%n0rw-?o2C( z@jfp5roZbddm6gp*ro=UQ{(=m;dpU=GlzHU6_K~boh&CW5*>S4oR~;5>5Mh`*}k{^ zyaKgRa(=f+TVrVZk_wt#)e=VG0#XPCi$rK~18WZYx%KY>x(LlM?5ap7u-`UZE%0xb zgGk3?N^IB+phqzfio%+w!3=V7!Dkk!6qo$5V4>CaBMN*^=vbICJY`@@cawC&=#;S2 z2lH#c>nJ4A3jCNEwZOxwiabP#l_+XU5J^u(5-;EqE~F}XwW+3GR>WU~%DJuECGdTr z9O=1|Dn)PDCN2SXNe1j6NNt(^W-efSpTJXdPqUP4<^skGn7^#0q1oxeKI3x>TkIe!iuDs1Nm>2R(n^BZm%=ZeZG8=n;k1NV7!s_Rd))-rcZ-Sfiiwj3Gp%Fy^yPQ4^Ql9S_ zbf*-Gr@IU?S^dmYcsb*FVKSwOx`mqX6Vr;jxSmOXvAf<%pV{sR=V0l|RoZFoq$UE* zELsm8*?m}_gp(CTy{TCg0v2 zxj-PI#g>*A5IKyIU*uCO69tt{+K63yXk8(sxRe)VCgB@>6e$>hdbCKoAXE4=WPki5 z$O~)!YqwWJ6Y!BTFHIBoo>3|`=&-IMvwHmFk>|@-)3}_rW{F|~^XzP&NkzcCozft7 zPBm!7|M#)g-n$pJ?4$a}@nIJX*7%)Gcz?b{Q+h>Y0L@F(uEdB^;=*b7&2U|$O+ZuA zb4talA0CSMFAcCZMu$LOFV&Gw{0uC_N6-~ZZjfFcfl>k+lc+*i0`GBx6?DJu)kWgm z>rdHwigjJgNdwya)qBS}<0vdiQI(@{Z(AOoIi#fTdKGy0epcbO zesuuKNo2RKaLGF8$vpt6x1X*7w#;+@x?1o38j0Br-SIdhn#Jh7sYgumKU7izIG}$a zQU(XPkKGx-GP*X3x`MI^#(%EjdJegZ2(-P{wIms1o&lx~4u0F#QjPcrEOKQdU&Y0` zfM(N>uj(^!>A3-cn&fpij*f;P@hmf_#S1;ENI5}sdeT1oNdERjIKy2@<2RzxVJJmz z^a|;<*UkbN6^6j@vx*^`B{}x!?isF^0{Q+;ctG>%(vm;mPE=v&>{rS!i780U5^xev z$}P&12ahY@feIeRbOWm2UvJOe$d4`u#09<1C_(HQzDc{CQE~yyf|w^Gm0)hb;r3?( z4xyu+uq$4F24naB)GcqedqBpb&OmO{)T#9;W>{u1xzT1PDjAHW#T{;o;8a|IGs;ob z;uMJH8$f+h#2vc{n8;cZt%Np0aLBSO`C!I>2er;{VF3^*_8 zMZX=ogU+y3LDfcyt2)_l>u0))H^1S><=!1KXqBuosF3Ro0GH^%WM)myNi8w-eghT@ zV&{`h0VK<2`h@WtuY=^ADQC~&4~ao0RKRhJZ^_aU-Nl}}7s)L2n(5r`@Mfkle)^1S z(9?OnD z4U%bSaU=zrkdh2)%~QEICvDGF-)E{1+Oz)AF2Ib$F0qm9*ba7uv9ZQdhRTol*>a3S zh5)CO%>UrkziDphafftokJaa4X`rt31rCY)27rQ)6Btw7KwYp|ARsQ6CPE<3?; z&>K=MVc_CVVjL(9g}`o8i=OQTMmkLMVh`dSj5B zuhJ`=R@lR@tSDKWIlsD_581R9bf0cL!;#N!SBjk?#L`{jQOeQyalbB~9Hbm$g$H<@ zJduI&)VS?%B;Qsue4Wv?tmaBc-`;PA?m2gJk zS4P%wz8wN|h1C|!#8b%LFA8L%-7%WJIlskS?rjmeGtTk#d{xFK%P;2Si<#2wk!sr{ z@>VsN8;{@DIub#_J{%`wL;^TsReG>XBm9kS$+039Ad7AfJ}5m$$u7RX46n!ROcN%@ zhCE_T=4$t0k05S-Lh!9rtMsXX3j{z?f5hH#p97ev+(#1+o-)s)1sPC2L?l;Nj~Ew8 z9N8M*rAj@A-XpyB=axU*>3lFjOfuc-$rRRiMa{rkA4_5v$+owhns%#CW}xKa7OvWm z)A{!8sA8LH(6x2b65CgdsO;k_HA&etW2-xOA=k>6kIoQ{@R9@7tjjm_d#ebIEjzJf z99nFEA&&^wGV|^CkyTYh|LlhCao5k{sKebipy9u#X z7k*~{d(@wQ^xT}l_H}qdQ8s(D^9RZH*JesxtXB(aHiNIcRIYQ9g-9(@9+tfHq*pNMfo`Kd!~! z@(1*B$^ev4fPW|V&5JZMT&nezftkAd+0dt^Gpd;SZE6zEOKt)@27nQPuk&BOA&)GV z7r-xcq4CmV0TNzLT)hoW%M>LahKkHaxX^znih^>GLCe1$X1Z&N-@Z!(oGtD=g=A@> zF=}`cy6HKhupEatOp74SUjc9I+azU5ZoM2og1A~*XgJU&2j46m3SZ3aW1mPd<9qbQ zK9cDFJ@}horR&eNIl2!GB?I8S{njf5`%DnUTkfrrw&lZ@c;q!KP)GiyXTq$KU7Ni0 z?-v|t?obi^oQfbJ9I)?z;7|xB6y+( z&ZYS53vBe<3iJ0NNEf1>9wX+cUm{bOj$^5vt8-q%Njn_sMeo|D8R8r?L={#>$LJKI z!x%|AMVLa6LQ^a>II1Vk>&>*(gbH8m z>%R}&z~<)Hxq)XRt(fs>%H(ZdfCtYX=sA0TLSJlir5Z7gwGaLZ%I~ahJj-Ufw67d@ zjQqzbIUoTS(NyK^7oeYuH;*cQ7f7fY#XGHpga4GnZRt)=gE=)_G71&`k(IXQzp7;{ z`$F{!T+@#&2Tou8Ekax}wqic8QK&~XFs19@{5k~}^_QgM?o&6ZCsX`> zVB~;AD?10UVZR0nm@#M`{sx9oyR8MUF+Q+m5<+E2!P13RlW}e3gt+g-!mI03;*)6)J;hK0_N@@!0(-|LvyvxTB`jTJ@c-iY0e*%+j>v#0$;eeiY@Ot1nA6uIp>+wZc4 zfXVkveX6?C8tnOj1n8- zw6+`o!w-i`;IidhDB$P(nvoID!Lc7ssjeo!I7?LYdg&>iA4ZB@4T!{8wf8{}e&ONj zM-WgLCm;Ym-URUn9M4WpvrNOwLFNK;_=pV?VqEF|<4!9SDZx*5!Nau>w(3>?D3p>{ zn%>p_&TuZTDOQR-{8#Sl+zh!a#Dd;$n-1l%O1^GLqdcyQ@0OcrRSh|iF`*J~8cK+` ztgoz8kz_(T7fk&a`!V&eRE?d4h^PeMh$2Bcl^$u45)ca_bqK*oPeUv79e??|i*y_R zIu5ksAIsLuy>@+(d!jE2Zb0wGDE!CFR2m83B@Cj72(Ad3oRh4PrzWI#Amd4vdb`_W z_G2Dsc}bF%eppYuMoR`?6xUp|DH+9mG9~In*{_+1KOcIu zFaLRjh;2Qvfk5%PcfWEO1iCNLA zViTa@6p2$$>tGlLZJ88)td5MY`uS?w^#{%Z-xcMhVVCBY^V&sEPT&~ z(w2?B2Bl}w&k0d1KTZaeUQ64cQJ{i~P?cxmQH%4#0xf#K74QLPH~@Bw+WTYfAYAf{Jg}J|p&4Hz znWLJfOQ29*#-6RDiOAUTqhU>luBpx2yp&EdTHd<_cF1r@1gk2Kyj$xwVsOf7uH@^O_A*Iz$LH4 z&AkxpZrq0V1LCh>V%seRz`|uet?GDih2WhaJE8*1DsYb;Te8KLHH>v*aYwv7}@Q{5n%bg91OCzT-@V?$X2Zua2)o*P_%p`cTiHsE>UcxyU2 z21t{O+R}`F{@TKTf%}_?H;PiLIbZMCa>yB*EejN>r>%YGPZ10P`oNw<~ABf#QKK5nb+2aol!Lyrh~T z^Nr@|6e!MC_-)ipdrD5RDXLm-n~buX6sl@a!K}l(FwRWkVMDNAj_?@l&P3Wf2%4lP zPtTm)ckx!-EdsyXx#Rb&YVH;k6Cl6*Vc&}qmS=;vSg&!kQgxbE5_y5(E%dPR>vCXR zwB}mvA4=Yf?4D97Q!&zJZUgt#>2=M$vZxr20!q6Ai>BcuP!j0DM|kkg#$AX=&wIs) z-SoMi4uur=0J$>s9&niBa?oD!2%4q&t~tcHPb7lFoA*;j=FscI~HenO(snyROt$KTQR}2gJ3J`~ts{LQgJsiP(Du&Ov_FB5#JESCe0`J^L)N zqlN{)1b#h-Hn55EH2a00LU^unG;0|go(Ki@Cr7$F!X-Tcj+M|Xy(lywC$*k1jb z;`RIZ4CBLuEVLoC7NU1wa5Cn5J&t!{jPivD7ocg1Ze?I&EQ*o}3ti`A|Zs!)$BnhHVdWt>+Rw1uey zRDQk_*zf;dOyd3tC(@D8C@WNagJ`vvBhYK_;HBy8CuP70FFjHO$rS zt%z4PTP2%zAO1tj=9ePh<*x<&Gv1@w_rwC$_bmtPWQjr21CBecQ@0?5`X0+ z_C-Dj{tGQ+9UA4={@E9U%tfK^)HMdW9C-sgVZ9N6{6-kgi^g(k*ZCRo&z`}&W1pN+ zjs7}Jv4~aI1;#EIq6`aC1PtyIgHQxbN8zEv$gM>pF@aL7&#YkN5_K z{;TfNQP!JOM&WQHz?g#=AghSn-=~Yh$jfd`$llzF6kiW$ct7JQzFP!&d0n{xC+Lic zGE5boKJENz`1$F}7Ki&GIU^JsC-X;Byao6~Ks~_0pQQ@!iYKS#F7XV0kAfk%> zt2bQ;sU^^x^{uAmTkAj41RBaHED=?2J6v15>82GU)dz@1o=>PRoX-o59n*2+6b;+T zjBA`W4!dti|1_@Cn{aemO|?fadW_{xVzpho$h%w5GlLm#l+G3{Tw&j9H3jlw<9dZu)^RT*_O5sCR+(~st zXPbir*=b`I8tGCa$Kft@JD`^{%_3#%lyBMNHxSi8uUiOSJ*^&X0gPGdaudFR)CCH}KQtE;D>J)qcRkTF^2Oum7-vCfe?;0}Gn92}wiuli& zl0exY`9X0VyFzczP>%?gVB*vM_w=p|AIR`R0 z6lmK=`fB9HfV+1Bua;P}d#ivG$xeRv_`yzDJT# z?>uU!trq^Aw@-drPki#(1Yhz-+fVfJCGa^Y2e7!C!~Zi<9pq-Cdi3KjH$B#-dU|}4 zs^VpWbML6vq|%1o|G&w(7-&7-`E;Z8!eJ=QT#O0;DGcWT+_e{V?$6okkjmX`rq>so z#eHEV@bYo^6j)jm;5nfBf-P2>rK(|IxZ?`Wk$=q=A8y{d{#we-c46S)cuu!wWp-yF zCPXCpBfRVrTsEsDVDq6j_LC#ESz5EhI5GBnNb_;sV*5{H@rvkQ13J$? zhGkTePs;+xX)b?fM~&+mrdO{num7xC$!h>ZC<Ek5y2}0UM?o(^rUmcj(CPI;iIl@1$4lx>_(iXqJCD@t=>Fg->F) zr%wJ*Z7pWb6qCdscc^)PS5B)69U)GgJs^l*CWin+a!kT9zu$t%+eZb#ig$o+`n{m) z=Ps>Ds#e-)B0%;iAG`aYXZ*{fJOA^$m>$3+;V*y}dTU!V=j1LGwSLh>0)nR*qlTzo zlPO1JIzyKI=>5(!CyV`W13zjS=o|rR1@Z#mCYjOp(SWa)zANW55%=AIeZTZ5_Y=0U&72SyJGj)0z-WPLYL%EDKWPebac=UxWFx#mB@ZkTa z*DtuZPc%z$VjrC-tQDx5sX+9ZZ{S}#fBLF~{_V20C)$exa@XXwV5kcHb7AGrVca5U z>hJEY0+??4#4_H-c9K89v5))W{V$&=-}>l%bzq_>>CrF8>zDu_xuYZb%_A7ae`irZ zdM8UcIY})T#c^N$1-SQMh~FRc!;7r4t`(s++$UD855Sv~N27Fq1R{{6%M zqB%)42Y3{4@bd|aHmWrr@D)@u#Ad9lbfeWoFkw>ciSG&c`i#-AGZpe1XvY43LKNVK z$%MbWYkXNP`tYChP5uinI0s=De+m}|?#SqB5eW8Jo2w_R{j8k{N(H<%ahIP3w*T^x zi%&qPd#@6w`E;y?{yu4Qks7V6@WRR#ZiWV|{)bSD#c-`2@(*&3<`Ell!r?P^e`}%P z?@BQ|lllu%@>@6GH!l?yNbnf+dtcyu8LF=Ftos8P39tt2!T@4pQu(V1S__;nw)$ug zn_+2Xm|V@w6PrD2Vo@*y=LuW>Nw1X*4tJ!91Nl)*-D&n|v}Yhd4F?Aap!o?%)3JNA zQeM}c2JCCGe>eTu_wqs^GR(tU=bt7z|5$_n)|4gx_OuSMEB^=!4%wxA68Rx%Az}?G zd#y)>4o(jNF%uNm&d;?+P043I9Jn{Kvv>O_X<}#MuR^?AiOyk4U?h2*tL3bi<8vI# zMs~c5+?56UDLNx)Yl!SfFOtd{pk*sBqw zJX~VO`omsa-bxzo6R&dTK^LwD z;l*o}c3p(8=P<{)PrdlY{zLBWUR<)>np7aE2)?`%?MulkqP zYy(8MMwu-EvE>=EPa(A6h5Q7rp=UkV~>7^V1Zo(sRw+?>XHcCnF0m!5soG{_NDP1&(n`>^NGA&Zsk?MPy z!?)zlrWH+k~>X%{zvkPYbNPQatFk;nZ>d-D8IAq z88yFuUpnTfY3#q~{XIzLfMGVN;sb=5)p2b&PUl_AbD8aj^%03*oQvMcD>~=`A}MZ> zhbT?$I$!GFml%L8UId=2FEJqG}U21SRA}y0HsJI=3u~neKrbewNRNUF7B8ohPg2;>M-d zOApX*)_>ok&{r$sID!nQDjsSm;|@Uj8wGyWNzCoB;XSJ6W?g{{Q$DceX*U#P0(PE3X3{=>9~i#JLC@Ns|Nj80Kvlo$-r=W(ab_R{ zH~}D6T@^$C=mb~53JxaZ1b|$1mn+9npiNRhYZ2(|Y=Jl3qa;{wjc~3Y`Sgq8=t8+&59PLtCS&p~LGa(6T5{xt-+7r%0}Nj%e*$ znBimA&vtA4tuf=~AD@>5Y!+O2c|Q$Wx0-16YLe}rz?R!TA{scB#HjN~jJcAi^vHmP z6j1iM2ID_$3Sz|A#50y8zhu~&8<-*`l) z{t03F;5OfRT?R*i)}j~9|$wvfc^KM<8qCNbeNB*tEiG&$G_kLwc^)HSH>Z6+#>bpp|JKp}mPiKrP> zDki4Wxubsyc;!;JgbMQ+w%C*q07TD8{;_r*0ErsCR^c=N{)v|+ z2OENMyz@HzsxX`6NQ>Bced<0chp# zCHek8i8d@v%=DS*Yo;7gu_@7d1p*|H)mUR#{5Hv@Zo#VmoxDmJQQU}mGid#>-fW4IJZrg0{L0CKDo0Kz4IdTcyXse}f=20FlQpi38$ z`yoKse>##1}b*TRIxv{Ldw)&ZYM z=N?4euoTmM2#H=JiC`Ee`W#Qx6>GzR)=S%Z=VWL<8}og5C&{lAXeJ!Aspse-7yADV(qU_x==MIPRx zNtUp2*dU_8N0S&jmBf&9At*o~a1e|Fpt)QC#y{`RFzN%%dDdMN3}xiGxsLo!0pwl? zE-&0k;{At7ocbRmj`>eKY?u)zk`(NJS%dey177Z+LT%~~s$kpQCMxC?2Drfx2%G?r ztDa}+%T@s3j|r|xv}YYU4IC`!$C;}(=eQiX?QN{hK2GxE7l^j5fm$ETo9T|RSFI8A z0PWMZDfydeY!c7-lyTT97>BKbaoA&U9fPK3D1?ELpG+8sIbooYT&5>-&2*BpZ-Mak zF**%@1vJ|?ZG-weF|x{CJ4rtI6A}xikvQkq2?5a*Nxst6A>ddCNL!{xd@1XRj?+s3 zDW4bEP5#JvoJe)lRpsXlI!)rLW&cN8oB)ukF60;I&?fuRy7h-8GF+VMpt5f1hDP>O zXr8lnKh|F#fU0;J(RvtWReb(Hl(R-IgKNVRJ4~3A3itqKPan=Bxo{qd9=8#V zI+esxH;@>1QKCYe-a%>#9NIwf+20|09|8arE{cgZ%&1dmDEzxxPM52f5#4t=(Md2A zocce7{r$2AfZZMg#q!6Oq17Sz=qCO!HACm}z31ubqdsOlOg`%L`aWNK&-HVYqZT4e z(&i|Q6995VXntwr!L2x$yp7E(CAtm9j20tf71pht0H6#aNnP>8^fT|a$D#`8A*MX3lWp1UPn_1&?nu;l1 z30JdP{A{3Gc_P=|H8#0hMIQOlU0|YM{4;(JtNz`JVHEsC1^v!5Ks5{83^n%?KcV>D zN0VG~Ppjw?>qcyUhvNS{mE_#VRluH{^&@OIc)2F!&$=<@8Cl4Ym6a5K{0Agoghq&M zdI|E`2$i`Gda0w9m#314j+3ji8J6kKJfH_m|IqM zxfE`F&wLLt`VS(`LPT|EBTfG1G_&V(7Q$H|Yd9*&gA;LDPRE`)o^(9pRL1O_K15Kq z0Vpp%=OGfnoE&Rw&^j|6m1M1KYgXTJ=3GtMK{>4T#tsLaM|A+PdKVe@i8Twj3du$T_z%-b~q6?&p9uT&B4TDi8 zmeBYcVsDya#B^wnXB_OQ9zr>SL5V8t)lq>Zx&xcw#?N}olCJRpF*q;)G?pH(MoxeQiM&Bf&lNbs5&DEl04_-S+^EG^bA~I zbJe`h^IX*+#XA8Y2=)BrNr$fGirTp+m__~*{=PRqwDA=PXuY5 z01yFD)1qXRn5_W7gILc&M7uZQ1;;c;O-Is})S@5AHP4WI>T4u->})l&{&XFpx)C!= zxnV8QKd&U3`c(vvfi|Eu0hnog`ZXlqof%qxs-<)O3_9bx7>3vjV=p8z;!+67Bf_B^ zduw3FKf$~Hjr%-_dI)MeKOnIJaVD0`Kv1Z)iIBt?L4$sZN)xblEsP;ApxCv~LlZDG zoHqEy!s{SP0}#*#K!CgPR?84_Lx*H0oT>nmG^z6C@?NSs=0PaH>+2w=6gaTazBt~W zeEnib>Flf9)gDg)=aldKisbY7)zsx?t)GQ5fHw+o;!fg!V?eVg1~X4V%1Ds40USzp z(>oNq;NJYJggy1MK4s?rkMXrIDLu&Ee1$HyW zN5uj_5MTzW8Dc7C83cEs=1tX3O@oN)>;!;_2%8cu&-AdyXdMfnbU0=m_((aRP|?_w zMYQCba@Nf-jCuf5D*Rz$7dl{EQjDI*CT9F#M#>NLIX9EL>1(R^C`aL3=)@NX<)#V(D3IR5i|cM!2CY|^M|TC2sF<4 z`}ajm1iv8G3j-rAS3k8x@WyYjAihE~nU4 zFTy4y$Ex_6{fSz4=weZOPZs`WpfT|c$qX?0+Bd>hkRcrnLJ|y|0Fdin{v-G>?+ub1ON;c@n^3i`Q|e!Hf2zis+X*dYsC0qL@^kBS7=W9KuugWibN@n z-G^hQJ%9wyxQbvL)($>^IJreZf35cpQBfOrkX zpSlbIa%Klsqc+lmnFi0+ndx^1LmxDr#PHJ*r~gds;CEcY3cN9Kh7-tWqG!|R>YHlV zT~Mrl398_E2+{nma%odWo-7QsYnsRAN-YT-!cxy8UnRN#5hRcOt__;J<%z%eIjs55 z3Z%(Vj32ZVCw!7(r{4yP{?U1BPqu=^kn>2~a30=c#Hg74KP30;w_d_x?U#J(Ig({R zBysXDvlSiMb6EpV2!^77-Y9HKP}iUV@G_(X_VoY#q)m^-J<${}peKea2RWqxBxAX6 zIV_g_3jm@AjFQ?zirBR*r&W%uFpTi=r>{sbe;9BF20dHE04j!JhJVy$B*wt7uIKo` zsGA_b8foKtFyslU*h+HMQ;1XW1kpYBy9#qD+gwOmN z3-z2}&v$Xum$7a;lVV?*OR;kh_rJ7MZEB;|u02Wpo@%>*_zQm|Ip@FpX3u$gx%eLx ze-Vs}nV!Yy!t_#3F2}|815* zl*+%jh+>!ggkqOInF!nyeYGPiK}@}a#MO6_=+rS`MC!97r2*Q$o8r&i=rgBfa_r5Z zAm|bRmdNlDSXRPiia^M7G1 zd8-YIX!BI>BKagVItLK3(PHU?H8`RdT>EZ7c--T@A8lQ8h+S|Dfg7+KQrfdoSoKr9 zvISZAI@~C4_mj;ot=0e(b+^l}bJZNe1O);Bk9CCtUdE^Em3+_kn%kI+vryWdsUE1a z696(1D2ivGxZJ-U|5z1Z0i`g6!p9}|d~A_9|5@bvnIvcYG*J=Dw@)#Co++O94XBCV zCU(gxSm@Lr8i7Ai>_!B^nRv45b{my2x35tMc88Proie3K<>_)JB$4gayfWHw8)beEnhuRAdlqjJZTUY}`aj+!- z$&(Y?@hwREGBNOEyqaMr-?zEexb%^6_^FFcnIYw|9D+kCy)B~Q7i0f6*a9@D+x*g? z&ryjSyFT)pGymxiZAOH@FT%C1#%h+RHf`aV;?UtFK8NLl)8Ky{gOz_vfIi1k?9(q% z?8@IFx?DH^jG&>7N(g|8T~3Fg-5NxsD*%um{S{X0&sxRySImFZc#2&&lL%|)trmJ8 zjVOQ9;e~=Fp@wBE)3&lkMeaF7@t418n#C@ib^~O0*dV}~1l|uIDoDp%qbe_Kyy@z% z?}uGp27FEc$UvM(9x=tM5NG^=ois0cK>%onH)Y47NU9elQf2hF75lzh@NA{>htfp3 zgnbsqVJ&nAJu&g?&{{wnFm6(U5m+nZtU40U$`Za&gW>N znEz-P%w5glZwF^DtEHzXn@HjsY=7LNt8beCWe>0b!G=~n5g8R^H6|q;AZ>6Me%_;f`J%H|~!C+%04i`JQYd^y5eg^g+ z4endb3X1+leCAj2E@N9?cKP!GiusQi1Fguj`HSf1qrPD!6@5=2apnIZ*i(_ee&>;z z?Ota87%p}QQWXVMfpM3B`SUJ`L7*D(1X!@OVPMJ3&jv@3x))krFFhilg%bdB-QnDc zJmBxKWZ*pg>kC7`ZEz*D3AdT+_HubUKE#f9|C6vd@%hFn=3j)+tCvG{e#&k6sC_hL zq94UMf1}vtzs8y?m;v0T{ep@gzj8U;?!M$VYbfdEqPt*=@VXuIA2b-u|LHcx{58=< z`2{2{{AuFShXzO)1g>2Jn*T+k3intE)qM%V5BuCbu~{V$v%*NIO=fNpFt}!QYw0&a zrkT&-xTRCCfa<@`ZV7-}AbKOP&7NIEm53-<@PLr8Grtb&@G9Ty{)+j7If|>`N;TnY z1>aJe3W`bpLE z?LWl6d~Z$;+l*Z{<)*nLS0f=O69cH5u&6vG)@OdsKeG6V9m;3K?FaS9p zaTcP``cy%aRMG_lOb8l)OiKWoiTR|NOP+=Tnx1@Q(8t78#{Za3I>kqWN8)^DfF|fnwOjMAu zy9*Kj{Mbk^^W|lP=YI^lh$%TUq?7Z0NOCK-YxWVrQN8X((0p8W7vfn=428t0x{~|nenC_Aoi>jdk=-exK>nhO~Uhu(?yxH8j1qC#%`It!vYe4No zcDJaE%aWP`+&OzULyF&>`gxYSqVKVZUG28NpCx6UAFEj+EcF?DylKjV2y6c0QmDtr zwr=L1AP(ff0jEI|@C1C}{rih6qrklt2tRu>K6(t~QNxZ85W(>g7>oHRh?z2~CeB50 zBo=r=0x{weq5_Fn0QvUaXdm{92n*s^gQ|oZV8`x(G0IAeYy7?QIHws>V5|;-ZweUD zKBhhtmK5ACcQoLhgeQR9V`<6Xa|~wwh%UBuf$w)Bml@<6x4>9&x4+qc1EYwY2Nmg2 zU&&>4^In!R5WDtKSc&^z4p1}0C1A|&{x&-;C;=iASNR+oCp}{mM+!{B*CI*~B zV#-ZQIBN1B!-eYWOH)Ee>e=fmLdm;N%glGLIf z7{ZnJA#z}`nIV;KH@{Q($yaa3R>k)AB^q72qul%&(W1G&X8)>B` zU<29`(J`O^z-xDhu#9Ce`wT*}(DLef>LVl8=X}&ZU0}9rovx6Nx_zi44;v2hK>^m( z2Jqn)eGv~}`$jAyz!C_#V?D4{ip-*+zhZ%&pR5k79; ziNu+=Dmt0eoomANr?pE+Zk!!X#i|;{k&@D2`1t*=*b7gBU}ys6)=b*u$OUma2Ay7? ztD6n~ywCJ=ozHu%)1^Clapv>9p?>@tImibE&;fGy$Bplv?<(}0jM>gZBzG(zG3YGc z*(1%cX9>}V&-t4rV&cGSq2dzEYJ$ch536w;-+tM{B$v-1+VCMP$`4>x4(`HCSu+_H zp?R>wwHO9<^c67X>pm)Q4aAXOq}c9daPfn6KYy&IqB_24`Tol!C(b~9E(}}`F9Nys zb)u#7d@bpy+5d^>kr;iA7gZ$ZV$j(nN8-C!jGZ724Jnm2VCPPv2d^Z$_F;TWXGT)D zY)Hk(D@h!IeI6FPWoB53_d!-;_Wu!L3WV_eOW5lu=orulki8RlDIqH0Z-JE_d~Au3 zsoo(ebNrCSbXf6&)1@_`05gr9t1x4<{8;)OpD1PPJ0_*&G>v>4me~iPPV_SiUL-zWagsQlzCm584U|BgAmL9 zA_y-bFn?VqF$J*?c>e$&F#;6Ld9R39e~f_=6$=sM+jqdI4jpAUYA8>R(ykOc1IrRQ z0xg8z>ow0 zc@SDj1UmEE2icmc@acZl$E=xJSORXB_m_j}8-B_;s7YHZf;;*Un9Ba;RxKB$M_|T` z9p<*YZ01 z@f*69hgXkmmj3E&1%;uVNl# zL7n}v79u*9Wlx(a#esDYU?2bl1urAy^R@`dG|<-}(jsX%3lXzJm6-xec@7D@>)p)h z(mjO>5e*zew2?gl@}N6PQ!i$qym5)?>|gnYmvB_PKR}h9#}z54F5}a$qWB}V3=8%fKJCp@6RM}TTK%potyxW&zFcbv6(`_`Eou6mijX$d^n zDV+I^X|1D6r)g+eLafoCiDwt?ms=Wuqr=4@dA)P;3e@7?x>Erw9@$#u`dHF2Z) zED@SQ(W4W^PQ5kMdiX+Cu^jjm=9u8|KNKm zfXkO}{sp!RhC1am6_%@>#5=a#STIuF97BhZ827m}7$dx04Mtdx7t0cqT77>F#pnOR z5<~E8V)Ezka+%>_cRRTs_6zH<1Qh@z3jn+mU_b+0xfdD$2F<859sTed2t=}~0Wa4x z6W-SNEEBB)v^RjLth(9#3qk=l;@JTkfLes$v;fin)C9BL0PE}m0J-R2iCL=YTZNBW z9Ct0&h==8;_F#;x_LnQ+jRAu`KcL+6`VGPU?hVG6elpvng>|+#^C!lPfs0V<+8Zz< zTluI>iH&*WVrX^z@Ki7*al%)zq+_Z|X)G%6iQKsmuCWMGWXM2M7Rc3JJPXk}SEPI# z^-VG6Y7(X0&9nggtwFw%Yf#@Ha0miG=PuCl6bHZpPPA{MuXi+UVPJSHNGf}Xb{Hu8 zWAmsfSCP2(K8g<*n^AcyHtodJb=WK99?R5k?MYpDh3HiW2GU-&S; zV_k*NGQwq!R=j5H|Et!|dm(6m;QbAQf78 z=>sXA=HON_T=B-9p}b3sN<)2V1C{}lRBDu?c_P*TbnbzE4j=%q@#H?(&zN!*{&c*b z56|+!^wsPhn`4OyCsXXg?^Eoim+^zU^SSqtEIWY?ty)gi@N{W&py`!-3_u9et_o0u z%bJz~+>teiSH1%StPSu;H3XLDYccDw)FRjvn<|f7jUDOs9!OZrr%I4~k7xfAFOJT5 zF1fs{X89F}&V7=wMt>=${sKl~?Tp8IWzVpB0m;qttSYC}|NAP9mvxlo z|D>y-PKJ?ct^tyWvC1{A^S@oL*lwszMO_)f0oF!$N z$1FG;+zkPMV*v1=WC`#9;#e8RL4bIcUyUC$7;LyngW*bh8nho*-%YVEFQV9$FTpeD zC-AO;mMxZ0(bc^9TexgiQw^$I&CygH1nM%&q0do0Gzze4b^8a_=)@q{0q}+=J0Jw) z5#$Q2|8rYR03W{S1nc?9-!MrXej0>Nmal#vbgMIGY~k0!3Zn{CbHr)pvqOC0vI^~m z6~7J0<)&PTn9~{osdWMSX@7}7s7b&tVLx?Aa{L)_ma7J5@?wM{F<4)n&oqnZe1}6IE`W# z{{S=mS1I-d%<|7cV58BWA?ny%xR!{T?y;c>b{7@tZy z-0r>!1^D9y^A;S_-$I=%27wtcYnT=bq~kUIP% za_uuP`uiX-qmYMS7#Du^vSJjc{D^4DTnx65xbXgD1@4!nvxv^bEU&0EYx2efmD`Ed zy>G1kSDW#SIuXH;MmC}_J&~JU0TbGS!T(y*EKSnM)i6|?cfavF*d%j`3-u}1V8bpj zH4$Y9;}m79TdYADb^;~`&}f*9($J{UmUoGc{8BoM>F?K8Abf8HHW=%hK8?wfU2vg< z3SR}s(&-_c>bILMqj2=W>Zj$@P}fzg?+Ka>*_8vG#`# z)AVgZI&tK6O>pG$LcaIc#0=WBzNsq5{kCl>{-yb{QsoKhp6G`Gbj%3})u{naW!b)K zA5_}@{Ke%4gcOE_xv^Xdnuu{%8Pq66l5JR~c=YR528(j-^CbU$Gt|i;YIN{!DAn{H zOSO86Ci=Z4%BPwMc#N3qyKS-GA`K0MDrf=T zfMk5R|7x;6Z0Iqt1Az1&hbpgOt;|2706EsqQfqk}NF^Jn*#In@#mLLDC5`6!!F5C{ z-!hw3WvGE#cip-kgD#8+`<{>?Wi*e(aR^wn=neEa1P~KJhG$|+9wTwYjph|v`*OnC zI1wIyd-0~v=8gx%61U%??X31Qvp@*3D9z2gP)ARaVOsSHOZHMua?1# z<2PhP>UqdZS`~0B%oB*gV4NKh)W}4z;dg*15{TL0*ZxAXp(jI^{)wZ_e|9z9jDEu` zp9YV>SO#t6(6dPloC>WIj0*!o{hAl4ehq}NG#o3XCV-iqme2Xz1WePJ;Nr41K3xx! zd{L&+_2Dv5r!?e@vIY)!6AEyLKy60s%Woq9AgdTUh2jfdfe?WYFb~W~ZiE+t_r+?` zz@!TvR7XxBDh@s(-;nu4dXN5eGKah1v!%DTU|K77uDb}fXGd_nioM5TSfSYce3 z1(f!!0!wiR)*#Q3SyCrGKCm%yqubD=2R<$_?H4EiH)2)b9q2g@0_P*0erR&@=gH^c(fJk$;?b`pw~naJ$qs{_^M6rKzWq+!6CT+ z=@&TzHf8774FkoH0E{97{;ZF<0vvdW=^X+vvtsqEoc={HCNNAJ*t3-6teYW}Bp8|> z6k^Ej)n@5EspS3* z(6HcT4rl}5K^f|4%{$nI@(|Rd{M{P7kJU(8iwLPL3b>}Da@Hca;}2n1 zubl|yVFNr<7=8lQw%@~>4>e#eVe8vqg80}>-XvBN4}f~GQ@>o+@Nil6mDqi8o6#V0 zI8){`W*SFU=$VVJ3p$c8oj^DYAuv;QPAu#m;t3(fG=IkzKfKt0s5LJ+lh7MkEuZ=m|w^r zlA5WmT}|zpx%<04$ zfPs@xdwar)J`*qtHPLfh5Xm+RX2qhH;SAiij4b&?>Da{VJWD$D8041+VB_Hn@KNsH ziY1mlc#n#F<;+Fmn)m)h@m&Y4w05mR2uMd{`%kS2M#G__Ngj6*1qJXO%B^o%V;1F~ zNX(#CKWB}@CZpW7(rn!485OH+`=4Y}Oh|dasRC>ilc^F)2-v%q;*bA7ir+l}KIz}Z z`aEX#`&L2d;C1U&>YDHKb519bUPXK3;3<}SsEZNUjj($svt ztTrEXnQsp`J~Pg2PrHv&25;INB3tsPpR0QGC?o1II_jb_e^Q11vpsf;1$$c->yTYo1u7`l^Wd(5h07@65!uMQd-E*gwj8M`q~k1|!wruogd+2t z(WK;lVXua4u87f;ei&^KJT7*@DOZ>hIwul z#%bMxyC}X5!ZUxe%%?1YH35vE;0*))v@aDsy!X848SvuEbx;r#;E(sfUf2QHY5@dX zrp`b_z~%M^X?_X8_68h7oa>$q_=W5VHDf-as_DALFp?Bwozw8+(Aj()nYp7F6%zsD zunN;$QLT==RKoX_CPaUET$kd`VBTPWmcVYH#%*FDK^dH;w*!#7mqJ)E+fh%2s>LpH zqURXP+8@p)#$vZOCIf`1yaJcceP|ohD9p<9<~&_`n$d*6!)o-aieO|`38{BH>@mzN zL#|T6-LvM6yU+>Y6xgbl12l=4R^Fe!pWp$tjfqnuEHJFW)YVAE{-;)Y{id*G0{ zS_U|<7IikW6jycvy@oe%Kl>&I%Gs_XjGZ8aL@5AxE6BnC7_R=MT&w50bngoR0Cls4 z!Dm3*fEUPsaVk52{n&vL-Un%6-%9WhRLo>_;4*s+hMF2y`~iWNv1rIhvu$t#mX#^H z3TiZX7>V)=GbPK>GxTeT5875&X177{)_m`(#8nUjPA|TY&TAL{lj=5XJnZ@x0Iz$1c2wQarnt7dG{~VHFfY4(PM}o z^x>yvpSIqkQRnbcTVv$9aGgy2?a~w?`a=EQ1^dUF2sZfQWi^8QY=g&0I@q_~+_Qko z>;VBFjHw#dP{fJf3D$8PouU0L54aFzH*KM6f%lAA6Er%Tx;mybTHl z(1x1V{~YLzV#cO^OcVTg6^@}%2xz#kZtC-(M}@3F|LL|RRgY=ppin5F)U!*V#>2Xo z4Y2LND6FF{otv;Fu)*Oc&ms6^o4TO!o7Q8fAMBB&6@yMOUMr8J0?9~OLon#%?h4GVu5cyt{ba5(`W45EgGgFELSVxn)IV~tUaIv+tZu;#q! zHESHk8LJ?u@W7PqE#mQrg&X*K=NrT@gwSOzNdag9l&u!(B8Gi3Fj+(&xT~2m3A|^@ zdm~+`hhP|%txt7c?$>T1YIax)aPFV517DH3aH;DO@TgS(C|8_wN8!x=xlQeu$c9jl zkBtpZjR5I(g3S2m|4GfK$ehlxdV*Y$D6X1ChAs|!Q zFrGEkv58RNy%$CqesMIEZ~B@0MeowvQh+U1H@sw38Af3b>TV%g|Z{f*Gu`U-?JWlmr7-Tk+;H!2LSV? zj=h7{zDa)G&q93SM+t!j{46KH<=`jI{VuktosyFx%?sht+7MV+F!d;@!S}lz>+EIF z9u)}GE}lkpt6<2?uB9vlcz;QCR7@YFF=F~jc^Pjl#@d3l3GlXCpC`8=gzH!n0_%d@ zvFVGKD|&E;VsMrlUdKN}&YJuZbb&NqJ|6qs&jgNC1AKCZ0M|7K6Lc~`(Jlr>=@HK-v=)kLR-<0Pl z0idiInxHqtG2f=x>7Pj$w41akNP)o5hVxyAj%`6N&PRu+BU=a``AzJCvu^ z=t(5XFUXY4_?hT23PKIk=KO(Y0mUDx5s=^zj5w2l1y9~_&lK3jAtJ#}oO3sc)2>qe zWGfG6YX;+0s{bihQtT7=WlNr)=W$jQ836ZvJ4~IGtA|1QEe$TmeUCOs9DS17r4LZu z>J^E#e-?N=zee?b1l7pta)4?5J#F{W!DPHOErQcI0l*Kna*>vMq!JsTYH>;2E(T74%J-&(EkFj9 zqfy)ZB;vBLG9#wki1_(a{N&7>mYHx@sNxN~Tk>vcm0O$R+dB_ri`KxTdjo5oZ5uR@zzqXKSnB^A;ln@VBXdhHXoi z%;dF7m)G5oiUMo^vjHDf4WjH>f*5}ZJOMUfIpIA^4B4{@-oxD(LV9D3%gdfnO!*Co z3CD*%v&>YonsuT~aazbshczr6p#?AzX85b;bQQarR~4E8ii1P?0Tlz;PX_;K#qdih z_QkiLrvEzPN%Tkv0+_)o4NkT;<2k2e+AGH2qZ`G}`wH;ANn-e?{8uKIIe4w83Ic!$ zumI2zE}qTK27xE zA4o2Hm_(mrt#D+`#Nlgs&@lm?F2?iZ+?}p|2=o%W_)&@I8K|2v z+ce!A#1AF>#II)opw`D)rk{EQN!zIp#jbvq;*Wg_o)e1_vFO9ri}4H;{VB#CL9r{q zv`}UwP}JG@!&e%B+C$B&p{&Tw){vDkA&)fmITq|X4;57m$MLIBwCstRl*_d(;u zLJb?IvKkx$k?1}cZf;l-8#EP+iuWtfBV_ZY7v!CaZRT58qbo$`zS)}*$EH;8-HRm^ z&~fnDiS%&@8ha4}di_hF=Nm-p-Uh=*pf9|;N_ZL!8jk-Yi6N(B>1ry)r=3ND_lrP3 z1OZudfT~~nLt=@efV!qp2Zf$&rg50wd5k|;kTF?M+D1myCEAS^GX*yTTlCZJc=@-ii;d+(1F-?TLng;?5h zy)O!XFnp~)9M7{_UI{})A|p+J7mvoFai*l^nq0o{4wv^0(ZXo z@Y6lr3WXSVEr}O@PqgF#q9_D_k{(6^fT}#NEm!WaYDZ2oficG}evIU>zmt6BSBS>A zT^UoGET^WbpE6WqL84zD5@-BBsGV<4l`PzQJnK#Ik*6$#2ZmGv0PA5p@LI_Jl-Ziy z3Q#`I@f6% zj>#UBtO;P5xP3OISP~vpl)mRJ*Yx}J<_YUu*T+)_Cjf*++_3R*XH}u6RzE>xDF9H< zarmIeVXYL)0H@snhQ^C*AwnluowJ~V!6&OGfYVg&46*QNP%)zxBVa)J_HQsdfE%V|4W$V8yCZFoO(=X%*3jX z;*Q3Ggz}+hHMN6iD6oBz(nuM_#qWR@uhd{YzS~fWeGXaxsQX3ta<~CvGbz^Q8G!r{ zc10UDQ|z;U0awI(5&&x6yp7`9b|seG0^m_uo4v^92phla6j}ILB3huxE(D~=-|UvR zp3I2#wTCG;%MBu!O1Uw14D9fp+n0PJ4|NUba6wb!_-Facw z4(h*ts21L)`YdlRJ|eXSeqdv`ZL~?PbJy2qr}jvo7>Jy90#{} z5V+GYDIj+)%Pw4_K($uiu``xK#+Vh)b`;}oFiWdbRc_im9?q>GG$`?$v8t50yJ`OTlBdeS9F@Fjt%8G0U#;@hk=*XPTSVPzzME= zz3tZU#h9yM#Pc(f3-PgqEC2}1BqYZkPZ?7_i2yuH-nTC4W`SRVfs2V>Q$MQSOLFHz z61%ZmBMUOs2QVC+f5r5h*fJ6Uis9f&yH{tdZq zYTGD}WA$%cr3B2Z4d(BwYzW@J=xj{nJP5?Q_fzcC_kw$Bj+M1$DHGJp{RzoE6$nI> z@^RCf!HR0c<%i)nX7ZdwA_REwtJCDRntq4Lcnq(d0ANU{yd>k7p&G_>Yo3If&Q1VO z?oQ)QAzJu6(YbrUu&{0)7GM@Z#V|apKG>+qN{bq8k^A6xoHjv$KPZL^+Q8F@_*bX^ zi)v#6^T3iWfKMkFb}>US0oAYTjf*uw>Cz-9Ah&-2?FtMmO+Fg#uU@0@&m^%0g?ZnA z`EV&db}A+k=UX5+oF%^PZK``0%aZ9W!coC;N*R+U85MU*qgF>bN ztIt<~d8>#gb`=#9K2P!>Tz@_eIW%y4sEWJyHe(j7&ETy^wOPDfQ(Uf06sR&Z++!R( zuoR_M^^5KUGnLZxnd;Yd&;s#VfP+veu<=z0*BJRtMrouGeW8Jh2;wjOCkhZ0I}=95 z0iouVA5pvl?@MyK_?^@YFJKwW^z|feYPFc*fzpU3w;&OZWAj{4OzsBYow)GUZ7zegbeqX~1ypRP(u2w*qCe1K{s3J!s0 zZaZN9zzX@tFIXj(0aiWCXLiuOgv6vvNv?n)+a9c8hX|q!Mn?vNlu~2XRFmAXFvQXw zszwU%4t^{Em<$Tc*g0J~BgIk}d2s*~15o{11?|#y1deeK9tGHCcEd+T>;KC8q$`%F zqS(}jg9gon8*87QBu>6HSo@$Qs-6Wqf?AeXfXX}W@;mAMd7l}aGrGn%){7^?^IB{p zj1Ub?+hI`GChhiZ&tBvd6K+;7s{G)8!)H3BDoGPHPQaj%ii*wlk>Y-3?f>R? zG8gEc`l5hb`y6a$U|VBirNyqN1CPLW2!qs+LB92KlIvi*bN+33CxRIm)_(A3s^gH` znb!WBaPsVp@tHh3LZ2xbg#e%Vtdd92SSJ8j^+b*{@gT5$J%R$gW?yjGL=vMXVj1Ay zVAd%jz*%Azec<+1#QJ12keeK%Fr$>eR1zU^i9@p*3IGJ}4bdgdT7O5_b(Hp10;5qa zP^R4YmQhld$czGV`BMr1f0N{(zbHS=B&EMJ`w$v<)}Ii>>S(wOe%4>!?wr^pE$x!o>NUga^*E0`REgz0N|5gc}tElSuTGO zv%EvrRS=^Q6QDPk^_zEC<7k$VBZ&2bVUPi{P#^BTJtQ~JYlg<%2uOkL5UfmBhN}@R2uD|10O9zJn1b1Yvwb1i9jIj1w~{ zHWf4f-bV+*9009AQon~gW6hfgISiT8?@V78%3h~k&Gq=0e6H`MI&y)@_dS)! zxhB9%}b1OU^onT53;Q2)a?G%XA~ArYh{n{5Xp;BsLHAXhz? z7M*)wP64^#LG#4uOEL0H{A2Z6NPv*t@`dkUAB$cjPW@G2q%|*n7h7&)+0lHZu(8ZQ zOrPJ&R6oYf_ceIW^}STbROyoN*CHw^|CFGkXXHMaa;lA7iobh%AUsVn55bOM?1p5>Eab|U(GccB4nmRmAcCNfIhK`Qe>`@HA#-_oMP-jqCt;U{eF!QXgv0#)8~QN(!ufDdCD| z@-_3Uk+n7bvM<|+A*Uv$HYp2Dy2)i@z>^Dty_-o`+tww==vWNxn5j0O`*Q4s_-C3S zJ2~Ue+=%er#W4K)OZLQBQq;WubBeFsU|c=TJhPxpJWl4kMwx;oQuV`oZW?H)4od-z znt*gg>vrg4x^xlUHyJV_D%zp7q5xhLxfCIN1E|o&;IpxAI11a{P7BQ?P>lG5(X2(a z88cA16zj!KU2OFVG|eQjSHxUn+A9x$&Rr21a$-|7DXzqb3zUVq(b5j*SIYpeLr7hj z0-L*)jRNsEf2~4xD=k^p#9&07+mjf7L$;L0&*eL}!9!>niF3c7-b2I?TdP#DrvLyz z07*naRD95zhKI^_$v?ffts&13>-ae^M>S z`!CLnq#5(q%#M#a1TWK%s@On609Q)WCgcj54jUmC>(B+F04!?d@>vMHveh0fI8LJm1?Qg{nZBiF+%b|Jn4AG3cka0rP}SA^1H`QaTTKl%Ww z|E~x3`KQWVRQ19wcnMIo42(P_^ADvp=14T-H_s6)WndwIi`Rlc2HN_mr4s=BP^(bV zal5>9<2#?Mz;Ep7EAp<8_VXCZvlk+|rtzyd}6hS^jz?~$}^X*TQU z7KFgWObL-Mrk`BD(1ie|p(P!i0Fc}}E#;b-=a$t7zZxv6o|ybi5t$DlhVf^W%9E#5$hs9AFM51}=v(kR?969o{#QNI6}zu7;l|3^(hke9MdnA1KJ zNB@WNJNM%-qLu;{yn>hy_ov0%Rv*Y$zNz-)@G{J-wBWUWxbFrH&&%b+r(X|&4p#pc z-vcJ;;o4a%(L90L>}NIt2YH+am*6WXd+G!LFEv`)Id|}(T4(|O6s+c*`j9x~^9@=6>_Z+9#K@~i3?7QLMKeS^ z2+B1uMtb|#W*OReDqdTcyAK%8{+0DVghg@Wb@r6w-R6#*>PritW?x`h^7;Q4TG(m( z1{6+Cx#(_+zxJRn0gk^VQ9g{sLK2M=qb z6yIUaV!(ic6x}2*%45c_n13$IZBmIe7hIp@pC@VLLO=$3I03-Z5iRl*1G`)VSFlR# zAszt4anJ&kcE+0I&wvo4b`WUS0qc}L2P(XY^3^{RaX=IY=_#;#F$5*}*<+2}6x6J} z-yjm@P~!&xar}4T64=gH*a#K$Y3Ck_KlgpZUJ}#!Q!QlmOQr#+YaQ z68)ZG2S*b!?OXuWKLY+tm`vh?TTF6fOjG;TZ>V<32aQSu#cOiORZx~<{9Xo|vBm}R zFo`KgDg zqzorhB}j3PWhv3K6O8z7O7YbHt=Orz!WN)|KN*cj84T9)r8}{mHB{ei5h}J){IN^m z^18E$p1S2-Puft(y31&6>y7{}W*O-(|2_`fRDNKY%zMaRK~l0k~hWHJW@1#&4VE zWGkh0JxAZgAGrt-H&9)`vL`49%b+&qEL zJGJwFNp(v;q;}jM&BekVGn4A1n54cJc3ENJYp5TSME`V^n;dm{d{dwE5m3)t38$KW zdD8_sPZXp6`x#0++1zO%Qb4{3OWb;&BXd$i#DuSr7z)+>te*zotq*!mG4{61{u+iwl4nD0_ed z6(k>l8hXcvq1LHjk@3v`kqa>MUX1t{{%WZV|0bLg-0knsCX!FXi=$r|#XfPjze=P? z9pCmoRnNL3Vf7ys2T9_dN=+VBSt;7+_m-Z)>!aWNP12*C^}HOwLV%_NAHxRVEMSs` z-P%@;55|DB0fB*5Jrt~=yhp$}uoB*iodRJk92CT`3rQS(maiG3S_(iUx%lH(KnOVy zvUA<~;WV?z{L?SHo*$4~fhFf%X4h!SL1BD%HP))ql)~ z9fMJ!DVUuy@GC$rr5U|G8nw@7qDCP==ZioHC_vKc*1Dr_3Scmn@3Tu_gD%N8fx$)h+v|(ds`iLX98=b5pZ^{k#B< z0>i5Q<*GU4#9G}2R0g+ z3WGqNE&7--Dowz9v*AK^L$q`&RO|=WlYHU^M2myfzu(ywge`IWr!o5<8(HgOpZF^T zyDoM@01J3Kc9MJmhH-1AM^?vtAm+eF@_w{y%NF0vUwt3kcT-_MgLoQ2K(3uZ@n?RE zC4}P;KnR9^0U^F=9@W4;N6q|GFl=k|Nx1Sh>rbkOR=+pS@|j!epLJvXXKW?}XcWoy z)%SfI+ud?@hwr1IK3AuFl;D!)mI6G>u0lx8Bfp4~0B=a=fh1}XF7&l0V90kA2Kq69 z+93v+iP)uBaYuGvfRhp~3NZmn-7qSVJ_P#<6V zFgE__99^?Z5LK`%1c1det=zGcy+=hg(NYKio!XHYa7uJ_%>`ztxa6zf!tQ!MM@;-0 z|4TNgqXap`+6t?iO?*9V#!l>T{pXOs*};# zp>eqihXQO1uo_x`)gk!uPr>YgXLv8M79iNN0z2)-&i{L2;~^hQ0W5Lz>^DAV8e#-| zzHsOqWlb>H#vi{_ErIy58u!#mocTR4)jpm((VU72UqL{b3(Y+}lB%J!JYbgbr*1)P zd>98-?@CJ1LN2kfPyB(CDgM$uh@&OVgosk$Abu`@u#mLxqSzT zD-a)~%aEoIEv{-_#zsG@RzaY&$ZU`$C$s)!X35tcP>=Dik@0(;Wj#%WI|+YQ99a^u zCZIl@2Gz2xcDJ1AGyqxX-tr!E;E;n$u#SHd-sS)@9?u@Tlwh~M$FNrb)+7g>7K|1h z!H~LPSGh$#XN(OWrChrh?Rp=oQD_2U5sgH_S{OWc?S2Gn0rOw@mT#+ZE?hB@@kdka z91aX+IV$*Ug&1}Y(fX%IBI2J7-%^7=sw&qmgYb&wtKJBC8`MwTXB(`OL*1gb^nL0- z;NG}dX=`jgIc4$BTAR;2gKuP*b#*wSeDfCA?>q`E0z7&qVef!|Q2+6xRP*#NVD%qx z62SFH@k%noZQ=^Y#n}E*;OAm9fnxZX5`^`PnYV4b8uG<~L!iR3Ozq^fW>DSkmb07y zU`DGJl!{-DJ(x-Lfwgw;V**uN^gEtt6G9EYHyzgeS3{N9GZ?FKW5HcS92!atgx&?fH@u95x50h+ z@l}aW`~`+ybrhfZjZml)JMS*c;zz65sxO3Sm+}rk?D6GivQ~@ z1Ym-O0|s)wfoB&yJ2?B>m_bkSojq`dvI!(EyBmT_kuPtL$?VmER1h$G#}h{#r!)Klep?0XxPq3CWpUk#LbXTV%E=^ zgiEF&uQ?}3S5Vb-Y!bG0xBa?5S0P0;)T}$rvvhSyd7sC+hVd@t^AtCA**RtYx*oc& zy58QSPGfMa!#9$4Ie_yU($;AJ42az#lkhBT?*SNTfq@U08mI}P3k(9qb_~k@CNZR( zM6U^f@NxJsQ9dOxV?0#td&ZcUDWYwQ|4q~p@A^Q@K3g!zm5-5p_IiQa+6zz!sK}%*Pgb_X1`7B#439vTcP$jk!o{KH7VazBFVzVlEG(>6C zn5mxdt7LBlISWGYtlvWT+@RiDTgJ~tDdt~-Z{cbP#3L@xRC@Mjs9$^<+zz*Fq}XR4 zg%B_?d!8&QYG3~;)y)CzA>dfOQfXepz>JsQD?MK>}A-4Vd0~&bND#Hv^yY`rEsJ1E9T#+BWC`8gEkB*_JAN?{t7g7_fhOB z?A370cLHKVB)YXTsp=jC;;IAj{kAm&)3IXye#=j4y;Ye>IP!AIT0H}3kDVghnbN4K zaIw#601OD+Vw3Poaj*u1=ceE@3^uy!hq(T8?}JJfE_q`xI0OXIb2L#87zHkUDKWsC zzQhgXHX4s@T1T`DmeWw3D|f?y^~yzdxoIxek3S6+_Y0`Boz*zklZ7BwyNgfX4||WJ zb5ZrIWr%@Oux)T1BH%$FVaDyVUy}=9A%cHOBd}&6(MQuru6!Kt_G+w4Biu9_m$u_+ zY6uXoBHFb`?S&!d`~)-pTfzKiE1MeizA^L9z~D@3paixa-LU45J{xw4NtTRh9{l$NDHQn4Ak9l}rijfY_92F*thzJ>Nm{9>2i25awc zr6?@Fw>XrveD+tUqrHHWvIX33)^4$IQGyYzM=zoQh*i<=NTMWH`eV;h>`efszkLx5ULj!Yf)9Na3P3po%~W#slyx$^DN&>t0OQ=N zrorIvM8jO^lku`d{GO}Tdmp=gF6xUlu|ObU^mi`Rzc-J3M~7+3TpDX(H3JVIG+LF{ zSla?U;de0$SZD(Fxg~%sL~Rw1p#-22<0*E{n;3m8bnRXu)WA*cuE|&mz&4;aBaCZE zDrY(O+fZTtZy+In2W&MX<|d9m8UE?8hAuzfTl@T-*X%<`);meg|2r7X&ftutp{=pA zzd+)QJM-7BEG5eY*x7OVkFd;BYrVvgu?VIE4~{J80@#Ro@~gho z&v}zj24f*0k=_Xa39_|;{}|xJML)$%@wSS6rc6C zU_t;R(}Qg>Mx~L*zR3RnYW^mp>b zaP@jPAg1WEOZfK7C%%deY4+QBIQXez!^o&2r|}@Ce_kBStn`mh`8*)w@uE*YSK10L z=j1C$#b;;_fg~tYW3#M#!Te$LC%*Iy3}H_XijnI7e|uK~Cpl5|UwUTe*o$R3mSed^ zE;$5*^+M!QxjaxrKt2Q&KTnkJLj^xw7ePf7Z$D8Gg%uDHRQR|>E*FrS1(t<{g+18& z-ks_0>E!#rbXTU5u1YHDbWhK0jE;nr7!Pn0MrPw3>^5kKa@d?5--9mkb$Gvvo(1Te`Q0%ZB)_AB1A)cp;+=Uj zzBsrV-!i|1y5rsJXnZ4I$nvqeVI|A!F%u(3j6aBX$hVyb`3REMV-!0cO7rMW_MQJ* z4u|uyx~w>e;D_$6q5yUL$7ffNmz;HjLYXAGW=g{`~cfM^b_UH z)CH>e=W5&-Djff9D!lXiIA7co(fH=xg0DuNc?7+BKZ0!={DJ`LxL9|h_y^#uS%*M5 zg?^gzn93nHcn(s@N>R1EN!i(RGt7I|xgovT?hK~b{NNYhiNS?Kb_{^Rej_&vy`8k* zp=gZ$ukku!1iSl(w_;@UY$|;2KD>L)@7r_lQG8}~3kF{`Ffu+=K@J4Cix_*S2cBT7 z?aA2*LCX$@R%bWlFB%&0%r3fD*32bu-aVM$=$}M${{=_46kW@ZiN>@M=(>7vH}V08 zQQ?DsK}&*&VmNL5)O!0_m^kMaU+X-2LfWE8RZ6H;uc92-0Tj9V%>X=TWDV@Dg~aCOj$4p_&S zCcm+s0Q(9cjje}0Enh6`1W))G-bJ3-cy%y%%Ka4_>8AV%8s0%R*s~xjS|=NGsY zes{bSqtTc64xd)T=`Wv+C)*dWw*4Xu>SG$n;HOP)*cxcuz#ZBGoew?^4L^D_I`Vmv z3<+t`f%i1VLfno4f-CV#fUA+Comx}{y%@f}I7q{cjLsovk@NNoaFFJaS`W=7Jf_0^ z5 z2Q9s>S)O7`cpYE^0ENv)b{0RCPMAQ2(;uRS=LP_j_x$h3z4EhY>^=m?G(A__c?<8y zyW`XG731qwXPraC5mJyFYrcW`=3&Rp4Ff;1~pT^NP*bDVxe^L`IZX zqjQuj%duY_zl{L5ki%_7D>o5vC<1|)Ai$0RXyrL-3t4=%uIeB7VZ>CW7~Vy;%lt zVlUEsEPkBV%uUE<#UfkGm;k#NP{dXn#~}v+i{=td+=QGh4{Es1Ja~`h|CQ*`zrbN1 zNi=5LhA{&GEC%De=`@TUhl6m{~%`!Jm_-Fw1?o7x3&)i`229s3_Jdb)dJ6@Um$Bns6^GlfQr|;_H@k#0md^RZyi%Dy)c_Zh~ zZH|UNMxtNj2ivB+f==v{z*Cls_xeV4ma$o%Cg~)L3EHPfAfO2X>>$99@iwLdZoIGp zS>d$%@Je9M#%sR%MT`e{JDyB1;`vN;Pv#i})U@;F-GRY@XJbXcx%m#RYrOWkA_VXI z_d19QN2AMsxGas^s1@Moyhne8PbRUd;4(NSG?;#{$IhcoHZi!*ALp?(29q9yc^LLV zaMsm$cf7KSm_Ne3`Y?PM^E|r!vDi`$y>^5Fy#3RU$Ys!{x}5Bpz>2sc8jVFb2DEH z)G3jFhW{QJ4S};KCN4SwbHwj{O8!EI3nEth^VbvDA5Ydh?2BHd0do4V8f728!oX`0 z{{<{|e%s#+2fz-W8&2*e!_Vo)RN9kwroxm{sPJBVcRvN=F?h-4roM}U4tIZsynAlI ztA)=X7@P)W8s7#U{sEP4`I+B?W<2Omh!wWx>r|x0UeL&U;n?D6WO^x$ ze0~J3*vsW<(?VD9`S13bKM&j_J%n7jK1n<#<%}n=WqRcK*EUWd>REdQfRCSK8k^pT zEWj5ECdF}1g45XvlLY0kxi_DT74B}tQ_K0}yyY7?AnGB!=dhCAy+0&x{;U2CJKRQ- z2k((F7|uE5D_Gg^bNb3|%q68&SUvJq{BFZM3;14rIVO1OM|TN3X%1xhhXy-vOl&L8 z(`|g+*S6qGkXoM8jRL&NqHVCQ#Ey8awKHbD-0DDpW5j2RHt&IR$^9!n*FE$E1OQj( zBDM0u4b=bpPrzodTiSqGa)y3VI!;tB4K2Vz=P(f*1aartgkPd5u+z*DPlDDbrE5`7 zl%Yfw07x)}f>V11U;_ZjEE{2x8_|iIVmtue-H+R;aRXqH6&DkWc+Win%%9_xz!{BW z#vu$~-S{VeLEgic;cJ2UKBeDQxB5no(=k%!Kk?(ncea>_H48q0$$ieoXI+~`sO+KA z0zB~&=E3*o-;2Sl7#O;AHUff|F-UGT2IX;3;8mY;xM3BID>sJhh{TUyDXwZ@_1S2Ooijo^Gls+L#{h;(t^BuaCwc z%ak+yu~@cQZA;~xB|gC)w>QFW(ml;j{cW*{>orehbb)~D*#IC*8$1_Cw!h+2LlKIV%9 z4^Pe^7{vGP-{fP66`1Vhw}<&pS%ow2#%T84^TAC*!H6xMG{t-R_e3u~K;G&N)h9u; z|9&Hrb3+oV4m*7@fUFmfoI7B-+WmN-4ULy=c#w) z^JPJKExP@Wq{_^vs?I;HW0vR>9khHVB|bS@myX5G`F?F%#~(FL-hqG(0HPMQ#~};w z1%ivt`M?kG-FZImqP_Y5An%F~VY=XnRQSZbl-KgXA-&@c*3Bbt_Mh1*GNE5yjkE_2e8x|Jeu`KTN zFJhLz9r4->!E!FWLLT*Bb39cZMliuo{wbZZOdso@qZUpnCl-5Sb^gMp%?tu;4}h?; z-3J!nr_~;ev_Itr%+hvPkljean{z$6S75Rio+*tRw=vr^0+*c^U7_Bqw`0*B1S0bu z!whuuiTX>`&&)XZ;l_r4wFXSrF!_VVSPSN<1x@~*dlv<<%X$Ne#Odj(bctl}-7q=CDpS3mbl>qsRhuDcJE z8cBT0aw#(rH?7VRwk|nrp8lg1$TJY&Hj6hK095T@|3@sqPso^ouJCa<%CS2|3bP%0 zGcQ9UcQ!dYzmW>3+)32CMK++kxOf!aT8t!Lf~AL-U@F?>FA=SJ6?yn9a{Vg24uKIc z=f6LiOx!Rmn_H~{S|eWzKOiw zpN0X5o5A_xNqv)Da;b6ofp1dj#ve5HxnJ#aH&O_#s=ao z;MZdxMvy(03a8(J*JSyOkr{aO$5g!TJeU(LJ-_No>70Ffu=-BggqIx((PBuD8xe;G?EQ-1Ep@`Wx!ANiQ`cw-!aE7D2WK4avc%)>Z=!N9|`9cH% z`ydFor9FdyY*n*d)&j;B@aEq|-tSJt>o826{fXP*{LyQa!&Z6rD(b)Lv(+9f@zyEL ztt-*SKBY%>mH47X@^K=jA&!ixN(X*44lf{5AtdApr_W>}9d+gj5L{fRo=JB_f|EB8 zTO}FrRySe-V>y;^m|B3R3Vi}kDgVr8KppU~B(Xr<1oHt0|6Z021B9v5qC-*exG=X-AO_iXXEp87B@Ku8MPTt?YO5V%Y z=cbdh|9|0&fJ@0+@G7}iA_!PDD>rNlWG&E67VsXs1if9DGSj!hz&|ojX5SuHmX11)YEWo3Q zOZaB~FIb^$9tJJtv^j4&3k~9LF_-&N%oT71d5a&)3E9F}3$%v?yho;Cdf)%S41c>< zo&We9a#74(F`N2-cRYEoV;l`;IL^G)98;X{s>5#7ku}N>h1hxd4vevagE~!{o*|sR z*e43C**lTWl%Rnizy<)OMz(a-Pl`5R;hh^!gQI>RH;XuL#GLq_ya545nY>@Wm-s!Y z-K+&hf(5+$u&Uqn-z8`71FQ32z#iF2h$Aap9(X}$>w_U zgUJwjG2!&ZK2hQb2g9iJxm?^x1z%8^t!3Dkz@v;;tU|XY=J;R!gpwpv z=H~liWc0n5BjC+=YQmtyyZ(lk>uWa6*-4}6ra8REtggOxK1us zJLD(-%4_qe&`7txWT04QEz#wYY|#1pIt-EXZ<^ER`s863Hcrad0X6{euPFO3wFNi` zSiS-?`@KKkAYjb4SPAVOa^CeJa__j3+&{b()AP;97P6a430CJV=G( zK1YT3U74F2?uuE|fBE~UGWRw8irpz4N#4$%@wAvJb&DEqsGj_r=J=x(Y|uUdT#6vT z1^|K8Y$CMD38?W};evn}8U0q6<1<~R%toROb zCr74DOCQoKe9$cC?@Qs4{w>-tyst%)62zoEKT$Zt*8s8CQxwx4TMK9{z(K&OH3$Mu zLU;X*TCz+9SR%FX@%yQ8_^IUGetL81*06=XRo14`Fe8ZM2L@(S%G_DH{`fXW}lzh&l1IgJFGX^gBCwc=gEph*I z&Y0(o1&n{xwsSAP^^UKV0etM8EW&hN4p$xTf8@n2E@)n6j7uRk=s zZ>*zb>4wh8$1$Y!D-}bVmrk?N) zW6`VyA{Ou-JRe`ZoJ-F5ahTTkT5@(fB|_2IVfo%~QUCQ*i3YHwFTYl+ZNVsbk)hfP zhoma2<@qFO9hL?+z*5O$r;}C=-XRHYwD(|QtCXm0dLKcf%RE@ z=PrVn=y6qgl}4NokyqUpoyvE5v5Exc*LM{bV2?It3%IB}{|@>fIq$g=4@pvsmXlq) z+1HTw*RPPbYBj#OKAW6(T$B^Cg|QZpEUPaLn(BFlR-cTk+=4 zQ0b1}BWMPyaDZ?g!4q+uFasy!lkh(S+K?y>z3@9BTKPc3CzC|eL0vQOMzMlpA2c{> zzT;<6!ub!1Z9K&eKFg+KbG_9z0LWrc%VTZJHLj-wG z{+PU5rup5c&QV{PrvXn% zEBRd$&RA7bVg>TJHx?TQ0c;De;@Td7s!8nsmRJBi0R!FRiH`m`b?x`z=7?M|6TJbS zCGY8fS9=4Fy9}RZy`?#_Eb550fIrahmUGEl_&Nspoj`>ne+CCVA=mm=7S5plt4<|% z-a_?vSa61U1pt9VN#kHOv;mgR8X7(wIp_QJ%)qC_j5vO#8B*sjl+-xxM0*N;vDe^; z;@EvH2=Hk15f>p%4L^Ez2T7jumw`@mgMa7334{W zR{>A`oxF$fI-vX-p4_meK<8*dW%t$sY76jF|J`3C@1|+wbYn{DlYc>lDc?l5e7;{w zSDyVN^M zOCx(qyna#uMDtCK!@+|c1ZZM2OOvw&a1oYPcvRl~{WSLDmyy$pUV&z8t7c(EwzILc z@V(^hFqxe9UO>(pPHKiEi#Y-;;LX04yxY#hC#HDnfBSJ%IO4~c-EW)RYgW4F8&tdn z*!;O{%(z%%$C%&{0w&Q7N`9dJ#AmaSn;;CQgmQxia zxNHLrBRv34Wm@k_3^UEQZ!4swJ+Kx~SO7PCaj{4J<9DNRpSqGdx8F}eluwp7YdU$i zex1A}%g8wxQwtyZ9ij>LlfitfI|5Kvzew)A=acuZn=x+%dXSF27=hx6`B$v8hWc+j zgUSzLqAVWh$G?~@j{qR#u+unM1#JjRr?-MnM;bVPCP=}j!;8)v&@KUh(r)1=acz}i z3$kF;1ppWHE`;%$Ff=<>bz5jHfcF8_AYgsp1R8V3CDeOxzTZ@bOpGtDc^t&n*P@ivppD@7Qoo(M=m1o_8;I&l@b*WISniL;WN_iiMdzTUGg;b zU-utWnKi3AvtQ(CH7YO<=g*iS=aa_CDriGkQH8~^f=?7h_qhcC3R@1f^Ea|p76&dH zF)M#92yk8Rb*FMc&r7&Uc9C&y+FGDx7Qkmu#U&oCTi{U7ai64dC;bRdM*J;Qb2e}B zL*(6s!ClWhiWvkkdC+0!le5QZ%@Jl%+tvaeCXe#|aRGTR&%tCqdy#Y0CFE@TuBPZ) znK_;M|MXwvu2`iW?5B{LdjOEaG5hL7=#3m&ghx@WAgfufVXmA4iE z;1j`@5dic)h8_U>(X@P0Y`V1;fWI#-$B@()J?h%$%{2b3UsK06`!rPtZ`L2kyK@?O z^B3T2fj!AN^y}p8(xfjFnpzVJp2`BtoeY64B*xD)6?Iz(s#j1ZCLAi}Gn3ORo!FyK+)_<0d~ z4pjh<%0|)3WOd|O`B*-J0DKMjM8`MZ-FYI6wsTY`du%PxG7I2h>=^6#)A?_h`8xGK zd_8rdaqir{d2y+;`M#LZ?Nj7zf)?btyU3ey9ns4B$=TwKxzF&{GCNv9dJC+^;ywIL z{|#TkN|LWp;jlBQZ~~_C-S$vDPXi_HsyS4gegc*5`)k#ki}(Eo&d&JhpY@Bu3pu42 zy1HscXhS%4#8O6tPbvwLxjKJFm1GV}=O0)mLqe*1D(+ejfa|%>I|CQ=Tnoc}G!=j) zwialH1-K_*RkbI8C#)KC^oca~V?QQmbpG#TL+Yq0%G!6g+t^%meX~)pku}iddICaEQhQuf32FW_-&m{>w0kbYqv*}Pc|5Uco>CgF% zJjrL_tpxyO@~(FVruF;^QwDw}PCr{_EzmLxh#=r)kKFZWKX==a#+~sa>e}n*=BvP; z4bHfb=#jrv*DyE`pMp*KDy9{FbMs|e3He%p9sj>C!N`6Db?b}d?2W0Y5BVQF@xMD? zIWn4CqT;RRQ0eX~@QEK<+2|*J1_3~U8+6fIAY<#&8V6eEoHTSwSc$d{N6COpiAP6L z7XTRW=&eXo3%ij zSU>~;b1_OAL4Y%+lg1o>295pj_tB{KHeX48Pdwv$M34Us(`91X%>9nS7X#;zv&}o3 zFWX9J%mP>!!g~ac{~>~^e)4BMgd>%8;=D+iT&&bB zOQw*Wg_n6!@^^rKMW1`IQ=ZoI?Lxu%W>&eD&sv}<7N`XQYY_xgFoiIc@%7Z+yVKay zFQrktzPl+R>p*#0;fH@f^yrP~J|2KGIf$HtK8rzv9|37ont?hMY=)r)_*^}LFGwD} zfxJF+_3wEgCiD3!HQVvCcBKcuPo!GbR)| ztNQt1mt9G_)t7}V&zpNIM)d!j=-GSFTZ8Lk?{{GlDD>7$K0+pIO4?oa92NiiMJhk> zpzn|zT(7ZPjPqx{z)8k9(h$CaPU*B2bRnGR0qB)DQ9AiJK}JwFnTOK}d{Oe?7`Du< z>)${JtvymY-avmBgad-ubfY2G}k)VF!o0{L4&4g%1?`=76% zM_|;RyVAH*ze`O-p9=rE{KNa@>0v3L1&PtO}TbE{BN~K%APww*7{=_~`f^!e} zW9R}WY2c82JO!Q7Q7PyGeN+k1D{)k`A}>ZpP%l9%_AxwyM7PI7tF9=0ehgHi9Wppx zt%8kUrRDX!%G%<A%gYNpJsmXqs1s<+ z3E!o{Cfllco001ckT)9>$vpNOq8A?K?`iQ`-~fD2ekvxF!CC{hSD*=2$9RzW_hAAj z*!+o`$y>`Z|^f(_UWd(_z5ch?JHD%@*$jbRFj|ju}^dq!Xix!0JJ*9 zI5?q}y!Ua^@WjwI#rZR6j7+&MvFR8Ltu1wcX&rFhI4R|0Dc}vSEh_HjEIot9P28y$ zVKi-_)5+#r3kJ%`{)yw%&%Cw-^nJ$Vy(%T}USpqpr) zqsiIp6mqsd0{yy4FNIsJ@Gz6NYBqV#{th;VedoQ375dO>@9|CqTW6B9>j&TnqC@SQ zRX>kP_g+Ay+kQ&!s@l8$nghx8>7Uh)aZI7wMd-9nD?%5-h#r7eixZ_4$1(VM2LSkD z&D=ghKh-`)XC_Z&gOtu!rB0BS6)OcF*R53cmfrPD|1N9>o(tgr@IK|eff6=hEzph@ zhz0?*rzwAI0QBwJ|3Di1(F?K6@Vi>C{XidiFJS=M(^sQc;6V%;tW+14+4E?k-9Cb+ z)wkPV!1S!J)8`(R=WZr?x) zxVQISSbU#<8p_jpFGXN=b_mcOSPQhH12e>>YKr|${0la>+&*QqN=LozO zc>lMku-T47Qv?16{RKF%XRarD^_lA6#YvO!df;%PUEhyy(GRh&3FI@w9)2Y|{p;~= zA5MSnv(*88Y_mP_T(bMeV6%5hCtGH2UfNx=fJ%3MgG%@RnWzss_NZlr9EP|a)uh$j z2#xkBIp%di6y7)piO8kMbUI%XCvS!cg(S*Lm(rDJXDm@ z@rHP#2U)T3O@Eq=tGi}{`;*OnSUlUWdSz<&+0;?EG!2NQwH6pM3+RFXRtP}>j}PeF zdLoT}|9{fx_ndpRHV`7r!2h;iIb zh+JCLl|5u(H00G_eqipZ{0O)i(yQ9{+RMDMFE9jnOw zJQJE4bEuA5qiH4S3u-#}yA=8afLR@P0Dwdz7%2k)UTf{q1@2c4zN~nuU)|EwQTul| z9S`F>6cpLbT3{GhAT9`i`utEy_>J0iM;d#=*Qon#rw@IlxMyGvCKsA>C()c4jHN8uRlce8a~&1?cr)L#B(c*LKCzd7Gv7=Frqgc zPtK%+VUwY2hAPit8sFP4q{@rWR~^1kMdKJkPKmED4PEHsi_paSGQ%LC-Fg6G>m(Z^ zVhg!QPS@GlSb&TYNlUWp@FS$LhmAOI88|CW$^ZbPmIs#gRi#!uKB z0|5)PxvY;(TMM+c1rmY)*4-Z;fJU@y-~BOvz<*QMejjX)DwWrhw`d05ao<7StN4!m zHM}Y)!Xfe$$ez#Ah^5gg59TU{yv73^E@D+?6Gf6Zrdh9bs z{z){6e#|5Q0A8IQ5s|^6Bs<8fCF(F@XrsLTu|%I(F99I&h^*+oPA?`f77#^~j%%`& z_!3!SGOOd3fnzX)e*V`+DtpE73K5~%rWp7_Rru&-P%D7 zIVhO4E0(Z*BLaloh$g&|oXz&Yduil%;uS}$r}4m`M=Gzw#7Hms@9$~FEPMs=0@2bJ z;rP+hQN-sN*qkmrLT`~lY104zBm+rAK~%j9Cgwp9vkm6s-|jFB;@c4g?eWUPUG_Yc z?zxCc5C0wZ#=9eY#8Kz?{fh9v`b{*>L5aBLf(%6>LZkI%CeEMXfmf%8Lad(^ku8(e zVZ_kNd_lTKudPo&C?yPJ)ak|Ssf0-KNgFufL>LW*k$xK9I++LrDxP~& z&v%NxuMf;$o{A}fJM5Iebq2E;?Qa2-Ab@MZfdB>yI-?8JbMT=w`q=+&-L%4KtvIj& z4hc`qi_mSp7$f1AJWI5Mo$a#f+VTRg7bDXqY=PGXc&Z+^H73Q`65qt**NeQ-2oAa@ zzzJiv!mjZM6hK>mdcNm&fx|vWw;7;jkAU>%!Q*GU92CA(?*g6ULDP0RE&x>Lye|bfRe(hhSnn z0*vt(thecQc$(iCOY5R%V&Y!a$#_PMQL?s6rtkP4{0WsFxQ4u?n74sDBE)Va1kR}M=iitn~ zJp$baybXcCmoc^QF~h3LfwDZ+rO`2t6HmV&8z?0)C3;r}+||at9C`xS->O z6$XkJ3*-(yb#SjhCw^UU;2r2G=o;tu9#HQ@^d@YHFBi7O>xNCMW!#f6%rfl4+_=8q3p;8gL%uZ9niS=Qo0e}HrP%}xk$WzvX3l+42N4W=mY<;3k z3HVyQ7$=pWs9;o0$QJv060@8J9Cx4tOKJco6>o)>y|$$94ZB=M=)Q}b;(=*B*I+`R zleoZc)&j%Q0?{DAq;cdx0DjTwDNxs5`_bsbKTX{SpE5+Bpbbl_x2@9d;wQ0M-!G{2 z@4w=SAAt~mb%1Lm)cCUYNsd5KUWZ|VBP<2HL?32w?fPmN&Xcg0Oxc!j93Qo->k@(Q$|5Gh{{_UmHVSUTw0k;$1iP!v4U=ix}9) zfgSEaA}I7T?LTXQ;bH;45zv#}HQu3dJD^AW)!Jl1Nev{*9e${FT`E5QIF+9K40Y{t zG4&k&AJqMhGpH~I@6+uztSnG@=}tWH|C~xs-HX>F==osB&(jFw&)@i35$Rf1>@F>R zELg2D36o#R#9h0hJP9X8moz4bf$@v9qtufaqvfbior6@+M6*nemGx!&@un=S7AgM= zK4oDzGZs1pP8bzOX?SrhEnHc-N5%;0wc%Wv+&!k}1z3LwXHJpTvuSIAj1~|*0U`(p zUFix;xtwn*^pf+<)w%U%)IH@GtTS*Xb?$hug3)HRjRnemRDSvzbo2j?24+1@ULU4o z?!t-1wGiFv9E^Paqr~D^qVbc`u^=&ZB1TWkD*QlD&0leVkU%G~)X~=2K_*Uv%W8l= z7Ei_&X^jjc91X94R_*<%gjEHcmliLD^Np=f3Y z<+^Z}K1TzO{tn&zH&JCC+BO$0Dm#90PQ_kQxUNA~&`9Lfq(oE4FNh@?k)_(_5&($a z0YjO-9uZn?J(xH`tEz{{W1LtlK^WaDWEkTpc%$(0ajwpvfejqDQC$ph@#BgAxf%E@5#9W}Mm)D@39W8I zaZ5}idhcU}X|BmS9#gtHMw<~>K)6Ij8{pGK%f)d3P@iar>r80H(}b*E@3L| zbyI1pUczgDf`bo-?Pe`70xV$K6HvPw1Q&%doiu8*iN7okg|T-ItXGzOc_T`3z)>cBque$#2Y6k_US*4F+*AEI)q$u zN`VGF0NkFHEAE;Z3yQnF`%1$1!h@UAe0U9TH4KJf&~~#H7$Fu&3Ie1%At?X|8d2PQ z{8b$vcWgF>M(uGB0)h8a*S;U10#D3ix5h0{8KBC7f8*W$^>F%kkURes|J{CppY(Yy zgA9&T*+5I@U#oPDM#(RjOmIMJ6aX-$1~26NW9Yajv`Kie^$<)Fy~v90WgIyjrPCfu zG8*Mq$r!QDpDSw^0Bk6E)5m?U|J0~`B-0NTm8W*Uw@@hDI+$Zq)&e8I0&zirbSD@G z0Kz1Q;CZfX|5HN9C~P*Ky7!)fbq9{2QExih_6!I+neH)|uY&av%Fq3s$}|5#6*zr& z{Q&VSW)3@j?1N1@Z$Vx(5us5!nFvi3!auIjDES402@Yt7EC66VP3mD-pQtUO#{wpH zFWD?Lzr?GPv9SjL93-z?=N`S~4~um^U1`2Y51>(RKCb6+yasra&ZsuuT3}dOKoDVY1``GFngmm6~0@c3=O&x|0tYVDh)o_&jf;1vaWXpTM)54_Z zf|)dUnR@^v%-DL!3Tt%mp%i7txI#t^BQ;-yUmQmFtq1@z>)wLy|Gu(2bNU^{{m*)g zxW6*ADNbLtyz)3x9b>zwbMp4o zx!b|iwfmviA4Y{uwyhR!WdGguOYlDbeyY559}T?xZ;al50qYE`_g|^_-TUnH*-1uP z*2rPiYDwoLQl1GzoF8B*`9(SJBl6@TPB$e0VBiF~OcHD+^$^4{xKUd~j|D{Hp7mj( z7+J9x8opLIe_w5l{8*hEasCW!*!{nz-~H027Z;VjT&wn)uhV8@x_f8hYPByjW6z>3 z9F`W)1Oc(mUsP0k*9d~zK1#>I00s~890LVjk7tuH)Vb4cG-{Uvu|J49-|!BM9hf}w zdI&HDvAcQ!RbHEcuKh=7;FTxf@Si7d?K*O?03Ulq?%wx3qx@v7@FsOxQ5)AxAKFD| z>M#Uxgid6K_Mp-73&I4PrUU>9GKFelU)O^m3RL?T?5HiG$0|5wo{3$RjI~UKjvKr4 zXUo7Wix#cud(-4!&~lae6lNPFD}Sr!yI3LcYlAs9Wi2p*EFcE~{FKg42wQ9r5PQc| z`Gfy)w21y4{QQ6bfk6SQ(K(}gsAKEx5De@?9oxN$I=4T7I=0=13cXm>Z@9cRz~_0D zRrASR_#_Q1dPYb^L-- zq7hljJ?OL;f*}FRzrGS^1eCvz&?=pGgeJtVI8b6J=v49rna&Qne8H#M`#dS@5W-RL zwjuz?QrGZ@c%fRDADBG-|Il1GN1`HdfXj|pNAd-{>+erkwSL?K|wFZ4Qzu~2fI;Wi=C)r z%QsNRR(l}5D*}TFn2@Mfr)6{US;6uKayP6ZZ{;ggS^g4Lmdqh{*<5m$VzAzl*Ql}v zbMBW){)&sN1doOAoj%)Ewu_OiWd@D&4U@3Q@FtaO8*GUt%p5)nowIP!;86@#D7cKF z8w5itLZ@}!5xNkDd;mJF9b`I@*5K+ebol~KwKuY>iZPle>AEoo0Bi=Y;H~@D%l-Sj z>neIBY9?_knM-7a_XAUVe~t_8bKzWjWGyg)EFgk_*Q#p=BnAPAcMWV~K;x6}KNW2) zAn=0%1Sb5I0jK%Z0gdV)r?-nbHkpVec_&fFrd#240#@uBKZ%^Nn`3^0O%XV3N`=vz zVI{u__)dO|A1FBNIb`nvXU;1E5=Py7WlW@ll?1(h{EBPvsohFA`IY3YL(k!c<>ang zhA#VM=*nM;C5V@kw;tX10~k|O0tP?T^CsZgvGY%=SIF@(EpJSdv_-s03=!8oCK0>E;-VwSG zhIC+52Z>LwurGOnx+TGm@mM+s9LV^!Ox1^{X57pRR}DwmD#$C!;x$WQ-Iz23jy zftS&o7*hZCjVt%dFfYI*m>1xjL_$koEijxd0B7U}0rPODvTxKiM!NiH-4p2iMkIkI zfHa}2(FCN?28WM>!bn;O;&O>b>1?EO!KU0xbRowl6E_+FFqR}oh7P4`G_ei00gll* zi@^!mA%;$+JLf6ShfHjM>60YcUB>hUhcjaB2-2i-8Lf`ipbj#BH0?kAGe+7vMuB3E z>vWEx^^2nSViLWsJi+-h8$bQ8Sm*v|i%W`$KHJDdB`W?14+=|kI@x?{fe~Q=++6-r z!rP(sz)e(rQf^|+xKYTfVUX42#!obWe20r4*Gc|~e0eW;#a_l0>AZAixf}DAmmRa% zFs9zT!Lf%>yg?#wycV1reyh|L zn}O3zqi5=Ci0#l~TdXU27k}(;zRymqno$72C<|Bh{Sp; zlqIRY8s&m(S5ux_c1HaY<>wuEvYzrUQGt{M240$bmj+zAcDG*?|1S-?0dyFyNd4!c zvWvsH_Q+abgjzrq1ei8VF%HATuZ>WPW~x@poKBo}rsth86tqgeqoC8NkoX0FMy?Jo zb$$w61$Ha1b7l9xP$atNlOcZ5vUWO7(2*U#Kk#qBTYU3O_~w*b>HvTT1mcU~#Lo*- z>S4*P1=`mFxC!(AIv^%C$ZiKT(1{IhQv}DWoVt;T!X;KJ%FvwS!2bn_lyb82)x`Ld zL8TO#NS;ev-J^RIW*&L0k78q8#Lq9rmpyBW z?l~v?h2|^BW3w_h2Ls>gxdu}$o)n923#|o4k_B+1iOGV3$#IhEr@6!G8b1wP2;PvU z4qFB>#1JeEVF_8-Yl8qmBLr&pPHj10O>y$84>0<5Ns<>+9%qgCXWpiHF;;uKx>o+;}CP%9dISj35hOa-gnp4vph^0{G66Zct?{ z4H_+<&y-FnB%GNDm83Jnnb0H(8pO%m$jDXGJPpYtxui|%ZYn5(#S<+yvYD9N$8VLb z(p09wx*J`SY4k}!t8>07AkvYttt5NJ$*;KHi!Z+hUz~Bvd~c5bAuV%V?<{itrAso3 zw`|q|!^{F`T!YsECPBb3t6re4)Bpu}854~|4BTxFUQd~HTh((!ayq8={lN3QKSi?bp|!xswtxr%wuftJ zv?rh)y;H)|hw;g6af7YXD|a<=2h?evU%rV`Ns<;|WUYTzK3TCmFl4-#bjyM!u2ZdE zfsHkKad}_az45f~mcFkcG0tu{0ARJ(EbRX@lz-A#swK1*7zq~OAb`gN})D zWOI21pm?HfHZ z#WSw2E?Fi4rBCJ&0MNwCX!XE`%E<@A;vqg-) zsT%Sa9G&Qf^AltS`X|tZ^oRsa0Y-=@-9ZQ=jV=)}xi}snU+g0?+WwIBmUL&^hU^=u z0GGKHTKd%D$|*ZtNvk5onGSO~4=lO+;?nbO$wLs}8Bar)Nn^`oEzoWjhzkO6)3$1B zp{P_NLQCS3OLPbFHh;jrGc;o9C`8 zx@W%eX9IT$s66($1^}#3=d`}-$nidxhjJFfT3}dNKota--s~oHCN%A6usrlO!7!m| zNBbD))D&lAAh&5GF}*cuWd@%Bj^OiOEP0>bYE#|R`PQH;#oy55siVjW`iP_n0`mq8lgm2pHm zi~fSQS$m;VOkLvwyi&zIcg**TziNhhO$h*4QG6bF301uFnxVACv=(S<3&=qLrVp08 zVcS~op;Ru(!E@s&b!Tf;)iko923A9(#mu3g(4fqa{%Q3wv0GZqD19UKV_xx#;x=+D zFdNY=5BUigap$%IA3FM?;tvuaG8Z>30AP(eruBc<_5@@;HJZ&%s0g*xS8Bi4T<-A0z4OE0(8}E2;MSV3$(8Vu z!F%yzv}iiJgm_NK@vl+WTfe^Sp4{`j;xFSF@+oae0KlqtPVKuEZQ-#n=z@Gyw!|YP3`~ZK(TTZ2J<|wDz|yo0wdM}QV`%^On`Ex z48sPmr8Y9rDTXH1G{7-9L7id8mTo3Gu|lSF8I^A|0P)3Uv0W4DmHRc3(WdRh=E5gF zv($ahj=vnZri=y%CZ(1atqXgfU%PuEaeGpn$WnW zs$-J;r1Dh4hBtAez085{HMMDkE>?boR%>Z)?M-QAkSsjRpOsIRohMEdH{m$e<_WxM zir4jf*DYG#cjQ68DLtEpFAv%rI{C7zQJLC%E+!4Sh*vhwj$%2j1%{agxVvwyN9*RJ zg=Ehl--U8oSFISD(34^eT>u?J;}`M27#b6tP?v8KmZm(^&1>@5qQD8+MkubJ6Gfpt z=#>02Q4Cfp8wgAZuMyb+oNPACe7QOF9}L&c-YQ{V`)(DflQ8{8+_yaD`b zRlLfYe)s%|mo&brUshFOOqvxk9bfsI-A5K2=jT*#-k6TlQdmh$JFdL49Ph2#s76N`p?xFB2tT z1$IcF3m_%BMrAW5zh@3M2|LI$NQ5v9=mV07yucO#L5f5Kivv{jsigogBTclq8B84& zr#2&u??-z#Vl2EzFQFi57|-6g6sE@y`Bo|Dm4iwO8XzHAtf~L+mF*G5(7`gycLlbg-8kzuu z6AGG4Jpd7`P<>>93VCv|NQ(ws94q%4tdI?uQA4N1WOCC-wHVwwj2K$29?X-0FTktu z*4ZNUG_i@pN` z1gEz|pcP^*Fw_>P^#qK`VPIgUCl={RswJi{k!M1ar?Lj}8g&G9Bi{{V%2hNzw`p*h zHVwV3P}a1NnU`FFV{9OE#Tz~6EQx~?#wnG(>G#d;e`h;6f1w}m+in|}+I=j--fzNo zZ)rQ_tU}fTd0Qab6Oa^|bIYRGLXDP&rjAWRml{ihQ}?u|p$q91p{eTuVB#bjF-;98 zR2R;VZV`EP#ay016Yyy0GTA|Z0yD7=60Jze`??+gQK->Z6wCWShZH&6govbr1p8<)BsmhA zHmS5nN(=$6)kzST?1gL|S0K`U5(m<;4CQCzpEuyGU0d?5T(GYAlf5saIWkQH8m%<}{&gMgU3HfRWAXaa2#Xnd>$8Xqfx z#&75oXp(TMx)^}OkOa0#aBw>N1pEO(EfFJAu9wo`rNC0kPm(R+S8XU|#3f^Fq|`%T zrO+qV9w~5GbgWK7w~TvL?-Q%XaYDJ`Em>WvT(xp#;n#a!S$r|0h#_N3Y33o*Qz>}e zc{HiFqx)m%2RsdHuD@AHWHYS=hN}g1K|su18#IJ5G=Vu1X#CD^&u>Z}VOT}xCxtE+ONipvT;dH{{u_kG>( zb~>Gt9M}1v9VZ}L$EJt11yTk9K_h5-XD84ZJB=8eJOThdhgDr-1o=ezvmMxmNn#va zfDjQC;tz;wi3n}9n2(KKg)m_ZR-Fzpvq8N=^*onw1Hm60RUqf;2G&9 z^h>el0D!S8uDhx{;N7&o>`6&!eqJb@UupAm=?! z!8;0PZmgEr7FY`m2MefzfS5biZwO<`Lsd?oGscR+2^#ts8egZFa$gUjc<4Z6N_!1X zh)v_%B$R4W!V2+62_?E{kvKLEgqT5tr_@11E9A<1pFah?Do|4DAPW)c1UbQVA?Qu^ zF_^}B8OZUSKIkeHcU_-Lce<`~+skYF|9;?Q^tu82upx;t=dh`RR?!XT(&Wxj-NzOR z&cTS`-a{SUR<-8{Esrg*7HCTgM1ug00}C2K(>ptX&e&nZ;Bb)(Y?1cKOzJHdc(0(>>LK%SIzg{? z2m;vIWAZul&^Y8)T+B-EEM7lAw-?Kmht_W>-@NN@+kZ5F)a<6m38%*trv2%bo!R-7S&7zP90myde!kq#VcfnNKl^2;VJO6Iw)vEvTFxE8UHh+4=^NKX>|yQ zBZ(MUsq7Jf4GwGgCVKI@0hn|f=K)Ok!xMhF>^kc@9PeNA)_6~hbKHNdoYj=rgJNY3VXm92T{QrgA1b=mnnicjPzSPflx$4Z57(7@3C3(f<45)MZtslp z_VirZ4%bmPE~T-!Xg0+Y*p^Pk*&J8XcwBL#@#VqjFoHd@7HEM5c%FbYF0IE>!rZpW zn`rd>yp#@3#u4cN&jd@;ngke{av>{eAK)-y5>|+K5Vr;)~FRaB2s2`Wx`n;ow>*M6SC!nz#( - - - - Identifier - com.cocos2d-v3.macbase - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Project - - SharedSettings - - GCC_ENABLE_OBJC_EXCEPTIONS - YES - ARCHS - $(ARCHS_STANDARD_64_BIT) - MACOSX_DEPLOYMENT_TARGET - 10.8 - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - - SDK - macosx - Configurations - - Debug - - ONLY_ACTIVE_ARCH - YES - - Release - - DEBUG_INFORMATION_FORMAT - dwarf-with-dsym - - - - Targets - - - SharedSettings - - OTHER_LDFLAGS - - -lz - -lsqlite3 - -ObjC - - - ProductDependencies - - 1 - - Frameworks - - QuartzCore - GLKit - OpenGL - OpenAL - AVFoundation - AudioToolbox - AppKit - Foundation - - Configurations - - Debug - - GCC_DYNAMIC_NO_PIC - NO - COPY_PHASE_STRIP - NO - - Release - - VALIDATE_PRODUCT - YES - COPY_PHASE_STRIP - YES - - - Dependencies - - 1 - - - - Platforms - - com.apple.platform.macosx - - Nodes - - Resources/English.lproj/InfoPlist.strings - Resources/English.lproj/MainMenu.xib - Resources/icon.icns - Resources/Info.plist - - Definitions - - Resources/English.lproj/InfoPlist.strings - - Group - - Resources - English.lproj - - Path - Resources/English.lproj/InfoPlist.strings - - Resources/icon.icns - - Group - - Resources - - Path - Resources/icon.icns - - Resources/English.lproj/MainMenu.xib - - Group - - Resources - English.lproj - - Path - Resources/English.lproj/MainMenu.xib - - Resources/Info.plist - - Group - - Resources - - TargetIndices - - Path - Resources/Info.plist - - - - diff --git a/templates/Support/Bundle/bundle.xctemplate/TemplateInfo.plist b/templates/Support/Bundle/bundle.xctemplate/TemplateInfo.plist deleted file mode 100755 index 3c9854676e5..00000000000 --- a/templates/Support/Bundle/bundle.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Ancestors - - com.cocos2d-v3.base - - Identifier - com.cocos2d-v3.bundlebase - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Targets - - - SharedSettings - - GCC_PRECOMPILE_PREFIX_HEADER - YES - GCC_PREFIX_HEADER - ___PACKAGENAME___/Supporting Files/Prefix.pch - INFOPLIST_FILE - ___PACKAGENAME___/Resources/Info.plist - - - - - diff --git a/templates/Support/Libraries/chipmunk.xctemplate/TemplateInfo.plist b/templates/Support/Libraries/chipmunk.xctemplate/TemplateInfo.plist deleted file mode 100755 index 7e9509a40fe..00000000000 --- a/templates/Support/Libraries/chipmunk.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,1129 +0,0 @@ - - - - - Description - This is a template description. - Identifier - com.cocos2d-v3.chipmunk - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Definitions - - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_ffi.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_ffi.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_private.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_private.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_types.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_types.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_unsafe.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_unsafe.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpArbiter.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpArbiter.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpBB.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpBB.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpBody.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpBody.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpConstraint.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpConstraint.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpDampedRotarySpring.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpDampedRotarySpring.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpDampedSpring.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpDampedSpring.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpGearJoint.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpGearJoint.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpGrooveJoint.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpGrooveJoint.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpPinJoint.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpPinJoint.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpPivotJoint.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpPivotJoint.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpPolyShape.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpPolyShape.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpRatchetJoint.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpRatchetJoint.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpRotaryLimitJoint.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpRotaryLimitJoint.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpShape.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpShape.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSimpleMotor.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSimpleMotor.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSlideJoint.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSlideJoint.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSpace.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSpace.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSpatialIndex.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSpatialIndex.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpTransform.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpTransform.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/include/chipmunk/cpVect.h - - Group - - Libraries - Chipmunk - chipmunk - include - chipmunk - - Path - Libraries/Chipmunk/chipmunk/include/chipmunk/cpVect.h - TargetIndices - - - Libraries/Chipmunk/chipmunk/src/chipmunk.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/chipmunk.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpArbiter.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpArbiter.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpArray.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpArray.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpBBTree.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpBBTree.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpBody.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpBody.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpCollision.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpCollision.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpConstraint.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpConstraint.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpDampedRotarySpring.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpDampedRotarySpring.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpDampedSpring.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpDampedSpring.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpGearJoint.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpGearJoint.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpGrooveJoint.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpGrooveJoint.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpHashSet.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpHashSet.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpPinJoint.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpPinJoint.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpPivotJoint.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpPivotJoint.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpPolyShape.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpPolyShape.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpRatchetJoint.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpRatchetJoint.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpRotaryLimitJoint.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpRotaryLimitJoint.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpShape.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpShape.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSimpleMotor.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSimpleMotor.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSlideJoint.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSlideJoint.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSpace.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSpace.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSpaceComponent.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSpaceComponent.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSpaceDebug.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSpaceDebug.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSpaceHash.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSpaceHash.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSpaceQuery.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSpaceQuery.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSpaceStep.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSpaceStep.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSpatialIndex.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSpatialIndex.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/cpSweep1D.c - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/cpSweep1D.c - TargetIndices - - 1 - - - Libraries/Chipmunk/chipmunk/src/prime.h - - Group - - Libraries - Chipmunk - chipmunk - src - - Path - Libraries/Chipmunk/chipmunk/src/prime.h - TargetIndices - - - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkBody.h - - Group - - Libraries - Chipmunk - objectivec - include - ObjectiveChipmunk - - Path - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkBody.h - TargetIndices - - - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkConstraint.h - - Group - - Libraries - Chipmunk - objectivec - include - ObjectiveChipmunk - - Path - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkConstraint.h - TargetIndices - - - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkExtras.h - - Group - - Libraries - Chipmunk - objectivec - include - ObjectiveChipmunk - - Path - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkExtras.h - TargetIndices - - - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkMultiGrab.h - - Group - - Libraries - Chipmunk - objectivec - include - ObjectiveChipmunk - - Path - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkMultiGrab.h - TargetIndices - - - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkShape.h - - Group - - Libraries - Chipmunk - objectivec - include - ObjectiveChipmunk - - Path - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkShape.h - TargetIndices - - - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkSpace.h - - Group - - Libraries - Chipmunk - objectivec - include - ObjectiveChipmunk - - Path - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkSpace.h - TargetIndices - - - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ObjectiveChipmunk.h - - Group - - Libraries - Chipmunk - objectivec - include - ObjectiveChipmunk - - Path - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ObjectiveChipmunk.h - TargetIndices - - - Libraries/Chipmunk/objectivec/src/ChipmunkBody.m - - Group - - Libraries - Chipmunk - objectivec - src - - Path - Libraries/Chipmunk/objectivec/src/ChipmunkBody.m - TargetIndices - - 1 - - - Libraries/Chipmunk/objectivec/src/ChipmunkConstraint.m - - Group - - Libraries - Chipmunk - objectivec - src - - Path - Libraries/Chipmunk/objectivec/src/ChipmunkConstraint.m - TargetIndices - - 1 - - - Libraries/Chipmunk/objectivec/src/ChipmunkMultiGrab.m - - Group - - Libraries - Chipmunk - objectivec - src - - Path - Libraries/Chipmunk/objectivec/src/ChipmunkMultiGrab.m - TargetIndices - - 1 - - - Libraries/Chipmunk/objectivec/src/ChipmunkShape.m - - Group - - Libraries - Chipmunk - objectivec - src - - Path - Libraries/Chipmunk/objectivec/src/ChipmunkShape.m - TargetIndices - - 1 - - - Libraries/Chipmunk/objectivec/src/ChipmunkSpace.m - - Group - - Libraries - Chipmunk - objectivec - src - - Path - Libraries/Chipmunk/objectivec/src/ChipmunkSpace.m - TargetIndices - - 1 - - - Libraries/LICENSE_Chipmunk.txt - - Group - - Libraries - - Path - Libraries/LICENSE_Chipmunk.txt - - - Nodes - - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk.h - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_ffi.h - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_private.h - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_types.h - Libraries/Chipmunk/chipmunk/include/chipmunk/chipmunk_unsafe.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpArbiter.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpBB.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpBody.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpConstraint.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpDampedRotarySpring.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpDampedSpring.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpGearJoint.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpGrooveJoint.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpPinJoint.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpPivotJoint.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpPolyShape.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpRatchetJoint.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpRotaryLimitJoint.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpShape.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSimpleMotor.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSlideJoint.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSpace.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpSpatialIndex.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpTransform.h - Libraries/Chipmunk/chipmunk/include/chipmunk/cpVect.h - Libraries/Chipmunk/chipmunk/src/chipmunk.c - Libraries/Chipmunk/chipmunk/src/cpArbiter.c - Libraries/Chipmunk/chipmunk/src/cpArray.c - Libraries/Chipmunk/chipmunk/src/cpBBTree.c - Libraries/Chipmunk/chipmunk/src/cpBody.c - Libraries/Chipmunk/chipmunk/src/cpCollision.c - Libraries/Chipmunk/chipmunk/src/cpConstraint.c - Libraries/Chipmunk/chipmunk/src/cpDampedRotarySpring.c - Libraries/Chipmunk/chipmunk/src/cpDampedSpring.c - Libraries/Chipmunk/chipmunk/src/cpGearJoint.c - Libraries/Chipmunk/chipmunk/src/cpGrooveJoint.c - Libraries/Chipmunk/chipmunk/src/cpHashSet.c - Libraries/Chipmunk/chipmunk/src/cpPinJoint.c - Libraries/Chipmunk/chipmunk/src/cpPivotJoint.c - Libraries/Chipmunk/chipmunk/src/cpPolyShape.c - Libraries/Chipmunk/chipmunk/src/cpRatchetJoint.c - Libraries/Chipmunk/chipmunk/src/cpRotaryLimitJoint.c - Libraries/Chipmunk/chipmunk/src/cpShape.c - Libraries/Chipmunk/chipmunk/src/cpSimpleMotor.c - Libraries/Chipmunk/chipmunk/src/cpSlideJoint.c - Libraries/Chipmunk/chipmunk/src/cpSpace.c - Libraries/Chipmunk/chipmunk/src/cpSpaceComponent.c - Libraries/Chipmunk/chipmunk/src/cpSpaceDebug.c - Libraries/Chipmunk/chipmunk/src/cpSpaceHash.c - Libraries/Chipmunk/chipmunk/src/cpSpaceQuery.c - Libraries/Chipmunk/chipmunk/src/cpSpaceStep.c - Libraries/Chipmunk/chipmunk/src/cpSpatialIndex.c - Libraries/Chipmunk/chipmunk/src/cpSweep1D.c - Libraries/Chipmunk/chipmunk/src/prime.h - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkBody.h - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkConstraint.h - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkExtras.h - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkMultiGrab.h - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkShape.h - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ChipmunkSpace.h - Libraries/Chipmunk/objectivec/include/ObjectiveChipmunk/ObjectiveChipmunk.h - Libraries/Chipmunk/objectivec/src/ChipmunkBody.m - Libraries/Chipmunk/objectivec/src/ChipmunkConstraint.m - Libraries/Chipmunk/objectivec/src/ChipmunkMultiGrab.m - Libraries/Chipmunk/objectivec/src/ChipmunkShape.m - Libraries/Chipmunk/objectivec/src/ChipmunkSpace.m - Libraries/LICENSE_Chipmunk.txt - - Targets - - - SharedSettings - - HEADER_SEARCH_PATHS - - "$(SRCROOT)/$(PROJECT_NAME)/Libraries/Chipmunk/chipmunk/include" - "$(SRCROOT)/$(PROJECT_NAME)/Libraries/Chipmunk/objectivec/include" - - - - - - diff --git a/templates/Support/Libraries/cocos2d-base.xctemplate/TemplateInfo.plist b/templates/Support/Libraries/cocos2d-base.xctemplate/TemplateInfo.plist deleted file mode 100755 index 683c1297239..00000000000 --- a/templates/Support/Libraries/cocos2d-base.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,2124 +0,0 @@ - - - - - Description - This is a template description. - Identifier - com.cocos2d-v3.cocos2d-base - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Definitions - - Libraries/cocos2d/CCTouch.h - - Group - - Libraries - cocos2d - Touch & Mouse Handling - - Path - Libraries/cocos2d/CCTouch.h - TargetIndices - - - Libraries/cocos2d/CCTouch.m - - Group - - Libraries - cocos2d - Touch & Mouse Handling - - Path - Libraries/cocos2d/CCTouch.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCTouchEvent.h - - Group - - Libraries - cocos2d - Touch & Mouse Handling - - Path - Libraries/cocos2d/CCTouchEvent.h - TargetIndices - - - Libraries/cocos2d/CCTouchEvent.m - - Group - - Libraries - cocos2d - Touch & Mouse Handling - - Path - Libraries/cocos2d/CCTouchEvent.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCNoARC.m - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCNoARC.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCRenderDispatch.h - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCRenderDispatch.h - TargetIndices - - - Libraries/cocos2d/CCRenderDispatch.m - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCRenderDispatch.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCRendererBasicTypes_Private.h - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCRendererBasicTypes_Private.h - TargetIndices - - - Libraries/cocos2d/CCRendererBasicTypes.h - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCRendererBasicTypes.h - TargetIndices - - - Libraries/cocos2d/CCRendererBasicTypes.m - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCRendererBasicTypes.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCRendererSharedTypes.h - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCRendererSharedTypes.h - TargetIndices - - - Libraries/cocos2d/NSValue+CCRenderer.h - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/NSValue+CCRenderer.h - TargetIndices - - - Libraries/cocos2d/NSValue+CCRenderer.m - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/NSValue+CCRenderer.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCRenderer.h - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCRenderer.h - TargetIndices - - - Libraries/cocos2d/CCRenderer_Private.h - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCRenderer_Private.h - TargetIndices - - - Libraries/cocos2d/CCRenderer.m - - TargetIndices - - 0 - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCRenderer.m - - Libraries/cocos2d/CCShader.h - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCShader.h - TargetIndices - - - Libraries/cocos2d/CCShader_Private.h - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCShader_Private.h - TargetIndices - - - Libraries/cocos2d/CCShader.m - - TargetIndices - - 0 - - Group - - Libraries - cocos2d - Renderer - - Path - Libraries/cocos2d/CCShader.m - - Libraries/cocos2d/CCCache.h - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/CCCache.h - TargetIndices - - - Libraries/cocos2d/CCCache.m - - TargetIndices - - 0 - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/CCCache.m - - Libraries/cocos2d/CCAction.h - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCAction.h - TargetIndices - - - Libraries/cocos2d/CCAction.m - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCAction.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCActionCatmullRom.h - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionCatmullRom.h - TargetIndices - - - Libraries/cocos2d/CCActionCatmullRom.m - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionCatmullRom.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCActionEase.h - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionEase.h - TargetIndices - - - Libraries/cocos2d/CCActionEase.m - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionEase.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCActionInstant.h - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionInstant.h - TargetIndices - - - Libraries/cocos2d/CCActionInstant.m - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionInstant.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCActionInterval.h - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionInterval.h - TargetIndices - - - Libraries/cocos2d/CCActionInterval.m - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionInterval.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCActionManager.h - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionManager.h - TargetIndices - - - Libraries/cocos2d/CCActionManager_Private.h - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionManager_Private.h - TargetIndices - - - Libraries/cocos2d/CCActionManager.m - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionManager.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCActionProgressTimer.h - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionProgressTimer.h - TargetIndices - - - Libraries/cocos2d/CCActionProgressTimer.m - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionProgressTimer.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCActionTween.h - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionTween.h - TargetIndices - - - Libraries/cocos2d/CCActionTween.m - - Group - - Libraries - cocos2d - Actions - - Path - Libraries/cocos2d/CCActionTween.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCAnimation.h - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCAnimation.h - TargetIndices - - - Libraries/cocos2d/CCAnimation.m - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCAnimation.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCAnimationCache.h - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCAnimationCache.h - TargetIndices - - - Libraries/cocos2d/CCAnimationCache.m - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCAnimationCache.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCClippingNode.h - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCClippingNode.h - TargetIndices - - - Libraries/cocos2d/CCClippingNode.m - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCClippingNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/ccConfig.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/ccConfig.h - TargetIndices - - - Libraries/cocos2d/CCConfiguration.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/CCConfiguration.h - TargetIndices - - - Libraries/cocos2d/CCConfiguration.m - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/CCConfiguration.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCDirector_Private.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/CCDirector_Private.h - TargetIndices - - - Libraries/cocos2d/CCDirector.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/CCDirector.h - TargetIndices - - - Libraries/cocos2d/CCDirector.m - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/CCDirector.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCDrawNode.h - - Group - - Libraries - cocos2d - Draw Nodes - - Path - Libraries/cocos2d/CCDrawNode.h - TargetIndices - - - Libraries/cocos2d/CCDrawNode.m - - Group - - Libraries - cocos2d - Draw Nodes - - Path - Libraries/cocos2d/CCDrawNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/ccFPSImages.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/ccFPSImages.h - TargetIndices - - - Libraries/cocos2d/ccFPSImages.m - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/ccFPSImages.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCLabelBMFont_Private.h - - Group - - Libraries - cocos2d - Label Nodes - - Path - Libraries/cocos2d/CCLabelBMFont_Private.h - TargetIndices - - - Libraries/cocos2d/CCLabelBMFont.h - - Group - - Libraries - cocos2d - Label Nodes - - Path - Libraries/cocos2d/CCLabelBMFont.h - TargetIndices - - - Libraries/cocos2d/CCLabelBMFont.m - - Group - - Libraries - cocos2d - Label Nodes - - Path - Libraries/cocos2d/CCLabelBMFont.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCLabelTTF.h - - Group - - Libraries - cocos2d - Label Nodes - - Path - Libraries/cocos2d/CCLabelTTF.h - TargetIndices - - - Libraries/cocos2d/CCLabelTTF.m - - Group - - Libraries - cocos2d - Label Nodes - - Path - Libraries/cocos2d/CCLabelTTF.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCNodeColor.h - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCNodeColor.h - TargetIndices - - - Libraries/cocos2d/CCNodeColor.m - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCNodeColor.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCLayout.h - - Group - - Libraries - cocos2d - Layouts - - Path - Libraries/cocos2d/CCLayout.h - TargetIndices - - - Libraries/cocos2d/CCLayout.m - - Group - - Libraries - cocos2d - Layouts - - Path - Libraries/cocos2d/CCLayout.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCLayoutBox.h - - Group - - Libraries - cocos2d - Layouts - - Path - Libraries/cocos2d/CCLayoutBox.h - TargetIndices - - - Libraries/cocos2d/CCLayoutBox.m - - Group - - Libraries - cocos2d - Layouts - - Path - Libraries/cocos2d/CCLayoutBox.m - TargetIndices - - 0 - - - Libraries/cocos2d/ccMacros.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/ccMacros.h - TargetIndices - - - Libraries/cocos2d/CCMotionStreak.h - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCMotionStreak.h - TargetIndices - - - Libraries/cocos2d/CCMotionStreak.m - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCMotionStreak.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCNode_Private.h - - Group - - Libraries - cocos2d - Base Nodes - - Path - Libraries/cocos2d/CCNode_Private.h - TargetIndices - - - Libraries/cocos2d/CCNode.h - - Group - - Libraries - cocos2d - Base Nodes - - Path - Libraries/cocos2d/CCNode.h - TargetIndices - - - Libraries/cocos2d/CCNode.m - - Group - - Libraries - cocos2d - Base Nodes - - Path - Libraries/cocos2d/CCNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCNode+Debug.h - - Group - - Libraries - cocos2d - Base Nodes - - Path - Libraries/cocos2d/CCNode+Debug.h - TargetIndices - - - Libraries/cocos2d/CCNode+Debug.m - - Group - - Libraries - cocos2d - Base Nodes - - Path - Libraries/cocos2d/CCNode+Debug.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCParallaxNode.h - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCParallaxNode.h - TargetIndices - - - Libraries/cocos2d/CCParallaxNode.m - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCParallaxNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCParticleBatchNode.h - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleBatchNode.h - TargetIndices - - - Libraries/cocos2d/CCParticleBatchNode.m - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleBatchNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCParticleExamples.h - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleExamples.h - TargetIndices - - - Libraries/cocos2d/CCParticleExamples.m - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleExamples.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCParticleSystem_Private.h - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleSystem_Private.h - TargetIndices - - - Libraries/cocos2d/CCParticleSystem.h - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleSystem.h - TargetIndices - - - Libraries/cocos2d/CCParticleSystem.m - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleSystem.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCParticleSystemBase_Private.h - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleSystemBase_Private.h - TargetIndices - - - Libraries/cocos2d/CCParticleSystemBase.h - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleSystemBase.h - TargetIndices - - - Libraries/cocos2d/CCParticleSystemBase.m - - Group - - Libraries - cocos2d - Particle Nodes - - Path - Libraries/cocos2d/CCParticleSystemBase.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCPhysics+ObjectiveChipmunk.h - - Group - - Libraries - cocos2d - Physics - - Path - Libraries/cocos2d/CCPhysics+ObjectiveChipmunk.h - TargetIndices - - - Libraries/cocos2d/CCPhysicsBody.h - - Group - - Libraries - cocos2d - Physics - - Path - Libraries/cocos2d/CCPhysicsBody.h - TargetIndices - - - Libraries/cocos2d/CCPhysicsBody.m - - Group - - Libraries - cocos2d - Physics - - Path - Libraries/cocos2d/CCPhysicsBody.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCPhysicsJoint.h - - Group - - Libraries - cocos2d - Physics - - Path - Libraries/cocos2d/CCPhysicsJoint.h - TargetIndices - - - Libraries/cocos2d/CCPhysicsJoint.m - - Group - - Libraries - cocos2d - Physics - - Path - Libraries/cocos2d/CCPhysicsJoint.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCPhysicsNode.h - - Group - - Libraries - cocos2d - Physics - - Path - Libraries/cocos2d/CCPhysicsNode.h - TargetIndices - - - Libraries/cocos2d/CCPhysicsNode.m - - Group - - Libraries - cocos2d - Physics - - Path - Libraries/cocos2d/CCPhysicsNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCPhysicsShape.h - - Group - - Libraries - cocos2d - Physics - - Path - Libraries/cocos2d/CCPhysicsShape.h - TargetIndices - - - Libraries/cocos2d/CCPhysicsShape.m - - Group - - Libraries - cocos2d - Physics - - Path - Libraries/cocos2d/CCPhysicsShape.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCProgressNode_Private.h - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCProgressNode_Private.h - TargetIndices - - - Libraries/cocos2d/CCProgressNode.h - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCProgressNode.h - TargetIndices - - - Libraries/cocos2d/CCProgressNode.m - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCProgressNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCProtocols.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/CCProtocols.h - TargetIndices - - - Libraries/cocos2d/CCRenderTexture.h - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCRenderTexture.h - TargetIndices - - - Libraries/cocos2d/CCRenderTexture_Private.h - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCRenderTexture_Private.h - TargetIndices - - - Libraries/cocos2d/CCRenderTexture.m - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCRenderTexture.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCResponder.h - - Group - - Libraries - cocos2d - Touch & Mouse Handling - - Path - Libraries/cocos2d/CCResponder.h - TargetIndices - - - Libraries/cocos2d/CCResponder.m - - Group - - Libraries - cocos2d - Touch & Mouse Handling - - Path - Libraries/cocos2d/CCResponder.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCResponderManager.h - - Group - - Libraries - cocos2d - Touch & Mouse Handling - - Path - Libraries/cocos2d/CCResponderManager.h - TargetIndices - - - Libraries/cocos2d/CCResponderManager.m - - Group - - Libraries - cocos2d - Touch & Mouse Handling - - Path - Libraries/cocos2d/CCResponderManager.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCScene.h - - Group - - Libraries - cocos2d - Layers, Scenes, Transition Nodes - - Path - Libraries/cocos2d/CCScene.h - TargetIndices - - - Libraries/cocos2d/CCScene.m - - Group - - Libraries - cocos2d - Layers, Scenes, Transition Nodes - - Path - Libraries/cocos2d/CCScene.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCScheduler.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/CCScheduler.h - TargetIndices - - - Libraries/cocos2d/CCScheduler.m - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/CCScheduler.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCSprite_Private.h - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSprite_Private.h - TargetIndices - - - Libraries/cocos2d/CCSprite.h - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSprite.h - TargetIndices - - - Libraries/cocos2d/CCSprite.m - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSprite.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCSprite9Slice.h - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSprite9Slice.h - TargetIndices - - - Libraries/cocos2d/CCSprite9Slice.m - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSprite9Slice.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCSpriteBatchNode.h - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSpriteBatchNode.h - TargetIndices - - - Libraries/cocos2d/CCSpriteBatchNode.m - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSpriteBatchNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCSpriteFrame.h - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSpriteFrame.h - TargetIndices - - - Libraries/cocos2d/CCSpriteFrame.m - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSpriteFrame.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCSpriteFrameCache.h - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSpriteFrameCache.h - TargetIndices - - - Libraries/cocos2d/CCSpriteFrameCache.m - - Group - - Libraries - cocos2d - Sprite & Animation Nodes - - Path - Libraries/cocos2d/CCSpriteFrameCache.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCTexture_Private.h - - Group - - Libraries - cocos2d - Textures - - Path - Libraries/cocos2d/CCTexture_Private.h - TargetIndices - - - Libraries/cocos2d/CCTexture.h - - Group - - Libraries - cocos2d - Textures - - Path - Libraries/cocos2d/CCTexture.h - TargetIndices - - - Libraries/cocos2d/CCTexture.m - - Group - - Libraries - cocos2d - Textures - - Path - Libraries/cocos2d/CCTexture.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCTextureCache.h - - Group - - Libraries - cocos2d - Textures - - Path - Libraries/cocos2d/CCTextureCache.h - TargetIndices - - - Libraries/cocos2d/CCTextureCache.m - - Group - - Libraries - cocos2d - Textures - - Path - Libraries/cocos2d/CCTextureCache.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCTexturePVR.h - - Group - - Libraries - cocos2d - Textures - - Path - Libraries/cocos2d/CCTexturePVR.h - TargetIndices - - - Libraries/cocos2d/CCTexturePVR.m - - Group - - Libraries - cocos2d - Textures - - Path - Libraries/cocos2d/CCTexturePVR.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCTiledMap.h - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCTiledMap.h - TargetIndices - - - Libraries/cocos2d/CCTiledMap.m - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCTiledMap.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCTiledMapLayer_Private.h - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCTiledMapLayer_Private.h - TargetIndices - - - Libraries/cocos2d/CCTiledMapLayer.h - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCTiledMapLayer.h - TargetIndices - - - Libraries/cocos2d/CCTiledMapLayer.m - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCTiledMapLayer.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCTiledMapObjectGroup.h - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCTiledMapObjectGroup.h - TargetIndices - - - Libraries/cocos2d/CCTiledMapObjectGroup.m - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCTiledMapObjectGroup.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCTMXXMLParser.h - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCTMXXMLParser.h - TargetIndices - - - Libraries/cocos2d/CCTMXXMLParser.m - - Group - - Libraries - cocos2d - Tile Map & Parallax Nodes - - Path - Libraries/cocos2d/CCTMXXMLParser.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCTransition.h - - Group - - Libraries - cocos2d - Layers, Scenes, Transition Nodes - - Path - Libraries/cocos2d/CCTransition.h - TargetIndices - - - Libraries/cocos2d/CCTransition.m - - Group - - Libraries - cocos2d - Layers, Scenes, Transition Nodes - - Path - Libraries/cocos2d/CCTransition.m - TargetIndices - - 0 - - - Libraries/cocos2d/ccTypes.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/ccTypes.h - TargetIndices - - - Libraries/cocos2d/cocos2d.h - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/cocos2d.h - TargetIndices - - - Libraries/cocos2d/cocos2d.m - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/cocos2d.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCRendererGLSupport.m - - Group - - Libraries - cocos2d - - Path - Libraries/cocos2d/CCRendererGLSupport.m - TargetIndices - - 0 - - - Libraries/LICENSE_cocos2d.txt - - Group - - Libraries - - Path - Libraries/LICENSE_cocos2d.txt - - - Nodes - - Libraries/cocos2d/CCRendererGLSupport.m - Libraries/cocos2d/CCNoARC.m - Libraries/cocos2d/CCRenderDispatch.h - Libraries/cocos2d/CCRenderDispatch.m - Libraries/cocos2d/CCRendererBasicTypes_Private.h - Libraries/cocos2d/CCRendererBasicTypes.h - Libraries/cocos2d/CCRendererBasicTypes.m - Libraries/cocos2d/CCRendererSharedTypes.h - Libraries/cocos2d/NSValue+CCRenderer.h - Libraries/cocos2d/NSValue+CCRenderer.m - Libraries/cocos2d/CCTouch.h - Libraries/cocos2d/CCTouch.m - Libraries/cocos2d/CCTouchEvent.h - Libraries/cocos2d/CCTouchEvent.m - Libraries/cocos2d/CCRenderer.h - Libraries/cocos2d/CCRenderer_Private.h - Libraries/cocos2d/CCRenderer.m - Libraries/cocos2d/CCShader.h - Libraries/cocos2d/CCShader_Private.h - Libraries/cocos2d/CCShader.m - Libraries/cocos2d/CCCache.h - Libraries/cocos2d/CCCache.m - Libraries/cocos2d/CCAction.h - Libraries/cocos2d/CCAction.m - Libraries/cocos2d/CCActionCatmullRom.h - Libraries/cocos2d/CCActionCatmullRom.m - Libraries/cocos2d/CCActionEase.h - Libraries/cocos2d/CCActionEase.m - Libraries/cocos2d/CCActionInstant.h - Libraries/cocos2d/CCActionInstant.m - Libraries/cocos2d/CCActionInterval.h - Libraries/cocos2d/CCActionInterval.m - Libraries/cocos2d/CCActionManager.h - Libraries/cocos2d/CCActionManager_Private.h - Libraries/cocos2d/CCActionManager.m - Libraries/cocos2d/CCActionProgressTimer.h - Libraries/cocos2d/CCActionProgressTimer.m - Libraries/cocos2d/CCActionTween.h - Libraries/cocos2d/CCActionTween.m - Libraries/cocos2d/CCAnimation.h - Libraries/cocos2d/CCAnimation.m - Libraries/cocos2d/CCAnimationCache.h - Libraries/cocos2d/CCAnimationCache.m - Libraries/cocos2d/CCClippingNode.h - Libraries/cocos2d/CCClippingNode.m - Libraries/cocos2d/ccConfig.h - Libraries/cocos2d/CCConfiguration.h - Libraries/cocos2d/CCConfiguration.m - Libraries/cocos2d/CCDirector_Private.h - Libraries/cocos2d/CCDirector.h - Libraries/cocos2d/CCDirector.m - Libraries/cocos2d/CCDrawNode.h - Libraries/cocos2d/CCDrawNode.m - Libraries/cocos2d/ccFPSImages.h - Libraries/cocos2d/ccFPSImages.m - Libraries/cocos2d/CCLabelBMFont_Private.h - Libraries/cocos2d/CCLabelBMFont.h - Libraries/cocos2d/CCLabelBMFont.m - Libraries/cocos2d/CCLabelTTF.h - Libraries/cocos2d/CCLabelTTF.m - Libraries/cocos2d/CCNodeColor.h - Libraries/cocos2d/CCNodeColor.m - Libraries/cocos2d/CCLayout.h - Libraries/cocos2d/CCLayout.m - Libraries/cocos2d/CCLayoutBox.h - Libraries/cocos2d/CCLayoutBox.m - Libraries/cocos2d/ccMacros.h - Libraries/cocos2d/CCMotionStreak.h - Libraries/cocos2d/CCMotionStreak.m - Libraries/cocos2d/CCNode_Private.h - Libraries/cocos2d/CCNode.h - Libraries/cocos2d/CCNode.m - Libraries/cocos2d/CCNode+Debug.h - Libraries/cocos2d/CCNode+Debug.m - Libraries/cocos2d/CCParallaxNode.h - Libraries/cocos2d/CCParallaxNode.m - Libraries/cocos2d/CCParticleBatchNode.h - Libraries/cocos2d/CCParticleBatchNode.m - Libraries/cocos2d/CCParticleExamples.h - Libraries/cocos2d/CCParticleExamples.m - Libraries/cocos2d/CCParticleSystem_Private.h - Libraries/cocos2d/CCParticleSystem.h - Libraries/cocos2d/CCParticleSystem.m - Libraries/cocos2d/CCParticleSystemBase_Private.h - Libraries/cocos2d/CCParticleSystemBase.h - Libraries/cocos2d/CCParticleSystemBase.m - Libraries/cocos2d/CCPhysics+ObjectiveChipmunk.h - Libraries/cocos2d/CCPhysicsBody.h - Libraries/cocos2d/CCPhysicsBody.m - Libraries/cocos2d/CCPhysicsJoint.h - Libraries/cocos2d/CCPhysicsJoint.m - Libraries/cocos2d/CCPhysicsNode.h - Libraries/cocos2d/CCPhysicsNode.m - Libraries/cocos2d/CCPhysicsShape.h - Libraries/cocos2d/CCPhysicsShape.m - Libraries/cocos2d/CCProgressNode_Private.h - Libraries/cocos2d/CCProgressNode.h - Libraries/cocos2d/CCProgressNode.m - Libraries/cocos2d/CCProtocols.h - Libraries/cocos2d/CCRenderTexture.h - Libraries/cocos2d/CCRenderTexture_Private.h - Libraries/cocos2d/CCRenderTexture.m - Libraries/cocos2d/CCResponder.h - Libraries/cocos2d/CCResponder.m - Libraries/cocos2d/CCResponderManager.h - Libraries/cocos2d/CCResponderManager.m - Libraries/cocos2d/CCScene.h - Libraries/cocos2d/CCScene.m - Libraries/cocos2d/CCScheduler.h - Libraries/cocos2d/CCScheduler.m - Libraries/cocos2d/CCSprite_Private.h - Libraries/cocos2d/CCSprite.h - Libraries/cocos2d/CCSprite.m - Libraries/cocos2d/CCSprite9Slice.h - Libraries/cocos2d/CCSprite9Slice.m - Libraries/cocos2d/CCSpriteBatchNode.h - Libraries/cocos2d/CCSpriteBatchNode.m - Libraries/cocos2d/CCSpriteFrame.h - Libraries/cocos2d/CCSpriteFrame.m - Libraries/cocos2d/CCSpriteFrameCache.h - Libraries/cocos2d/CCSpriteFrameCache.m - Libraries/cocos2d/CCTexture_Private.h - Libraries/cocos2d/CCTexture.h - Libraries/cocos2d/CCTexture.m - Libraries/cocos2d/CCTextureCache.h - Libraries/cocos2d/CCTextureCache.m - Libraries/cocos2d/CCTexturePVR.h - Libraries/cocos2d/CCTexturePVR.m - Libraries/cocos2d/CCTiledMap.h - Libraries/cocos2d/CCTiledMap.m - Libraries/cocos2d/CCTiledMapLayer_Private.h - Libraries/cocos2d/CCTiledMapLayer.h - Libraries/cocos2d/CCTiledMapLayer.m - Libraries/cocos2d/CCTiledMapObjectGroup.h - Libraries/cocos2d/CCTiledMapObjectGroup.m - Libraries/cocos2d/CCTMXXMLParser.h - Libraries/cocos2d/CCTMXXMLParser.m - Libraries/cocos2d/CCTransition.h - Libraries/cocos2d/CCTransition.m - Libraries/cocos2d/ccTypes.h - Libraries/cocos2d/cocos2d.h - Libraries/cocos2d/cocos2d.m - Libraries/LICENSE_cocos2d.txt - - - diff --git a/templates/Support/Libraries/cocos2d-ccb.xctemplate/TemplateInfo.plist b/templates/Support/Libraries/cocos2d-ccb.xctemplate/TemplateInfo.plist deleted file mode 100755 index 97fb2a7e0cd..00000000000 --- a/templates/Support/Libraries/cocos2d-ccb.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,280 +0,0 @@ - - - - - Description - This is a template description. - Identifier - com.cocos2d-v3.cocos2d-ccb - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Definitions - - Libraries/CCBReader/CCAnimationManager.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCAnimationManager.h - TargetIndices - - - Libraries/CCBReader/CCAnimationManager_Private.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCAnimationManager_Private.h - TargetIndices - - - Libraries/CCBReader/CCAnimationManager.m - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCAnimationManager.m - TargetIndices - - 0 - - - Libraries/CCBReader/CCBAnimationManager.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBAnimationManager.h - TargetIndices - - - Libraries/CCBReader/CCBAnimationManager.m - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBAnimationManager.m - TargetIndices - - 0 - - - Libraries/CCBReader/CCBKeyframe.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBKeyframe.h - TargetIndices - - - Libraries/CCBReader/CCBKeyframe.m - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBKeyframe.m - TargetIndices - - 0 - - - Libraries/CCBReader/CCBReader.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBReader.h - TargetIndices - - - Libraries/CCBReader/CCBReader.m - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBReader.m - TargetIndices - - 0 - - - Libraries/CCBReader/CCBSequence.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBSequence.h - TargetIndices - - - Libraries/CCBReader/CCBsequence.m - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBsequence.m - TargetIndices - - 0 - - - Libraries/CCBReader/CCBSequenceProperty.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBSequenceProperty.h - TargetIndices - - - Libraries/CCBReader/CCBSequenceProperty.m - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBSequenceProperty.m - TargetIndices - - 0 - - - Libraries/CCBReader/CCBLocalizationManager.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBLocalizationManager.h - TargetIndices - - - Libraries/CCBReader/CCBLocalizationManager.m - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBLocalizationManager.m - TargetIndices - - 0 - - - Libraries/CCBReader/CCBuilderReader.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBuilderReader.h - TargetIndices - - - Libraries/CCBReader/CCBReader_Private.h - - Group - - Libraries - cocos2d-ui - CCBReader - - Path - Libraries/CCBReader/CCBReader_Private.h - TargetIndices - - - Libraries/LICENSE_CCBReader.txt - - Group - - Libraries - - Path - Libraries/LICENSE_CCBReader.txt - - - Nodes - - Libraries/CCBReader/CCAnimationManager.h - Libraries/CCBReader/CCAnimationManager_Private.h - Libraries/CCBReader/CCAnimationManager.m - Libraries/CCBReader/CCBAnimationManager.h - Libraries/CCBReader/CCBAnimationManager.m - Libraries/CCBReader/CCBKeyframe.h - Libraries/CCBReader/CCBKeyframe.m - Libraries/CCBReader/CCBReader.h - Libraries/CCBReader/CCBReader.m - Libraries/CCBReader/CCBSequence.h - Libraries/CCBReader/CCBsequence.m - Libraries/CCBReader/CCBSequenceProperty.h - Libraries/CCBReader/CCBSequenceProperty.m - Libraries/CCBReader/CCBLocalizationManager.h - Libraries/CCBReader/CCBLocalizationManager.m - Libraries/CCBReader/CCBuilderReader.h - Libraries/CCBReader/CCBReader_Private.h - Libraries/LICENSE_CCBReader.txt - - - diff --git a/templates/Support/Libraries/cocos2d-effects.xctemplate/TemplateInfo.plist b/templates/Support/Libraries/cocos2d-effects.xctemplate/TemplateInfo.plist deleted file mode 100755 index fb7e96889c7..00000000000 --- a/templates/Support/Libraries/cocos2d-effects.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,954 +0,0 @@ - - - - - Description - This is a template description. - Identifier - com.cocos2d-v3.cocos2d-effects - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Definitions - - Libraries/cocos2d/CCLightCollection.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCLightCollection.h - TargetIndices - - - Libraries/cocos2d/CCLightCollection.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCLightCollection.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCLightGroups.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCLightGroups.h - TargetIndices - - - Libraries/cocos2d/CCLightNode_Private.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCLightNode_Private.h - TargetIndices - - - Libraries/cocos2d/CCLightNode.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCLightNode.h - TargetIndices - - - Libraries/cocos2d/CCLightNode.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCLightNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectBloom.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectBloom.h - TargetIndices - - - Libraries/cocos2d/CCEffectBloom.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectBloom.m - TargetIndices - - - Libraries/cocos2d/CCEffectBlur.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectBlur.h - TargetIndices - - - Libraries/cocos2d/CCEffectBlur.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectBlur.m - TargetIndices - - - Libraries/cocos2d/CCEffectSaturation.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectSaturation.h - TargetIndices - - - Libraries/cocos2d/CCEffectSaturation.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectSaturation.m - TargetIndices - - - Libraries/cocos2d/CCEffectColorChannelOffset.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectColorChannelOffset.h - TargetIndices - - - Libraries/cocos2d/CCEffectColorChannelOffset.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectColorChannelOffset.m - TargetIndices - - - Libraries/cocos2d/CCEffectDFInnerGlow.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDFInnerGlow.h - TargetIndices - - - Libraries/cocos2d/CCEffectDFInnerGlow.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDFInnerGlow.m - TargetIndices - - - Libraries/cocos2d/CCEffectDFOutline.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDFOutline.h - TargetIndices - - - Libraries/cocos2d/CCEffectDFOutline.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDFOutline.m - TargetIndices - - - Libraries/cocos2d/CCEffectDistanceField.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDistanceField.h - TargetIndices - - - Libraries/cocos2d/CCEffectDistanceField.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDistanceField.m - TargetIndices - - - Libraries/cocos2d/CCEffectDropShadow_dist.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDropShadow_dist.h - TargetIndices - - - Libraries/cocos2d/CCEffectDropShadow_dist.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDropShadow_dist.m - TargetIndices - - - Libraries/cocos2d/CCEffectDropShadow.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDropShadow.h - TargetIndices - - - Libraries/cocos2d/CCEffectDropShadow.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectDropShadow.m - TargetIndices - - - Libraries/cocos2d/CCEffectGlass.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectGlass.h - TargetIndices - - - Libraries/cocos2d/CCEffectGlass.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectGlass.m - TargetIndices - - - Libraries/cocos2d/CCEffectHue.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectHue.h - TargetIndices - - - Libraries/cocos2d/CCEffectHue.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectHue.m - TargetIndices - - - Libraries/cocos2d/CCEffectInvert.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectInvert.h - TargetIndices - - - Libraries/cocos2d/CCEffectInvert.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectInvert.m - TargetIndices - - - Libraries/cocos2d/CCEffectLighting.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectLighting.h - TargetIndices - - - Libraries/cocos2d/CCEffectLighting.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectLighting.m - TargetIndices - - - Libraries/cocos2d/CCEffectOutline.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectOutline.h - TargetIndices - - - Libraries/cocos2d/CCEffectOutline.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectOutline.m - TargetIndices - - - Libraries/cocos2d/CCEffectReflection.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectReflection.h - TargetIndices - - - Libraries/cocos2d/CCEffectReflection.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectReflection.m - TargetIndices - - - Libraries/cocos2d/CCEffectRefraction.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectRefraction.h - TargetIndices - - - Libraries/cocos2d/CCEffectRefraction.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectRefraction.m - TargetIndices - - - Libraries/cocos2d/CCEffectStackProtocol.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectStackProtocol.h - TargetIndices - - - Libraries/cocos2d/CCEffectStereo.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectStereo.h - TargetIndices - - - Libraries/cocos2d/CCEffectStereo.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectStereo.m - TargetIndices - - - Libraries/cocos2d/CCEffectUtils.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectUtils.h - TargetIndices - - - Libraries/cocos2d/CCEffectUtils.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectUtils.m - TargetIndices - - - Libraries/cocos2d/CCEffect.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffect.h - TargetIndices - - - Libraries/cocos2d/CCEffectBrightness.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectBrightness.h - TargetIndices - - - Libraries/cocos2d/CCEffectContrast.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectContrast.h - TargetIndices - - - Libraries/cocos2d/CCEffectColor.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectColor.h - TargetIndices - - - Libraries/cocos2d/CCEffectColorPulse.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectColorPulse.h - TargetIndices - - - Libraries/cocos2d/CCEffectPixellate.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectPixellate.h - TargetIndices - - - Libraries/cocos2d/CCEffectNode.h - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCEffectNode.h - TargetIndices - - - Libraries/cocos2d/CCEffectStack.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectStack.h - TargetIndices - - - Libraries/cocos2d/CCEffectTexture.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectTexture.h - TargetIndices - - - Libraries/cocos2d/CCEffect_Private.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffect_Private.h - TargetIndices - - - Libraries/cocos2d/CCEffectStack_Private.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectStack_Private.h - TargetIndices - - - Libraries/cocos2d/CCEffect.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffect.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectBrightness.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectBrightness.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectContrast.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectContrast.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectColor.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectColor.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectColorPulse.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectColorPulse.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectPixellate.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectPixellate.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectNode.m - - Group - - Libraries - cocos2d - Misc Nodes - - Path - Libraries/cocos2d/CCEffectNode.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectStack.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectStack.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectTexture.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectTexture.m - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectRenderer.h - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectRenderer.h - TargetIndices - - 0 - - - Libraries/cocos2d/CCEffectRenderer.m - - Group - - Libraries - cocos2d - Effects - - Path - Libraries/cocos2d/CCEffectRenderer.m - TargetIndices - - 0 - - - - Nodes - - Libraries/cocos2d/CCEffectRenderer.h - Libraries/cocos2d/CCEffectRenderer.m - Libraries/cocos2d/CCLightCollection.h - Libraries/cocos2d/CCLightCollection.m - Libraries/cocos2d/CCLightGroups.h - Libraries/cocos2d/CCLightNode_Private.h - Libraries/cocos2d/CCLightNode.h - Libraries/cocos2d/CCLightNode.m - Libraries/cocos2d/CCEffectBloom.h - Libraries/cocos2d/CCEffectBloom.m - Libraries/cocos2d/CCEffectBlur.h - Libraries/cocos2d/CCEffectBlur.m - Libraries/cocos2d/CCEffectSaturation.h - Libraries/cocos2d/CCEffectSaturation.m - Libraries/cocos2d/CCEffectColorChannelOffset.h - Libraries/cocos2d/CCEffectColorChannelOffset.m - Libraries/cocos2d/CCEffectDFInnerGlow.h - Libraries/cocos2d/CCEffectDFInnerGlow.m - Libraries/cocos2d/CCEffectDFOutline.h - Libraries/cocos2d/CCEffectDFOutline.m - Libraries/cocos2d/CCEffectDistanceField.h - Libraries/cocos2d/CCEffectDistanceField.m - Libraries/cocos2d/CCEffectDropShadow_dist.h - Libraries/cocos2d/CCEffectDropShadow_dist.m - Libraries/cocos2d/CCEffectDropShadow.h - Libraries/cocos2d/CCEffectDropShadow.m - Libraries/cocos2d/CCEffectGlass.h - Libraries/cocos2d/CCEffectGlass.m - Libraries/cocos2d/CCEffectHue.h - Libraries/cocos2d/CCEffectHue.m - Libraries/cocos2d/CCEffectInvert.h - Libraries/cocos2d/CCEffectInvert.m - Libraries/cocos2d/CCEffectLighting.h - Libraries/cocos2d/CCEffectLighting.m - Libraries/cocos2d/CCEffectOutline.h - Libraries/cocos2d/CCEffectOutline.m - Libraries/cocos2d/CCEffectReflection.h - Libraries/cocos2d/CCEffectReflection.m - Libraries/cocos2d/CCEffectRefraction.h - Libraries/cocos2d/CCEffectRefraction.m - Libraries/cocos2d/CCEffectStackProtocol.h - Libraries/cocos2d/CCEffectStereo.h - Libraries/cocos2d/CCEffectStereo.m - Libraries/cocos2d/CCEffectUtils.h - Libraries/cocos2d/CCEffectUtils.m - Libraries/cocos2d/CCEffect.h - Libraries/cocos2d/CCEffect.m - Libraries/cocos2d/CCEffectBrightness.h - Libraries/cocos2d/CCEffectBrightness.m - Libraries/cocos2d/CCEffectContrast.h - Libraries/cocos2d/CCEffectContrast.m - Libraries/cocos2d/CCEffectColor.h - Libraries/cocos2d/CCEffectColor.m - Libraries/cocos2d/CCEffectColorPulse.h - Libraries/cocos2d/CCEffectColorPulse.m - Libraries/cocos2d/CCEffectPixellate.h - Libraries/cocos2d/CCEffectPixellate.m - Libraries/cocos2d/CCEffectNode.h - Libraries/cocos2d/CCEffectNode.m - Libraries/cocos2d/CCEffectStack.h - Libraries/cocos2d/CCEffectStack.m - Libraries/cocos2d/CCEffectTexture.h - Libraries/cocos2d/CCEffectTexture.m - Libraries/cocos2d/CCEffect_Private.h - Libraries/cocos2d/CCEffectStack_Private.h - - - diff --git a/templates/Support/Libraries/cocos2d-platform.xctemplate/TemplateInfo.plist b/templates/Support/Libraries/cocos2d-platform.xctemplate/TemplateInfo.plist deleted file mode 100755 index 2a3ae6c9970..00000000000 --- a/templates/Support/Libraries/cocos2d-platform.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,437 +0,0 @@ - - - - - Description - This is a template description. - Identifier - com.cocos2d-v3.cocos2d-platform - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Definitions - - Libraries/cocos2d/Platforms/CCDirectorView.h - - Group - - Libraries - cocos2d - Platforms - - Path - Libraries/cocos2d/Platforms/CCDirectorView.h - TargetIndices - - - Libraries/cocos2d/Platforms/CCRenderDispatch_Private.h - - Group - - Libraries - cocos2d - Platforms - - Path - Libraries/cocos2d/Platforms/CCRenderDispatch_Private.h - TargetIndices - - - Libraries/cocos2d/Platforms/CCGL.h - - Group - - Libraries - cocos2d - Platforms - - Path - Libraries/cocos2d/Platforms/CCGL.h - TargetIndices - - - Libraries/cocos2d/Platforms/CCNS.h - - Group - - Libraries - cocos2d - Platforms - - Path - Libraries/cocos2d/Platforms/CCNS.h - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCMetalSupport_Private.h - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCMetalSupport_Private.h - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCMetalSupport.m - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCMetalSupport.m - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCMetalView.h - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCMetalView.h - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCMetalView.m - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCMetalView.m - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCShaders.metal - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCShaders.metal - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCTouchIOS.h - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCTouchIOS.h - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCTouchIOS.m - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCTouchIOS.m - TargetIndices - - 0 - - - Libraries/cocos2d/Platforms/iOS/CCDirectorIOS.h - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCDirectorIOS.h - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCDirectorIOS.m - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCDirectorIOS.m - TargetIndices - - 0 - - - Libraries/cocos2d/Platforms/iOS/CCGLView.h - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCGLView.h - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCGLView.m - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCGLView.m - TargetIndices - - 0 - - - Libraries/cocos2d/Platforms/iOS/UITouch+CC.h - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/UITouch+CC.h - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/UITouch+CC.m - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/UITouch+CC.m - TargetIndices - - 0 - - - Libraries/cocos2d/Platforms/iOS/CCAppDelegate.h - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCAppDelegate.h - TargetIndices - - - Libraries/cocos2d/Platforms/iOS/CCAppDelegate.m - - Group - - Libraries - cocos2d - Platforms - iOS - - Path - Libraries/cocos2d/Platforms/iOS/CCAppDelegate.m - TargetIndices - - 0 - - - Libraries/cocos2d/Platforms/Mac/CCDirectorMac.h - - Group - - Libraries - cocos2d - Platforms - Mac - - Path - Libraries/cocos2d/Platforms/Mac/CCDirectorMac.h - TargetIndices - - - Libraries/cocos2d/Platforms/Mac/CCDirectorMac.m - - Group - - Libraries - cocos2d - Platforms - Mac - - Path - Libraries/cocos2d/Platforms/Mac/CCDirectorMac.m - TargetIndices - - 0 - - - Libraries/cocos2d/Platforms/Mac/CCGLView.h - - Group - - Libraries - cocos2d - Platforms - Mac - - Path - Libraries/cocos2d/Platforms/Mac/CCGLView.h - TargetIndices - - - Libraries/cocos2d/Platforms/Mac/CCGLView.m - - Group - - Libraries - cocos2d - Platforms - Mac - - Path - Libraries/cocos2d/Platforms/Mac/CCGLView.m - TargetIndices - - 0 - - - Libraries/cocos2d/Platforms/Mac/CCWindow.h - - Group - - Libraries - cocos2d - Platforms - Mac - - Path - Libraries/cocos2d/Platforms/Mac/CCWindow.h - TargetIndices - - - Libraries/cocos2d/Platforms/Mac/CCWindow.m - - Group - - Libraries - cocos2d - Platforms - Mac - - Path - Libraries/cocos2d/Platforms/Mac/CCWindow.m - TargetIndices - - 0 - - - Libraries/cocos2d/Platforms/Mac/NSEvent+CC.h - - Group - - Libraries - cocos2d - Platforms - Mac - - Path - Libraries/cocos2d/Platforms/Mac/NSEvent+CC.h - TargetIndices - - - Libraries/cocos2d/Platforms/Mac/NSEvent+CC.m - - Group - - Libraries - cocos2d - Platforms - Mac - - Path - Libraries/cocos2d/Platforms/Mac/NSEvent+CC.m - TargetIndices - - 0 - - - - Nodes - - Libraries/cocos2d/Platforms/CCDirectorView.h - Libraries/cocos2d/Platforms/CCRenderDispatch_Private.h - Libraries/cocos2d/Platforms/iOS/CCMetalSupport_Private.h - Libraries/cocos2d/Platforms/iOS/CCMetalSupport.m - Libraries/cocos2d/Platforms/iOS/CCMetalView.h - Libraries/cocos2d/Platforms/iOS/CCMetalView.m - Libraries/cocos2d/Platforms/iOS/CCShaders.metal - Libraries/cocos2d/Platforms/iOS/CCTouchIOS.h - Libraries/cocos2d/Platforms/iOS/CCTouchIOS.m - Libraries/cocos2d/Platforms/CCGL.h - Libraries/cocos2d/Platforms/CCNS.h - Libraries/cocos2d/Platforms/iOS/CCDirectorIOS.h - Libraries/cocos2d/Platforms/iOS/CCDirectorIOS.m - Libraries/cocos2d/Platforms/iOS/CCGLView.h - Libraries/cocos2d/Platforms/iOS/CCGLView.m - Libraries/cocos2d/Platforms/iOS/UITouch+CC.h - Libraries/cocos2d/Platforms/iOS/UITouch+CC.m - Libraries/cocos2d/Platforms/iOS/CCAppDelegate.h - Libraries/cocos2d/Platforms/iOS/CCAppDelegate.m - Libraries/cocos2d/Platforms/Mac/CCDirectorMac.h - Libraries/cocos2d/Platforms/Mac/CCDirectorMac.m - Libraries/cocos2d/Platforms/Mac/CCGLView.h - Libraries/cocos2d/Platforms/Mac/CCGLView.m - Libraries/cocos2d/Platforms/Mac/CCWindow.h - Libraries/cocos2d/Platforms/Mac/CCWindow.m - Libraries/cocos2d/Platforms/Mac/NSEvent+CC.h - Libraries/cocos2d/Platforms/Mac/NSEvent+CC.m - - - diff --git a/templates/Support/Libraries/cocos2d-support.xctemplate/TemplateInfo.plist b/templates/Support/Libraries/cocos2d-support.xctemplate/TemplateInfo.plist deleted file mode 100755 index d9439226ea6..00000000000 --- a/templates/Support/Libraries/cocos2d-support.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,402 +0,0 @@ - - - - - Description - This is a template description. - Identifier - com.cocos2d-v3.cocos2d-support - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Definitions - - Libraries/cocos2d/Support/CCRendererGLSupport.m - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/CCRendererGLSupport.m - TargetIndices - - 0 - - - Libraries/cocos2d/Support/base64.c - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/base64.c - TargetIndices - - 0 - - - Libraries/cocos2d/Support/base64.h - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/base64.h - TargetIndices - - - Libraries/cocos2d/Support/CCColor.m - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/CCColor.m - TargetIndices - - 0 - - - Libraries/cocos2d/Support/CCColor.h - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/CCColor.h - TargetIndices - - - Libraries/cocos2d/Support/CCFileUtils.h - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/CCFileUtils.h - TargetIndices - - - Libraries/cocos2d/Support/CCFileUtils.m - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/CCFileUtils.m - TargetIndices - - 0 - - - Libraries/cocos2d/Support/CCProfiling.h - - Group - - Libraries - cocos2d - Support - Profiling - - Path - Libraries/cocos2d/Support/CCProfiling.h - TargetIndices - - - Libraries/cocos2d/Support/CCProfiling.m - - Group - - Libraries - cocos2d - Support - Profiling - - Path - Libraries/cocos2d/Support/CCProfiling.m - TargetIndices - - 0 - - - Libraries/cocos2d/Support/ccUtils.c - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/ccUtils.c - TargetIndices - - 0 - - - Libraries/cocos2d/Support/ccUtils.h - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/ccUtils.h - TargetIndices - - - Libraries/cocos2d/Support/CCVertex.h - - Group - - Libraries - cocos2d - Support - Math - - Path - Libraries/cocos2d/Support/CCVertex.h - TargetIndices - - - Libraries/cocos2d/Support/CCVertex.m - - Group - - Libraries - cocos2d - Support - Math - - Path - Libraries/cocos2d/Support/CCVertex.m - TargetIndices - - 0 - - - Libraries/cocos2d/Support/CGPointExtension.h - - Group - - Libraries - cocos2d - Support - Math - - Path - Libraries/cocos2d/Support/CGPointExtension.h - TargetIndices - - - Libraries/cocos2d/Support/CGPointExtension.m - - Group - - Libraries - cocos2d - Support - Math - - Path - Libraries/cocos2d/Support/CGPointExtension.m - TargetIndices - - 0 - - - Libraries/cocos2d/Support/NSAttributedString+CCAdditions.h - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/NSAttributedString+CCAdditions.h - TargetIndices - - - Libraries/cocos2d/Support/NSAttributedString+CCAdditions.m - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/NSAttributedString+CCAdditions.m - TargetIndices - - 0 - - - Libraries/cocos2d/Support/NSThread+performBlock.h - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/NSThread+performBlock.h - TargetIndices - - - Libraries/cocos2d/Support/NSThread+performBlock.m - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/NSThread+performBlock.m - TargetIndices - - 0 - - - Libraries/cocos2d/Support/TGAlib.h - - Group - - Libraries - cocos2d - Support - Image Support - - Path - Libraries/cocos2d/Support/TGAlib.h - TargetIndices - - - Libraries/cocos2d/Support/TGAlib.m - - Group - - Libraries - cocos2d - Support - Image Support - - Path - Libraries/cocos2d/Support/TGAlib.m - TargetIndices - - 0 - - - Libraries/cocos2d/Support/uthash.h - - Group - - Libraries - cocos2d - Support - Data Structures - - Path - Libraries/cocos2d/Support/uthash.h - TargetIndices - - - Libraries/cocos2d/Support/utlist.h - - Group - - Libraries - cocos2d - Support - Data Structures - - Path - Libraries/cocos2d/Support/utlist.h - TargetIndices - - - Libraries/cocos2d/Support/ZipUtils.h - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/ZipUtils.h - TargetIndices - - - Libraries/cocos2d/Support/ZipUtils.m - - Group - - Libraries - cocos2d - Support - - Path - Libraries/cocos2d/Support/ZipUtils.m - TargetIndices - - 0 - - - - Nodes - - Libraries/cocos2d/Support/CCRendererGLSupport.m - Libraries/cocos2d/Support/base64.h - Libraries/cocos2d/Support/base64.c - Libraries/cocos2d/Support/CCFileUtils.h - Libraries/cocos2d/Support/CCFileUtils.m - Libraries/cocos2d/Support/CCColor.h - Libraries/cocos2d/Support/CCColor.m - Libraries/cocos2d/Support/CCProfiling.h - Libraries/cocos2d/Support/CCProfiling.m - Libraries/cocos2d/Support/ccUtils.c - Libraries/cocos2d/Support/ccUtils.h - Libraries/cocos2d/Support/CCVertex.h - Libraries/cocos2d/Support/CCVertex.m - Libraries/cocos2d/Support/CGPointExtension.h - Libraries/cocos2d/Support/CGPointExtension.m - Libraries/cocos2d/Support/NSAttributedString+CCAdditions.h - Libraries/cocos2d/Support/NSAttributedString+CCAdditions.m - Libraries/cocos2d/Support/NSThread+performBlock.h - Libraries/cocos2d/Support/NSThread+performBlock.m - Libraries/cocos2d/Support/TGAlib.h - Libraries/cocos2d/Support/TGAlib.m - Libraries/cocos2d/Support/uthash.h - Libraries/cocos2d/Support/utlist.h - Libraries/cocos2d/Support/ZipUtils.h - Libraries/cocos2d/Support/ZipUtils.m - - - diff --git a/templates/Support/Libraries/cocos2d-ui.xctemplate/TemplateInfo.plist b/templates/Support/Libraries/cocos2d-ui.xctemplate/TemplateInfo.plist deleted file mode 100755 index 25861ae2bd1..00000000000 --- a/templates/Support/Libraries/cocos2d-ui.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,302 +0,0 @@ - - - - - Description - This is a template description. - Identifier - com.cocos2d-v3.cocos2d-ui - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Definitions - - Libraries/cocos2d-ui/CCButton.h - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCButton.h - TargetIndices - - - Libraries/cocos2d-ui/CCButton.m - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCButton.m - TargetIndices - - 0 - - - Libraries/cocos2d-ui/CCControl.h - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCControl.h - TargetIndices - - - Libraries/cocos2d-ui/CCControl.m - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCControl.m - TargetIndices - - 0 - - - Libraries/cocos2d-ui/CCControlSubclass.h - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCControlSubclass.h - TargetIndices - - - Libraries/cocos2d-ui/CCControlTextureFactory.h - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCControlTextureFactory.h - TargetIndices - - - Libraries/cocos2d-ui/CCControlTextureFactory.m - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCControlTextureFactory.m - TargetIndices - - 0 - - - Libraries/cocos2d-ui/CCScrollView.h - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCScrollView.h - TargetIndices - - - Libraries/cocos2d-ui/CCScrollView.m - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCScrollView.m - TargetIndices - - 0 - - - Libraries/cocos2d-ui/CCSlider.h - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCSlider.h - TargetIndices - - - Libraries/cocos2d-ui/CCSlider.m - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCSlider.m - TargetIndices - - 0 - - - Libraries/cocos2d-ui/CCTableView.h - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCTableView.h - TargetIndices - - - Libraries/cocos2d-ui/CCTableView.m - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCTableView.m - TargetIndices - - 0 - - - Libraries/cocos2d-ui/CCTextField.h - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCTextField.h - TargetIndices - - - Libraries/cocos2d-ui/CCTextField.m - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/CCTextField.m - TargetIndices - - 0 - - - Libraries/cocos2d-ui/cocos2d-ui.h - - Group - - Libraries - cocos2d-ui - - Path - Libraries/cocos2d-ui/cocos2d-ui.h - TargetIndices - - - Libraries/cocos2d-ui/Platform/CCPlatformTextField.h - - Group - - Libraries - cocos2d-ui - Platform - - Path - Libraries/cocos2d-ui/Platform/CCPlatformTextField.h - TargetIndices - - - Libraries/cocos2d-ui/Platform/CCPlatformTextField.m - - Group - - Libraries - cocos2d-ui - Platform - - Path - Libraries/cocos2d-ui/Platform/CCPlatformTextField.m - TargetIndices - - 0 - - - Libraries/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.h - - Group - - Libraries - cocos2d-ui - Platform - iOS - - Path - Libraries/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.h - TargetIndices - - - Libraries/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m - - Group - - Libraries - cocos2d-ui - Platform - iOS - - Path - Libraries/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m - TargetIndices - - 0 - - - - Nodes - - Libraries/cocos2d-ui/CCButton.h - Libraries/cocos2d-ui/CCButton.m - Libraries/cocos2d-ui/CCControl.h - Libraries/cocos2d-ui/CCControl.m - Libraries/cocos2d-ui/CCControlSubclass.h - Libraries/cocos2d-ui/CCControlTextureFactory.h - Libraries/cocos2d-ui/CCControlTextureFactory.m - Libraries/cocos2d-ui/CCScrollView.h - Libraries/cocos2d-ui/CCScrollView.m - Libraries/cocos2d-ui/CCSlider.h - Libraries/cocos2d-ui/CCSlider.m - Libraries/cocos2d-ui/CCTableView.h - Libraries/cocos2d-ui/CCTableView.m - Libraries/cocos2d-ui/CCTextField.h - Libraries/cocos2d-ui/CCTextField.m - Libraries/cocos2d-ui/cocos2d-ui.h - Libraries/cocos2d-ui/Platform/CCPlatformTextField.h - Libraries/cocos2d-ui/Platform/CCPlatformTextField.m - Libraries/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.h - Libraries/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m - - - diff --git a/templates/Support/Libraries/objectal.xctemplate/TemplateInfo.plist b/templates/Support/Libraries/objectal.xctemplate/TemplateInfo.plist deleted file mode 100755 index 9a32e97db53..00000000000 --- a/templates/Support/Libraries/objectal.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,920 +0,0 @@ - - - - - Description - This is a template description. - Identifier - com.cocos2d-v3.objectal - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Definitions - - Libraries/ObjectAL/Actions/OALAction+Private.h - - Group - - Libraries - ObjectAL - Actions - - Path - Libraries/ObjectAL/Actions/OALAction+Private.h - TargetIndices - - - Libraries/ObjectAL/Actions/OALAction.h - - Group - - Libraries - ObjectAL - Actions - - Path - Libraries/ObjectAL/Actions/OALAction.h - TargetIndices - - - Libraries/ObjectAL/Actions/OALAction.m - - Group - - Libraries - ObjectAL - Actions - - Path - Libraries/ObjectAL/Actions/OALAction.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Actions/OALActionManager.h - - Group - - Libraries - ObjectAL - Actions - - Path - Libraries/ObjectAL/Actions/OALActionManager.h - TargetIndices - - - Libraries/ObjectAL/Actions/OALActionManager.m - - Group - - Libraries - ObjectAL - Actions - - Path - Libraries/ObjectAL/Actions/OALActionManager.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Actions/OALAudioActions.h - - Group - - Libraries - ObjectAL - Actions - - Path - Libraries/ObjectAL/Actions/OALAudioActions.h - TargetIndices - - - Libraries/ObjectAL/Actions/OALAudioActions.m - - Group - - Libraries - ObjectAL - Actions - - Path - Libraries/ObjectAL/Actions/OALAudioActions.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Actions/OALUtilityActions.h - - Group - - Libraries - ObjectAL - Actions - - Path - Libraries/ObjectAL/Actions/OALUtilityActions.h - TargetIndices - - - Libraries/ObjectAL/Actions/OALUtilityActions.m - - Group - - Libraries - ObjectAL - Actions - - Path - Libraries/ObjectAL/Actions/OALUtilityActions.m - TargetIndices - - 0 - - - Libraries/ObjectAL/AudioTrack/OALAudioTrack.h - - Group - - Libraries - ObjectAL - AudioTrack - - Path - Libraries/ObjectAL/AudioTrack/OALAudioTrack.h - TargetIndices - - - Libraries/ObjectAL/AudioTrack/OALAudioTrack.m - - Group - - Libraries - ObjectAL - AudioTrack - - Path - Libraries/ObjectAL/AudioTrack/OALAudioTrack.m - TargetIndices - - 0 - - - Libraries/ObjectAL/AudioTrack/OALAudioTrackNotifications.h - - Group - - Libraries - ObjectAL - AudioTrack - - Path - Libraries/ObjectAL/AudioTrack/OALAudioTrackNotifications.h - TargetIndices - - - Libraries/ObjectAL/AudioTrack/OALAudioTrackNotifications.m - - Group - - Libraries - ObjectAL - AudioTrack - - Path - Libraries/ObjectAL/AudioTrack/OALAudioTrackNotifications.m - TargetIndices - - 0 - - - Libraries/ObjectAL/AudioTrack/OALAudioTracks.h - - Group - - Libraries - ObjectAL - AudioTrack - - Path - Libraries/ObjectAL/AudioTrack/OALAudioTracks.h - TargetIndices - - - Libraries/ObjectAL/AudioTrack/OALAudioTracks.m - - Group - - Libraries - ObjectAL - AudioTrack - - Path - Libraries/ObjectAL/AudioTrack/OALAudioTracks.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OALSimpleAudio.h - - Group - - Libraries - ObjectAL - - Path - Libraries/ObjectAL/OALSimpleAudio.h - TargetIndices - - - Libraries/ObjectAL/OALSimpleAudio.m - - Group - - Libraries - ObjectAL - - Path - Libraries/ObjectAL/OALSimpleAudio.m - TargetIndices - - 0 - - - Libraries/ObjectAL/ObjectAL.h - - Group - - Libraries - ObjectAL - - Path - Libraries/ObjectAL/ObjectAL.h - TargetIndices - - - Libraries/ObjectAL/ObjectALConfig.h - - Group - - Libraries - ObjectAL - - Path - Libraries/ObjectAL/ObjectALConfig.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALBuffer.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALBuffer.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALBuffer.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALBuffer.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OpenAL/ALCaptureDevice.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALCaptureDevice.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALCaptureDevice.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALCaptureDevice.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OpenAL/ALChannelSource.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALChannelSource.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALChannelSource.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALChannelSource.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OpenAL/ALContext.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALContext.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALContext.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALContext.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OpenAL/ALDevice.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALDevice.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALDevice.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALDevice.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OpenAL/ALListener.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALListener.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALListener.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALListener.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OpenAL/ALSoundSource.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALSoundSource.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALSoundSourcePool.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALSoundSourcePool.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALSoundSourcePool.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALSoundSourcePool.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OpenAL/ALSource.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALSource.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALSource.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALSource.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OpenAL/ALTypes.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALTypes.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALWrapper.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALWrapper.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/ALWrapper.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/ALWrapper.m - TargetIndices - - 0 - - - Libraries/ObjectAL/OpenAL/OpenALManager.h - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/OpenALManager.h - TargetIndices - - - Libraries/ObjectAL/OpenAL/OpenALManager.m - - Group - - Libraries - ObjectAL - OpenAL - - Path - Libraries/ObjectAL/OpenAL/OpenALManager.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Session/OALAudioSession.h - - Group - - Libraries - ObjectAL - Session - - Path - Libraries/ObjectAL/Session/OALAudioSession.h - TargetIndices - - - Libraries/ObjectAL/Session/OALAudioSession.m - - Group - - Libraries - ObjectAL - Session - - Path - Libraries/ObjectAL/Session/OALAudioSession.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Session/OALSuspendHandler.h - - Group - - Libraries - ObjectAL - Session - - Path - Libraries/ObjectAL/Session/OALSuspendHandler.h - TargetIndices - - - Libraries/ObjectAL/Session/OALSuspendHandler.m - - Group - - Libraries - ObjectAL - Session - - Path - Libraries/ObjectAL/Session/OALSuspendHandler.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Support/ARCSafe_MemMgmt.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/ARCSafe_MemMgmt.h - TargetIndices - - - Libraries/ObjectAL/Support/IOSVersion.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/IOSVersion.h - TargetIndices - - - Libraries/ObjectAL/Support/IOSVersion.m - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/IOSVersion.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Support/mach_timing.c - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/mach_timing.c - TargetIndices - - 0 - - - Libraries/ObjectAL/Support/mach_timing.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/mach_timing.h - TargetIndices - - - Libraries/ObjectAL/Support/NSMutableArray+WeakReferences.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/NSMutableArray+WeakReferences.h - TargetIndices - - - Libraries/ObjectAL/Support/NSMutableArray+WeakReferences.m - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/NSMutableArray+WeakReferences.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Support/NSMutableDictionary+WeakReferences.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/NSMutableDictionary+WeakReferences.h - TargetIndices - - - Libraries/ObjectAL/Support/NSMutableDictionary+WeakReferences.m - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/NSMutableDictionary+WeakReferences.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Support/OALAudioFile.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/OALAudioFile.h - TargetIndices - - - Libraries/ObjectAL/Support/OALAudioFile.m - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/OALAudioFile.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Support/OALNotifications.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/OALNotifications.h - TargetIndices - - - Libraries/ObjectAL/Support/OALTools.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/OALTools.h - TargetIndices - - - Libraries/ObjectAL/Support/OALTools.m - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/OALTools.m - TargetIndices - - 0 - - - Libraries/ObjectAL/Support/ObjectALMacros.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/ObjectALMacros.h - TargetIndices - - - Libraries/ObjectAL/Support/SynthesizeSingleton.h - - Group - - Libraries - ObjectAL - Support - - Path - Libraries/ObjectAL/Support/SynthesizeSingleton.h - TargetIndices - - - - Nodes - - Libraries/ObjectAL/Actions/OALAction+Private.h - Libraries/ObjectAL/Actions/OALAction.h - Libraries/ObjectAL/Actions/OALAction.m - Libraries/ObjectAL/Actions/OALActionManager.h - Libraries/ObjectAL/Actions/OALActionManager.m - Libraries/ObjectAL/Actions/OALAudioActions.h - Libraries/ObjectAL/Actions/OALAudioActions.m - Libraries/ObjectAL/Actions/OALUtilityActions.h - Libraries/ObjectAL/Actions/OALUtilityActions.m - Libraries/ObjectAL/AudioTrack/OALAudioTrack.h - Libraries/ObjectAL/AudioTrack/OALAudioTrack.m - Libraries/ObjectAL/AudioTrack/OALAudioTrackNotifications.h - Libraries/ObjectAL/AudioTrack/OALAudioTrackNotifications.m - Libraries/ObjectAL/AudioTrack/OALAudioTracks.h - Libraries/ObjectAL/AudioTrack/OALAudioTracks.m - Libraries/ObjectAL/OALSimpleAudio.h - Libraries/ObjectAL/OALSimpleAudio.m - Libraries/ObjectAL/ObjectAL.h - Libraries/ObjectAL/ObjectALConfig.h - Libraries/ObjectAL/OpenAL/ALBuffer.h - Libraries/ObjectAL/OpenAL/ALBuffer.m - Libraries/ObjectAL/OpenAL/ALCaptureDevice.h - Libraries/ObjectAL/OpenAL/ALCaptureDevice.m - Libraries/ObjectAL/OpenAL/ALChannelSource.h - Libraries/ObjectAL/OpenAL/ALChannelSource.m - Libraries/ObjectAL/OpenAL/ALContext.h - Libraries/ObjectAL/OpenAL/ALContext.m - Libraries/ObjectAL/OpenAL/ALDevice.h - Libraries/ObjectAL/OpenAL/ALDevice.m - Libraries/ObjectAL/OpenAL/ALListener.h - Libraries/ObjectAL/OpenAL/ALListener.m - Libraries/ObjectAL/OpenAL/ALSoundSource.h - Libraries/ObjectAL/OpenAL/ALSoundSourcePool.h - Libraries/ObjectAL/OpenAL/ALSoundSourcePool.m - Libraries/ObjectAL/OpenAL/ALSource.h - Libraries/ObjectAL/OpenAL/ALSource.m - Libraries/ObjectAL/OpenAL/ALTypes.h - Libraries/ObjectAL/OpenAL/ALWrapper.h - Libraries/ObjectAL/OpenAL/ALWrapper.m - Libraries/ObjectAL/OpenAL/OpenALManager.h - Libraries/ObjectAL/OpenAL/OpenALManager.m - Libraries/ObjectAL/Session/OALAudioSession.h - Libraries/ObjectAL/Session/OALAudioSession.m - Libraries/ObjectAL/Session/OALSuspendHandler.h - Libraries/ObjectAL/Session/OALSuspendHandler.m - Libraries/ObjectAL/Support/ARCSafe_MemMgmt.h - Libraries/ObjectAL/Support/IOSVersion.h - Libraries/ObjectAL/Support/IOSVersion.m - Libraries/ObjectAL/Support/mach_timing.c - Libraries/ObjectAL/Support/mach_timing.h - Libraries/ObjectAL/Support/NSMutableArray+WeakReferences.h - Libraries/ObjectAL/Support/NSMutableArray+WeakReferences.m - Libraries/ObjectAL/Support/NSMutableDictionary+WeakReferences.h - Libraries/ObjectAL/Support/NSMutableDictionary+WeakReferences.m - Libraries/ObjectAL/Support/OALAudioFile.h - Libraries/ObjectAL/Support/OALAudioFile.m - Libraries/ObjectAL/Support/OALNotifications.h - Libraries/ObjectAL/Support/OALTools.h - Libraries/ObjectAL/Support/OALTools.m - Libraries/ObjectAL/Support/ObjectALMacros.h - Libraries/ObjectAL/Support/SynthesizeSingleton.h - - - diff --git a/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.h b/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.h deleted file mode 100755 index 4f0fb13cd55..00000000000 --- a/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.h +++ /dev/null @@ -1,55 +0,0 @@ -// -// ___FILENAME___ -// -// Created by : ___FULLUSERNAME___ -// Project : ___PROJECTNAME___ -// Date : ___DATE___ -// -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. -// All rights reserved. -// -// ----------------------------------------------------------------- - -#import -#import "cocos2d.h" - -// ----------------------------------------------------------------------- - -@interface AppDelegate : CCAppDelegate - -// ----------------------------------------------------------------------- - -@end - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.m b/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.m deleted file mode 100755 index 797b37ff211..00000000000 --- a/templates/cocos2d iOS.xctemplate/Classes/AppDelegate.m +++ /dev/null @@ -1,107 +0,0 @@ -// -// ___FILENAME___ -// -// Created by : ___FULLUSERNAME___ -// Project : ___PROJECTNAME___ -// Date : ___DATE___ -// -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. -// All rights reserved. -// -// ----------------------------------------------------------------- - -#import "AppDelegate.h" -#import "HelloWorldScene.h" - -// ----------------------------------------------------------------------- - -@implementation AppDelegate - -// ----------------------------------------------------------------------- -// This is where your app starts. It takes two steps -// 1) Setting up Cocos2D, which is done with setupCocos2dWithOptions -// 2) Call your first scene, which is done by overriding startScene - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - // Cocos2D takes a dictionary to start ... yeah I know ... but it does, and it is kind of neat - NSMutableDictionary *startUpOptions = [NSMutableDictionary dictionary]; - - // Let's add some setup stuff - - // File extensions - // You can use anything you want, and completely dropping extensions will in most cases automatically scale the artwork correct - // To make it easy to understand what resolutions I am using, I have changed this for this demo to -4x -2x and -1x - // Notice that I deliberately added some of the artwork without extensions - [CCFileUtils sharedFileUtils].suffixesDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys: - @"-2x", CCFileUtilsSuffixiPad, - @"-4x", CCFileUtilsSuffixiPadHD, - @"-1x", CCFileUtilsSuffixiPhone, - @"-1x", CCFileUtilsSuffixiPhoneHD, - @"-1x", CCFileUtilsSuffixiPhone5, - @"-2x", CCFileUtilsSuffixiPhone5HD, - @"", CCFileUtilsSuffixDefault, - nil]; - - // Show FPS - // We really want this when developing an app - [startUpOptions setObject:@(YES) forKey:CCSetupShowDebugStats]; - - // A acouple of other examples - - // Use a 16 bit color buffer - // This will lower the color depth from 32 bits to 16 bits for that extra performance - // Most will want 32, so we disbaled it - // --- - // [startUpOptions setObject:kEAGLColorFormatRGB565 forKey:CCSetupPixelFormat]; - - // Use a simplified coordinate system that is shared across devices - // Normally you work in the coordinate of the device (an iPad is 1024x768, an iPhone 4 480x320 and so on) - // This feature makes it easier to use the same setup for all devices (easier is a relative term) - // Most will want to handle iPad and iPhone exclusively, so it is disabled by default - // --- - // [startUpOptions setObject:CCScreenModeFixed forKey:CCSetupScreenMode]; - - // All the supported keys can be found in CCConfiguration.h - - // We are done ... - // Lets get this thing on the road! - [self setupCocos2dWithOptions:startUpOptions]; - - CCDirectorIOS* director = (CCDirectorIOS*)[CCDirector sharedDirector]; - - // Creat a scene - CCScene* main = [HelloWorldScene new]; - - // Run the director with the scene. - // Push as much scenes as you want (maybe useful for 3D touch) - [director runWithScene:main]; - - // Stay positive. Always return a YES :) - return YES; -} - -@end - - - - - - - - - - - - - - - - - - - - - - - diff --git a/templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.h b/templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.h deleted file mode 100755 index cec996b1c72..00000000000 --- a/templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// ___FILENAME___ -// -// Created by : ___FULLUSERNAME___ -// Project : ___PROJECTNAME___ -// Date : ___DATE___ -// -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. -// All rights reserved. -// -// ----------------------------------------------------------------- - -#import -#import "cocos2d.h" -#import "cocos2d-ui.h" - -// ----------------------------------------------------------------------- - -@interface HelloWorldScene : CCScene - -// ----------------------------------------------------------------------- - -- (instancetype)init; - -// ----------------------------------------------------------------------- - -@end - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.m b/templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.m deleted file mode 100755 index 6719c73eaa0..00000000000 --- a/templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.m +++ /dev/null @@ -1,73 +0,0 @@ -// -// ___FILENAME___ -// -// Created by : ___FULLUSERNAME___ -// Project : ___PROJECTNAME___ -// Date : ___DATE___ -// -// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. -// All rights reserved. -// -// ----------------------------------------------------------------- - -#import "HelloWorldScene.h" - -// ----------------------------------------------------------------------- - -@implementation HelloWorldScene - -// ----------------------------------------------------------------------- - -- (id)init -{ - // Apple recommend assigning self with supers return value - self = [super init]; - - // The thing is, that if this fails, your app will 99.99% crash anyways, so why bother - // Just make an assert, so that you can catch it in debug - NSAssert(self, @"Whoops"); - - // Background - CCSprite9Slice *background = [CCSprite9Slice spriteWithImageNamed:@"white_square.png"]; - background.anchorPoint = CGPointZero; - background.contentSize = [CCDirector sharedDirector].viewSize; - background.color = [CCColor grayColor]; - [self addChild:background]; - - // The standard Hello World text - CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"ArialMT" fontSize:64]; - label.positionType = CCPositionTypeNormalized; - label.position = (CGPoint){0.5, 0.5}; - [self addChild:label]; - - // done - return self; -} - -// ----------------------------------------------------------------------- - -@end - - - - - - - - - - - - - - - - - - - - - - - -// why not add a few extra lines, so we dont have to sit and edit at the bottom of the screen ... diff --git a/templates/cocos2d iOS.xctemplate/Resources/base-4x.png b/templates/cocos2d iOS.xctemplate/Resources/base-4x.png deleted file mode 100644 index 7721d3d7c5f3ea045c449330975d81435df761ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9496 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 diff --git a/templates/cocos2d iOS.xctemplate/Resources/white_square.png b/templates/cocos2d iOS.xctemplate/Resources/white_square.png deleted file mode 100644 index 9499ed93945685b02d9d983a5b2ba74b00b66f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2878 zcmbuB_dgZ>7suaL-AhK+HIfyd%3gh>Y;x7LuAO9MyU4y)7a1j7S(#a7bO|XpS;@Xe z6v^HTtA`^1L1Vebffgwg zPL*kjBeR*t=tgyhM+6WO#zDGREDKp)0=uUytZMDiar9>F92axorfreK^zhucx%{hm zXZ7cC_v1|;D6aEQlza>eCa{yJ#u_ONDOWCNlcA(kOqD0lcld z5kt)ZpP?0CSt7JL)3pPzL4yto_p4GpqI&NIsDbye@hUD1sY2SGQw>Dk;RQ7Bfy4$Z$$|2=p=9<6w!b~&%WuD<=5@QNe?}&233jK=u`WN6-Q-U{hNc8E0$hwii~gtc9|;~U;phxL&1x{=!#wTnkgq zSH6Z87`5FwEwu|*T5hvwoLj(LqA%b|SLZfqQ5vQFSVhB=e=%#8rS_|gA|r8z^+5#5 z8+Oi?E3cKSAqGmT-UVT^6I6=3XrDML)DMAWCejMo!R23KiUpSA*o}nRyL^hN%QW1Q zt>MC35v(lLEiO)ctZnpI%S|E33<(>kc1>OB5Rys|>NY<{(5#SXB4a z0;C3m6Ua!e!!lzHULJOTTc~4KYLA;kKnt%Ri&I(eDmbbx(!O~utC5*sZq!$n_Y+bc zr}X;1E-F93P|7&Aj7{D@OQbKGQ3Rc?3g5bhGLI&P^<#9O)_8JS%s(!XSRGo4>Czw$D*xW0Eilq0!^ zHBBkaEG;~ZSZ-qKYpOboE@v=#XUhEUp;_45JEk8D=gXi!Io}PJ@tJ-pyHVMX3`8aw z4j9=KHQ5|T9yl=8#6;i8kAWANIMj7;CkS$O$U1IXXpH!n(U8R5U+LLf)$Fe#0_YBT z1EfL_#+tt6PB^Dzr`)B-eN;>x)iWD6f9Kro7wl*350RjeP?e}2ajS5u2(S2eEO@MG z%zn*hjdP7OM)vp4Rm&C6-Bm&?}qWCgy=WgIqi4jZ^U<|kEMqa=+gDlDY#c=DrRW2U9(>}-H`_*aT038+{2L9 zJo`enQa0gJX+?HLTR=8ynthHv>Dth>U1QHNnbo6J`qiw}b89#E?Djy_Z<| zMsE4t3ia{x?+x(qZXgxU%6}_sEBm%=?#%04;G4Ux0DF56OJL0i$bcE6N}iW^z78g& zE%L0_4}JWxTa^7Jd!phu>gQyya(mdjLp{lC-frt}%4GGO4T{CwjtBkAG%6h`)UShI$2Prf5}H?mNg$IE!Zua`ZrQIqvfwNcV~&E{|MHj2VDTvxIxS-A63+7)Bq`lPUe33S$JE|OlxEcH}L!MZ;6|!IjK2CNJiK6TCrc!byw>Q zoW#UZ7#Gk>s2<*w*dEG)@V@W%IEP0xVz8(dS!u|`iI6H43$o&}3c|x1;rD;aO*@^e z>RL~^F~uF(p)~REVY~9S-Ernvjc}++9Ol4TgI@J*^}$AG#i{ZuC(%R)gAoO zoVmWuaOf@?H8wVNx2|W61Sb`fJaH7u=J$6S-PDJ_$80cG@NOn7^4g&8PWcrCyX_|S z)%NxD(J0s{tXcJb!i{eg+$h=$&V6D{FgvbzSJ(7gbZn$~GB9MDDT! zkhy!KcG#}x(0b%#5|2G^ee+WIBwi=bpgk`s-4HSjEk#HHV z2tQ(y*2l7;5e(Q)j8%p=~6fwzqqrrPeh+;o3Qg^RHxl&mt-1~SI{@%)qq=;S55Nd4~LfW0+XApJUG!a6u9 z=>1XC*zwBw1Ll<{wI|h%EvT8lwk@^;-z=HQOwic8lho56v9m)uy*k6fcZ3s?a{2jr z8F?DF9`&cpmeiE64fKSYouWy;?}*dKbBFf^ERIGu81~}_nk&&|+dkxXW$%?bg**8h z`q9dpZ;vYa$HT~Ya{Y8?BY)=ABefI5?ZE?w&XVs26cu9V$&nQ0>Gq+>&}+G~Z&Sbl zj?@DnSOfq}6af3DXI=)tUmAcFTL6?^0RZ!QY14k^Y}Z{^OWh=BZ1p=86_AF|2!x$h zx#ufOYUQUO`1V#5si - -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iPhone SDK 3.0 and later." -#endif - -#ifdef __OBJC__ -#import -#import -#endif diff --git a/templates/cocos2d iOS.xctemplate/Supporting Files/main.m b/templates/cocos2d iOS.xctemplate/Supporting Files/main.m deleted file mode 100755 index cee33bd86b9..00000000000 --- a/templates/cocos2d iOS.xctemplate/Supporting Files/main.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// main.m -// cocos2d-template -// -// Created by Lars Birkemose on 24/06/15. -// Copyright cocos2d.org 2015. All rights reserved. -// - -#import - -int main(int argc, char *argv[]) { - - @autoreleasepool { - int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); - return retVal; - } -} diff --git a/templates/cocos2d iOS.xctemplate/TemplateIcon.icns b/templates/cocos2d iOS.xctemplate/TemplateIcon.icns deleted file mode 100755 index 2dc0371c1856a1f41063b680751b2247242827fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269138 zcmeFZWk6iZ(l$CX*bH%jxDj_3Vnj%YLEJ+~h!PhP5=Jt{;1FDcySoKV0wg$r;4Z

jy;#WWFKjG*`M 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 z z9%zfNh)p3Y0afiW#6esX0^mk?FI(PHz1avNP2GvrAGN{avp#jQtsALPYF zJ`m@-sckIlwC8B3eZQsR&-^%jv&UKv{p8rFGL(BD)dOvNDzjBQas+_5k{8j^PXq|a z5*qAq5l$lK*?X0EC(KD3cFltblokPy#)}eAPId_b@fa-Yx_}F9=u1gRANum$@rFHme=1jIZ%m#D-a!PC&%01xpfE+fv zP4r5^Q@m~q0g&iY__;aRA$p|HD=S#B{T6lk;hj^*gKB;lEYp0W#3I-tNag(% zbDN#I%4SDVamcd^N{;{tI|Bz02-Tff)Ai^80uz@b$~_=G09FWMh#nvaDiHxZ$P<*b zQQ_`)xbGWPXfm@85hy(!fDnK%4nSBn_bNakI<8zs;d(%fxP(KKrCKX5TspUTj(J+NgJb{MZHwdf^fmcNJpJ?tJWv&tE5}z9NAfMJS=s=}{XUp%^pO!&!y;%g5&$`heDw#3BdONTRYp9~)Ih96{1L&NKE&?w)V=l$DklGM;TA=-3_EyMxXD(`KGG)N3g`d&X36QUvqKD!!b*<- zNJBP*-1Q)hSZ8@bthy>#@2Fiv%s_8!%RGbR=934Mnft`hBqqp(G+FYLXhk%!#JX1k_U22y>>mInyfS2|Pq6dM*!&R6SiBydYv16gHW8^Y_X;e?7-dtx1fj#<0Pjs-@9(mS+*c&#m zfI|ibb`U;FxIr6lp8SK-YZt26QU8ROl_kVHLAC;m2oN^Ki(W}MxF|>#B~4IOr5cUN zA5^YiIPb}4Uh*rddBbEtZTKwsouWirFf};7DPlG+Rq@BaffDSQ#NdsJ_%bWHKDbph zGt-5FGZSvvtjv^~l>US>4v)D}>3$PKvlS$gHT?La=PNVgu>^q&n6aHDe%-S#n*2kQ z;tU4Oaonmc#MzJ47LDOnRtr|Xqx1qqrVpQF>F^VlbWMUQ@brl#h9HZ9BZ^a}*a`nd zhR=@(m^wI06VMQ+(<~)(eJCe9=qiYuFXWmxhiZANRGI`pS|M9|g8&y#X7lG^^gJkM ze&Heq-*=8O3qQ@O__E_jW)eV)RvAT~u7p~MEjs%g>^gHTvzyF<@?i-MoC#&j@-v^! zQR=o+lse}BlpgzCDY|JukpF=*&_^JH2M{=``DXy@oyI7=_cxRtb|N!g` zo|F%_E&1V`Fz1@bE1j$bxdy#I0%0gk5kPuv{ilI_CkHy3TC5$!BG6iJ1tx8DgjxQ& zGIyS?%&HZENFl7FMSMYwuH6~ndni5l0PC4ZcNoCHXEg&u6KlLwvzDW(7Awtxm1Z%D zwRx}O*KiT-VE}^celoHs-ptlb%H02R6=MD=iqb1{{j#6KDUAb?>7iz)Q&=9k3snX&Y z#EY%{dlGZJn+OOeK#^w3UzF+v zaUFhYZZE(epw2Q;7}+Tp7Yaww@+&oP>g-&Tguva6rPZX3XvC2jeL;uCs;dM}BW1@{EnV9(bgR9s3^@`|4B> zj54Y)ORe)sEQlc7z{~fj_)}l?NswQVxL1!)WBJWzy0Ei;n|3O8>h&siG(@Ms$e*e) zL^F2ut;qV9S{*`y=%ivTS71;mn#V2)7Y|)oQn$4%DQ6)7){%@%Dh>jrGUst4W#seA z<5huKlJ74~0wA^C%15hN7Tms$D4SN}0Hi4Z&LjTlmtfHs`Xj$g6xD4(+MlV|c`qnE z_}IeK0?t4m@eifH^e7y~*aQ)PEA@hi3Ff7{(9-|d8%D2(BUq(J&bR~A~ulln6cGmCFTj_J} z#dMX~%FkT6k+sr&_gAsApH;ELE}|q3c!t|Z1HP&y0#p7*J#R^i%ISgi@%WS9LhRU( zp?k2%->HkzXWf-h+~rho;}YxLFJjf>|5!a?Aovgg^)_}A^Ph6;{Fl@Q*KUl@iWr=LSq=LUY ztw0eC4*tE;r}AsvCSiB)PQaHnPzLkZ&rl-1?T(3jZ{GT&G9SO4LFk0w=r*kBpMDEU zzXQU{lf4cru!vmnv@%Oxggu{6#k>?Nya>NoJ>e1++y89;c4KC3ru~xlz=}lyaU(C= z$iqNRnsQe=PlOA5MM2{t*3U<(D`+*Et}tm}2nV1$aUOtBZK3Ys_PG$ijA*9(gx!d> znMfhX->1Kdo%xVborf3VZIQ~*yTN+11zO#U4FWdv?o|TI1u%QZAN!_?eepT;3G9=I z3L6(f=>C|&_9tdR6n@8EWpxwb#j!`=%|Bom^*53+eX{k}$QgUG%WpRnd!poQ9bt(u z;3fKy>y=*gmNN4=>;;Ly0ek<+yUKj}2+NRPaDoG`vSOrVJ8~FoU6Y8FaaW2U_4W~A z;2)C_rFNx3X7yag70WYz&~X45$u!84TA{$qx>cDu?`0xCGlTBLF1}OmC?N9lL8NVI z(~f^jMC+|jxe+8lMeku#?K-(2!;IhhXATH8)2~IrxjK!YNK(uC?|q8WV=fNJ=?<2a zfvc1nb7W#Wa6OgV!gA%OGgbV-t5p17`&cA(=g8?E!mf|H0ewqmyAAI$ud^x;1!^}! z9J3IB&8#R16dF(5W!e`c-{FKi*FwD4Dc`wLCKytpAQWvqA4T>A_YOH@mu!;LH1JdTlT@7`2{FE zKMyTXk35SyT#Btd9pfPa@|Dd?f5p^xc4!%?NcK^fcP3lAgH#wd7Ww=1Rk1@jV<9TA zA`?6GI+iv&CM+JQi_FlLFfCo6%zw{gC*j|tmX?vuT0ib_QU z=L9xf_uQGCbZ-U5=MrH)z6Y)UXBo1;6*KoZR_R^7oJ(;TY0cYzR`Gv;@ONE=dFz90 zA7^Woi|)SgE< zXF?8(Y2C#W;d&G~vo$GVF)fs=4(c7I;OenkLQH6E z^%wx=t(zH9>9fC#3*EH~YxBR({|#6x#veLM#V7w5msyJ}fsxtK%CUS*eel=ui1QV0 zz~TrH6S=tGz)T__+Mf5&jIUr;3X%nkCDSBJ9&TbJ;mr+By|TQww9W>UPWApm2!QTB7Uv2oQ5$_1UaU925eu&zJDt zGbF##8L{!lE>Pw*Twn=X>{7{E;?l7_w*66LZP)8Dn9+y-3iSu0-#rKg88+9b_-og@ z5@+6;PakGO&hoUn*m5XO?}w3%yONpNgF`m)9ULU_q_UjAqR*6>d8;QT`lB8Pp=4i$ zyUo^r$8yAskTGJ-#bp`{J1$;q05(@PilAZ8^peh`Ik-xuW$(`i)MH>f8*o{WYaHNUI3EP{5!2xeT42Jg*39D^LouCIyB?G|BMKAo;WPM3n45Zy_r}b+mw_uUZvffD zuLomRm}r*pS|&%#L}-jyAZt^zT4uLf=d+N zk+PLIWIM58MMSaJB1ORH9^r_rHKsTUl^u`!oTT)be^IfoVjpty!)nVGt!l&%VoQJ! zD)%p>4z3{`lB!svr1oo zZCc#0%og+&!Vap)D9{~1yZ1*fu7))YZm&lRKkIfUDE%tuEqwN7hVoBlJU#Yo z!hI-}U|bfl!c6-)Mq8OH3htL%31{Ue%(RQ$!O`!bqI&otndt>t7fjC#PllK+a3vC;Av*i&};EJN2-7{W)s@^)ggv1efC7QW>Dt~tKcw}qx^IClpwz#*RB`j zTPm_Crn;ZwG$cT@x9?-alfv;yJ|NbDYSjMeGolnkpP3IHW|o)HoDOEuRJen+X?3!k zPRDj2SMYjz{HY%*^X#`_f!C)O$jXIz=9_HbxjVi8(o;1&ZABs2nEe|=*+yJR16@SV za&0Rv|vjONoQ9e9K;Ci>?0v)xGz^Nylw`h0S~@|O{hL)JQ31~(E$pG<(5G2k8<#C1UZo4bfp$jV*a2rmz+{kjV zSR}R|=!7<0H^APv>)r6|bEhYKACBrO#!p9|*z}-nOI}fRpD^JFW+f{jQi#$->|zF2^7JA|ennwh!omhlAw(GPnS%&wx!$16DZ9;&(FZ zByHX4khG*}4?=j_w6|h|S%&rCOZTyV;6`SBydbY+%eEjw6y%peD^N5x!ZJ{`>5d^5 z$Sg!F3D(0B1l+6-5G^*sWwj3{0IL0kZvw7v#X_^QyI33HvDTa06pr$=ZCrAZyPxE~QdXIr4Ql zFTgx(_ZhonXIZTjq0~{Cr?Nb?^PKr#`f`M=G7)jUEJ%88|BK9e(Ko z!z`zPZ^ZFm3rrF@q7D7w1!;#@K`CkKAPTix&{+(Yr$#}1!+cf$*8PFAzZ5QAD@P#; zL&7KIqelFZtRUciU$Q{==Pt-QTBHyfW){87A0J*dMcgPhagR_x3imB?o~fDsc=zpvCD0${aUITYqiI-1QpZQvF2Kp0z; z%$jJG^={{ROZGf7zNCT==|Z2~ZF0(&Fy}tYHB~=%IVE>51VHQomQ4$+y2i<-Sp|_0{{T@z*2+arbb~x* z^C0U^A8@aG!2ygpCUAK=AX_TfE^Ci~y&rN+DlF(mcO9M?MW3auxr;@dr>T-D>ppo` z$$H|oDt7p{81=0ZMl-HB@2xOv7WqevQL)n>WESq}O_JZU-!h_%k5<*0Fy{n z!@$R0!kfH)#vhpd(Ir4*WTqG7j|#O|3;NA5QS+yzllSKEZppiS5CCb3%sOFipgIkM z+Os8f>2ygQ4T3sTlz0Vz*df2giO2xh@!Sd%mRWaU6Vj2)no(viQF8gUMI5U-AYO0% zAe+B@Pab^`ZTjNvN=%2%HXMLZtkgI4qpi|j-BIfQT?}fTLd+QCDWwsQTM^s5giPA* zqbD&d5P^E{nf@|y%f4(nj!dp&lh$eM%DgW<-t!b+H(%Ah{y!x{A{WGW7gJCo;1n!v zcK@7k&$Tck*;8nXJVMIMg4dN6#ZD#5Nj{*5Oj2qNvyB`+5e4M5*fa$|GL!g-F9ft3 z!0dMiTY%4E&|#6r>#~t#i#(n2#fLjC)qVG9wWz{?MFxWx>lURWWiS^C zdhUtmU{1DqinI1+A;QQ&fR%L99V>-M9jJ;PIZnlnx)Hg4eDoT~ap{%4{I z7z8NK%vSsYM1NC5N*sacp~qtxh;E=Ev}x}|E?Nx%pr6u!rBmImPg;=Kiq2#6YMiaG z@_)NstP}HLK70k= zKPz}XW!Cgg0(U(qWBVZh(m-)JHSYm5fnuXp40Z1Bm)zhhawOG zZ~6HU1j^XH2mlQ-^QW>&1J*WRX-p5tqVB`V(FlMjrm7hr8!+y0Ksp}7BUKNAw(?nX zcGBf>m2JH8vyL&=VXrU8o3VdEcNo+-C7GBW`|*`lmysMv($?f{s_OE*9)v0+u}c+R z_#3kZQDdWLgB1iobsY>L?~wUIcJBE>eEKy?k2#w>{-UJh*~S**`nTB1?O>3%@B9iT z%n#|kNh1>hcSiU7b07v@X31S->D>$Kv;xNxt7Zh&T@O8uSz-}0tVdS#%OPw1VhAIH zC<&G|-wXlRwA2YI{8hZu^qhc;@q-d9X=63yHPqK{P*frsIGc#Dpp#|Aw6@CVknPr4 z{1Fzu1M)0!0hW?U3rTkgy3ele$IyE-7ah@7X7ybz2uWvD-Sbyjmt&S_x{)s+mn4aT z{7!Zu0(q|vM5vGRo&*7q!LhykwjwOgxyNZ=<`uSH_eSx9kH1LJ4Y9$EJoK1hvqz)0 z7)N?>0TZo<;JMr26y2s_hSOa}Fyo1?zy&foHf_XWaF#2uSZ^_x{`9%b%86>e|Nfcb zej(!c^|e2-?e|CM5l~nLz_yR>RrRx8NzDFP@PxzC2L_m4iC<(;Sb7}>S?y3e@GZV-js!k03`i!{W1KF2i*la-W#*~umQ zw(pO^tA~}D-OVtyj959PxY$8VnHRjDVrZngR=+83)x;D$0+=`d$g03FIIly3Q)5zG z^X%316NA7`>;6fFQ?%S-4zsaeNp-nc47v+&>gHVCajyIAj{r!EIbX_&xQ475Dg>6D_m(j4jAkw)V?ZL}5bYR?N;M05UM#GO!#P(qm|v2w+=5 zIx}|)w=xYCFPIPS#D4<1ANPos*|tCIf5(B@D~?9r%zlD>|CfcPt$X87s(v9yurty4 zK??ExBBgG5{A6`N^xI(s$M1D%Ve-9wAmJ3W30aKBuqS!v6>q^G{@16u$soRx9(^i1 z?EW2`#!1>^tWsUNrOk|1mRmlbb>nxl=5O%?;{OkV=#@XM=bRp+)2gQjLKr;*#i|Gv z(9SgUrA`UnIoQV>50-ZL94``@X9(mQ1*0CE_Ms%O*JZeI;;VeOP(Busu?eVH-i zI~Z%JL1=NlkwU2L&nH$CgWKHW&`Fc)JDv38cQwT+Z9BM1tJbsK^^?1U8zas#b~=I+ zaQ+dTCK;ngoZzN@hRbEapGYgj-%2#YuGfXA>& zk2s2kr8mX4bt!t4_y3(9Q3OxsjT`ue^U`H<2%I==)q7l&wTAH*u=pE=#bS>!!D%^H zqUOn8uyG5nFNx$9`Ex-wPw5Wgdx9f9W+ehrO2oQtzXU*(G#smCmP`%qR9t%NLHn`s z<4?h9Bu17FcR4!UBv``fWb^9Z;R4plQ_+E$^&c$NFedVRWsS|b8V*8x%uc0#Kg~)-s^{Gz(Yksev{PjwvWmF3_`J)S-6pS{9B2saGUV=h#> zEo;Lr8O+X%OE`Jv%^QlZt8ivw-nh*lIlANGy8prcb?&+g!~vox>(4F_X2C35uFSMc zU7;;_D@Uqv?77*9(TDQ~zn-VQ2k3 zF~%ak)YC!8e6OyWMkWH1$9bPCzue~898W35`Y2q$oEK5_%?z#~HsX5l0my+_kQmE6 zHTvKT#IQ5tw7;Q?G?`qgWC_<;ybJX^D71$0DL+E#cUt(Ss`@Re=JD^NM8$2G zgS?@oW=5tVer9y;Ar2zT6%Zm|mk1M&+5aZN~v6c8$ z6o;Sr#yf#}zn`!%$HN84%(#w|cc1tc2!po07yz4i^YTsXRq#|skiQ+f^mY%|cI*C= zAa)1(6FW@P%){TwzIx($bs-$)y!z|lG{orM`zpokVtv@TQi=;~^Wp0p_4RXCXbatf1@ULT z3sJ(uuZIBG*>UHCBKQ%|XvKeNbpdY0r?kj&0iUl@@%zrssyuCq9xyYmRp!a-82Aj@ zjOh#ej>9j*z-d_Ut2rptymyz19d>=9F####OI}sA&mkf>L?#N3B+C-yw-6;ygftdk z`6Jgfkh}t1w~4WkD5)h;gfeX!k~&r8b~^<@g0*;g$;JhY`xd?gum)THT4+ba4!nvL zfzD|w0+PYX$j|?a_aF|mAeiY_Qio|7tg&VN;a>E<7a1mPrZV&goWGv10b=??pE&*me>`S;slcQaYY5*7NEL;WfxBb ztu*i4!3SL$Tqg{E^n|aXD5%j*7D?MzN430;#Tdrr`EEWF`oYRt*BbJzFGTgbx?>||^ zpZzlhFwJ>Jt@V;L7@rD9h^Qx{-yh6#$o;)`h1)yJKS46I?xic#wmI*y6+0xEgJj9q zrDpw*ENM~h{K@+i0g>+~KPQc3Ouk2M!$3HJl(CRIe?X>ImmgB`bI1%#>~;*&5$FO` z8-wfV!vh(4G^lMiTw51aiAhBjRoY&;wlmq?*=eY684_sTzuB(# z#E$tV$Q3-?+Ml&GKPaDLwQH?rurHmxDAmEn@i)-+?>%8_U=X zvPYob7-q)@K|D0dt`BYR<@l~oX0Q|QMF_?C#(DHfuVKRzTT|s&Zu9gXKu&DgJu|-~ zv@_)1CqdY*X~>u3o$kJyQXTLW@bL?5ih_%BwN;9eXZe{GOO$$lGMv$~EHmQDOuP|? zAY4W@FfuZqKBUYP2l{@NIx?fERKOM#mXCY|eZ~)18ayx+ z>~~Z1(0OXxM_7jXvHpTQE(8ihe(4)0tt-9rzD6UyQ;_@Wyw5YkGXxtr0VlnaHt}4i zw_Q`c5ndsfEIJvthpWtnc&63oJcO0lLBTEJDDn7xCt)G>4P;;xT_IpT{+}}UUWEHD zh(ORl?Sy_|f6Cf}a8bRdFA5md3DG#ftSoWge@ z8Yo{EzRwwta9%QSr7wNjB=529>d~8-pCifpO_Csgpd#`6Pvu*~#q4{Tf0|@y-Sl6p z+6S&;e0Z=(;st4v5Qz8^A5dS33e6`83JLU|8!GVhB))AkAZ|A8SOh?NKsfT9#;Vxq z&+);6Ex^puSCx6{`zm(YWH!w(lZAkpg?xGc4--T{kkJDcA!JbZ>WiZBJf(L%j~R8a zCsl+;+4j2NDP>+~rC~Pp!_v{p#Xec>%+Hwvu`fQBzVF{BZ7xA(=06jPPBi2}?{>;_ z+AYr(p%EjLxFM5MdL*(Ijts(S(@7!*sUH!QC=2wVW&4M7n8-=DaTNFnC&u?`p68ov zTCQTp{fBrL7JE|1KYLbfx#cumpJB)0MHE-IKqU6&@suB!&yy~nNADiBR2lS@8)B_| zh=AD<34rv9D8-Jxg2O0(?CztCd-ED=&dc9Xu@mmji1P-RkFdMHU#!N05yNWYnP4;= zff}-h(wy9@2TV-tL9b?p_D-wyEJJNwmGC<-?->+fQfI@aDG!4G+zF-*c5d=vp`l`Y;5{ zdl0Ib_o>*aCfta3Hgg+22!OBauI6#CP83>LYiJ0+HRF$b0W11Q|qN zha~_^KB|2O6+0J%>Vn6ZAOK_I51he47W*-Chi@2>BFtwX=|kT@X|)tDLP3R+PTns+ zKDf0k?0{GxzqXwiglxnSU)DA2QCP0!w~7@EWPOO1ogux0)bkpP`~!x;;V|&Kj`qYB z@R23e_|%^%H3L`XwTJ|Ma&rM*mm->jMk;+6HW-{im<;YLAtORBl^ zcvb)Ii3NF5f&(#a(4PK|$9nuL;VQ9v(ylc31)+-6NvF$h{aOXstsW zK+37P@q3XY55qDp%vYS#aa8x~IRVYM;5OpvWJH_&FfGG%xFH?~IeMzVOB+$5@IJfB@_` zs{r245X4-u7~245uP{ZDD6P8TB;(m%pb$I)Wg4?|7*uy<>+qRqz?rI-Vs^S2<)DMi ze))*AT6F3oh@SR?{7YOY2(m!TblbKncH|FK?1;Zm$1b5+3K^+8V;Hsj`S{+0+la%h ztXqNCWZ0GDV6)>s+u)ZrNctpaq${yM7&uzR4xv4qf2ao?#@c-dOXW0(9i8z9zYM|n zj?zPqbwYiwb#MP2Yro%sX}s87Ki9o)-9x^IFY-$vt}=ZqlMEE3moj|I@n+1S+*DS{ z1K|)cOzZ^s&nm#LSOw5K$SOdpCz3ZpMJrhqIO`r}caS>-%)5V6=7Wde814?0DbtEr zjiua6%#QDJ>JP5O#kwoXY@Sv|(1Rci2%}q3=&1cv?9gAbvu)3y)Xf(zw)USqoNy$% zd=BEvMysr}Mk{``kO40$>UM2$$}vdkArqAvej=Lt{fNjS@3_n3?1K2@vy~o=wIgQT zVGy79wAy;>nS2wB!@LMBNCE^RVKP3ED*2Z(#C$gmyyd1vWKAj8YKUGAdaorI^Z^8GpiJZVJm@DE922 zCnCo|BD1QUDY=Tr8#NR~;y%oF!%hmVcZ)^hlhLgHn61+M)^gI(=FidkqiGl5yh7a$ zPNnl;e#2QZ92G9F+e`s}#K!-AxUK>FV&{KpK%zu&eAO(Jen%^_W~C*_8HvLPfFJTx zKnAgh_+1-~^zO<>B>(^EnQhHTEzNBcX?wZR~)%E-Ynu9O8jl{<>02-ry*+Pw+*sgeAWXV#Arp zC$d88Hmp|kV5MR($UdI4?DtA|@(nomF#LtvVJymz_(NxLc4AL9Xk{VD7#(fB<3zP> z=4c6#XI5K#17z>JFpJG=?J;nnHKZaiZUzCSK^PM@N3-> zZVaNGfsL+O%W~h{rvQ3Dg}1sAbt%5t-_IYnVAolxDV(L2k&hR#3SQ0xC!=GjEDbWiQ z2B?4-x5!b|I4iX#!)4_6?^^K(_#j-EMSfO2GO*E=4Y94};jbi+-;eE2CJn@2pNO>A zNxV-QR}Ji~#ZL$MB_tQjleDg1;+1Ie<;7C47x``Z0pSwofFyD5%U60pdIMKc<`K5l zE_^DyOR(vWo%CPW_c_Wua}gW_D)}-reGk;G#W?G9r90!x@rb{Jd~U4De0|;H-%|Bc z?@O%pGvIwe!u{fW!ZMKGx4?!#i?>ovBQY(pY$r>16oy%Ep`ek~DpWO!s2u4L%z4cN zoEfleT6o3STOT`-%|NvqRs7+zQ6^%&SB9qRfh{Xo>Ovg9?Y_VI6n{5Rpy zGaUJCL4Jtr6P7mn`^38|)mY?rmlf$gOMPq^wo;j;l~(~W`y@R?423uySf6}*xXExb zms$KGI)R@hEYkM=X?j`Zr<{Ahy7HRw5B6eQjd}19;rZD)RP*RJ@#g!VbXVR12oh*! z?Ma`8{89r?yt`8QB7daW-u;JcR?a_J_)qT$Q-N$!t9>jz^ zNgxTJK&ZSLO=XcZwvvh!D=g}2X|YsSUD9^JQu{|Wgd0N)#?;!PSX7kKg>A(a{;(EZ zw1rTCP%0W)0ZBqa9zfp7eSNQUPJesO%-oqda~|J!zk4O+oVC91oY{NN-g_QH zh{Dp?<=sJ3zHK%31axk>=%9WxgQy@H=nuSrZ~nXS1>vGq>A8XSC8wFS7{^y*#o*EH z=t8^;t%9UwXzA?UEZFeH?_eh;?A?Ff)i|642ep)wcWt6P36Ae%qxWHv&vO{81!+Q8 z*T_C@Q@UXp*s(y~w?CIj{K!DFenM_rO@1k3OvS_}BISdL;?A9c?m!|v@ipLvVkKZ= zF1iquap)2R7hlWDYwpHJIrxe#>%!c1`1o2(D?X3C0a3XZUzHW(&4;JMOt<1pg(JJM ztQUJP%zZ~@9{BqnXVv>Z!h-#KqqY60^)Uw^3{Gd3r}>}P_=zvRs>{AKnzoEzm!KJP zOixLt(MXVSrxk>J44`lTM!w_?1U0M~TJX!P>$mPIQp&%*e}ZTNz3f-1Jus5KIYMi4jvFB$~wI||6;?I4k)&?yKH@ZC<0 z&1GF5_)FG%NzPAlX=Bf)H)CAj5u8qo<*c;RP1=q`r(nM1R{1!N7uyPhuO7#TSZndY z)8*MwF*w-xx3!q&!}@-+dQ-^7-+^gjWbrYX4$x1$L;8}m*qpb1lqmkij#zh9I z3{q!g8E2vc5OgskBVHB{0x4Mz9O2c~fw#X?Cn+Gs$kS}PjChS8*y%MlR37!p-m2W6 z5K6(tJ<0*90BBAP?haV6 zqd24SZhUO@FBlNTUj4LABIn+P{!8Cu)$e{H>hC+o1rwX%nt>`q(qJkN1x(Q>1RgAU zW&A{A;q++y84jS`roU4cTR@rvAld{xeNND5hFjqP`o4pOY}XYIz|Pqg!lDuk?h05v zoXMu%u#WYuLeoC8c8tm3XZ!u+UOr3UU3??+mi{K9x3DGF7^^ql6TR_io9>_gD>gL2 zA)d=`!Ts&|^u+vr{oe;z4#0xz zQTTH!#xHpZgH6;WCIo;4BUhvjJnh0ZI1+r!l5dTrViXT8=YS}{p*K~BZ%*b6w6^P4!# z5X;so2_@XIKoU{|-L}4~~ zC>q&cb^{jkwBQJ_>r#E|9jx}lyRaB&*u6@n1qWall*8aCH#v<9XTfqCKM`7SW2I){ z4Lv2X!+0gixTn!MaO41nhW+31>I2=EmdoYG;nw;yn-Ye^B9NE^C|Gg=qp#tO4x-+R zE@M-!8(=->zb7$DA_C_OgfBga4~!l`g~B+<n3m_WSWBMHBjs(nX*%{;=^W+xb0w zIQ0VG#>{&gS}#knY&y?g{#xSw9S^hW_t!E1#pk%M=z%VSEmyn(K zT>#-l9PV@U`1-TpBX6y~{W&WaKZo&38OA-0&cac{BnZQi;Sv7|Z*YLk>GvwzShu&B z@5^p*Edp)jfG9}r1P;OpV5Y$9>t+3`u4et$+{(&x-r5#hZe+W@k7KO*?+2=8~ z_}7>>8!d#XXST(&tw@xh<1fMJvHETwK7Km7A8Q)0QRQ7+VbPav|?g*ib*ES9jHr~iut3Xee)3_~ui7fzPe|j?(;q>2?=%QSKExnhtm6i}I02@!-iGjYa z<6IFeNugO(&5&Di0HlEymn(#FP&_z5{AmWK@ES}fZN&j7Uc?~F0VL_B3r{m{NvF{m z@(HiuBsnIWu<=#+!`|Dg@8wButgn2wRPkDZB`39rEtWk^1tHRMRR#fJwqzR8gy28p`q z{OQ?Y#5##CQitl~b^j=x&@^GS}v#}K8SpZtd0Z}@J6QJnI z5zJxzzy5oyclF0u`7LL)z&L{xPJs>KU=EyZ$cFL89zMtz-nOg;XMsUBzKTxnV~9C4 zk3PB~$54TT=%0ly1)NgfTpV$Rmc*2Wa2UXM;0p2OUgKFT<9+NK%ztHP^mdk0dy>D% zGi8_rw`;iw8;04214xyj>0`*z;PR2~1}_3QBM~CHaybBp0UPltkV0eQN<>=^iLpujJdWpLsZR)6{))_n5snSWp}S4N#EoM7CBLD@9m!0pS1>v@ZObq*qu zbP+F0h9pgVHA?v?Rwqq@6X4NgTzMy9`jueViku!2XcQX@PtE^EBiOz7cTg;7CqF#XqVxN9p4RX~9&=1w2az(Z}Q{ zCU|i1k@y7JJP#xd-4p0s#%<_JaV-NUka1aqfb`i(eKfqU?{n1;6Wv(js~r9_D&P&! zCP^KGZxLuO2d178W$&o&1gH?7#c#8&MaxlI zD7{nQ3JyKbn%f_Q(Lc!imtREJ1A|N5*!!jjX&1F?LTVZ1qg{JlFp-CObRe4OG~G5b zK1H^{jp#D2Ji2DE;OGGJf7LMjCrPWa>(~IBF`ZSOL_wWbbOU7eOu${__|O4#2QWp* zTLJ=Rw-%|3PQP-059?ZdHtV_cO4f7H`{4{O!Jr)a>u;0`U*-7+f5sXwK8%ey9%lYd z3`7p%&}q_7GkUJBNUKqy1xzIeVFOPHn+71~n^~h%O>zyED#Ia1>LKqczI+h8v+#=C zE@X+wxF_<@avoX>fL<_-dho)l!?j;o@+EehL>gJ+udm$7dcDsU-GGeJ=mZ)$PflP2 zPJs7Q!82AjWa*%gX`r6oL?vYyRtW3D1eLTQGiN9X0>`b$y?!Z;+xi)zDH~ zTUpZ6<84DJ&MrOq*U&6XE zfLNM&7Aw)AqB%C!FgeFVbfkAMe24{DlI-u>9{u*?l;eX3@RrB1+@uE?B8)z2%|wc; zN^7S>gcY7d+B5{RjoYH(&eDPrE6K}<@1k?b(Bkt)EuNt-A+^hprNPys;4`VlPr~)L zKgtJR{~bDBW$&D~rTVheO-o_~YOL@35>Cjz89QAR*JR`XN`Max9tq=3TDx@YF!bXf z6f_wkRYb3+i+R)G6lTm|<n2A9}tO@ABjyt^BfrvPbIILq@ zum)ou!8-mSEXEl+#QYOj{DYr=3{!_>=p)$3#HXeRY+V|=?X)Prgrz8hv2_+|xib8R;coJ^hNnWgpXHYl;Nitg={KK-3k>TL4r){d; ztP6@2p&tfcF4aoETeJf7Y?{Dl7!)5ELp|Im6Zh1{3G$CA6?pA(Gq`(gL`b+j@~eYx30uWOLVR@Sn)d^bjb7^ zFfKOC=P4g6u`qyC$Y^7i>nZ&-34zK=F&yyMTu^qY{zB%wj7jUqY-{}&K z_eFV@k#A1pZ?g<(*{@#e;w`qgIenFW8r@WojCq6VJxD*cE5^OY;R7I?khWyNM8&MfLYP!x2}R9Gtp z_3HQ#FRdb`;SA*jU&99&fida?up)4dW64S??#>FYIApiJdAfwoS~TM^OHYp1^|B&Z zL4!9167iZ|&b)|mB3_ByBIDNeB-whnm1kl6lz$|Vx_^yo`1L89>R&`q(|k-xXA6MP z18As>)~ajSDBE6i1;#RL!kdD3k}$Ow!xkDR(^h~#L<<%Ta9(15L9V?RAwtE~k-DfR9#04Z@uk(q}kkE}d2kfpZ< zX~qYG$w!)g^J7U(f5|q>nX;aBjsFVk;VpQrG}2l!l3{W0U=E;Qc}rjtoj{iMiLa8Z zh*|i_Fql@APtz$4C(}wadFUj4t9QZQFn;plUf8IO_&4`&YHZ75ndtzCLD$CW{Vec4 zgYSs3ZZ(T#f$wMzppbuIPQX!lV-?0h)3Nlsc)MUOfhlyl!SJXlv@X^P)^0q-zLVkg!5_l-H@8y~Ejs{NUR?vD-^LQ7_hG@xvwYpS!~03v;@;sLKt-DZ zCs09mfWGI+edVd3Su|A6Su}YSa`AD&^73=hCGl$&PP~)i=yENZ=x7+7VEoV2QlM}9 zu`R>1Cu+_2otAUJ&n3BS2SChvFwHPBI=TkagkMAMG>g`ND~l%xhKk0W0Hz3&mwB`y zyHk$56~~mNre#!|JTEMZw+rv$E$Py5I*p)9T?HuV#XZlr2K3esOJTE74ZgPL#ORvS zw`5QCSz?S}r;3|3*Y#ZMb(Pk$vbT&^$WB%OL**i1TTpHzA*|N4H>(Y7yjVKH1EQaCQ!eQdCZW!m?z=-KcXC zCpp_RHlFANtR)Aa#gn3_m15}PpyBvDIymBT5XDW2ACs>;1Y&?o(YW|TB<(u@5#OaF zbs0#uoZ2J95B%W%lZ@Tv`kr61YWJR!ymncR#jCFEJ-gfUu1A_a#Jao-_~sJSBEXk! z#WevrfYRhnKpsA#m2Q?%kv5#%HU^Cc(Kz3F7EL6}22$+k;&@vQp+ppp7qk*4gLHQ` zy)|)J@gx0oj^bI<$>2d~jlYbkoS_6H(8YM^^x~NtKIZc2z-KJFXMPa;EMVb3?mt-n z_Br>k*hU@>7HxqX$!d#FYNTVguo=^4^sYqmKHvrHS5b?W@|go_5zvpELeV-%&BNSC zl&ES6*cIAU+7`@d92yNh8hvO|OvCdaC$fQri7sUjntl>TycAvnEmlq^M6?>6;-SGL zJ5K77O$Y&3@r_7&KsZAaG#1k2x_FfcNV0IFNA&G!K7W@Vgpc`U@1Y~F*0wIWH`=;; zjA`eeG&MWV+{JP5Q*2J9Qh7TPz6up-1rom$baOFy7;SVf9f5QXE+z#mIR~gj@f*cr zq3TggLWvSqmC!D6E6nLEm|_8Lb1cQpg=DK7}OzBXL@={bMHaERmNU9K#c zJn4`$^l3J?hjq^ny{@;Fx`X9j;4MT3&4FTPq9)9QTkJ(xx`j#A?UWUUrX*GF!B;Rl zFodkbvrz%{gjqF!2Q8RxC>-T7T#ctPiWENl4M=fp8iIkp(wD+?S#;$j9R!_nGLE<$ zB;#9r3CAzMlTbQBrB%i=@6@5M`7AsJPrSb#hOc*(*{-k=KI4_cmtH>Bc=eaQ!Cp6` zOm67^0I2p$A=UY)>i_@%07*qoM6N<$f@xzgH~;{L#)(i)M-2)Z3IG5A4M|8uQUCw} z0000100;&E003NasAd2F1SDxgLr_UWLm*IcZ)Rz1WdHy;5rtLXZ`)K9K8bHqq!vFQ zSVxD7#jjOUTe%w=t;PmPlcnuS7NzOfDkS7OH;Jhm2ixhks!w}?HwOFxK-mKiNIW48 z24Z{J_Q14BQ-><5Nl1I>#1A1R?FCigyLMtHQ^Z{L`pY@rIp;g)UfV=HUum_P8C8gu ztFE2TB$bn=7L=Y%iqf;xO9Rxa=}s+?%gqul!4>z;>){=W2+Qq}?*2~pBfol!+|h|5 zPrz;!9eo-23{lL~Yqm=izX$vHX}1R4^BnNgHUt8z0+)T95_r+aCp}IfKM9V|D(e-k z2)qV7yx3+hw_#rc7|4_1Rc;%)B4&}Zt&(AK&*3kRaknx54=$T^^z2=OSo@r%xnsBw ziQX&rRKAHn*R}K<@Jp~?uenKKe+BrD`qF#?cpp*psgiwk-seYOU#%402HpjG(Qu~= zP5WwfF?$>svC;J<>zK$RIM;P&60@WifbUlLwAf?lk*LU1Y2abt!AgCqnO~Z5R_27= z%d=XU%mO2iWWT4)eYB2Us1Y~6V|kK@OLjItNK zEuvASJIAkZzsa#!KU3KO{2yYo>@XW=6Qr;=*qiJKOTjw94h0HwZ8{Yy(|suQ^Sn=W zR2Di;Q1bjheJF@g&e`u8`pu92hMKTTEA%5z&@nVy?Gqpe6KHie(mtnaYd`D`Jjw>U z_|EOVYio4;ar2Gci*3g?ux`e-!uZ&)u`T>C&?6?nKgd4J(z)T#s{W$>scxuWs29}VJ8Fa(JEkOkDt#;cD19e= zFa1o4bXmG0{UlwLzL72kIlJ$@pC#CPuU}yk-HKgk)oY(MCsR(!d*m18l>EH>vOF8G z6uDm>lc(gp@azfp%?$k=y%=-~vuaJXdoA$<7&H$h2Au}i##F_Gt8^Aw+nPSD-!?!KmbWZ zK~#7F?41XI8^zUtXXLx{x%b{}+-NSC4hGXZgkC~PLJA>0A@!#xkU}5{X(WLFA%tdn z2Lr}{0n@Q5Hpa%i;oh!T^M7xo)vZ>$tCdc7C)s+oZg;2c%aZ;s9w54 zx1+o0E7wnMi`i8Qac}F>dP3CdU8rcwBwT_o4UK4YBkAwwoa}dTG?8iLj%v$ zt@O^Sir3ZCP>{Vmvo}eX7iXb-a@}KhrMex=x8G8nbu3t|1d;2Q)ZqN<*C|!|xl&u< z@@v*}zk!*bIFh8efg}c6PCQ;i-OO)C4j#6vj z_}9Lr)cS?c3gQF=6TQShxPuzA+_X}6)@_adwfe-GPi)!({wXK{SpSIX-p*8i6Sn4J z-A4Dcl&rphwJjG_x;-F7pt4%&@qb6fdwS`%!>{Jd_~z}uD!uFZN>z3COOY8ST*9VV zs0W``YQ-Z;t>(T4VjyCH3oCU6&v4FWi&?=$`j<_5>t8z_uU2Iim|uwNRrwX*XcYz>`GOscTpg{DI>nqHRY?*1KTMPFz^3O#qatN9L~WicG5jcRkm|l9R0fSEoGM6 zs??H)l-U5cAmCD(T0$Vipw7&S*TpZdIH7j3P1DFfjV1saZc#njbg#ZTR;9k8V!FcA zHnK+L?Avz_SR&8{PT((a0%w+fTi4E3@mnS-vv!SDX6rGN@+Sh)8?{Rz1piiQ{w)xK zC2698MC&U4#7%v?R^7a1)z(Wpd|4%_g~a9#jUoWGk5ul}Dpv7#U9HENt$bPjm!aGP zS$jZ;Kn3E!9wjaguyhrle7rL6ypTXl8ZHxHqltiYAUXrH@CK#k-VFP{fz<+6uY$GU zoC4?G-WIR_M%D3kue)M%x^*!bIptIJ54JhGm9BV9w^rkjPs+%jTlekQsTshgeycKX zenY91ca>~knD_pw%zIN)$S)0%8QQ%2yox`Fo}+G4aNA_vJ8bQ{vWL<`uTgrx=ae3F zIBDrLSxOZUbOYxE_XGz87ZVY=|IL{Lz-U3oA8vDrt}<7%o?lg#^>gp^a*kvVq&R`U zmYz5utpClh{_EDj&18Pjtek*@IDVNki$g59NvRL7Qf4!vhHKik*^Q|+wffT730r=L zaS^>59daT7Ab+g>(dsK(RqFqt(QXt99|(?iP49X%=}5@ zztnOrkzbLu4&?+9dO%l*_6OFl79rC$14PJL{7HncwW?OJ32*{Ei(fHl-ns!6|Nofz zvro1SL;z8zvP0v)Mg4kZKDt<$Pw!_OxZcm05JCVExH?G$T#>=Ab*mPFQxS97gf^GN zD%I7dK366qwAgZFlpf$y>go3)byQMMq#`XLH7K0nnpS(eg435M_ zZo$!s=A+8ZSN*U46?e9v`v^_Iq7fwn)b3YiTN(L-IH@^#uTYyP+0$`zsr&zX1$T8PViF{gKs^r%*X#LP-n8q zaM-nsgP&0z3J4J20$0IN!PWZvtItV>hF-D~fZEBGd!lIgBMQID=#oX~JIj&z^Z=Wt z%*w|g@o)meexvlh4=@vqgE~`~GXU}_x0v#zh`=|Ck_ec$Z&YUHD`{H)DBWkpfDyYY zJvtIjMk&&!(Sv^u5%?+h!e%71iD(Y4^6!te4_5A-3=O=55&$vsX;oG6PbgS-v0N-e z3-*9~sWor%Cuw5YiA|MzJ#k54Y8U@^Q5MH<39c4J6 zDA%1jso1gqP^xveC^>RUV~N1d-+};0$0a~;l_kP%ty)#wBslDZ`&|PWnJbuU4*hcV z^|7}4ShLkHYdNgBdq8j7q;&tY;QEsG<}hWt%Op5~{gm4LKATIH@#U#i!&qqUDi-E_ zQvYqD6L_jPbOPJzRQ%y{FwB_?vCW~0GAo;y(kDVVh8&wi#@v$Xu7_fC@R3rhJ_Ku% zd4=$_QN1fFDmumPs(<{21|A`;@IV6a>?2htB2D~SZDXUN!(OCiEk87S57gHy-JNZ< z?fJQ(^+2WjLKvzb{i|6bs)I||9*6+#wM3xvpcYjOnzw$h%u9FV&ieB?Vh5awG0&Cm zua&wti(h1>W@VrPeNLkQoj`Yth1NcUf_Qnuw-+Ly)!2z=$KJi_f7_rCnc&civ>4gd zr%mh{T8|dxMHz~y2V_=X%|3F+ip;NSq8r%vd8K!`2;ETY zhQZ*MwiLoF5ny$oC5Ql69DnkASo?Ww@w4=sd>-Agqlz7m++W!-J@w{gDt`YdD*nWE ze4APfdtSh%;LO4hfp)tnwd)nI9Svx06_DVv;BE{&ld+}65{PAE35~X8XI1fj6C%OP| zT5vn9Qaq#)fGzh_4~c1Yc6rIq+f7CEEFbmrsnIJ`*$q!Mx2V`&e^a_WD?%uyN*0=n z2(Z~c{?vEakB_yTyfY$Lc6;Plr6*nAkfU}TV#HUl9{j0NTQ&x+A{3Mev>Bz;P8X&T ze8FkK?JW;i4{4~JhX7QyQeU*QKP-c#9x~X)i$kS(7f?GtoGgvL{|9(Ua)e1w{9wS+`rK3W0xU-*>L>Mqgg?~0#NJ+ zvJjI(5&=E%yDXvhX;21()0E$Xg`zJeDwp`1;sC^Tx2jZUm1Tc-_Y~p1hyfcHvL|3} z?v<+^ru2k|*i&#R$|;tfgb0)(2qM)wiorse*CsncSpOF=d`)3Sgbo6?bw!2J$FWzV z%g#1~nLAm_Q%vn z$I#5lRK6Bj56Bn8d8AqWVxARapbq&N%Y~Db?lvM#S(ImiEt9P&hydPu<4=7nch(8vy&P_sHp7T+|w-&a_TfDnjzuz+y(Rce&Q zbsLZ-0_c-DohL;QlJVtBG4_B^_0>}wSF_FsE4}{{^4*HK8+4zfhxO*Rls{Ylg;ndvHf zD%JnQv~LTJ!;9#Xox~R5H#~07;yb9!{yW`L?MwOG9=bFdG*u zy=gXP!C3wIfv}Fk&_(c5uls*f=?>%ZaD$_XmDrODQk4=2K@`Q{>lfoxg!|r@Mdt#R z^=F&!rp?i3e~?sn?4V+&{Ez+qFDdijMfmvtJTI2tT~$j|+O=1)!*Dac#}9akMNxN> z-0nM!Q@ZP})KNB)0mA8l>lWu#&C>~%Kc)}BWH51WQH9{KIZf|~b13~+(Pb#PvST8XPK z^FhT=2^>~d0J?gq*l(fax((i8dY|TB)7G7FLh*OpNoteYz4+aezOP{n><^#-xg+mv@lPB0&zwZF0kGf9jp~ojmVVO7n0)|8HKV`)d zr)Z6#j_NlYuTbB{((nR;BfglIm}z?{vkH+>I3=lboteLR;5@CQ` zYlb8#L$UV&16cPv4kZr;AAYcQj@>(;C$T=QS)O|CQa*m1S$+?{)ahZ>5SPBE!dA~@ zru#H8)*_C#^nzO8N$P305{r+)U{1hHzfzeQ*hOSvjM7@rx{5y84D0_%B43_;VwG_? z@z8snq+%!Eg-?gXH!+JLymz0%9)#CH@5D-i_!X2N$A{acMKkLOoTW_T+wX+}uUlI6 zd>fAvwr6;=n$?|u>-H6e_4S6%))1}AHea*=PUe; zhiH=}2BM-_@|jW}--j3FAt?DU{mlk-_z76_Wa9e?ha^tJw#A;0854($l%XVhfU&4n zJR4Yb-5nXYW&^*^6KP=oW2Zd8$FElLdszQR#>@)vxOzB#2KKp0sWzQb%Sl=D6+;4< z?ZltJ>pqIXPaekLXG?wrEngzY_p3%zW7WyU(LeYa?+a)=pr} zDrN5a5=WE$(J3bIsypls!B1y(jE?UK2T*k(`u|-@(hwxDxjR6FrQ%h{jc20^IMBbr zc$zWuA6Kel{|3cUOe_J9Mn*>Bd-fNwkSG#+jPcL!4rRGf_l9d&`wGWeLr?^{N&y5} zt$Q&L&Ls}$ekesZzK?PYH($bDH!)bmZ_`%Aj`$%zl(TJnH@vY%5cyP=V3RX{LrmzM zUAGf1aQ5?vfwkBq92}C~!1?_L@g+(0ZOMAf6tIBQC)@bWW_;hj zh^tMDZeTXviYwV|IPft4jub`l;@emeTGQ~|j9C>!H`Kp8`}_AO>_!=5UXO+!1&MkUQ8l_`>ifNqw)&ULmtXd^gSTR-*-=?_XhdBjzI$|uQBm8 z@86;HC=k3AgTM#t{W&bJ*_(bu!D(qDi}+w;fS6|TI<>TG%rfTe#LVwEE& zAZ-)mp8JYY-Fl+*9iLhC6^Mgtl1qU$R_j)mpI&h(ul5-knfc2hEz|?@VHpp4*fGq$ zXntjrM^vc92;`IdLD=1tY8S9vNLkiUsAErMrZ60sO`K@=ijMG80?+1{IG zzbjmhtkiruRjDC+K*)!tzhxDx04rxUh#1C*&1V^kx(6)F#*Dk$SCt-j7ay-(Zq=39 zy4y%)mNHXk0r6cQJLy(9hI`-!ex4X%S@Ni!r?QlFAA_y0B~sav7e%~`dNBfe)wMbx z;=pkr?1cQq0V_syKsR&BZ|Fw|b$bX*9-v2}*gfUOOmTp*U{@{29;Wp9^!a{g65v5$ zk;*n>r||Gah;)n7-_Ah+DG?wMlH7o_sfkU<06*y&bJF zT}G+c>GxyXK3BybIoob=&6=^(0qi4q6tz= zLB%fMFq1LgZgdamk>{lA1mqpe__0Y}#c&86%wRZ-qi#`Z+_CoE?iY$-lUcGz#i#s` zU>QV7XeB0q>EIzB>5=897VH5yIq}+~_eO>sd`Y7!qI>O$DewYh_1b9VaEx{A1gz6K z4_5K}PD4{ZFMGarXu0=$jFXG@DlH-)o`u*&nA$)jM8GNrkBFog6vP+1irA6gQ?WCj zLWcse^@G~AexadZ2~GgTU=?P^yeBs4>-Za#iJ(DIq5JKbhT~3wLIl*?k0~?nF(=6P zS|$L#-O|E=g8Xed4$-qgH}Pfeih>55h#HBVfl#?aQT}kc~eEz`O%J4Z26{{dq9xCI|F3@2SK_6vcDV) zGKD9bNYIN_fTa=BdJ2?XYO&-0#cYCa`?s>2oyzV+JsuH4me+)vafzXxqKoHIFu{rg zF2$fD4mgTIXV&lDL+LaAnvlUmPW&|srzFgK*JIv`Qy#Mg<=lPWP-YGaLO&42fiZ=A$>m*YAW2*vfv8MZw%#nE?2Gh?WQwJ z5COOWlvgDIE+Sx-CJ`^C7(^!kCoTT}V&~&HWmFc?Ok9lJ3o;AxCv|Uf4I}~(^Z29Z z!qPutkvf(3UOWxG$u@2W*3MS(d-?9!kl#r!#CPKg=PBb_Q4-WSquSe9fFOUr@feKU z%hFHqTD{Y1JF`py2{$iC=@!5#h~lo(5GM<4>S)%d5n8u=4lAF79YLxDZrTr0u~YBn zK+E%$dWvPq!~P08DcYt0U=-`!Z)Mcuq=Q|F2?ulmX^SOT!~r>d>9vcM+MDmv=PWDR zi=z&+D;j?BnB-Ez`Bt0dxA!y2n9m1t*}e&CF`SjD=3mj{GRx;!ncnFJ6#={7yGHM8GW$ z$X*S7!qpH|VH2E`T%|7J%i$w9iq{|l>p*@FQE{ctycL4hZCGY_GNeoZ0=uReA_Vyd zO+<74fKruRv%b*GxDFZo-zc6yY`)D+#bf0L9#Nmtrui;)q!0Rm39q3?7m` zMFj5sIy3woHl^P0O7skHZ;X$|g58X?^Wkubnd8JMJ7y~@6)yjpuMY(Iha8H`e-E>G zJLg;YU&Uqh6LQMTrz-Y^yRZ-Fkw~}l1D2E~r00SCG}CcXxzBfPxb8m*0&^kCrLV%$ zqKuLaB3m#>sa>C*uMtmr;_hDa1h3Z|u z%=->d@y9Pj$Iy-S;BF|K-cQ9B;zsYwfE{_1ia+p0G|r2|i)=FteFqx$_J};Ns3ify z3CLDrh(Ky}z^~$U8zF2cTBBkW$Y{-b5B-|b2VUDyqHNk~&De-H1m$vPk-wUy*pvPo zI{QnRQLCEE`^#yAdcYz-Z2z8j)ARmTW2vlY>*Eieg$&nE=_76eu@M3tSU;b^!RQee z(GDPoo40ROv5A*EA*rjdm8uoqfnEkt`;0++n3jqw)Q#Tr5~X)JjXI+k%tiz{j#sh0 zX%n7%^Bv@cs(0jal0?8D4g?Z`)}0{It)sQcBEMF#Ng%&<+A1$dfLV&3X4ATG?3DZ> zN^y0AwN7l0+<*GtA^az}qkQkn1i-gjnjlb+Ule{8`LoRY$kP`2LDmfOPpW2CyonN! zSwfV6Nic69kM~C;@U!%T&x{@QcLuI(cYTAEfSFFVf?oBwi`ca&MBv=);z0Lf>5Jdc z1_)c8GhIO|AEmHtM4(M?^fOpZdXO@sXp8(bosB&f`P~V&EVEm(jkx;C)CDF|3g^_Z zGvjGA`lBjK2&~RPybSNem^tqOuBW+64ZN?gogeg~z-;A+oO(dM3uKtf6dBSiT(Xf?3xepZU3B#oyIaz5FkFpj=B+9{Y*?zhX$o;bhsYF`gZLm zD-MXe>oA)G-5;@J_l2x%T*rH}VNIi}R+s_=SFji~q7&GU?<#fz4q!B-2OWSP#<@;N z=G7v<%=~`HFBX2ML8Rw}FZIc^Er*XD`zLG#@b|Fn4Qv0?sV8rlt6L&mSTSqr80ZoTTCs-9rHA5m&-3e2NyF)r|%&I3RVA z1X~0QAOgF6QR&z2Ol-jM>1HdR?{lip%rD4)GX0RnyjQw_a?ScpO3#MiPy8*bL1Xjo zn6e0vch^P8D9A5Vc^{BJ+d98kj|uYca&idr^Um5eP{w$Rzo|j*`wP1@IQ}R)fh@*Cddy95Nc)tIQcyb2Ap#zqfbI=jFnXf@GMj2+cQ+bcxEw4yy_GONmJ!1No~iVC;j(g%bV(2S9KBAiM05iDbV&DJ&W)v>nN2(WLU z+u#QFG%#@yMF{qYIFLpJVDAsQ8s#l|9>zc#NO}$xG4AsiHn6AT?&G7){Aq>pz{*5p zp-cc8+k<}jMaJsLj_F8lN=c}JV$ZF`Vj$Ga(&2;Q3iTs0GYM7Krkj_*D>p6 zj{o|%irJq4^lgWr2k%x~9Wa(XArewTR?6yIa)NLC=$FK4E_D!g(X_kt6+9&RSNGEk^* z($wV$p4TLF0?rblp1`u`1l)CD7T^Z4{!?K{sv8lOP~tg=%Sp8PC9$gu%pJfsgoRP=NGonu*L0+3^e1tzytwG~wV z3hdpptid9?#~)`IsK-d$Ze1H#WJbj1MFeS%j9!YX@2L=)pJgN|+JLIADt6pWIJ>~H z$Y;-lR#T6>Qt9DGA>)Q7E51lC5vang+ZXOpddSY1L?F-FTSK4mM?{}Avb?8E0J3yY zKcMpc$%>m4^x2$ELdHZj8+&PajFsCgg=sX;&#@{B~ zi#Z#VeCv-v%UEX5-lH-VX};-;D9}v=mi!OX>%J;>+T?-|0gL=2$Enz{H#67@vw~mN z0l4HLw``QtJu{Uah7xb*-(?+%*5Cf7)hc$x-?FC7NFWA38<(;3ZXN6XU(Sdwg#f$n zeea9mfFOclo02NKv1j1lCjriRZgGymxiz)|#zm@8VcR+pbr_6i)Wt9(+4MwR8h*n#(>`S0(O zpdm<{JDN9d!I=lE18sUXMC5R%JM>j*09J*Z;8W@#z7Whix3WEXDVCD^1~x}`*p1P@ ziVaMdyO!E?C7b|9lPiuPQyfF4J5OM__Y{tE??Bj_=yJ9u%>4t}Wr>6+{PsGLaf5YX zp5rFfxhtOJ{DU{$7MEqOz^Ts3^+sl-R;@Xr`_E8iWYrKbxa2l3-+&VA?`(q|5Rx)W z6k1g+6uN+cQ%CU*2+SQWTenFUXWR$A|TZDPeEAElrW>6Qd9CqP~F*zc&=g)gAU zJC(81-iigXnMV-b{^XvY?ty#wQ-2S~h!}xFu_>VJ6g1yng^kmD|46A`$A_1&egQt- ze}cmAGNroj9-ekbi-j2K!+(v}B95jwZ5N1RKmQ&O55s%1da!m9KJk{jXE6WtPN;a> z=zyYh<4Px_Wv;>rh{Yh{fI5J2)0cf4ora^#yPXY1AK@_dJ~jZolxUkMpE#sd4?9}v z(dVE8$&XtMY^Y3JjyT0tZ~JfcMh*sP7nq?Ok=X-6oyBr*A7rvHkhT8%VEIO!7|qHr ztgP)g&b;w^mIkMy;F?UwhUhkyKceE#pPMi%7NiOT8RR(C(0l$#nW^7q4@Be5X2V_= zDGqjCd?4rp{tOW~D>Dnr!`2M4iS}xk_rHhFh<{+Kl6n*yYd%(|6Bl05*Mrh5!V z>337sE{RY1E=yT#28v?ho3*sv|#h|x5+0W5L$nSlX^IRqXPESO+%B)g_hg*^RtHN0` zGvjx#o~vQ~uZvRh4xc7=B&QC|eKzZ1mU`3`=mS7#xUf(V*}o?{3|X16L}NWeeN$+T z=81HOz%*6|79-oYFqG{81gWF`WcJ@3L!WMkgnl+N|8X{ZJfLF7z;0z(8VoIHM~Y;3 zqdxRn*!63|y$LZ(>OJY#j@`o@i*mTB>UF5?LEY~#rTXGMXBCf|lbss%n>R%|nRXpc zpgD>T8ipd6H~2kfrMZFoJxXetbJKQ;}GMw<>{&H$1B zyRtM}JunrehoN-qir6OU*YXoipje22hy!9Q)B;c@0FgRfY}0=X5!g92wRz<#j5XMw zpU*bU(2{qo$k<`mbFA6D_{x7HwBdU9-=Sn3nMnkM)$KhoJ+Fuuqfcm90xL=)a94Vr zo8hTU0J3$mu>J%0R(i;{LQ|S~kDpm&tMSAB85z9y`1VW(bhyeZpnwb+Q6M)1}@c%2aWNX%K$Nd&6 z5W@Oz#+CE5YjE^AYOZ)MHm_U}UYD*1pqTwm0|Ah4)}fnHnB8VT z7Ywlm?UlZaSad`{#DV7H1j+;;W0bf8kp1;8Uqa*TGnib-;?Mn%{p(n6aTHe>3fBXA z((ka4dp&~xfSRf_u{%Yy)6d%TU-J!2VqybSd1`uUIw{EDZpRXRLy@ z4F;_;j{6)EkPzZ9;Ardv1~hCjmXtyS*6pg>FFg693QL}-aX6DS6yt*-W!IRN?K ze!x1i9`jQy)IwPL4fCyso7mwP{kV_r@++?#mRAqx0f)g^jRPSr4bR^ZN1Pn5ttu*6 z0XQHyZDj|Ra!*Pifj5=2MA*_;A@8?Dpy`c;TDqy;Pf#4s!ut0e$82$KXno?({|v_* zr@|@h5}K|Y*|;9i`(MfFH#0eL=ZVmQ^spa51ip--Z+LjRk$l&7Z4zl@#&v!YvYwx8 z8)#|FaEO4l7;HLmprxBBU0!@p$t<$l6%34E#h>}`KlV5#J(i6oWoX(SsO*R+@PF*4 z`wcUrOw$3tF?ft2dpTt@Kq4u#YVqG4?YIbt(U(pz$slg0U-i{ge?gUCr}6?;Auyh0Ju8@ z3aN*m$g`u|Fm9driUsFfA;$!vmu;Uy$I@!0Nj-8oeuXG1Ds-I zLU1^N?UV?V34rslg*|G+29nWe{)2!GD(2B?z{PI54#U;y|)OWgUR?;brz8fkwYw@Of+E*i)G} zwgGG`DMO3(Ky2bQoU8W;v-3xds)O#iH+u&7-eU9Nj03+C-JF2LJ84_u>WBmR5&@4M zpv(a{AG96p<%moCK7S$%_g?1Bo3T+3Hw+3cpd3@M9^kMIJ??B3fAR9h6)D?dHJX2P?d4pj)6H-3lj{osu?dI)Dbbm)+n-E(PJG3f;IBmz6O2q0E}L)jhH zK1B0B^WPZ!U|ZgG*Ib51Ic;~z7EVC?35ZVMInfE+ z6IA20@Ew-`h~|IrM2t#;&3Vn-2jC8RludrqhD;GYRB!^&e&1JSI=TQkjMEJqyQPO8 zr}W?hm6>zDJ0|U355hFKQ^(xJ0H>5Ik;n@D$P*?m3n&lrTJ@|0W+B*S+fE(BraH2@N0f+%(6RQCYCFFKj zY((G%IDv)XoInW@0QfWA$ZE^%&-wJK$H9Rg*erb&nUG@>2OSZZrW{dRJ)rmh2}h3q zoA0*4R?IAY3G;4d^$vrT>cT2cD+t6g!U8}Kg$oe&zcEmBL;y}8L>y=&CN-v~^3SVB zovh^GN4qAQPcd?8%*YG**vN%JF!MH8M+StP*H(s-=mFgeho8v%<~@wI1U`O1=^C)#D8;V?w zE9EUEcIgcI1Z9(};O zv_Ji|39rCW8`RS2WcH3#DurW5an`9PTwz%|>)I(w-6X#l{tUi=n*fk?H)}s?T5QV)9%fJXA%UaCqCoK zP?|k}aZv2IJ3#jRGwVO(Sd?O~fe3;LKG0=n%)SSOdkXT&78>Lb0TCIB3`&mx#9CW6 z&gn-z{5MQgCN)n9smi zsPwQCgVU5_O1lTdXsGKDWfr{{+>XIVG0A|%et6;Ja>qGg&ehFkyYGb)aC8Fh{4I4) z-Aa!GsDuL$F2DtP__ve}a`Wt@qm%UzX7*ScCnV!)#A;0J12~bU4BK%J444Q3m>$?b z-3y-&!c_`l3J8`sKO5kB&J}|;kXML6uKAqz7Wi5u)rix+>{2iAB4z$|%*7?y#`%D;df+Kz%d z4&qZ|6}a-P9BG4 zDg-6@PFZI5kMC7_*kKf1ky&s#Wc%s?Sq|*ZN|2a)2SLAs5d}Sq=0R!m4c|z{8h-x6 zIp0!q%2#p(AcOsPH&+aV_P!SC4iXC$6_9JE9?146c7i~hek`4dfe}JA`Y}55hyJJAjs^M|D_XMp!*!B^e!m->XLz6 zb^imQ=D}8dX8u!r>^}Skxk@VEZqGfSVBNw^NR%ghCR6M zo>b`grQNhNvGzak2*22J*!J23j3dq1Fst4RZXsfVoj`(96gEc00pSFiQ72G(1R$c4 zP7nQx(nI$__MgB>EekE5nY}1KoE~YDF*s&|Qgdi%p2kn7M!; za6UhIM>7+F(jx$^qH1Q@HMq|WnDt&9`svI(HvSC7n@kyYydLO1L7CM7Cc)AhZ4e{7 z_Y2ko1R;52d$JjcKHT)Y8w9>WJj0T=|EmY@h)hVA#kK`F}N+i?%*PAnPMtWS9m z%4n)A7xrXxki!9Z5k4bB0Rx(e2$UWHC}1C(h0ozCs(+dNFJPaRR8iGEtwE4l8^Q(j z8k^9R3Gz2LI7FZc-&>KQZcX@-f)y>4*rCP+DAdeh|zH3_ZE8y67+ERKPK)gU70^=XGW`3FdcSgbvdevh4 z0RadC-C+nEA{bbpVQ1gt6(z!+C4+DRO=K)odIX?Al-MkJ84Yh&JOr^GT!tOD2fB^o zP?2B)pjxv!)Tvvv+1Ej2=}qU}@0v?*OMZbSA_6-s0Z@ykDcu|Pt_(YL59lt#mD#u= zxDP7WJ}!D9Kla;;+)gPD(mKzDx;jLlP~}lh>FoxL*A<}o20QR~k^jraKLzN_(k?=_ z{&EDIs&}^LWj055-pQW;2vKP6pXdZc91tkLyGxJ*a9W?}gY>`j2=1V>!n(Pv?bbut zgSQ7~Eu)-Z`{;qzu=jFqpezXoLC3)fmOd!Hxx*b!pa7gk=@EeXFb+Vg__Rxv-P{xM zQS7Ndo%&)S*e)bhIckUKfy%awgSN_SSQy;g&O=x(435qz#z9)SM)^5~JNcaF0uh1I zatkhvuMgP0<#f!Z&y{)Nd$38Xosi7y(isU8;mnwF$PU;8x((*Oo0kW+Tz44AQebk6 zc^KOrSb{4;@(YBOVZE9%zfNh)p3Y0afiW#6esX0^mk? zFI(PHz1avNP2GvrAGN{avp#jQtsALPYFJ`m@-sckIlwC8B3eZQsR&-^%j zv&UKv{p8rFGL(BD)dOvNDzjBQas+_5k{8j^PXq|a5*qAq5l$lK*?X0EC(KD3cFltb zlokPy#)}eAPId_b@fa-Yx_}F9= zu1gRANum$@rFHme=1jIZ%m#D-a!PC&%01xpfE+fvP4r5^Q@m~q0g&iY__; zaRA$p|HD=S#B{T6lk;hj^*gKB;lEYp0W#3I-tNag(%bDN#I%4SDVamcd^N{;{tI|Bz0 z2-Tff)Ai^80uz@b$~_=G09FWMh#nvaDiHxZ$P<*bQQ_`)xbGWPXfm@85hy(!fDnK% z4nSBn_bNakI<8zs;d(%fxP(KKrCKX5TspUTj(J+NgJb{MZHwdf^f zmcNJpJ?tJWv&tE5}z9NAfMJS=s=}{XUp% z^pO!&!y;%g5&$`heDw#3BdONTRYp9~)Ih96{1L&NKE&?w)V=l$DklGM z;TA=-3_EyMxXD(`KGG)N3g`d&X36QUvqKD!!b*<-NJBP*-1Q)hSZ8@bthy>#@2Fiv z%s_8!%RGbR=934Mnft`hBqqp(G+FYLXhk%!#JX1k_U22y>>mInyfS2|Pq6dM*!&R6SiBydYv16gHW8^Y_X;e?7-d ztx1fj#<0Pjs-@9(mS+*c&#mfI|ibb`U;FxIr6lp8SK-YZt26 zQU8ROl_kVHLAC;m2oN^Ki(W}MxF|>#B~4IOr5cUNA5^YiIPb}4Uh*rddBbEtZTKws zouWirFf};7DPlG+Rq@BaffDSQ#NdsJ_%bWHKDbphGt-5FGZSvvtjv^~l>US>4v)D} z>3$PKvlS$gHT?La=PNVgu>^q&n6aHDe%-S#n*2kQ;tU4Oaonmc#MzJ47LDOnRtr|X zqx1qqrVpQF>F^VlbWMUQ@brl#h9HZ9BZ^a}*a`ndhR=@(m^wI06VMQ+(<~)(eJCe9 z=qiYuFXWmxhiZANRGI`pS|M9|g8&y#X7lG^^gJkMe&Heq-*=8O3qQ@O__E_jW)eV) zRvAT~u7p~MEjs%g>^gHTvzyF<@?i-MoC#&j@-v^!QR=o+lse}BlpgzCDY|JukpF=* z&_^JH2M{=``DXy@oyI7=_cxRtb|N!g`o|F%_E&1V`Fz1@bE1j$bxdy#I z0%0gk5kPuv{ilI_CkHy3TC5$!BG6iJ1tx8DgjxQ&GIyS?%&HZENFl7FMSMYwuH6~n zdni5l0PC4ZcNoCHXEg&u6KlLwvzDW(7Awtxm1Z%DwRx}O*KiT-VE}^celoHs-ptlb z%H02R6=MD=iqb1{{j#6KDUAb?>7iz)Q&=9k3snX&Y#EY%{dlGZJn+OOeK#^w3UzF+vaUFhYZZE(epw2Q;7}+Tp7Yaww z@+&oP>g-&Tguva6rPZX3XvC2jeL;uCs;dM}BW1@{EnV9(bgR9s3^@`|4B>j54Y)ORe)sEQlc7z{~fj_)}l? zNswQVxL1!)WBJWzy0Ei;n|3O8>h&siG(@Ms$e*e)L^F2ut;qV9S{*`y=%ivTS71;m zn#V2)7Y|)oQn$4%DQ6)7){%@%Dh>jrGUst4W#seA<5huKlJ74~0wA^C%15hN7Tms$ zD4SN}0Hi4Z&LjTlmtfHs`Xj$g6xD4(+MlV|c`qnE_}IeK0?t4m@eifH^e7y~*aQ)P zEA@hi3Ff7{(9-|d8%D2(BUq(J&bR~A~ulln6cGmCFTj_J}#dMX~%FkT6k+sr&_gAsApH;EL zE}|q3c!t|Z1HP&y0#p7*J#R^i%ISgi@%WS9LhRU(p?k2%->HkzXWf-h+~rho;}YxL zFJjf>|5!a?Aovgg^)_}A^Ph6;{Fl@Q*KUl@iWr=LSq=LUYtw0eC4*tE;r}AsvCSiB)PQaHn zPzLkZ&rl-1?T(3jZ{GT&G9SO4LFk0w=r*kBpMDEUzXQU{lf4cru!vmnv@%Oxggu{6 z#k>?Nya>NoJ>e1++y89;c4KC3ru~xlz=}lyaU(C=$iqNRnsQe=PlOA5MM2{t*3U<( zD`+*Et}tm}2nV1$aUOtBZK3Ys_PG$ijA*9(gx!d>nMfhX->1Kdo%xVborf3VZIQ~* zyTN+11zO#U4FWdv?o|TI1u%QZAN!_?eepT;3G9=I3L6(f=>C|&_9tdR6n@8EWpxwb z#j!`=%|Bom^*53+eX{k}$QgUG%WpRnd!poQ9bt(u;3fKy>y=*gmNN4=>;;Ly0ek<+ zyUKj}2+NRPaDoG`vSOrVJ8~FoU6Y8FaaW2U_4W~A;2)C_rFNx3X7yag70WYz&~X45 z$u!84TA{$qx>cDu?`0xCGlTBLF1}OmC?N9lL8NVI(~f^jMC+|jxe+8lMeku#?K-(2 z!;IhhXATH8)2~IrxjK!YNK(uC?|q8WV=fNJ=?<2afvc1nb7W#Wa6OgV!gA%OGgbV- zt5p17`&cA(=g8?E!mf|H0ewqmyAAI$ud^x;1!^}!9J3IB&8#R16dF(5W!e`c-{FKi z*FwD4Dc`wLCKytpAQWvqA4T>A_YOH@mu!;LH1JdTlT@7`2{FEKMyTXk35SyT#Btd9pfPa@|Dd? zf5p^xc4!%?NcK^fcP3lAgH#wd7Ww=1Rk1@jV<9TAA`?6GI+iv&CM+JQi_FlLFfCo6 z%zw{gC*j|tmX?vuT0ib_QU=L9xf_uQGCbZ-U5=MrH)z6Y)U zXBo1;6*KoZR_R^7oJ(;TY0cYzR`Gv;@ONE=dFz90A7^Woi|)SgE~vo$GVF)fs=4(c7I;OenkLQH6E^%wx=t(zH9>9fC#3*EH~YxBR( z{|#6x#veLM#V7w5msyJ}fsxtK%CUS*eel=ui1QV0z~TrH6S=tGz)T__+Mf5&jIUr; z3X%nkCDSBJ9&TbJ;mr+By|TQww9W>U zPWApm2!QTB7Uv2oQ5$_1UaU925eu&zJDtGbF##8L{!lE>Pw*Twn=X>{7{E z;?l7_w*66LZP)8Dn9+y-3iSu0-#rKg88+9b_-og@5@+6;PakGO&hoUn*m5XO?}w3% zyONpNgF`m)9ULU_q_UjAqR*6>d8;QT`lB8Pp=4i$yUo^r$8yAskTGJ-#bp`{J1$;q z05(@PilAZ8^peh`Ik z-xuW$(`i)MH>f8*o{WYaHNUI3EP{5!2xeT42Jg*39D^ zLouCIyB?G|BMKAo;WPM3n45Zy_r}b+mw_uUZvffDuLomRm}r*pS|&%#L}-jyAZt^zT4uLf=d+Nk+PLIWIM58MMSaJB1ORH9^r_r zHKsTUl^u`!oTT)be^IfoVjpty!)nVGt!l&%VoQJ!D)%p>4z3{`lB!svr1ooZCc#0%og+&!Vap)D9{~1yZ1*f zu7))YZm&lRKkIfUDE%tuEqwN7hVoBlJU#Yo!hI-}U|bfl!c6-)Mq8OH3htL% z31{Ue%(RQ$!O`!bqI&otndt>t7fjC#PllK+a3vC;Av*i&};EJN2-7{ zW)s@^)ggv1efC7QW>Dt~tKcw}qx^IClpwz#*RB`jTPm_Crn;ZwG$cT@x9?-alfv;y zJ|NbDYSjMeGolnkpP3IHW|o)HoDOEuRJen+X?3!kPRDj2SMYjz{HY%*^X#`_f!C)O z$jXIz=9_HbxjVi8(o;1&ZABs2nEe|=*+yJR16@SVa&0Rv|vjONoQ9e9K;Ci>?0v)xGz^Nylw`h0S~@|O{hL)JQ z31~(E$pG<(5G2k8<#C1UZo4bfp$jV*a2rmz+{kjVSR}R|=!7<0H^APv>)r6|bEhYK zACBrO#!p9|*z}-nOI}fRpD^JFW+f{jQi#$->|z zF2^7JA|ennwh!omhlAw(GPnS%&wx!$16DZ9;&(FZByHX4khG*}4?=j_w6|h|S%&rC zOZTyV;6`SBydbY+%eEjw6y%peD^N5x!ZJ{`>5d^5$Sg!F3D(0B1l+6-5G^*sWwj3{ z0IL0kZvw z7v#X_^QyI33HvDTa06pr$=ZCrAZyPxE~QdXIr4QlFTgx(_ZhonXIZTjq0~{Cr?Nb?^PKr#`f`M=G7)jUEJ%88|BK9e(Ko!z`zPZ^ZFm3rrF@q7D7w1!;#@ zK`CkKAPTix&{+(Yr$#}1!+cf$*8PFAzZ5QAD@P#;L&7KIqelFZtRUciU$Q{==Pt-Q zTBHyfW){87A0J*dM zcgPhagR_x3i zmB?o~fDsc=zpvCD0${aUITYqiI-1QpZQvF2Kp0z;%$jJG^={{ROZGf7zNCT==|Z2~ZF0(&Fy}tYHB~=% zIVE>51VHQomQ4$+y2i<-Sp|_0{{T@z*2+arbb~x*^C0U^A8@aG!2ygpCUAK=AX_Tf zE^Ci~y&rN+DlF(mcO9M?MW3auxr;@dr>T-D>ppo`$$H|oDt7p{81=0ZMl-HB@2xOv z7WqevQL)n>WESq}O_JZU-!h_%k5<*0Fy{n!@$R0!kfH)#vhpd(Ir4*WTqG7 zj|#O|3;NA5QS+yzllSKEZppiS5CCb3%sOFipgIkM+Os8f>2ygQ4T3sTlz0Vz*df2g ziO2xh@!Sd%mRWaU6Vj2)no(viQF8gUMI5U-AYO0%Ae+B@Pab^`ZTjNvN=%2%HXMLZ ztkgI4qpi|j-BIfQT?}fTLd+QCDWwsQTM^s5giPA*qbD&d5P^E{nf@|y%f4(nj!dp& zlh$eM%DgW<-t!b+H(%Ah{y!x{A{WGW7gJCo;1n!vcK@7k&$Tck*;8nXJVMIMg4dN6 z#ZD#5Nj{*5Oj2qNvyB`+5e4M5*fa$|GL!g-F9ft3!0dMiTY%4E&|#6r>#~t#i#(n2 z#fLjC)qVG9wWz{?MFxWx>lURWWiS^CdhUtmU{1DqinI1+A;QQ&fR%L9 z9V>-M9jJ;PIZnlnx)Hg4eDoT~ap{%4{I7z8NK%vSsYM1NC5N*sacp~qtx zh;E=Ev}x}|E?Nx%pr6u!rBmImPg;=Kiq2#6YMiaG@_)NstP}HLK70k=KPz}XW!Cgg0(U(qWBVZh(m-)J zHSYm5fnuXp40Z1Bm)zhhawOGZ~6HU1j^XH2mlQ-^QW>&1J*WR zX-p5tqVB`V(FlMjrm7hr8!+y0Ksp}7BUKNAw(?nXcGBf>m2JH8vyL&=VXrU8o3VdE zcNo+-C7GBW`|*`lmysMv($?f{s_OE*9)v0+u}c+R_#3kZQDdWLgB1iobsY>L?~wUI zcJBE>eEKy?k2#w>{-UJh*~S**`nTB1?O>3%@B9iT%n#|kNh1>hcSiU7b07v@X31S- z>D>$Kv;xNxt7Zh&T@O8uSz-}0tVdS#%OPw1VhAIHC<&G|-wXlRwA2YI{8hZu^qhc; z@q-d9X=63yHPqK{P*frsIGc#Dpp#|Aw6@CVknPr4{1Fzu1M)0!0hW?U3rTkgy3ele z$IyE-7ah@7X7ybz2uWvD-Sbyjmt&S_x{)s+mn4aT{7!Zu0(q|vM5vGRo&*7q!Lhyk zwjwOgxyNZ=<`uSH_eSx9kH1LJ4Y9$EJoK1hvqz)07)N?>0TZo<;JMr26y2s_hSOa} zFyo1?zy&foHf_XWaF#2uSZ^_x{`9%b%86>e|Nfcbej(!c^|e2-?e|CM5l~nLz_yR> zRrRx8NzDFP@PxzC2L_m4iC<(;Sb z7}>S?y3e@GZV-js!k03`i!{W1KF2i*la-W#*~umQw(pO^tA~}D-OVtyj959PxY$8V znHRjDVrZngR=+83)x;D$0+=`d$g03FIIly3Q)5zG^X%316NA7`>;6fFQ?%S-4zsae zNp-nc47v+&>gHVCajyIAj{r!EIbX_&xQ475Dg>6D_m( zj4jAkw)V?ZL}5bYR?N;M05UM#GO!#P(qm|v2w+=5Ix}|)w=xYCFPIPS#D4<1ANPos z*|tCIf5(B@D~?9r%zlD>|CfcPt$X87s(v9yurty4K??ExBBgG5{A6`N^xI(s$M1D% zVe-9wAmJ3W30aKBuqS!v6>q^G{@16u$soRx9(^i1?EW2`#!1>^tWsUNrOk|1mRmlb zb>nxl=5O%?;{OkV=#@XM=bRp+)2gQjLKr;*#i|Gv(9SgUrA`UnIoQV>50-ZL94 z``@X9(mQ1*0CE_Ms%O*JZeI;;VeOP(Busu?eVH-iI~Z%JL1=NlkwU2L&nH$CgWKHW z&`Fc)JDv38cQwT+Z9BM1tJbsK^^?1U8zas#b~=I+aQ+dTCK;ngoZzN@hRbEapGYgj-%2#YuGfXA>&k2s2kr8mX4bt!t4_y3(9Q3Oxs zjT`ue^U`H<2%I==)q7l&wTAH*u=pE=#bS>!!D%^HqUOn8uyG5nFNx$9`Ex-wPw5Wg zdx9f9W+ehrO2oQtzXU*(G#smCmP`%qR9t%NLHn`s<4?h9Bu17FcR4!UBv``fWb^9Z z;R4plQ_+E$^&c$NFedVRWsS|b8V*8x%uc0#Kg~)-s^{Gz(Yksev{PjwvWmF3_`J)S-6pS{9B2saGUV=h#>Eo;Lr8O+X%OE`Jv%^QlZt8ivw z-nh*lIlANGy8prcb?&+g!~vox>(4F_X2C35uFSMcU7;;_D@Uqv?77*9(TDQ~zn-VQ2k3F~%ak)YC!8e6OyWMkWH1$9bPC zzue~898W35`Y2q$oEK5_%?z#~HsX5l0my+_kQmE6HTvKT#IQ5tw7;Q?G?`qg zWC_<;ybJX^D71$0DL+E#cUt(Ss`@Re=JD^NM8$2GgS?@oW=5tVer9y;Ar2zT6%Zm| zmk1M&+5aZN~v6c8$6o;Sr#yf#}zn`!%$HN84%(#w| zcc1tc2!po07yz4i^YTsXRq#|skiQ+f^mY%|cI*C=Aa)1(6FW@P%){TwzIx($bs-$)y!z|l zG{orM`zpokVtv@TQi=;~^Wp0p_4RXCXbatf1@ULT3sJ(uuZIBG*>UHCBKQ%|XvKeN zbpdY0r?kj&0iUl@@%zrssyuCq9xyYmRp!a-82Aj@jOh#ej>9j*z-d_Ut2rptymyz1 z9d>=9F####OI}sA&mkf>L?#N3B+C-yw-6;ygftdk`6Jgfkh}t1w~4WkD5)h;gfeX! zk~&r8b~^<@g0*;g$;JhY`xd?gum)THT4+ba4!nvLfzD|w0+PYX$j|?a_aF|mAeiY_ zQio|7tg&VN;a>E<7a1mPrZV& zgoWGv10b=??pE&*me>`S;slcQaYY5*7NEL;WfxBbtu*i4!3SL$Tqg{E^n|aXD5%j*7 zD?MzN430;#Tdrr`EEWF`oYRt*BbJzFGTgbx?>||^pZzlhFwJ>Jt@V;L7@rD9h^Qx{ z-yh6#$o;)`h1)yJKS46I?xic#wmI*y6+0xEgJj9qrDpw*ENM~h{K@+i0g>+~KPQc3 zOuk2M!$3HJl(CRIe?X>ImmgB`bI1%#>~;*&5$FO`8-wfV!vh(4G^lMiTw51aiAhBjRoY&;wlmq?*=eY684_sTzuB(##E$tV$Q3-?+Ml&GKPaDLwQH?rurHmxDAmEn@i)-+?>%8_U=XvPYob7-q)@K|D0dt`BYR<@l~o zX0Q|QMF_?C#(DHfuVKRzTT|s&Zu9gXKu&DgJu|-~v@_)1CqdY*X~>u3o$kJyQXTLW z@bL?5ih_%BwN;9eXZe{GOO$$lGMv$~EHmQDOuP|?AY4W@FfuZqKBUYP2l{@NIx?fERKOM#mXCY|eZ~)18ayx+>~~Z1(0OXxM_7jXvHpTQE(8ih ze(4)0tt-9rzD6UyQ;_@Wyw5YkGXxtr0VlnaHt}4iw_Q`c5ndsfEIJvthpWtnc&63o zJcO0lLBTEJDDn7xCt)G>4P;;xT_IpT{+}}UUWEHDh(ORl?Sy_|f6Cf}a8bRdFA5md3DG#ftSoWge@8Yo{EzRwwta9%QSr7wNjB=529 z>d~8-pCifpO_Csgpd#`6Pvu*~#q4{Tf0|@y-Sl6p+6S&;e0Z=(;st4v5Qz8^A5dS3 z3e6`83JLU|8!GVhB))AkAZ|A8SOh?NKsfT9#;Vxq&+);6Ex^puSCx6{`zm(YWH!w( zlZAkpg?xGc4--T{kkJDcA!JbZ>WiZBJf(L%j~R8aCsl+;+4j2NDP>+~rC~Pp!_v{p z#Xec>%+Hwv0O&v$zp*bqmcH-bCv7f4X68Q=icU1-LGO0TbJ{J>7NHR%l(-?2Q+gz_ z7LE+UY12s}2B{wrl_(4Jp=JArbC}3Uw{aBs2q(t(YM$qtY+9~j$Nh(R7Z!U`$3J^k zZMo$%T%Tdb;YAczwm>BI=JAvtn9q|gpGWT=wNx4Ol^bHMe29SA5eb0wiYUd7zJkLj zf9&p~jC=DMYtGBxQLz*5&WQ5{n2)f#zhA7zf)T@N;+bGH9Dy3Lhtizfs|QR>>_M+) zhW1XY^(;eeU6t@VFz*=@VN;Y^Iv<2dvc&-d&(4s&`>EJj5U;3b2Y4G4@@y92d+%X% z4vRkv86lW-ujklEi;U?Y(~XT*2j=jtPOjRKL~oydFdA_N&kV233DOg^f82NgRPgzAFF zm>>XS;}4v{K^FTlbBAvjks{1zAn8NjKxwrUFG4|ul1|<)KR&p%EbM?-AiuVq7=&!Z z5nt9d>rq&)<+q9z3}k(XmYpHJgVggHi~IwI!Qn9QyN>q67VwcJ)%et(DK!IE=Cz0f zesXgGUY8=8gGMTS7&aK3L6{8;Cq$X&E@#!_f8jgAl)OPz{tHABxtQe96-vcx$%3EBM-weF3eY) z)8%ZzjX(Z%4*7T`fv_UWhJiCHIv>fQ{xV3CzfiU~S++w|^q7NG>{wPYJbV4as?eA? z!-1=2+SN*Zf~Fn2^dNmiPVbOD5dsP5Uj3N$zpnI{uY;r=5`kfV*&!HzR&;k99(QuXS(#9c#be zfN8wgT|d{oZ{0(_hcEI=A+9ogE0YWqq?a;$%kgH+q1;qf$phgKF-+_P_|Gc9uUG}p zJIE?Pswa{+LPaZC6*%i2W_OS~1kAgCQ|5z*;27=>l_}GTSdFFJOU#b%a_SGR#KpQR z%50uiM$m&G4G5!KQRt}sRP4}Sva@Z^pw!J5F1GfcJe+VOx_l1e%SNlLv_>m_wU7ZX zD(ZG^amq1B=^+!98h#?0`~8T>BJa4%zRBLjKjPL zEl2_cB4IKVr~k{UMTkLpeG{7K_auNohiAB#~U>i zMdCipcEe5zt#^w>;*-&={+O-O{MK^P(dN(5`lD$V;JiZJ4o;=>V1C0{G8`2yuiH!k zf5gWBez>jy`(o#RX+WYxaD3G)lzvAmvu33w$Qg;l2!J2*Q$Pl>i1=L_jr8uyMEM6+4+Fvyi1hnR4TgU4ViQ>$AiEDmillaXpQxvHAFM#Dh=l zih;u_TVmiHVDh1ypAe1KRcQ5D|K4emQgV=G-ve`d|Mr-gm6G^_C~CWpQ2OBChqlmg znp4d!N8#OPHe8%f(q#Wo%-b^kAi8Fvvch zv+Vauc=8Q6_b~j0+hHuqkN87padu))HfUub$QT`Mz2ii+ZRTtAYd~KJk@Z7#zc7l( zNE-q93p(ouG$S>s1jRey+r$pwmpiZy!08CN+L;#f)#I*IdTf>@KL%6$L1y6ISh-ES z)?G>??x{en5P;2z%81gd0tIBDP9SbX&5ANB&R61(q3~(6TFY|Z-KVPh z*PqE9`K1^i0+8`KpERx-*jq~1sAb zt%5t-_IYnVAolxDV(L2k&hR#3SQ0xC!=GjEDbWiQ2B?4-x5!b|I4iX#!)4_6?^^K( z_#j-EMSfO2GO*E=4Y94};jbi+-;eE2CJn@2pNO>ANxV-QR}Ji~#ZL$MB_tQjleDg1 z;+1Ie<;7C47x``Z0pSwofFyD5%U60pdIMKc<`K5lE_^DyOR(vWo%CPW_c_Wua}gW_ zD)}-reGk;G#W?G9r90!x@rb{Jd~U4De0|;H-%|Bc?@O%pGvIwe!u{fW!ZMKGx4?!# zi?>ovBQY(pY$r>16oy%Ep`ek~DpWO!s2u4L%z4cNoEfleT6o3STOT`-%|NvqRs7+z zQ6^%&SB9qRfh{Xo>Ovg9?Y_VI6n{5RpyGaUJCL4Jtr6P7mn`^38|)mY?r zmlf$gOMPq^wo;j;l~(~W`y@R?423uySf6}*xXExbms$KGI)R@hEYkM=X?j`Zr<{Ah zy7HRw5B6eQjd}19;rZD)RP*RJ@#g!VbXVR12oh*!?Ma`8{89r?yt`8QB7daW-u;JcR?a_J_)qT$Q-N$!t9>jz^NgxTJK&ZSLO=XcZwvvh!D=g}2 zX|YsSUD9^JQu{|Wgd0N)#?;!PSX7kKg>A(a{;(EZw1rTCP%0W)0ZBqa9zfp7eSNQU zPJesO%-oqda~|J!zk4O+oVC91oY{NN-g_QHh{Dp?<=sJ3zHK%31axk>=%9Wx zgQy@H=nuSrZ~nXS1>vGq>A8XSC8wFS7{^y*#o*EH=t8^;t%9UwXzA?UEZFeH?_eh; z?A?Ff)i|642ep)wcWt6P36Ae%qxWHv&vO{81!+Q8*T_C@Q@UXp*s(y~w?CIj{K!DF zenM_rO@1k3OvS_}BISdL;?A9c?m!|v@ipLvVkKZ=F1iquap)2R7hlWDYwpHJIrxe# z>%!c1`1o2(D?X3C0a3XZUzHW(&4;JMOt<1pg(JJMtQUJP%zZ~@9{BqnXVv>Z!h-#K zqqY60^)Uw^3{Gd3r}>}P_=zvRs>{AKnzoEzm!KJPOixLt(MXVSrxk>J44`lTM!w_? z1U0M~TJX!P>$mPIQp&%*e}ZTNz3 zf-1Jus5KIYMi4jvFB$~wI||6;?I4k)&?yKH@ZC<0&1GF5_)FG%NzPAlX=Bf)H)CAj z5u8qo<*c;RP1=q`r(nM1R{1!N7uyPhuO7#TSZndY)8*MwF*w-xx3!q&!}@-+dQ z-^7-+^gjWbrYX4$x1$L;8}m*qpb1lqmkij#zh9I3{q!g8E2vc5OgskBVHB{0x4Mz z9O2c~fw#X?Cn+Gs$kS}PjChS8*y%MlR37!p-m2W65K6(tJ<0*90BBAP?haV6qd24SZhUO@FBlNTUj4LABIn+P z{!8Cu)$e{H>hC+o1rwX%nt>`q(qJkN1x(Q>1RgAUW&A{A;q++y84jS`roU4cTR@rv zAld{xeNND5hFjqP`o4pOY}XYIz|Pqg!lDuk?h05voXMu%u#WYuLeoC8c8tm3XZ!u+ zUOr3UU3??+mi{K9x3DGF7^^ql6TR_io9>_gD>gL2A)d=`!Ts&|^u+vr{oe;z4#0xzQTTH!#xHpZgH6;WCIo;4BUhvj zJnh0ZI1+r!l5dTrViXT8=YS}{p*K~BZ%*b6w6^P4!#5X;so2_@XIKoU{|-L}4~~C>q&cb^{jkwBQJ_>r#E|9jx}l zyRaB&*u6@n1qWall*8aCH#v<9XTfqCKM`7SW2I){4Lv2X!+0gixTn!MaO41nhW+31 z>I2=EmdoYG;nw;yn-Ye^B9NE^C|Gg=qp#tO4x-+RE@M-!8(=->zb7$DA_C_OgfBga z4~!l`g~B+<n3m_WSWBMHBjs(nX*%{;=^W+xb0wIQ0VG#>{&gS}#knY&y?g{#xSw z9S^hW_t!E1#pk%M=z%VSEmyn(KT>#-l9PV@U`1-TpBX6y~{W&Wa zKZo&38OA-0&cac{BnZQi;Sv7|Z*YLk>GvwzShu&B@5^p*Edp)jfG9}r1P;OpV5Y$9 z>t+3`u4et$+{(&x-r5#hZe+W@k7KO*?+2=8~_}7>>8!d#XXST(&tw@xh<1fMJ zvHETwK7Km7A8Q)0QRQ7+VbPav|?g*ib*ES9jHr~iu zt3Xee)3_~ui7fzPe|j?(;q>2?=%QSKExnhtm6i}I02@!-iGjYa<6IFeNugO(&5&Di0HlEymn(#F zP&_z5{AmWK@ES}fZN&j7Uc?~F0VL_B3r{m{NvF{m@(HiuBsnIWu<=#+!`|Dg@8wBu ztgn2wRPkDZB`39rEtWk^1tHRMRR#fJwqzR8gy28p`q{OQ?Y#5##CQitl~b^j=x&@^GS}v#}K8SpZtd0Z}@J6QJnI5zJxzzy5oyclF0u`7LL)z&L{x zPJs>KU=EyZ$cFL89zMtz-nOg;XMsUBzKTxnV~9C4k3PB~$54TT=%0ly1)NgfTpV$R zmc*2Wa2UXM;0p2OUgKFT<9+NK%ztHP^mdk0dy>D%Gi8_rw`;iw8;04214xyj>0`*z z;PR2~1}_3QBM~CHaybBp0UPltkV0eQN<>=^iLpujJdWpLsZR)6{) z)_n5snSWp}S4N#EoM7CBLD@9m!0pS1>v@ZObq*qubP+F0h9pgVHA?v?Rwqq@6X4Ng zTzMy9`jueViku!2XcQX@PtE^EBiOz7cTg;7CqF#XqVxN9p4RX~9&=1w2az(Z}Q{CU|i1k@y7JJP#xd-4p0s#%<_J zaV-NUka1aqfb`i(eKfqU?{n1;6Wv(js~r9_D&P&!CP^KGZxLuO2d178W$&o&1gH?< znM){*00&l9pW4c5&unGog^O74@~c>7#c#8&MaxlID7{nQ3JyKbn%f_Q(Lc!imtREJ z1A|N5*!!jjX&1F?LTVZ1qg{JlFp-CObRe4OG~G5bK1H^{jp#D2Ji2DE;OGGJf7LMj zCrPWa>(~IBF`ZSOL_wWbbOU7eOu${__|O4#2QWp*TLJ=Rw-%|3PQP-059?ZdHtV_c zO4f7H`{4{O!Jr)a>u;0`U*-7+f5sXwK8%ey9%lYd3`7p%&}q_7GkUJBNUKqy1xzIe zVFOPHn+71~n^~h%O>zyED#Ia1>LKqczI+h8v+#=CE@X+wxF_<@avoX>fL<_-dho)l z!?j;o@+EehL>gJ+udm$7dcDsU-GGeJ=mZ)$PflP2PJs7Q!82AjWa*%gX`r6oL?vYyRtW3D1eLTQGiN9X0>`b$y?!Z;+xi)zDH~TUpZ6<84DJ&MrOq*U&6XEfLNM&7Aw)AqB%C!FgeFVbfkAM ze24{DlI-u>9{u*?l;eX3@RrB1+@uE?B8)z2%|wc;N^7S>gcY7d+B5{RjoYH(&eDPr zE6K}<@1k?b(Bkt)EuNt-A+^hprNPys;4`VlPr~)LKgtJR{~bDBW$&D~rTVheO-o_~ zYOL@35>Cjz89QAR*JR`XN`Max9tq=3TDx@YF!bXf6f_wkRYb3+i+R)G6lTm|<n2A9}tO@ABjyt^BfrvPbIILq@um)ou!8-mSEXEl+#QYOj{DYr= z3{!_>=p)$3#HXeRY+V|=?X)Prgrz8hv2_+|x zib8R;coJ^hNnWgpXHYl;Nitg={KK-3k>TL4r){d;tP6@2p&tfcF4aoETeJf7Y?{Dl z7!)5ELp|Im6Zh1{3G$C zA6?pA(Gq`(gL`b+j@~eYx30uWOLVR@Sn)d^bjb7^FfKOC=P4g6u`qyC$Y^7i>nZ& z-34zK=F&yyMTu^qY{zB%wj7jUqY-{}&K_eFV@k#A1pZ?g<(*{@#e;w`qgIenFW8r@WojC zq6VJxD*cE5^OY;R7I?khWyNM8&MfLYP!x2}R9Gtp_3HQ#FRdb`;SA*jU&99&fida? zup)4dW64S??#>FYIApiJdAfwoS~TM^OHYp1^|B&ZL4!9167iZ|&b)|mB3_ByBIDNe zB-whnm1kl6lz$|Vx_^yo`1L89>R&`q(|k-xXA6MP18As>)~ajSDBE6i1;#RL!kdD3k}$Ow!xkDR(^ zh~#L<<%Ta9(15L9V?RAwtE~k-DfR9#04Z@uk(q}kkE}d2kfpZnX;aB zjsFVk;VpQrG}2l!l3{W0U=E;Qc}rjtoj{iMiLa8Zh*|i_Fql@APtz$4C(}wadFUj4 zt9QZQFn;plUf8IO_&4`&YHZ75ndtzCLD$CW{Vec4gYSs3ZZ(T#f$wMzppbuIPQX!l zV-?0h)3Nlsc)MUOfhlyl!SJXlv@X^P)^0q-zLVkg!5_l-H@8y~ zEjs{NUR?vD-^LQ7_hG@xvwYpS!~03v;@;sLKt-DZCs09mfWGI+edVd3Su|A6Su}YS za`AD&^73=hCGl$&PP~)i=yENZ=x7+7VEoV2QlM}9u`R>1Cu+_2otAUJ&n3BS2SChv zFwHPBI=TkagkMAMG>g`ND~l%xhKk0W0Hz3&mwB`yyHk$56~~mNre#!|JTEMZw+rv$ zE$Py5I*p)9T?HuV#XZlr2K3esOJTE74ZgPL#ORvSw`5QCSz?S}r;3|3*Y#ZMb(Pk$ zvbT&^$WB%OL**i1TTp zHzA*|N4H>(Y7yjVKH1EQaCQ!eQdCZW!m?z=-KcXCCpp_RHlFANtR)Aa#gn3_m15}P zpyBvDIymBT5XDW2ACs>;1Y&?o(YW|TB<(u@5#OaFbs0#uoZ2J95B%W%lZ@Tv`kr61 zYWJR!ymncR#jCFEJ-gfUu1A_a#Jao-_~sJSBEXk!#WevrfYRhnKpsA#m2Q?%kv5#% zHU^Cc(Kz3F7EL6}22$+k;&@vQp+ppp7qk*4gLHQ`y)|)J@gx0oj^bI<$>2d~jlYbk zoS_6H(8YM^^x~NtKIZc2z-KJFXMPa;EMVb3?mt-n_Br>k*hU@>7HxqX$!d#FYNTVg zuo=^4^sYqmKHvrHS5b?W@|go_5zvpELeV-%&BNSCl&ES6*cIAU+7`@d92yNh8hvO| zOvCdaC$fQri7sUjntl>TycAvnEmlq^M6?>6;-SGLJ5K77O$Y&3@r_7&KsZAaG#1k2 zx_FfcNV0IFNA&G!K7W@Vgpc`U@1Y~F*0wIWH`=;;jA`eeG&MWV+{JP5Q*2J9Qh7TP zz6up-1rom$baOFy7;SVf9f5QXE+z#mIR~gj@f*crq3TggLWvSqmC!D6E6nLEm|_8Lb1cQpg=DK7}OzBXL@={bMHaERmNU9K#cJn4`$^l3J?hjq^ny{@;Fx`X9j z;4MT3&4FTPq9)9QTkJ(xx`j#A?UWUUrX*GF!B;RlFodkbvrz%{gjqF!2Q8RxC>-T7 zT#ctPiWENl4M=fp8iIkp(wD+?S#;$j9R!_nGLE<$B;#9r3CAzMlTbQBrB%i=@6@5M z`7AsJPrSb#hOc*(*{-k=KI4_cmtH>Bc=eaQ!Cp6`Om67^0I2p$A=UY)>i_@%07*qo zM6N<$f@xzhGynl8q=`^YM-2)Z3IG5A4M|8uQUCw~0000200;&E008uO)cODb1SDxg zLr_UWLm*IcZ)Rz1WdHy;5rtLXZ`)K9K8bHqq!vFQSVxD7#jjOUTe%w=t;PmPlcnuS z7NzOfDkS7OH;Jhm2ixhks!w}?HwOFxK-mKiNIW4824Z{J_Q14BQ-><5Nl1I>#1A1R z?FCigyLMtHQ^Z{L`pY@rIp;g)UfV=HUum_P8C8gutFE2TB$bn=7L=Y%iqf;xO9Rxa z=}s+?%gqul!4>z;>){=W2+Qq}?*2~pBfol!+|h|5Prz;!9eo-23{lL~Yqm=izX$vH zX}1R4^BnNgHUt8z0+)T95_r+aCp}IfKM9V|D(e-k2)qV7yx3+hw_#rc7|4_1Rc;%) zB4&}Zt&(AK&*3kRaknx54=$T^^z2=OSo@r%xnsBwiQX&rRKAHn*R}K<@Jp~?uenKK ze+BrD`qF#?cpp*psgiwk-seYOU#%402HpjG(Qu~=P5WwfF?$>svC;J<>zK$RIM;P& z60@WifbUlLwAf?lk*LU1Y2abt!AgCqnO~Z5R_27=%d=XU%mO2iWWT4)eYB2Us1Y~6V|kK@OLjItNKEuvASJIAkZzsa#!KU3KO{2yYo z>@XW=6Qr;=*qiJKOTjw94h0HwZ8{Yy(|suQ^Sn=WR2Di;Q1bjheJF@g&e`u8`pu92 zhMKTTEA%5z&@nVy?Gqpe6KHie(mtnaYd`D`Jjw>U_|EOVYio4;ar2Gci*3g?ux`e- z!uZ&)u`T>C&?6?nKgd4J z(z)T#s{W$>scxuWs29}VJ8Fa(JEkOkDt#;cD19e=Fa1o4bXmG0{UlwLzL72kIlJ$@ zpC#CPuU}yk-HKgk)oY(MCsR(!d*m18l>EH>vOF8G6uDm>lc(gp@azfp%?$k=y%=-~ zvuaJXdoA$<7&H$h2Au}i##F_Gt8^Aw+nPSD-!?!KmbWZK~#7F>|F<(6h-!a)ti?kEtz#; z$vNjBQAI_vVosP&Jx|Z`PES3vr{|sLo#}5DF{5G@IRgloKv7hTC@4Y6IYZa~dp$eL z%DeND55RhsoDY2DfMBGsv3X0^=7GKQFnnkX_l0F1tP zkXWeak)bk@)){F?5D)|e0YM;v2S+I)TYmOZc3IF){NSVLN8uMz~{lXEGn+fg~gRi-)tMtT!4)31}( zs7vPr0YM-!2w;Ji4kV^(sWpud2ud#gAN!h9xPT-~Dn<>kLDkWhiwTZgA72G%Ae<0)jw#Bf#<=HodCjMWjk@ zO7Ff(@BBePgBX|){`=thxBDm3_|VQ}L_2=O|D{CRSCHO=^GpmlvBV30tOFkZXj*M* zJ?((0AI=@O2Mt!PRH+ES?iX`fWn>zEFqA%%l&V>|pqAbW0)jxo5#Vti6GqkU3{q|H zO?Y$CKsqA;RlvTDAOnj?Z~lO2%Oax9UlQ%w07XKnnjln5;N?=Z-ezj`=z;y_ow*bC zfPGYsR4E9+&goQ?m6vm|LB=_WEa{~nkTL{>1f&f5v~So%%%JTc1RG`%ZJ3L2 zK}!M}0+2@H$S+OtkiOqIDl5p5V?vn_e{o zSQ>zhz^&gd+H-%W>j>)<>6y}&0PKG`XEYhcwFu+bCq1E)UI_w%Kw2XpBp|JCPo&P7 zFOMfZZx*Tk@Zg>}gUHB@lr1sG_WVM6-E%~%pC`TkD;OAJnSdoElL41WYg$OAd41-% zJzyB=m(q>^?0O-$c~&;vjQIN}rypF>BSAnAs8k3D38*x;OMmky>1Qsq`pd@ts^_re zlYk&vTjr8p{V>SDEYdsRY2cX%=qLB>rK|EL?fyB~L^}LWD*~|p<=m4IruSBWeMmZh zBYhAA1c54mfRKRnzlqy_#>#nrY~{0sRA!*NdUuLR0C!_Aya-l5MD+8Mq_?d0Mg%mi zM7ZHAGRN(HGF@&+S`Yw^-j`D+_g|RxpOh}ZNIwJtL7)mDAS58IZ>IVDDAJ4Okt(P0 zPYV*j$eG&$MBu0U;Zg95CnBJ=ernI=-It|9RKb)JfPFJ^4mYyZ-9WT$T0f!EIYB@W zsN4t$2}sNPr@y?9%;}c~X8sW*QreIJMh`Iu^s0M^e!PeD)-?h9fCzn#548T?+^c_| zHF3{d@$)7whpVpp)tv(`=lumc^8H=5-t`MnsYehH1Y#l}Bp@a{Nk6%5IhhaigL-{i znd(1MAJU2ha0d~1NdJ5@(NB*f_z*k?+;|O`2v@1ql^Nr9-4^MZlW{C11Yq-%RJWj3 z?!8d?pOB1;lr{tbK|l~FLqJGC85F7hVyXT=gX%vgeoxYl1aOykE++lM-$<``+X_Hs z#S(~rDPcLVB=F4kt-CL%b24oTJCTGRNhbh%re}A|%*}WljHzc5u1}f}1Ox#=pdtc7 z0xDvX~m6ft83~fZt9ft4WLY?>=y9&g8vcN4oAr9dp`E zPyN_8BX_8grJfKge@`$DY*tO>j4I4R~OuZIu^&YIo-a^49>7QHUQ-x+R_ zTM!Tg5`+Lxe=q{-Z>N&}{(=NGBGpDhz?^j+>5Z}1{Uep*W9%uQ7tJAa#zd&y;VbAg zDM;qr1nd}}RgYBr2gvCEG^x7qWJfFmM+xrlMkc++veHpG51Erf01mvCbH2*ZPhkU} z8Xo#8MFjytKoIa30U-hY;%TEcR{iV6SohDikvU2hZzKRWJ<~(uQTkMNxZW{{WH_Hx ztI+|w0M<0wO^}f+D_LgRE#f6#!j}LJypnerSoS}?bW+L+0)l`bkWd6le(w{TN?)sP4KEx{Tv`ew- zs&MYWt9e(5@UH-i9H{CDurP7L`l~t~mErn$Duj>z8p{FS$#OtqZkZ<{v-9t zn*I)FF5RH&p&x1=975a0ot_kihe2B~)U+9)7d>>{8S{R`{%*O1CW37;iTx@!Vx z_j1x-oP;1kpF8&wFzGVH3b@@a&Q9_rL<4Z(<(%J%@ON?>ByW{L0Q-uohP_C&92>YK z7#vHgLNIt(`m3g}rOjmv3Gn$= zK=nWC0>seY88h0S*GAKx1Q_|Gy1hWE<5^&sxLW?$O^~UUY_*%;W=M=Gr! z0Rix}UYpk<*#v>qBLLx{x2_`Ewved7iKGU709EpFn4;i>XaiDzf9&=^NPu0W;^xzf zZYTZK0#8=|aT_VkV3B~&*hO#x(XMrNizPLmYI_%{u9u@t9xQA&4VlWam1V5W61KAW zCaCv3lik5E6}$T7+iF=d2?A9S0TvwlOl)iVcHru=8iMgZM#cd61{XFLZ9rwZ=RyL! z->n3z{v&me-3#@i_ed{)HPY#{IHpRjCDr`~Z~%y4EF0QNkgY6ZS=QRhZzGd01YqNI zs-2mi@g&xFd=9N-;|e5;AdqedFstA6L3pp~jfFPgBaneJunvk?p`r~4$0uEX2?_9U zXOg4(FW*58k2}?^AE`DcmOqtNzg6*{Kmu;UcmOeMR}%mkn^_~{sZEcPFOiJ=AONaX zPVNKHX7orabfq(bK&lXc5gBb<3}(MGyaySzEz5Fa(DS4kvow&qPB~n-rsA>r8-$kl1mg{nxSG=;^R-}s0B+A+bO#z6)KKPyaLB%V! zBuD&0fJp#<*20ZTts+$)QQjm)M_|)8q+d7-&-Omz$h%2N?7o?qLF%{%Nj2)9lqUUX zMAaHdl!MN%nIEW*pR+g#CPf`OcFEj*!!!F!3&klA<+P_^XWt9ChmoQG9;I$MEC^Ij z1o#EsrxEaEcJ%9qwUTQ6FER$b0=L2Tq78_SRQjCZ`wC$uE`o7x3AVX6XP%pItN*ZG zVD^k=New#}u68g0tYk@*AU;C-DFGKjyL~t4dP@e|%^xA3YXY$KeyWeneeP$@6`@`^ zBnVV*1X!K7>BIOK)E+`=0Bi#~pAX@J2q|J45FfKt<`5DP7k$0(CPY;HG$~g9!OmFg z{_T5^8hlIeP^J5?+TIQFa%8|z*jDdV7Rz9k#kR6X$mE&;wMLMJj1q7P`DPDJBS{6al?+Gtu@1 z_WMw0WI!9x@f-|f&<5~!qO3`flzs@XaKq>+dk2Kv8cX$$ZGN}yPM%)aTK6|d9rJIZ z+O0!6Q%S#au%I3Y7E}j&2iVjGvMgqq?BjmvOCD$jQ&W4IKhKkt7HR0x=Qb+51Ktb^wtoDLew}nZdXL;ORDJ1CgqdV+lln z2WK`6{CaBj-bFA}^`AhvL#r-Z_aEYXpB%mN9Woyph=_q>;jX(owA%FeUVA8_1^zA2 z7du)&$Ye`4JM6t90VfA?kbRR3<*{r7Gm^No|peEC|um#|ZSy&x}F=tXnVmjrY`OoKvf zC}!)OSJ*MY_y@~syAQW*0?@R1-UU$o!#q)vARq|XLV$$=#{<|j+gA3NnK+7IhX=5y zz>`=X#DE|Mf-&Jr$;s+S0+OxzFJ1RnL(e4D)b&JS+d#sdKba0 zdI)QLCxV8-t;pU|Ko?6^+k63R5r7?!QxmLnxv;XZ*$c@g2vlVRHhRFJgI^6 z;Wmi1OHP;#NlGIGsuKy&i1j}+xmN$yx__r$q#UgK>u;x#`Pk8?0Y~r8Nm) z4Pa}K9a~xeTpwgL8|&M7D{K*f>{>a0l8t`sz$tkIfpQ4&8-}o`v~NSX6CQqMH->@G zGo<<;a7c~9fHuHGbyC!41gZ%M&>vj`!^h;Q{>$S0k9`uR|MvX-^_)MDe)fFQTeijx zOq9+fK(+oSyn~ADkpOHMl%1b*shy`fE&g*+ljV* zQ0|2HpQ;Jmp9aq+)%?)Fz#!TH@1XisLlq|h`nL}e@aN9t#`(`eod23xoM&?@&!N5-wylZWxv?T%T8rbPJ%{^KDj z=LLai2>4|O5UKvWHt>O-MXKiwP;cgoHXss4sXA6wNx=Tyq-S10dKU~)97mFIaWi<` zpAG*;{vKBG@#FmKUuKax?J&|`E(jPVI_zWGl7RXXK=u!}rv-q_wq$o4xMLE4T~Fth zD5X!2Q-_=u1O$Ot2(Td7=pZ6sth%C{Q_U|!D3F=hfv}Sp2u8suC5NjZ3D6(IivGv% z;;PjB!rNN+?=}$6_bqX&)C&-d=<(w%7e6lniPDt>sJ6FZ*$+hDhPIDo_pa%=En2Y@m0ohkM^7GGDm`OKy8@tNdeCnwBIW zuPsrlv#_iYtLLTXSPPI%=f=v(k7mTQbq3X|k&*WmPBxC1K@JK6f`EMl@WL8{Fo-pn zWWS7;oEu&v{ly=#CGo0&nl>iY_tKD*wT%D|+W4qWXOL=lukB)KlM$+a^YH;moBeZ` zUzLN<*ry}B@F63k!?5;a2>-K4FaIf^m53_UqE`{?j7Fe9)pHmb6A=O5U^jvkrvsZw zzt;_hjqB_z!Th%4z^=}l6Nunj)BT_ z9^8jUqhT~_LuHt}&Q;Tvc(lc*vT6d7s`}?=79Tb0ikQM*fBg`dQ^%108NweyeImK| zd41Z_P7{z(hp5d(f%iK8#WgOKm6BmkeBOQ2mUrs^PKZE{c$5CkG4z_XH#A4fiy zsH5yI*zGw|eQzg~UrP)G6NR&rdMhajNV@8O4`g|tBT4oCYh-kx9?-LY4;MeU`EB2x zaC?MwBLS)iarrnxpdDgw80T0rJpz&u2|%|ab4J45pmT)$a!3#m1l%CNZ`zinumf1_ zrnILrs_1-Z1K=sp6oEWBf}oxCLr*PA;g|?iHWCoD`rnxxtAEYHzeNi&j(jvSjN5-E z^V!45eEShgqY@g`FLD8Yj;0j}z_!8E>Oy;30E4<%GCcwe5eWdc7CbpZUO6NP2m)>q zz?-Ib?;_fq#ASfcz7}*N)gKWA*+9@hXT(4-6rJRMuS6sunW}$l-M@A|8RH)#%C24E zzF52XO&tdNmQoi#)~qElr4tEIMduaf5{m5IH_6~I9MAXDRl@`0urEC%_co3Nml=OKd_w* zsWG>~ShjbC`=S^9JFtu2Z)*Y}eJkWh&VjTc0oW~+N=~<>1pusLShkl(r~(1VtCKsH z4212xLm`*x6i z&HjgBlb;S#!taW?m-PS6BJ-uI%XaY#&yf6IVI*KbGl6^$#GM}7(df`A_g;BC{Je;qnb_|`h?$4Y24E=XFk{r_a=@DeU_p}vzAX)4E;hl*5%OU}v z&cRl~$Kd_h897s;k7hR^DjH?WuBTMChb@}$qgR%8K0!rF)3CAw@@m~W8BNKon?GzQ~cPKrJNeM zM??J&^Fm32fFO_%1lV9_)4YUK?Yh$1L$Jj##|*$sh6fQFMn$gMl7i6@NEZ^os{fgA zuiFE)P)79b`f1F#6V*mnJ9BfDpod7<_{sHJzV-SG6yto8_WjxFJ;6qhL0BU9D!tX*C22aR;K|l~l00KO?@53x- z(`?t3>+hZ>z32|t<>MBtJvb0XxDC94nE;4ZFfL@iXGjGJNT%waRp{-zka74U7Ib>` zdt^Q~0_**srrml!FH=~X5_KIw#+2FE%VCP|x7%}tIYp!z^|SG=>cW7m542cD0HE$0 z29@N&-=2FU6$k=?Ktu$10>9CN9Y8@7(l1{{=8F)}JFwYLB2rc%mIR(bIM$otC4iYl z;*<`F=zZ0wGsz^NO!c2&wYw!u8(=0q{#hbySEs*vi1cF6Rc+br4{+dR7)0BR|HvU3*v8Wj;HC=;y^KUx1m@Ix>czPHH5U z1rlYAyl(^4v*%(f*qMP@hBb1y>bewigFxw0jJ1`p--dyEw~+a8AJVHMFtwZQ)V zL&aVK-Cw}qb~C&L{)ztY6)yq*QI1|CKQqwRa-0B8etHM!IhT@N3E>afm9WIZ9~Sh+ z$g@bb9D^-<`;uO^G_h?uy%_Ez+a@%{E}EnNORB|~s5R){-X~i8Fy6s;vA@R#7|b3Z zU1}?%vQSSpSj{1wNp(Qf&CaJ2#w$BQ3I)05X&@6qg-~ zGsLP+&Itm7fKvo`u-Gu)X{m$x4>=SAs)@*gKaw%}aWYQ0g=ozR()S%fdLh0iD5;XG z$QXnzhHE#G=z$5sIBK;aBtZM*9iW%Lj-{mOiJkf5f~=r9-63X54m7=mLzD0KKE90s zqenN4mJTWD4r!zWX#}N1LTaNy8YH9zlok*XkQyO~fC$nZN_W?`?_TfE@AnUE&vQTL zKKFIbxvuNxIb)M+f60CSuHg7h!EPWGy-OFX^|jYc#K??34E5W{=~r0n`L||~4pn6> zW19PHD%|uEYmswQ0C_1Gojh_El2#N#|IF<@o0hlng$8aU$cMF*JL_HgbKG(eG| z7c3I>1^*qO81hvquZ;>i{}M|7bdyXV-It!ZoNmV~vn65f4V96{kLS~G?n$nbVk1^v zX(bjO7zasTQUv9gJe*~>+i#M?b*IV{P=KxS5FmDK$2!2h@3@M|!V=AJ%~v`ei9cc1 zQuLEC+1&f%y6H7~yEn>7&e?>?TQ>a3*Tc9h!~s2Js}F$ zBqp($x2t<&(;YGL^s3hee^|hFk@>wdE7{b(el?(xz<~k~Km+*^$`T7rQEUIBdOPb? z^%z=d2C*yoy#Ol-4BI>Wd{$!YK9TXN@>_iaC4Gf(v<5)KwD{M+2o7H4@QSxNyu


zetoPj`}%JOya1pMNWN20*$h;Y<#Sx>GkK^ewP$vZT#n56Z}jyNvL81o;7;KGZCK*& z;x{Zb&L5+&rF0N@d|^5&s_F&Q$Djlz&MF*`OK<3B*9h7KOfe5;ahX)UczPm*5HXqM zf7u!~{fIZ9>m(&7K4}6|n7tWQkdg||Z4vzoyA7|juk-W22bHBLv!^KT+vc2@fTMHU zJj%ul>Yl@k$<~my(rYxaPG>z61bs^F`!wLoOpQ53*qwmU5?-s<(y+@JI%LaO4Yz>x ztgE-b@lw6)a>Zrx$KOh&+tuy0&ev7SSirCkL++lD7%sHyeUB2ns6$`$5lU2=W&V)9 z3bU}f;yRm>9SZfO8~^&8`t-&}N#apq5?g)GX`8y8Dw`r-mdrW_GE%mZ;Cev0AL&$u zz9DQ)z0=8QyAG+QyiQq8_LPWQx}%5g;&{DT=Ac18gx%A2G5^lE9*0lbzr>Mryor$@ zJW|?QonV%>95iLteIPatb+awywvKwyHGkg>;McRAXMC^wxa#B%&rp>4HJoKT96*Gmv*mDX(?EAU*lo9qy(*YnOJE zenc@gAyI(Z5H7-WsV<(De17Yrqk0r`hf^y0j6Lh_x=}Z`u~l}UV(#Fm%CzL z$ll*9m0OO+?@A5Wu`C>DlC-8IH5Gq$Aj>7|jlAjXZha{j{;u}6Jeci;;Y^~a-RU+> zcl_UDAdrXCj#gm2TSWk0=!rGO*zH_rJ<#N^LZ3@wmt3u-mKn7>OoZ8f)LGag-|z*P zs2CmV$+<|-ePU+YAl|-DBc5CbM2y5SD`~1SMjNU9*U#W&2C_s4_P~Ss+7I)bmzQg$ zK%g+(sk`Z1|4N#TA!&RaP~mM)GJy|HQSUx}emy69)z_9Z(PM?-V;vO;4`>bIKhFic zNrv*TW3>KleKVC)e<2q}_SEOT5%fMdMTrU1R&HsKvNRXA0CL5wjwl9r+Wz_+t1Nt% zKJv0mtN!LkNTHn2q&u}#sMK&cj;`S(W|=LA0Sw%ND4o^kec_opezEmjN2hWfXz?d{ z>_mpqGMYi%f+9DWE20~QzSZ>BVE_w9KK-M z^BuJdkD*l^)q0@Xr*LH;J*6kNt&tO2FW*~B#MfE=idkaHqzUuya0%m74XZC zd@hy%_&d5}HvLz_FoLGPN#o^xf-AjP+B(VTB^cDHo*^KWKW?-+i72zQ0MKpy>O;&V zkI}8?8KzoA81qo+99%WP$XYGCn~FY0x*giL)od%w_72nG|7gB!(vHxPv0D)WWvS4;NN&g`jtL3_|C z_R=pbUGMwVS9|;Gg07n+0~%naw0qyxJ)kDLBoL$M);g!F@4iPkK*Ok#sXWMnX2 z1@w>ub>+oHYF}O^G}SoFL>9>S{M@z-5;qAic;;(~jq*hp0{F(_x`he2MrPj4ASvKy z{iTfIB33<6vNn!i1N_Rw8mC{aI1<2%YWy=datAGOdfN?r99hV_O}H^QF&Z5-73q`l zRvP?R0(d)ItqKyjQV4JPMl$e_NcE5Y6N*UNpV|OMJkMF(&4<4aAI&W$&Z$a5ltuz| z{+&@Er<6!vDgT$8u44i9ejERuFpotyu4LxMa2-<*Bc@JIb4qqm5hh1OzaIp3E=0@Y zn%r%O3L@AhLdGai@pW*W+o%qzwmMPYHsUW&UQvkL5}Y|hfnVw;cE}pt zUUKy|hg43;5F3+sSbPk$Q>l0P2hpV}naV%r_ zD%3eP&7)Rj<^S1Fw&1oCvS{DRrqOj%I`dXz{b26mK#IC-Qr8c?p*$XS=;xI#TOWF%DMnaY$SYgq zbMUv8UkOMdEzj$w(**&UvI1uh3_TU-QHN~)KW>KFmr)Da!r=)fiA5r-QSS@M5=bsh zc+_~TZV7i@8`!_Ir>%142(5h7L1-#nP)Uhl1SW=`962kFi9@umP3XQ`)o2^F0J z@5JNY@r7BAddpBct~i(-88EzOZUQcHAIPZMS=e8mM?4VlfzHNk^s2>lU(i!mxdZWQ z*7P`QVJP&qSU}*ynipfG9(AGK0PF=lVT0!o=VRk_s2#7#Q*mG}uT>Lz;8^z&F6XOj zYgl|$e*L!z@Ua9;A;Q&IclTO$=z7C=UmNkEIl#Jh=iAjf!{aLeVBHAgZgDuCaR_R5Dd0l4IGU(nT@Ws#!Z!rJIAlj zxS?}qwaUI-(eEsSD$p$u($XZvAu!vqGZq9|fU(@y70;$HbZLhBj^hrx*AnI1IUE#F zDs*Q9ZO=QAhJzr<+Ox)|21DaP6-u=stcUU7N?p6pZmc`zaLq3+VeVkD^#wu*FrMUn z0W}y4pL$vIPb(wr{to;>fc`*cgxQzSsF7i={1J0#nDT5zX$Zl86JPE3RFyN^D z>;q0DJXF<9SBe5b-~B=8Xp-^aCdPheXYu#)$EmAaPS}HcvcjZ;xC)JOa~d9h0p%@Flq#(She#$?|x|7F(A$c6u9QaZ(1Ms zK9YSYM80n@A+OE}3^J>G2bWu8?P!f;pFIM@XYW%(K3>`JpI}=x<`E%f^laGsi?ZD# zmFPj)?F^uom#xGPsiGHjb4)5E{u^kZ7l9s3s`M?wI4H>AD#tPjRuh)Zw#q zwWoDQ_(TZ=iZnD@7Bn`pIC2`6kmU73xQ?JN%W+b5Mem!!PZF+~XV4$sW(81XVp)_XWNE4ty zHieV!{wV=gWmaU!th4P?J?%ruW3>*B>^oy6S-rQdkB%N;v;i%mD2Uh!;w!(3aUHk4 zV)7$c{}YaaWbYTlWaYM?*PD9qXB2>8nD;;7-|Vp6;zZ5}#4`l9dNmvN{B=X}y+(@f zXUDZJ?&LKP<=RM-n4Jrf3pm+L1XsO@E$!4$D|XQA87pRYO@XO2FI>-eQHwlaExYqN zvX71f+uL&u!NGLqXwC-~(7}_f%G7H7XB#PfhhfR`3KjoXJFrMIX}u}4-+Qj3b#Mnv z#~Iux8KiQ@0Y{mI>bSz+2EUflmwn&Lc0XF7;n;R4<-m5xdvdCLsc(EROrCl1(1(on zJ3B1}9rMWWBbr8hfvmL-7y=ItU5s+LQRZQCZ=j|VR-@uG)UZ<@TUj(0sU_y!sOO$)HO zVQmFK-hmgPH?zwsk-tZo-_?`2=jha_8^pmBX^8B$Q)>8V`6*=clU-jIWd2mhh$9H1 zdnf;eT&lf>M}yb&9)H&Eo(S|t^O}zS-&-m0Jtt84s_Qad;5B!LEY=y?YNhoYZQKlh zy~bKQM~1!V{MyPiZqltQSguIfLS$a=eJ|@z0b2^46AzK_XJ_dfyU_sYSY1LBMzF=T z)XP+WqL(siW&CP*I`OD?lZCdF9B!*RMXdH*zBJn7>1If=hp9!o1o5{9b$*q?ys;Iv zTWib#m&y2R7!b>sBqV6?H&}E&jR0F5hCO{}!Pp(2^kkXG_4k5@SMSev!UpWjde``V zu@JYx*ogFKcw6vATznG20?vHPL#$6aMhyb@B$;{PgSyZuZDIbG)Xib=R^x92%y0*4 zw`QAE`3lEb`NPu4)#2V18tnFOIKfpi5;}a=5>5)~*D&L!U?hV%SGbAC2up$5h#6Ej zN8;A_f|#5ihd9#s1RF~ff+!HP$E5_`goRD_p4tG#sQu-cTJT|*#UATD*}eD61G7(q z0wWjfX}YpaFQhnOMFA0aeHWYS49Y4a6>*dvm=Di{Rl`47fra0dHHhOkcNZ$eQ8iys zTl@*%I?90pthOJ2bj89Q%qC95(l%p*t`Ke4AAYDs#Y2}Q4!>#4Q@7gcppqE|{#-;y_X#zk(%Rf*+$_ zoj>gUPWX+-h8He+*lD2M4R344^P(T~>E7q0nXVQ1>`2+*#{5n=B}%iW0AXZba4Sf0 zyp%J`;Rt3wv+spwi?35G#`tMw+H}f@_A1V@l={i&(Qy^fq~Av>QEMP#;Cty1rKszT z*s+Iaf{H3!;R3ap-KvZS@!=?P9b$q8exx(UOUeU(I;(#{q+U1xsSnis6OAQAKRz;h8fv?r=*H!|Et89dC zh3+r%$c93L==co_v)v3&*-r9xZisD3|sh|!>v=0a&8-&dK!3B z7)waFyW_WYo_<2Q6lq-B>-k#OV95ZpcIqn91~9;P^^SY{?*g&ybjHM5 zY0?Wu>NyCHNWfEPwbw8-X(kj9htR&{i^t;Tj_vA=liVA{L}7g#zrg`DVRgd{{FH(H zSF9%*GShfG!-_CI5P@AySUbToDEKlN(jFqab5xXMUHt;uo5*fVV9t zAe41{Ga06;nT8%+>8f(3MRZs*x3YItWKcvQ^e9%{HbPpEDSwG476L=y@&{>%PqgVW zr>WV3$sB@@W|Ae)pUE;o1N`H>!%A{7MJZO~pjA3CUc(Pi2qET|3;W`JS(j~|P4qit zSq0@3FXzU7%h3Fv&;{St{aWSOCoa>!gVzKjd`b2)!%2k#y2I$2yQ{Z z?4#1Gm^InfP=~CnWM$9^eiYghrd$1;8Y1HN(r%NR6RGJmY?|dnQL^=n@L*2N_I|UD zzfl#0x2QJo1MB;E`{(-UMD2&ls5$t-w_h%?G+SJ{##~eD+gjY2(gx z_fbyT&Hhxm<=3dAGxy3nSu2n2sa%vFU$4yjr7s@z&X_A?^Cx`z3Y8ZQGvcU8tW>r> z{uvIw#mnDRv50v5G-quI7O>tAD+uUG=6M-UIvV}bHl%WX5iAy%od&QqN;Z7@-#|n@ z=X~&wAV(LZ(;NPSlz{FHbP|=)*h|yy^`M9A(PxLf_rJMiTAosX(pEz_rYd-`hby_7 z#)XpMyUSyqtA`O8XNN(XdsiH>$QKZI2qqG0-fP>qqm36p>F&M)_+5ZqtG1C2>-aBG)03<-aVN5zfC*Rx06Y@R+qc39U{=5M$fvBpDM>VAQYP6lb#Q zd5$Sytb+$RC>vi>J3$pjz^OFWO?nt@w~M6!Ia+s;P}nhD&<(_Y+R+Ayq*O5_aTV&P z_-7f75dh-}lM5<8LmGY(56%B-5hNbG*X=NS#4MyZ%bXfG^l(6)%&}X>UU1vASS4Oc z+57!R`@u5Q@0#U4;%yQ!JZAg|dW)?mf;?%WCkzuS;kczfuKlIebc{F$%R0e=^E!jk zouH&Y%RMZh(N&Hxf=lRiOMR!wlBjnJodbQ~t!1MLO^Om7fs!3RYbN#5VS6g-2}*O< zN{#~Yu37Yu!1%)T181vqxe$Kp({|pk`+w(0jUh@=OGcoS_grJ-b!h{WfOw!ZWK4c%;4A-gb5tmPwQm;ftKAQ?xrjYIMal*y}JCeY1ghv2Y zZDinBRR5{CR1YmyW8hcO7mVR#ce9r-*HddTiTm&_f_FeHi)5qQUg~|>AwcZsJvgE< zl$N;q{2{Wpcre2T9)oP7Q4H11@8b5`HJs4tj?G`WFhrf{JQdwZwzX>VHJz+jAA)F} z&ye-4v$p3kpHv(_kDlmoorU|zqZ^>!zIR4uL zdLL!m`tCe#=6a@Y#IpQ$1ZLWu`$D)n%SXtE?$|ntX(CY>lzpuVI&QUk~lLtRF}M^&9>2 zin$0CZgp6-06ML8-Q3Ox-S_^=hQ59SX+yuO<#E|5m1PGHd$<}Fv~k)g+|0kz2oBMa zD-T{9_a+NM~M@_d;K;0DH=?bj6 zf3`0&E9k7CP^I{d{Nw|k)*PA&VLg!qN{a{FXA%gnag03e9*FUMizh1|7y^P~wWuv-g|Io;VlY+8gU zR$hZ||E(McM%D3=evP`X((P!=sE!j^$W$_cdM@ZtfL3wkdGpbbx1^WVWcPhm8pZ1E zZBW#o#B$bm@i`*+3TUt1diaY1R}tUZd*Va*LBpWZ=qv7@*#yqNJ zrjP}iRBZ@C6YwF3fx}SdN6oUxwcCx9t!#C7VXOq^2|1!ni2ey$Q+e+`H+df+B@YDV_MtGL4!H}F{mGKif|LJ3p^jFVOyaWyaX^i5*oYt59 zjlTlgYJf@OJKE{S=x*1)uvo3=Z;^4)0C0L5#*_$4L^v^$$LzQF6r(}yA$n2DhK_Xg zjlv<;(dW(SvmdmN1}p!3u^m|q{%%!Hi{=}DQt_DYKJ=u0Dj0m*K3K#x~V$1e&1Kq!UXhJMhG^>lFMH?9OW zSN#}87?u>L znY;Oys2z{lX&QzY3cA$-G^z80y8W5dgV&D~Qr|oWK(09CiG-qK8f;iYn^50WeXH3p zDsyFQ(&Pf$?G;K04YufGFOf=1@{AhaP>F#OjOqZs7J!nWIAa%Zlpv`o!x$gt+CFc( z5d#*F{VLGs(!U77WWgrSSW;dvZdV3k3r57-ra)3%rXVw~bfChoVmm&RN8wh&2*UA) zw7-y%YRIx`kLx;$76c_@dt}>&MG|n*qlI59FvZ}Wi};Q}X0Rr{h|kEq8SFVBSvSR4$p|K#qwv{S$Io{od9$GdzA|8{>Zg@B7Kxc%2HzZM@!- zt$`~p?`G-5TRI#F<&pY~IfGGc1eb)P34y=P-ugD&{Knd<+-yU|R$@i%Ni|l#dB~f- z``J6NJvg)&^A9m|#Ku9XoQ{WH3JFXK4T`n1TY6M*F7rYY=EBKE2Yi7%r%hcavx)k3 z)$dgc9d=Xq(83%i3paU5^{#}vii^L1jnAF5GfLrqp$|SIHC|C_@|Rv7KBSF8tasX; z5mY4~PtK9bva#^*zEye>-`G2x)cs0~YIs_m<)$@ISImR~j4UzT+Bk{$(2}Y>*3Hy3 zCfn$_Se)c&i#Qg3Wh1+Id_H~PM0J&5X$D7V1u=fj5RJgs2#JLo@o!K{=#*6DYHxNh z+6O_rA~hO4$Q-7#b~BIjM7TSZJ`VUIhXd2nzxUp`9(DfQqyq{g2UbOhyR1;=QrIg3 zrm7=Y-Mo!bD3QDh1c*CN#^`A@OYgW2Xw6&j-u%;-uU8inp%zcMfwsNRgO0x;Ygyj+ znu-=FqB$Q8Q7B~qb2hP>rTqnyc2Vd=M8x-cGx5;z(Hyq>wR}&es|?w-)L+}CemK^y zG9tb+l0p%|ccR9fajO1`yuK__nnY_Dg+uzukeK|59n%3{@=)M>;h|I4aUkZB^Z{}} z4aFKcO#d-R&Mo7u1z1H3f!^(H^{CRX$gD2hdr6PQZvq;*1U_f{P;w zl{#O_?y!m$l}i%adR)n)%Nt^H-{PC__k_zuaggWm7Lh2kx==>XwrK2mTOt5S7+e0y@Hg%SIc zQ)5`zu=po9nqPTC2fx~iD?nR`ZTT!bvv634+qc8frVMgq^SYKi?4gk>=2Y(~w?g~Z zwMS9G>@nI9CBmMZkMb~NZ@0aUF{&{o+jLM>eNDYi0yA?MC8A*>uNbXZJ>#YjdrR>o z=Oe0*al@~8NjrGXw^q+4A1YN$NMiN@2lqP+2)*~;MSu&E!YJ?K1LEh{volOGFJCt9 z=$L-9Hmd*5O<;)Q6$=x7^_2?o?ZUHv`ug&ua`cRVbmF-}#Pe8i?Tw~KZoTYx>=V85 zLWm!MfHdfsc*T0Wq{ua<#lHK;HJeW*sy;^bx-B-RoG)My zS$_N$svKg4oLi7d&nSeh7Xs{@8SX$q?(9?a1ka)FYB0n2Ah?v^nE2x;;eHxG09DCR z!nM&sn*D;RyrAezBgzoY)!9O;7OFl0@1K?I6;Oxs0)D=&{B+loR^ zJg*yF6v`0lyig}QF5c#lU{c2kSHmlRH=W&>`+;)(xAWL$#d!6O!rM}F)03nG5kLNJPMLB> zV)$p$BHJta`!jN4r`3)uH{$=_3&5z{GDR`ySy!8il0?OCdWDbQk;J<4+ z{4BY&9u}98eJtPuH)(0gn0ERS3uUFM_{%|8euu3TRuGKV-LeV0%rpnD145s{!|_9Z zHh!IbZ&g*?4Zj4NxqKDi>ZR$dt_-wT8EGLuQsmD}dXIs~3Mnpfl*s7y2u04Mp>O&7 zJ*9!vC#na6RhzR0rGH++s497uR?@2{6uX|oKun?{4h4V|d{MM$Ki-c(XDWyuf;##I zZ=`S7IfDth=7e;ej@7`yp+(JgDaIs`6N-@@i+%yf2-^6-n**`fkWOm4T~?~z84}{J zve1QJ0N(wnkDLm$y3X!)9n-6HkPuDXransFMEhBcO_ak6B4CoN4)hzGwGZ!FlE`bj zWiVR^&4FvhG@EOoUcTZ3BC6`MrQZ{)=o6$M?;{9U0ywUv6t!GFupDuWgxc#r!!Z&j z3d@Qjb6(Rn*sl4hoP;57StGJ_a>d5wi zY|{DZKI}<9C>qA`0yXN4G*FC57LE zP=AzxJ`cFA<@kF20D_T=V@yU_e$l*DlNI#bvsXot!;oRU9o(E3s&-q z8>0Cqoa97Hskl2`be)*)=KW7`9$?3x;@wFip#gXc97XVp7YyqG=v=TskvgN*=2Iwg zvaD#@shX{xfB4z`F&96iJ!p)Sn~sUY(eq8@Kty;X(9U4;O}abQ{^Txd{<9vV@qxiv z6IWG@9H>J-bdh-E3-rPEJEHdq?`##~&Q_XB0uBRZJ-H5_=Mgb((dG0L;8hsSsh~B~uB=Gr!j3Zz$@~;J)wcD?!%AcG3-;44krn%Zq16jRepx>J z78hMv>Jp6VU&2Lqu8IdGk~yXvbQeoAdU(KgPF37XaUR)H88?fZkVEStelupYdi9iD zBmQwxc^~0=8epUHWkXHRbkECjf`;jPzb3YORyC?VG^w!k$y^M8lg0664*|AcU-o>(!9YA`C;nCCcgRyf#(b!^*|NPDV^L*GS<_C-mdSZ< z(%5dCeii+E#?tjYl{67TcioHbB zWaV24?PBzWO*9d+7!7NyC)cAYyrnvt3)*5>iZYq8hrwfCvhucg2$ImM@LFKUW1&$T zoSKGmmpl}#5(-Rr#WOdM8_dW^Qo?rMu2KRMO#~P4o7(CJ!CfU1dkLW{Hf0Ka|rA}U0I2ms!xz;)4=c8{kK?jkJ0Q6`jkHDH`D11%!v@PBri$p zc;GzyPJ)!*EKw!2RB-G~c4A6II^5_LUP}MFnTn`5l`Nz6Hp}LOaFPSf`ux=lncP3G z>!{3HpOKI3POIQvw_~_QXI65$bhxTi5jbi~satr{>jSTeMB}9{7im#F4<>ZBl-vKc zRbNws6JlR5kve?OJ+AGzdq@2YOy=C%a-bL`0MnXu8B4Qi=eGOtF2T3wUxcBqj*l~k zqT9MLWzFW&V4CQ*%wzKz8x(cG_xp3U((UxPmUukaenJ|nwlcO-dP0Ztha-zO&w*mL zGQjD}VQsw*)97x+O0!f;XpXX82R;bUQ)(kWm*ZyE$r5#-S=Jwd*I*b~LGWCYbuFx| zm%>|Ap;!2$&Muc<}3&{dJPgb(X(Zk_9`|ACb#+FW4QN$Z#!1l zoIR@?1dMs$F_5d%=m!gM75K)~-i+$AlJaH996wSPTT$L#3rl0~q5sfg$)7#YUY^$% zz}@nwl*u9Uozn{@zDsub)aW$8q1}z0vVGyNYGBkF?{wVd0c`#rr!-cGyV=hJ#zr!F=4n$1JdyVAV2_BjG6y`J7(DcY%#)fvx;#)xka8J!PcyN4igg*ZB zOqV>p=Hix4p|SRbIx_cITn+@~+>SYGP`FQYftlpjXg9MIqVCeMNLQX&L*ZiA5q0>y zHtG#?4Qqqho{Zi1x`7p);9*Gte3&<-yG{r9)SgjL8?qrSrwcp7;I=l5x1a=G{WmF7 z!zP>Aaw{z*=?N83?+N6F3k(Aj-{ir-LB~;UMY~cYQJG|TIu;d8UjvpJiHur``jln` zl$mo}YZyV*f9b>qY?N;k4YbEFO;^KXo{$j4U0o1u*P;HP*&zuu>^I^kgElp@hRFo| zoxv)8dn*xvodqd38xX${a>M<9e+2;7UKmvJ-LW&(8!X)Ac@=2f#vPG+-QhJ}8z2R1 z4oy$H$g9oaVlKVv`#j*wle}G4mUuE`Q$RRt2luBa%|i{jjU#VAu^XJ=HEP-UVTbDbz=PQ#7eo;Ot!0m|*Py z(lWXCPM|1QUElJ7Bi=yh9E%BOaYm44pJdInDbS=b8K#j_4ZmsJV0pzv2oX7!`gES`rDB-_7yD=?t-~K1(_ComK zP$+J@yMOPdOdqQ1Pfm(9mnj)gE!|{;oE5<4IBKqcvUXd7yZ4aV?ed~y0mshH+@G{( z!u;+yoPIX`Dx$PRE${-Q?dgTeQ(#h z_mtRARiwrtt|YaU-m3{iS6iFH5_8#xi?fH)%t`)pa6119MAsRZ}{st_eAZePL~#o$8t z&qh{_4mN@S^lOAfyoaL#V69ZxhK$U}Q~~(-pAN-;GD!T&Jlxs8TfihWxziw>+jgFz zP&bAuHpll0oj4bOtK1O&*{h4gv8h!|+)i3@VVw z0@D7N8w~EtxBfWnlB(wULI82`;5QMG8eD_#HQ*~1yiIr>n=)w533#TfrS$5!nw|g( zf})Jl9_m9^n}ceNUnFCO`Za39ZmxCfARD)K8fFU!IkokZbQ|7T4d412n!7*U9?&nkSU@VIgP4|Po z9n!Gd{gk#+GYmQ%|Lvp8Gp%ZEoTpbUiQRv7_(0Xd0VVtMh3EMgZq!0t(ZbhfII_ym zyA}0KS-aM2;VE~a2YjhMrniS%%ABu00Imz zvqxqO;<_WIs1HMGP5HgZkb|?`iYnJDxd$rz6*7*Q zuuo*1?9POT%+L{&F0!7DsRKnF?X>dh)>xpL_DcODyEZtkZ#BZUtz6xc&4c5^M0lU z6{INty>7&k)uc56P4KA>va0omg*k%eD&27Eouh7|*88awHiTi@?Y|0Gnh5xm(UEtR z6tXW-?qa*&NzXxRgXJ)`=j}(~NRh4Hc<bWdzT~Oo;Hb$&mr<#J zs(+gG`X=^yHQs-Y0+4CBU(Z}f%C}^1+gXP}& zeay7Ed~>xtbC7zqb}s@d+4Z}&1z-B)%M`|(rrCYSYtNm+W*JfgYL5T1%!=zHN)jLx zFy&c#Rfx8eud`LiH>t~WN($k#bn|@%)d~S8t+{`dD;cs9uq{ z2US+cm~Pmsse6=$&__?(@csSym4b$s{0%9d;ysw#w1->C)8o1>%k~7iItLfD5D5In zYxAph>!M>=8`A-*#=v0+L!ZU_3}vX675LPSSQbwQ=q8DLaD27g{?ZA%YBnSDO#=31 z3@n><`dL6n>wbm@^*}p&Gc=`pLaNtb+yO|<7;HpvU(e2|^hG)=Z7PWkJ0SrMyC+$P@K-iAk0BszN#rWgILW{I2o3_@1a+D@DUm)JiHKR` zv>}{jF#gS(4&k-@&?QEI)D#YW%a@s0VlS%Pm2gT` z(9^z^mFh{pr93Rz?_LeEI6dVAKpW0j$RVq%Z|v z0;mg87z{J;ci4ZupW;KNhLg6NZ$dx6H3zSGuXfS-lzmV5kh}A*pRuOO2VNkYudgsi z;hQ=F2h4nCFoE@pmp>Zwbko*)G(}_C5t*i>s&8elJXjDb558_MkAi@;ky|fSK%|!f z>r!k0a{KhC=Ma&o5zXJlzgS!_vNH~MlZ*{T34)LBY@V2PhLVG^gsAERtW_Elu2)V~ zJe9Omm{3!IRcVI8uVkQVJpz~64fNlqqqw$7_`jeqNQq`gvcVUUqK@FHzspj(^Jhi% zyyo?HkF5;NK4M2pZ$ViUKu6AO5OmtS8<-_>*`bwFE@Kx}LY&%3P61^`K2`xm1Jt@> zd}CcO668@Gea%G;t8=O0a6IBN?lf1?=_l6z*@T%usKi@3tY`Psh3`Y=Us+2OM{5=N zFEQfa)vNtqLgoklFCl*&N{4~4j%Fxrh}r~SQ2!Jhby>W6R;)MhUhWR-erqBOo?TG) z-`Bkr-2c(CvvA%Tv~O8C&$LzuIQ}m^gd6-R`0wls->bf&51_1mN+gQG>=NLkE>z3A zpQ^Z05n~ARURUd2v04^2&~e1X!ig0&OvG(1RN6-$PXHkJp4UZ}z3wxHTOa2E>Q@(u zALzkgVRhpr>Gfiq$T+@R3MTo;Ey>9OU1H>y)${GSZ0FU|yGM6Z51X?y(ndg>~{nYZP+sRV=WWUIejzFoxz)K>Y$ zyH)B&BfHlW(7gI@;bg8Lg)p#Cq&6q8@pypKKpfD6Z;obFL%4wb_mtFw=6W23x}K6_ z!WRI2ia}5$#v%h|ScnCmxx`W&@@IUd)_YILaJ`_D;VMdLgS&b=#M8zX_}zZ!-$y;C zp-I-@r;NxIE@m~v2~wm|QAdnGdNzu11zT_-)JPl5wES};=isVWcJ4R8{8BmMD`hpZ z{_q`a0qmLzI69WvHJe~8q0dj`Y82P1CRwc7<8CZQaI$|_=&JKR(EAGd{R!zY_KU8O<*H0 zb%C%D1qS0m5LOYaJABb#H5D#zf#m;wX}hH=xG3V*)?b=-Ksn}9y={Gu%vPjSJRXyd z$?TlJys;s)5?jisdXn_x|Q_=gm z^~e9M9Vw(z1EozOlX9+EpJ8+3`B?a=1Y^{a!d_em&h-)p_T9<#$p5#5*(Svgvsd8O z7U+-y)L47EiQowO&c-OLA(NjPEC;hA9+1t98;x}C5j1Qf*MDQ|Ok!N8!JQ2_{y>1; zrcqd>#ea!|d1{Ne9@WxUE6?~4kfSXeA}?~sio}`&jpJB<75)y6c$|QE4h`bkVeL|V zi)@#-jC`ahQl<{%-aYI0N_9qS_tC*-s}Z-O35=9camGz21D zgbtcY*KC5Hi35mz{q+nnHD-g*f6czh2=qbNzUL*uB3l3L|KsVad1_c`|!&nxch ze%`gglN{=Da)9;iaB#xUpDf4DR1gVGa~Vx8$#?prS5aMuECpB^t{ZB?)Dbqo)WN|Y zi*F=DUfzq$8HkvuNC)t2A|j?X1zn!&U?~Y-ccSTNuwu_r{Tf|wM`Va6$WBjMX7!}* zBf=T_NE)-gJqg|}!*aWVf9<-vKtOVbrCX$+OK(DmIublX&r%>VlS8~4PM4Ov0PgU- zz}Xt&FR=*-)nZ5-Yr;Ls6Z(%!V}OzB5uHF~=Jn3(jnv4pca-1zl;Yrjy2*+6ca$7} zSuo9Hm>k>*G}vO(XB{}w2EStSqSANn{jlv$F9f14X!Bt)_%O9GMFUSQBz(Hn)*cT* zk)wm#BIE-)!5Lxv+Gyu<%ih=iSq2?;-`$0^JRwYAtVWewm;Lz2N*U68RS?%4ax(O= z@}GZddEM#c5IjYe4gaFo^0t*iw@F&jT#mUi-gEnRl7l;kZvJxjE&=STq&zr}IT=6~ zI&g{EXXp4Pca)xe#tZ!Cli$7ZmJPMBqc`9CJ+>#FJ(pF-1wSJJjo*0`FD+4A{Bw52 zn}uCJIJZ2!nW>MSK4bprV!!q*OPj657u)TnmZ4h6lNt%`1}`9&4!wyOs|Zz}PMt)5^DV7U1Zi zl`nBg14mybl2pfKJvvymKhnLqDIAB`<1jiKnWV+ApxX-D(uwy%vaHCkn>zifi}OW+ z&G);sreDWxalXI=UHqv|JQ+Efq(Bu~oIIUx z&yFB^x=7+csUc4b#&PHXa7s+GDqH!7?1mDp2#=iqpdWVa&-Uy|kAo6>uQE7P(`dMbinoG7j52I*wRlE8SeOP zAMh5PzZzel!0z`w2CQYjWPCLq(Bf}gG$;)O!0$_ouAK#Hio1r(i!N{Ox6ywC%$%gX0&u6*O%b1V{9%oL7U5mv?YaRBHD`i7i|CXy5>@S!K)eL8(}evi8>JG>NUOye6l ziqzjtz8DcMriw9yDed4%nN{80y#90j#!h;P}eQA^n0!M;7{mBp=RULfF?{EK-NNZQ>KSc+*WT4}yBGNU7**Bk?T5 z=>P3}NW9l44M=!#8{KXA)b{b?h)lDh-}Q^{OY}8&e3H+vl!PS{_07030PtCE~M|}N?vuZhLg+6{3Xg}Ob1`qx{E!)?Z1IFyB#1#8@VwlrW zkMi8vJ{67X&=th)2(Bcfj45M653P|=Wf+6;XDent{eyF-e{ zbjgB+K?OX;^05EwIq*8o!43336Dq0eMKU zG(&H5mgOi0foyX!#>2b1G^YSjN{1V>LwA+OUo+_5i(&kYW+-KUH;yIbbvVC!I}eEHQ$WVC(BdR1FB!|8w~+6l z22jMqDOxf#)f3b8R^o?u0JK4(KscjIq~<99rO*Q}$kbB5k`J&_F+ zO1Nm&KG_%;hrP1?EWN?fzI@a%VwFj_?~yF8sv=V_C*@qUQFvjx54K`B+q4`S{u2&& z#M)eR=9DxEh!i-6R+=0BDwfjjKdhBzo_=o9cN+7zAo!BH=`NR^NIAUjLDCbnUniim z{?ZQx!DdQmHil9(_o_o+Kb4qgbYp?4Ji8XPcgChGGBxqLUz&Q&HC zb>cQzx>*>?0#9Sk5~l2s{=C@sK}Ynxs%WDG{Qy@~pra+S=xUbM;=7am3bu0D9bd?y zIqeZ~wYAgD`Pz)4nKEpgBPRWs*1cq|n2-<7d)8$=7k^&IU2BQ-%>%n?yEXytGZNYb zyFsDOkQR*4ww9A7t`yAdJP=fxHu`D^YNu2Mg1*udmQ2?-ff{Ew_-o$eRUVoT2uh8= zRJ!X*$t&6L&EEddc`q6($dom59G;gWt#tE&r$Qn>Cca$}KKb_%5FhL%UExPo1gmet zVDKVd-B09#!z=X>-5VIOuG}<;gmwLW6w@wS4Q3hUL88yuLP3(siVW=EkmZfx7__9V ztK~%b=lv!gz>&u7gcck0e@Yj;Co>=PC~8itFy#1@Jw&-pCI%ONmqDi}%l!wc>MUTV z?}^lQIPj^U_XhlR*VQurM0nzfCbqZRUQ`2aeW_M7D{2<#OSuX6*I++B06jw|u8-+& zZ&G%4bb2rz#%ast?l(?AD9K1*U?a{s%;3#uxaih> z{%#Wt@rZ-uf|Yq8Xw9`&FOZl`jMCAIdoYX5042&0GMx23E9G%o@PgJK^H%w>3ieKD zy%c(i@1C1zO$pJLGNBM{5QrUoSzA$|Ap8JfkDU57_G@ajM2P_p2d5aYZO22{l^m(z zW8rcko?t@|F1lt$yIxX)ixiuytp^&>&n0Ugzjt)YI??8X)ZOkyNdL#oR1yZTVfzt< z`j-bx&IwmZkz!L?6R^gMe%$La{520Uxx`CMI;_QACnu0y6i{6>FCIZZnG${?@7aKZ zCHm_V59YzZ6jHqI_SCkfNG4dQa?)qUTEUOS9Bt>wZ_LQMoR)n=Qoh((#S1m>BJM0L z@ho?M?1viso4^PQ1{Q65@8RElsiGkqni;XjG_(iR1Q#J4QTCxQHE>8cOk9;C_tP7~ zRF~^(!~N4&uU!?5 zEUkPqHRF1#un1Gwe>)a6Yo-EH2?@=Ywc{orq*ZgL^9QF9a;ue71z>rJVQ$n6W{300 zq-sHRJiNiOV_$QO!9Qqm_|3=_QSV?OM6pvZtKoN48WIT{s3#I0%I9l|*SSpLTpiBW zj*5J#KXj3Wy0Xd4^zA90X_zi`C5@Xsb#gXuUtzb?{yOQCdoN}Mcf>G)+lMVe5I-d8 zTnr>7L5NbexCT1LKs4Jy%lN6?N?VXhr!4jzst)m9epMyDGt7cNg*dLhXZc7RR}7cz z5hhla@;AbTtIrKywN4AfO=((#(rkY%wQ~jrro=y<8|M@aWnJNHSc8!7aY3^I*t$;< z!oc1^$CSKVFbVstRf_*b(cqs#HP-qToN>6wo%r@6RZ?zxNmnvgGJ9t-7>0Ha7h}X7 z!JG0-HmnXB`0jJTH~CLwT%5(tjM~3X7sFs|)Lq+g6Je3#M}w-?9cf>v&REO#teN97 zgbFNI+J4gsylLao1b59a%oUvxP^tvZ^M`4yb1ZTUFLMkx$mq7^9zcBhTDLJiv+V*t zyEu4MhOI%fSR%NqIT0yNE6ACIwKN#;J@+3a0l~BzS&Ic2IL{SZ8j9&J^U4jH%W{l4hvDr*^5HhAEbSL0V;d6GoRHBd`Dpd4Ht4GbW2M7+dly#Q-k}J zQ)EE`J`SNB&M(p2b})>%ssW?ThUo+t+EzHsl?}RzPf-bqYEE0!l3PTIN-(apLqRxG zD(;{z#Pbu+7@T_|F&%n~*Ojeh#Ne@bFYZRpVP}@;e`ZyJ$U-c{mr;g);XG3GvW+j+ z8JkGj3@UJ3!Lp5%@UrVNP}E!1^>3rZY!?|_C87rW_zf&N&TG>fs{cyEBN&mymPq68 zgK^+Euz0?#|L&$Bl(#EWCUh@p?zeRwkr0q2LHSx1ZoBOFuW;y=wn5McYTv^f%IMDa zIVEhJY}m!(n7z)sdvyVJs-(zwhPydUu#LiV()|+PzGclKL1~$vU=gZ_RR6!PC`4?^ zq}y+3b@wb-7`_&$i3^PQT&MA^D@{6;p|^b0!KqH6vUfDb43Y&P%@d2`zipB!`}JW@juUI%c!_0^6vnj%Mhf zh6g7dCM_mz2sjVr7VY5VKh!GGZrO4gmD=GywC6}__S=99a)A3SjDvGHF7V`H4~Le{D`9MMG%a}K|P)zR~@Hh6}dLRqgqseYrfHs$GK(jK*F9l{#H z-}=LnO>q`nA?XOFvbY+aV)M+mxqI^fQGBiW1;y;Q^X^*q*4$wsG$T+^V?(GIg|S%m zHDq85t@{K%+?uY6T#Vihm@DVRA+hElmLJ^SD3w04C9zq|XKGX-=X^Hvb79sSN#hZB z^v;c^@u;i<*B%(57>eDuQLtCrI%rp7!HsI2l64w-%`e=P1&YQ1pVFtp0HLJGz7$2M zjHk2Gz0htv0v>8SG zG8Mx^*?9-~74Igk67FdEk=HeYzJgw(2UFdo!I!sR>YCFlCG(cyAHVlH$8ayluqRbC zFI^RTdt&dJUmF?B2F4U)0X4!cXjh$CyH z0|Ymo$h`LZywN}8;TO1C+3`ePYf`=)jT_$jjJSZL3}SzuBK%HDa(hDZ=3bdlvj@aMin2-5_MZn|o%%Lfiv)ZcBHBEeKbm4gV&Z_bfP>Mca+Y$_ z(=vx>D$nN+Uwv?lKzjp181rW@DK_^VvM*^w1jkZwPg8^6VBDgN>u3S+V&5fX zv^o!}uBzZUq(eulGYX4O2(YEb-9kOZhp=&3hw5Fh?@R-4=?3vfhUm@UN|5V41TS&` zxKZ?7QD^&%CG&PFL=;SZ@=+E9K)nBh=8dZtCX$Z`rj!zDL72)!?119!quyK)JPuO_ zsHAiZn5q9j6?z){pEJdQGr&?m1)f;uxm%RCu3U385^!<6VP7DKdW0buGyx$?`%g-e zS#FbImk%X@rqI=I*xCq+ll9T>3S(51Vp~e%}gCUm#e(tI$tFbB3{g>R1 z$qa;xHkBV^mX?pL31nd)iyr)#p&Mf=Va5h8!U@zn)e}iZvH-&9du{C?5u4(VMiK%Y zcWK62K1I=ia9{T535Tb@{x)s4FnZoH`FSJOwCEY8@QsEi-=#0;75Eddxc7qbM5!Xq%O|AdG$+-wvEynqD{fmXeK(e_A1pvV#%LoWs z@!9u&+HMui+G?QG=9)#nu;O$1JY)(Y#s|3cDZ0@|iqU?p>lSVFdcW^wXS+z2|yATn;8=o&*`dL;ot=M}@-5vGWmeh8|%iEF>Jc1~x+NGWt`!k^W zyn3?qh1*P`i zgULrdq`wR|$Vs~!T=~kODNfN$;}!?V7-45{{^=6!d&K=ezl-PsCb5SB*W2wK)lVma zB&6B}7w>{u8}5{XYu6>pf>Z6G%bt{;=c$v0UiXO~DH&`It9=FP1~>_)H0SHEcT;wJ zD#BqA^xpSO3U@wXiob{Yyr2yvD4}-VC_x%8R_@juuU5th$13$nS6yZy3o4LVUq$j4 z@w3-GK?^jN3IK-e|LOG$I`894lbP7Rjpb4EQB0M_DPr$iP2xyed!&88?6(t*#lFYa zgx?@A1kak89DK|*>!2pNX-7i;y?$6SAclHLUJp08Sd8laH zEi~;#w_5+-M>{2+q=&2# z0DOGrEHw*i8GiFP`dzTH`xrM zf*_1?G@0eMeT8P($cT1$d}YjVdYj@mwzp`_wRlZ@A0<_l4l4ICqcMham#j-PNi{32 zUAQr4)!c`IVulb>vX6FO|@f$WjiFR=|4#;}aQ_GtDfjw~!>?(*_W{yR4n z-J5jt53^UjOY0WieA^>5CO~9ailk|% zE#@N~B=hH#XE0#f853CK{kKJ6l9*dbaZwD57=hh;m*OpDWd0lUW85f51MV<|2(&!3`VEke(if)1-u(@!hi|$V+>-kz52EUy_zi` ztm{mq0Dq5jBDEN?0lkbwCck37Y)C3$1X!?-1e{tq(Ay}%7Xk>xtnKbXx)VCcf^V)_ z9+s-%OAb{Er4HVsx27IqE^en?Z5al33SsAAiyfi}PX6w^L#8a9>E)IUWFXFbpN)sh z)ubTu8y|pyT|h!sc%4#RomBkh`#M>w?(WY%BBgRKBTv8^?k>QQIjP==@)G4X!vGuKHZuyP6tP$oUk5PGDXK>M8;#q zYeQksO+7>FcO7f@{^UybLkl!doRCYOtx<1!qhYMVISI3p2|8>*9ssBh|8GO(IwJ&bcS9A_(E@MeXBx zmPY*3^uMg$WcJo%#eY@Yhx!yHrCFv=1^NSNq6nQrD4a!Y6`((Qs{ZXf2ioIV5oZ>6 zPEIDF>5lAW=HCAl@@C+>dC@NAPE66#qzCv5@O{sHxFn`etm9D4@)x@(WV%fh$8pTh z8G32E-m-n)G!G8Xm(85vXj}=GpW{|NkkaYN?rt>p_ZmLIApiq%z<=3zf?~*a3ybIw zv+?<(IE$;96k@u^X~P+Z;VIZ{tL7xQ!WZgL=;MQ*J<)T!a2n_j%x};P^d$5ly5PQ*b5bt}OH?$&m7Edr(SDolp%7*p9(u>xkFtPdXgp=2XHk-hbAR2w%3yDwR#P5)jj|ms=IkR!S_XLl4$T9}TM;B8+<6`?f+K?ZN>$COc z)h8UhqK((RO}h}plW^Q)>bj|97@#<$c30&^4@5s`F<24;?xIuKuxUcwnvW%JO87HZ zRp0Gi6+GtQpYG$I?#g(coNP&fBRc3+nLXn6XB6pC&zvW_2eMz=XT7|Wi5B7396U+i za{NrITg5rzhY4m$7&o#ux)JFwbV=Iur-|-2TseO>MU1bN-m>W8Kp-1i-oqWz$0bto z(!w^s!@pv`!TLLy>Ss5$5Wu~R6zF6P_H%ly_az*w9ZRD9HBy5z@tRR~YSm@OH!WoM zMNI9|d6X9~Q-h=MNb7qYnlAq82Uq+yuwFgMp~=qh-kPUJvJ;>jwGDd3xk|FpKxp&} z=4cBlwkulgF>=SQkO_?$zm1pnGBn45KJ5MV9XItXt#oX{Dt)|UI`YtCiJ-tbXXeXU z2DN5ShUk?FcDLQ&4(dCpmjECOs42?n7gw6+>W`Pvmw^_4^(ERJ*fx-UN#l?^y5<}x z{PhIH*L8sJB0(z6j{QLoAsO=i0~h!E3!k&U<&!g}cIH!N>+vpjT#ph<_X7m+yob8NSVGLqpt+7HIVal$UQ-ZTU7*?b8(l zOWdXQW2ZD?_C&JX;OAlI%@{BKA?2O7iApSH=GeH_$+5n7z@VRigwkxgtpNjIF&?Kv zt;UW{f`FELvoF0=WaB$+!=7{5FKMl#70Rf(iV$Ol!OX3=D#LQ(V_?b$BE>C{A51^9yZ`b?tab@GI1`W{2*wne5p@o` zdMxnmrqFwvpdnZ$&7d>Dy;ld&x|gGayQQ z9*p==**-&T9XrLQ2PIc4^M*NgkxD*EOUAtbY_%DFGdH->N7L66zefvLS2TgjOE*vc z)4ZGmF8b){@b3bn9|IU5Y}HTa!K!~pWGiPsB)A<1 zTXVXnFIjl6@S=nCj&w-Fm>hjVLBiDDin$7G%DaKN)Ono zGfc%%KaO>BLS9>Z)c6 z)|lrV^5MojK&3+|0+DWa^c7J;Sq3anE<|MB7DM|9?h&0-#|9OdkXi^WgA#@d?) z{_}J#ftuop=w{4j-LU|ZYbHoZamv>I`7b>T@}M5$ytvy8so!1-==Kf;(PsOVlbXrG z@t%ubz(lZhIm7D!MDv$RjHd>I;tj9p`d?KNGWhdF3oc4ZADkf4Oboml$X*8y1rP~b z5i$LiSM;=F*1TI6s@`}*(fJ(iD8|(vM(Sp))t4=i?eTa;zjybOw4zQOh=WghgOOya z2=3Ld0EJ=k4)}- zITtp@_Ap`CxBPq-aVbHf z7xeb7M_H(xcC{H5d3q;fY0gc3Wh~?GM1pD;O6$$TD|kl_tMexa(`8E;zM!#k$*}77 zu#dN+-Tgu@FCHov&9ytO8^YR%k-6AgPk+cX0o!{^-uA5tq-Edz{5``o3Ff?YA;Eacb>GCN;hG;pf&FjA63o!V#~W+U>nWs9@J-F%j5iM*n~uYK zBtdZK>CNgIWrQ6Sw!rr(S^t3KIgO>E)($rBfq`mo%pUU#lK%L4^}%VM!0*B#wt#Rg zi+L!U#pOd5-V2QAj*Ys{27c2_Rr4tEi!+%Ni_eUI(}W)d2AJpJy+{PDz>=0;=E<>l z4HJfX;n-G7dmrkpNR@Uj)iR5=MQnz-B$%Sln+uQ)hd$}yjQEvUiWNrchp#qtcQfpW zjU3V=D9Ri(aQdV#NR@^4%?`*PbLtbS8Fp%zO-ph|^ zCljt&LpOA{C%Ab_6Jcb{_LkR)fjx650PQul99&~w)#DW?PmOLXeUs*D) zoUZgC03fKBBt=H`B=~gv(SF#&Rkl5M~gn0j;6c! z*N>z9pbnBU@G7tyTgsrUPH}B?LN}FMSWt{QX{8rWEF&Lss&+_$lwatR$VE@*4qP1r zHjE{UXgV|)fVnF~zGVAU0wf82Ia)h(ZI)Rz0Hif+Zys(Xz}k~J;P-;{<+ zomNZRtfN+o7AwR>bB~BrRsL3L@%g1%VPwA}wp)6q*urjNI3&glaUD7LVY=y7Yh!8f zk}!R|&txpZpd5G_f=R;)DGPxe94L`p4{B7Bc0N_A2uW3NIGn@u66{s!K^HX^SYN2E zxNNB*-nr|V<64?wQQPP|DGHiN!ZUPI*=tXShx8D$rMplSN9v4BB`ejeX1Y)O;*a$M z^tf&;ttcfdOrOSP_p#aDSSbI5m$o1*siZOIyA{df!X6QJO;W1JpDo$;c3q~0xV1(w zSIA=sCn=JzMjmsvuHciTTE4PqPaZzlpd}VWvA5sI0LPIfl2D=F7uV-XPcR36um@p2 zA=$nS0PrxFc@1T16%Tq{DjA0#UWiyuwlj0J(NG{$Fbv8ezj%wLp7C|EvGkQ(WZXs@ zdv99l`fF3%*&+oF3HtH*FQ-L24H6jX2;@od(V=q3`z4CP#zV3B^FHN+u}t@&N4s28 zF%STs;?V9Z^X0lAmxztd$CA{t_m15c7K#E?frj>4SF)O>A~A}badVN@pQR9xq3gf%1TF30jPC)s{VVO2 z=C_>vYk0}7Um&1&*-r!8E~LmA7`+ZxD5$_MN5HabvU^Oy9!@&NjO5koeN!Iv-Zkj1 z%>NHPTXbzw+PZ7_IY-r8{3%*_o>w4G0fn9W%m0b-W;+X{k==C$ay3-PkcA>4v~-B^YiGWLK( ztD*(0cXuPcj@oshJqgFEv##{>*4@Qvw=yi}yY(+Rt@cs_cEl5HWLVse_^Qe2rr$ir z(1u3jA?7)pG;}7Bpo2#Rkh2riZGmQdkJJbmKaxG-A+~rSz+&CtBF>$1iwERk$0klI z#7xz47d?wBK3u)OHC%$?-h z4B937HFz17#DB!qMs<|(g7$cUB_b=5`o_?L`{Kp2)WJj8qhAS;bF5z$++Z&(XVdVC zCo}*#Oh9#k8`z{SmR`>zaBhixX>3Ofc9I^d)3Ulgd$Tc?r*ihSvP&0C?)h~-`gV7Z zpG?2vqFOW|V1soh{i(Henq|9xG@LeCttjzgS14xggkHb5K78ng2JiHf#gMn#SZdX4 z$s{ZD3^XqT?7Xc;-`OF5qC!gTHrt^Iae)`iBEHdfV>{&Q*Kol=7EB!bE4l4LBMDhGuu;+CUWy;M$ z1bkQnhuuM~Q%2;Y0uJcn=}Pro#BjqxT{lUf$b8&$t-hz26Da2tx#XX1-=nNjZ^Ero zrPHCaq=B`}59OY;gmsU5CvJ`jSSoH;vlN1+TQir3<~9Y3Y}|K$A>o@OK+2B;5+j37 zn|H}zwN7+*hN;jCcXbxzZ&2i8;iZurCx4g4uQTJAk_+e^DsvqEML}N*{K9|cOe5(e zH1UE#mH$r8jzY`v`9s&Eau{U3_sIbp6?FodF3%HVAFCd$keKZK@|_UUxBuFJizILIO_T8RXU5^jgT(!K)tp=P&Q}wIYDvs0-IMqm(k`J!-EhR z-Cbo!N4n3qZ7-US{PkaTp+5gaSt##nkr}i((R8;H<@LtDbq9lg=)?q`VUj5P<}3Dk zt4l3#@Fd0zg};+Z;`Y2QO zlPbMHPbtjq29YJi=O+i)M~d3?<*AlXvOcvrsVBc~H92r9Jc|6I*bp8_(QC=$fh{F) zxHD`lOT+*AX(+J~Hx5SxLepWDRFqNZWSOIhTk`epU%2^q)(^io?DNu4_Edvrzm{CE z?f6Oyi#Re>mmfF<&*qo9WCAusl|V;?ffO+{`AcCoRyw$|E7dBzy$)h|5NsQTpCPbq zz5IIT_Up`-83s#@z@Tr$69qiEwmb7uDS|$6K@-)nt96AuF;-mN`=OTx%E4ui>>RhJ zE*C;Ws6z9}QtOKAL`$8vAcH_1z8&YgR%^$p%N6&fOraGdRINlV7+ocgg|l zhKIb?Cgxt3$Do+Ycq)wYAJv!dHaGHHEm_F}wc&1SD8?zh4{bpkA2Rk{*rKR-y`WFY zG4(^-QW2NOywP&V2Zs=&%34c{{=p$Em4rr0;}?8VOvtzBVsUP1Hu~}6e$~sx$G1Cp z3hmCWtTj0G={slczLL`2ao(t;O0mPsUe0y%@Zr)_1yA%_)|bVBLN<8}J>tRnQ)_L# z84uGyv!8E6V;I`p#b^Juu8KNxY^~)rS-d-Fq&sF1q8dbPiS*nEk0@PYvhd!#TK*G> zrAiH{FvG||Ddppy8{v!x;&c*S&q`H2XN6UFsupY7z9#1XZtLl|B`W_peQ4=>q25=- zcH7Wv9E1tnkGb+!wwdC`C=R0oL_(!t8{y6Y*TT+S%w?E(OzEP!@RB3u!qZIL7&VmK zvfz2r=0uMcwB0=>z)_-3^R86$@XVLX+d|~(onjC}ew6#^&N#sfnt1s=neNsA7cIh> zSTm8e&kZbw%<$2^QIbB*H?F~Sw)w=r(po$Ze0kXd@m?^cUhlu*2gDiNDDsA{^yQND z|6pP~fj&Sy(Eu`{FALH&vLnD5*#R$y`?{a?qSCY^eu!g={pkBQ&f;S^(`(u2-D#x$ z?*>YYiRZtk&)ZB&d^CS9^;zim&DRUTyi2p3W8R-OAy!j8ij$VFRxF*;oA8KHH&d$o z$7?p>8^QQZQJms}1xd$2s_qZ#9M6b5bX)!@4F{NdQ7%7!g8#M~T_%SxS}6wr4t8-e zLo_1?Wf@x}?>;z1GFI4`hlgb=T3s|ixjn>F62K1{-adV!zrWk28^By+?Py4S-tY}` z3V+FQ3B~l-Bkf-z)w_~h(B|wzpB=6d$`=P63C(|J8!$12$}iK@ppLS83SRZau>*-2 z;8}5hQH7X=tSjG?ro8>CXtTY#wj5TQY=+Y3Ox&l`0nM*|hCvU?opIVd=hPdET4NHHPCQBik zkr%B>!;QpP+kyrP|9rT)R?CR-@FH;0b+A2QlIpHR4^!XMlAj<9} zM*T|X_ZgQA(%(Ygzv^n*J*4>UF3Pm?OY!@18~S>4ay?UShY;uN1JMpPtWWY*KQ-0G z9FE{!Z?|_eO_0x0%W}ITA)y2 ziRyT%&8}&Z+O>buK01RJ!aWRP^#$?Pa>KwBw65<;JiAY|+|2D%l>lSh-;a-Oy6^|d#<;7RA3s&LG)}eMDmj<`c=I53?=CK#S%_vTP389D z)BY0mGp7#jns3hy+C&vE+0{%#(;vIAtSIDvO#zEp3_e7y)vKiZ{8~xtrS{f>DLR<-RbpQ z66s@Ej-97PwHm6gKhbIRlsxGDkod>q;^Ow}6rOgdg*|v};>q;t4@@@+tgII~rI`e% z=An}}SwsHiqlJ=wZtKU*xj{D%#D8F84ujm!``+(o?{l4G#{T`Sz~apf7ue)p_{;pO z(hg@Na_BOX)oQujF?X3{&>^&!iKx_#b|L6*7fb38eENWq`zMiw0pY*SC(i|`DRO-) zyK1ShJWt5^*LS43&_fg-%nPRe*|;8tdCCNrea@3;wZFU@U}66)8_0`qO2h|lIQ7gc zJPzR5D*lU#-uOTj_@43^%ZAnPUlx_+CZpIaH~|6YM-ht+tvu|nERAQD0UCD7PwSmj zdwx7rqYVk9r)ajZHHto$Gq65G5nJJgAKYq8?Qm>T4MP)JNPRdNxfWeQKGFv`MJIfj zXXJcylhET~bQm^TD4YujzRxP}y=p2|&T-8s-s)FQCTl2@t>+ zW~>I0IG(}&n^AJG6*S&gmTqhWew})r8n#Un^i#Z8&E#RIMQ<$K zdR?>2N11O=uthtRwy1-vgQpmxM^;p6i9Ua{OJJB&I`r4dyTEfb5AR5O1P?3CeA;j{ znRwDuO#QDN6t#QKM2zmt<1VgO;lY@Z=IJtw2Z~%hI$Gm!62kjRco@D&P^hykmxLV<3I{1k%Ax`to+~C$9 zskeB<1hfh@AEZD>NJ(`)K3in7TlChh`DH|^tA4YL?8odra?WDjmC>(x7t9Mx4S|_Y zySP5*e9j6m8E>KTY=Z>tSz^|z@qRr9zQ@dg{FZk_v#3QD6TVun(>!sW^a{3$&aUzFf!rK{7(@BB?Hqq&(q6GQpFxM*Cg(KL4K&FS&ua1IYUIy7oe)KcqP^AS zlEN?Be(IS%A@pE==>>yM-6M2OvhaFOEf0Ko2GkG>;0@^+1wP#O5sDxZbh<^+Y;NgLKefcf${->^{ZHr?)HENs`#x0#5XBO zIzMs2jbk{=>+*}9IvkkC{D(KUfKVepBR2fFZkQ6 z&E5__>a>Y7Xtv!&l}-%#Gm&k(HJCA<)fxW2rpKpP5b>fuUVnyPwJ(P6MI4x}iK}56 z#q84A3Qc;1-K6##yO(Dngrc2-@HO1{_H)%?&ZC&!Nl}^V;MXhL>38A7WFAX4aB^dx zEey`=^+f{#)5G5E+-8kfb%nrJ7%8A+eTU?HU#1Db<6lS+AsnbYT$P?0N^>W_^JvZ? z8anDY8Q-PPw2sDM*W2yf*W3M^dKlJp+;IMZTQY>O+*oV;z~j{$99_JeSgVJikk8Nq?7FeGKeQDCQPjA@E2lPlizJ>AwBy{gebk$OTvyd8>^FYdPw zZ$oo|Bl(!!KPjAE+e`AO-+_sh%E6qU@4(7dd$E0fHba$up#ERSWn4vLsB5nGsh-Je zsDjd5t%wf}6`+(|_rv2}dHde&rJ3Z1woGb4RPU+$S?!~ipPy!8CR?t@X{M*@(JV4&jqx{vKVuIDJ2v_&ui?7&2IP<=pce!5)N4< zUd1g#y)k(LFtlz$b}suD_|@ow9)xSBd<|moC>6AGTAJ*{&BxV$)BS3_S|MQR8}9v) z2EmWDA!-4}-trm=vv*aIUGGJdFn=>IG-HYgLly8|kWl#;v`}jRzK<$xtYvkL)kzlA z4Riucu{Dud2`Z;XrZP2@oj&_zN;c|n@4)c$#0Fmy`*iS4MtV!e+MC4JW&${3@2x0N zfZ&ZG=NabU(U6=){zwkv_LS-Ol&Ie4^^2TOy|UY%VFyE^|E3Vr~HU$$y^M!kht*vWCiY*rL&06#4N9(D1vVJ#n?8-n zlU;D3gbH5;$I|H`z^Lz?-%}R)5im;(J&CCN9C-em0Y+b@Q)WHZExw=XcQoBxjD-M{ zK*b&M@g-)ha{d!&vZPU#m<%8JZ$xXZ0T0eQ*20Zvi(M)UC z^Rf1a57YE*LOOBebxm;O@7M9^0d&j>3Dv0q zPG#A?YadkF{`|$|280xbg}Jd@3Yv&B+ zZYb6C9!s@)iYEHKCCaCo33!Z{>$`2S-y#y};RdUg8Unfi%AF`5GHH`pe$O88lsOZz zGJZy}FV3gf=OK8Xbr*>dSNdZ9{GHXjiw&Prv@ozHfRXB73jD3&R+{#i$d;|5{RQ2K zsw!v!-hgC$x&LaiK5XbQumgbfABQThVXe$Rq5wJ8&Qfc697rV_sM!E4oW;n?vL%h? z`N4HWE8jAkRb{AwT6f*L9)m872>YIpA!Rg=#Bm5%wCD}=IRp?BL562yOCBR}#Es?^ zTKjUs+B&iPnlYd1*Pc-6j=Usey0j1L;L3Io@9#r5K~n)$@CndzV1u8Gz;P$u`8COx zf3KFojN>;u;F)rClZL+;Me{_vY{tKm;Q;P&3|?^ z-Hd+2ET0CCz*q)tdnP^UEHjIss}cM}S5hd^yc?8|Q>03fRvI)&m3UV#vS4=@kRNN$7| zg7?L0(!it(9#lt8Au0|&C?sJvx|C}$TLhyC%q)1uRf)#D^G6aFPBSVy%tWI6d=f*3 zlU%#XO!LAT3l<$4H8oX-TfU(2EXFZQv-;Kj>oXr^f`*0P_wgT%ro zU?Xx3mIN+^o9IX|wFY5;cbhw~7Mg;mu}8x+)Nz%{7s|T7w?2H%gLW;1l6*n;(L|+v z!B}Bjmj#setpZDN2i73Zky%nFJwC88aiiPNqz67OG3^&8|2JY);2r2W4&#C8i(^(s z&D(!QU!X%U-$@5b2oOoj0jA?pI;27Fd&~BoGfsZD_#Pkg1t{MM0Qn-mw_J3D-2T2X z5A|l{b1~#>{J$0JwKIuwEdbQ+NAMp=<|f}e8#E!E7<~in{Plb= zgXE-Fu(o-IJwolicjU@ zTwcRda~y@fgi*i1Oa@u4)RU`40yB^>&eVaZJ^gg5OW}EyRzes`GUeqh4K*8r2O3)ypPpLT8jv&Eeg0@$-f*lzzG03Aad3s zxZ@9DSFfE2=3xUoQy6{%*0$fnn-4W$E@A82V1oGAOx`3`6AyrTuv5QW*6?sy^_AFt zahuT~ayV1wGiE|^6ZR5#=#xadeHvjQef*(I5odn}3Ssq#Pv|n3XarQQJn)+U51{Mc zMS83gXM-(x7g;7T=~u3LzhRiEkI05K{qrsZ6SMy$GO&=v+6&F_)j78#YCt{IvO*BG zco=o;H9jHeB+(@$YEH9%UCKupZ|>g=mpm-VVHRI-fY<`H3#R+_*lCeMKr-=@1p>Yf z8B9L!kc)Kano)o|mYL}0xy>G#-Vo(ylB_^HfGw~k$R+Fm(__YN0%)Qb3_&GdP>-oW zC755xACj7>u3b&>d(XjUNPo;en`h%Sq*Lj!VUKe5=DJyc7!9L4!>?Ga6Ytq=^p42w zOU&uS8i0Y5P^w_4^%&%r2Vmpj z3-D3y--;!cK6sCceC5nV;+psVMDbk*t+aNnLI_AlWcyF82}Z-Aqe&ij5d{VC9m=h5 zSz{LEpGeH0RzGKr!zQELwbE?d=NT2NZ2O;NQ%p#Cz^MXk6qBhEN(k7ym*S8AKZ@Ty z0Y2&9#riyE_WM>r=-_qhRqC4W^K(uokzPf6g^c?IbS5DH(ntfFB&NMS4*Hksam|9&8MOIsi7>G9eF)W0SiN6e~ z=wjF9 zlo38=oo)w~LQwArK&gx&=*W#QU|WADHW<2-WP8l2Vi=j(U9S!r8ZH`)SQ)!9LxxPE z!l1?sh?uI*od&?|>L{X*AUqnP;JqUhV(fmRqf30@$7RLgu@Mw zCxjyNoYAD@eqpbMY_5pWlztd%hc1a2{Rb)z-%EGKomvGuB7UjV3zjaS=RWVAc<>Nx zh=zG?7RG7ag1acb4Z<^jvdpI}fi(e)px_My{j@I?J-qk4=Na(g%XLr?6yT5dz+Tt^ z*lGa;T&B)IM8M_t25Ei?!S)6mL!9fL4fuuZ2{mIrqN?e-#W0c-W1Z9RQD3o|9l(KGaGi4WRVS7x_C@z#9rs>D?g15Pi#kj`rt|C8!AY&`7x z7XYt*joC%8#d!w=Xt#+lplK7N7?(Fh3dl|Kt+9!Lry-tq2?T)Wt#SCtD0%lU(=~PQ z6VYRcAN1j;WuLa*qfzJZQCnl=x^SIL{O!^dBKku8-Ua)|n+P`e;$=00{A`2ANIKZJ z-rTc*%j^LGAdIOR)=z8sB~_1UO~XWn0v-SuH}bhOmqeu6rT?Njc-5%2|DLP}HGB8<0AGoWT zG6}qA%6lVSsfS<~maR{9Uhda!A!>G53vlkAumfL_xp1lL67Z;0|0q|Sb4TIK{<%%< zn8=1ukB^NFPK^NRc7oCNM*rnw50O-LL?_g|{s-)in(ASSdkqYYnSKoKtYZFrFB9N- z6Cof|+Ay9q)Ukj^C)GnSzb*o^=%&w&@1bBZ*byQ3rq%mUpNqHG>Eymh{wF&UHTc0PlA%yE# z69Vgk+_CA4mn(X3hhlJ+8(zmhL(ZD~5_EwyUp^lD-OmJ$R0Di+h5*+!2NQHMLD4P- zL$y+ql#!i-@`jAOyiq)jXU?87V{JMcAwI_SWw zaNm^YC;_0X8JeIs#4+Ed*y*217_^(TDM*39&xZ423cL`G`#}&)(d6ZIebfG6=5J_E zA~_6oHM~9gaS*2h00^Wtul8C^tsBmV{=1ul@P!NueNx?$Y)CWFv?28!9#(A zLZSfo$d0ubpg*>*l^A_tB7XYTcdc<4WrSb5$-tzH)7bpHxVsVBs1u3ui?Gf-Idb_Z zQ#+KW*62wj$}h;2%=nq;F$zKr)aLwwX92|@su7Uj5R5pJfdx2iQ+{XK2>(!pfBH7$bEIRU^AwQ`Y`d!!N@plo=- zx->ERip0mW{84KhCK;vaz{JRy>l8|?anwaj#ZGf2h=XORXfdHrx-?uS@AJ-e2n~wi zE8Z0XmVp4E%7piZOc^(x1ppsJ!IVt2D+#R`$%vRK$IkyI%7C&G@@AO8_!w{O{BPj* z&oEJki>t;U2#_wZJ$o*&S|&Tlt?wZ&1>VEnld~s|It3)+n%8bm@Hb|D4WMWI`Z}s( zK?(s;HP(aI2>>2q6wE2BBsa{quTJR^h`B$E$dn`47iW}{Kk5RCH7*8Dfy(!$ zge^b@m7`JH{3PPCured2+=%%3Q~c!2oR*nzSE%9*yIb;ZX_Z@>5!OBg)Rl5krT4;)Ah@Qnb`fU(YgXD>{%32e;qw+F1n{@1 ze}-*Km(1j~N|)E&kBS0p0J8xfRSlx-S%MgU2|NKdU^(GEOAOhw3Esoq7(#kujmyiP zP)zv^i3!JtKC{eJvYK_GOmSMsOoufr9ias<5oY+S=X4djnpYK?0g8h|`T-RK*-r-l zX~pnMDfY#;pr-#i;z{&K2m+YFD-BMzHsd*`W7;dm-=iDF&ie}Ry-8yDr~FqYmpOQ? zs0spr39tar5iX%7{jq-yHigPQ@+|%b$rrys@qbLF_#fe}IpaHE+7LQ| z078n_%=vAj<-eZw^D)=ZVuS!q7(J}&qrPu=^fQ7RqIAguQ-C{jKeh+n^fHNIS6ZPH zV?Isv;vYyZdzeI@W36yx&BWnrdC)Ndo-W4o!RNS832 z`@9c;7&%6j8HqNe#D|RqGtDY&M$`;UJJgfW&r*;loA1-29uS+`of=Tl7K=L5SP2nF#IZ*=Dc>huG@4tk^QD1;Z%0S=6=OqL0w{g(WD}&qG*=#m1 zS3R8&0rQ=%}vS-arx zRKIQ=aine&&66o!+jJ}h@Qc$T_YUB1fWh!Hb^<_xT!r)r;#N1!jfyGnQ(3>uFAB#9xXW9e!t#iyM` zg7=F+KLi0;bAYN}`$J-hqky`mQ3&XON*OZKAan>lucl>|x;p_NbjpW>5IrN;&x2YF z;;7m^#xGtNXB}}F#h?2>mk3;>sr!a?K%m!oE&Z77WH<5fB zLKn21RwPeBVD3H!apDD-E!~5d`95apiLA!|*%&X&_udp&JxiHMz?}udIAcTzJImX) z>hUHCTlAOMu2(c{*_*dIMA%Bn+ez2enR)i{x7ck^*4oG|uaiWiz1Zp3kbM6Rj5BjF z*?5QK?!=O#D1q=)4iA+HSCS|{BQbV(>;&ZUhafC3rP$>^h9;m_*77nXsC(~^6yLNp z5`|dWa=kAKe=vNlKOE1qT3!i5L?Rd|INDdz8x^Ph`>f;1}9Q1)z5&SXl z+5&gJ`S8;{-3o;mcP)t*e^0dJ0iq}bfRY|Y0)VPKuPs;Zuxdw6GJ!G2E`E&Uu)mXh z98-Q=iqDVGwOrF1uJD6o4O1T2|dAmy1lkLKNnWi3T?9gf+5Uy^S=3YGptB)US7 zA3B+0$4&<0{{)r{;TD)qP{q=Kob_X90s4}d{H?5IWlT`H3sL|6X6&_?5tsL&m+5)$ zr#jbZ8;;2yl&lG0nYev6rC1UkRg}KxE!Xt>^yUfcT-V1_2PXi8MclCQaA#Gar&d2f zWGMhp&vE#m$6>7$%K)d{0fxqlY#~A?Se>(=g25-NCVl9h|St44X$Swq= z$lvUix1P+1^|gm7H_H?D4KA~xJSPBzP24c?f$7LKFa$gax+u%3sF-*y#sB?d7!=ON z`rUb9)(+~weyA4Srur;zFFqo*27X{;xaCKM4GddMy@SLFKP0*Q5&UMrE8{~LV;#VZ z3EZBSymgb&HYFUiN2J5IpCHRRLr|P9gA5SIOv!le&s+-%+ zOB@Hcco4YLFexB+F3T=lqd>J*-?1~6L&lgD&vq2!ZZJ!$Q&ny!Is5k{Mq$}y?C11d zt79BX8#VLq^KY7z;+3_k05WA_{K+^&6#_JJZ(H=a9#?dlsE!TgIRPLl0*8T@)lS>i z!oUfxe7)_~@Wq&`VZ`$@k_+*%g)9IF%p@eo9#0ulK8XN4OWwCG>1Kgnf`N;PUsFG- z-b-@lLK3^NTO$iH)dw&zqwPgqvB^pNL+F&&6F z-Tn=^Zfe^ok7M<3U8MxftPSSxt856~zvygC4<; zJrxKy3*wLFv*YC?L0g0PPA4EKNQd?yp{>@XsW% z1%-LvfcbDKK6WZ566aeWIGiQE?QN=i7t50ARwP4iLQuwkxaJ`*2Y3;uJJ+;`NDyEp zo`XWB0ISbefqAQlCw3JT6FyJ!AY6Yw4mmV%d#H-L_cmh|tj*x9N3~hJT~l1HOcbax zG~8nxJg^j{R`rYS12dJ<^qK0{bO0`E(5yZD{d3@>0A%=GmyAgX5BSrgzVT6Qx8Ha9eFLZXkZLUI@A z`|emM6yO1t)qp$SwXTuiErQE>ko@pIYaA&v^2Q@QhnNWf{NnC`vDl%lDN(tbK`8)6 zacEcbK{Xv(ey@tUrGDD29NGaqGSLEXzw*w4hc>6i(nfWD8EM`0HXM<+ zu`tBa9jZnO@D6?~0GJF4%-A_yIwQqW7Aq{-prKBJ+q}i)gBlpB4&K!D3}?MawBhsW?)-mVx`5drvs0`cL;;jkU_rnbCT;|yL0|+cqf7x7}kF9 zXR70n+nLt>n{e{%jq#a0J3^l+8ifF#`K*#h&{!t`SoK7XGw~p>eLaE#y=Gr<*+def zCt?}k-(c1$BEVT<7JcCMR>b;bGmx7cqcEeCzf=+-afw5-8VUde?+wu<&02p)*macl zRRW_?El{T1_?A&pm&l9)a`{sU|9_L@puZ?T%_OD2H2V-5c-Ef~#Oi3c41U&M-sIF3 z+o^_K2vfbEd@t4gWE`Gr#-ngqTi>IA^u(ZQ7OA}!EZ}ZZ^j`V2KjzUQTW=ShvH&Xwz=1r6!21WUKq1QhC z%D16(tfSbue+rD7-TvZRcPBI&nsMo)PwXj$2%k8@PM%XuKyu|Z9r@@JoB-gHV0lZ9 zFROr5fh*{nDv`?SmS7xkt2xpgJF;Xvrr%IzC9#2&ufOp-3Um5?GUU? zSBQ8muuEx1m9gkM$+$w?uX6uEM2LIIIFC!1o&s{k!|;(eQ~xXHpuU33h~k&Gq=0e6H`MI&y)@_dS)! zxhB9%}b1OU^onT53;Q2)a?G%XA~ArYh{n{5Xp;BsLHAXhz? z7M*)wP64^#LG#4uOEL0H{A2Z6NPv*t@`dkUAB$cjPW@G2q%|*n7h7&)+0lHZu(8ZQ zOrPJ&R6oYf_ceIW^}STbROyoN*CHw^|CFGkXXHMaa;lA7iobh%AUsVn55bOM?1p5>Eab|U(GccB4nmRmAcCNfIhK`Qe>`@HA#-_oMP-jqCt;U{eF!QXgv0#)8~QN(!ufDdCD| z@-_3Uk+n7bvM<|+A*Uv$HYp2Dy2)i@z>^Dty_-o`+tww==vWNxn5j0O`*Q4s_-C3S zJ2~Ue+=%er#W4K)OZLQBQq;WubBeFsU|c=TJhPxpJWl4kMwx;oQuV`oZW?H)4od-z znt*gg>vrg4x^xlUHyJV_D%zp7q5xhLxfCIN1E|o&;IpxAI11a{P7BQ?P>lG5(X2(a z88cA16zj!KU2OFVG|eQjSHxUn+A9x$&Rr21a$-|7DXzqb3zUVq(b5j*SIYpeLr7hj z0-L*)jRNsEf2~4xD=k^p#9&07+mjf7L$;L0&*eL}!9!>niF3c7-b2I?TdP#DrvLyz z07*naRD95zhKI^_$v?ffts&13>-ae^M>S z`!CLnq#5(q%#M#a1TWK%s@On609Q)WCgcj54jUmC>(B+F04!?d@>vMHveh0fI8LJm1?Qg{nZBiF+%b|Jn4AG3cka0rP}SA^1H`QaTTKl%Ww z|E~x3`KQWVRQ19wcnMIo42(P_^ADvp=14T-H_s6)WndwIi`Rlc2HN_mr4s=BP^(bV zal5>9<2#?Mz;Ep7EAp<8_VXCZvlk+|rtzyd}6hS^jz?~$}^X*TQU z7KFgWObL-Mrk`BD(1ie|p(P!i0Fc}}E#;b-=a$t7zZxv6o|ybi5t$DlhVf^W%9E#5$hs9AFM51}=v(kR?969o{#QNI6}zu7;l|3^(hke9MdnA1KJ zNB@WNJNM%-qLu;{yn>hy_ov0%Rv*Y$zNz-)@G{J-wBWUWxbFrH&&%b+r(X|&4p#pc z-vcJ;;o4a%(L90L>}NIt2YH+am*6WXd+G!LFEv`)Id|}(T4(|O6s+c*`j9x~^9@=6>_Z+9#K@~i3?7QLMKeS^ z2+B1uMtb|#W*OReDqdTcyAK%8{+0DVghg@Wb@r6w-R6#*>PritW?x`h^7;Q4TG(m( z1{6+Cx#(_+zxJRn0gk^VQ9g{sLK2M=qb z6yIUaV!(ic6x}2*%45c_n13$IZBmIe7hIp@pC@VLLO=$3I03-Z5iRl*1G`)VSFlR# zAszt4anJ&kcE+0I&wvo4b`WUS0qc}L2P(XY^3^{RaX=IY=_#;#F$5*}*<+2}6x6J} z-yjm@P~!&xar}4T64=gH*a#K$Y3Ck_KlgpZUJ}#!Q!QlmOQr#+YaQ z68)ZG2S*b!?OXuWKLY+tm`vh?TTF6fOjG;TZ>V<32aQSu#cOiORZx~<{9Xo|vBm}R zFo`KgDg zqzorhB}j3PWhv3K6O8z7O7YbHt=Orz!WN)|KN*cj84T9)r8}{mHB{ei5h}J){IN^m z^18E$p1S2-Puft(y31&6>y7{}W*O-(|2_`fRDNKY%zMaRK~l0k~hWHJW@1#&4VE zWGkh0JxAZgAGrt-H&9)`vL`49%b+&qEL zJGJwFNp(v;q;}jM&BekVGn4A1n54cJc3ENJYp5TSME`V^n;dm{d{dwE5m3)t38$KW zdD8_sPZXp6`x#0++1zO%Qb4{3OWb;&BXd$i#DuSr7z)+>te*zotq*!mG4{61{u+iwl4nD0_ed z6(k>l8hXcvq1LHjk@3v`kqa>MUX1t{{%WZV|0bLg-0knsCX!FXi=$r|#XfPjze=P? z9pCmoRnNL3Vf7ys2T9_dN=+VBSt;7+_m-Z)>!aWNP12*C^}HOwLV%_NAHxRVEMSs` z-P%@;55|DB0fB*5Jrt~=yhp$}uoB*iodRJk92CT`3rQS(maiG3S_(iUx%lH(KnOVy zvUA<~;WV?z{L?SHo*$4~fhFf%X4h!SL1BD%HP))ql)~ z9fMJ!DVUuy@GC$rr5U|G8nw@7qDCP==ZioHC_vKc*1Dr_3Scmn@3Tu_gD%N8fx$)h+v|(ds`iLX98=b5pZ^{k#B< z0>i5Q<*GU4#9G}2R0g+ z3WGqNE&7--Dowz9v*AK^L$q`&RO|=WlYHU^M2myfzu(ywge`IWr!o5<8(HgOpZF^T zyDoM@01J3Kc9MJmhH-1AM^?vtAm+eF@_w{y%NF0vUwt3kcT-_MgLoQ2K(3uZ@n?RE zC4}P;KnR9^0U^F=9@W4;N6q|GFl=k|Nx1Sh>rbkOR=+pS@|j!epLJvXXKW?}XcWoy z)%SfI+ud?@hwr1IK3AuFl;D!)mI6G>u0lx8Bfp4~0B=a=fh1}XF7&l0V90kA2Kq69 z+93v+iP)uBaYuGvfRhp~3NZmn-7qSVJ_P#<6V zFgE__99^?Z5LK`%1c1det=zGcy+=hg(NYKio!XHYa7uJ_%>`ztxa6zf!tQ!MM@;-0 z|4TNgqXap`+6t?iO?*9V#!l>T{pXOs*};# zp>eqihXQO1uo_x`)gk!uPr>YgXLv8M79iNN0z2)-&i{L2;~^hQ0W5Lz>^DAV8e#-| zzHsOqWlb>H#vi{_ErIy58u!#mocTR4)jpm((VU72UqL{b3(Y+}lB%J!JYbgbr*1)P zd>98-?@CJ1LN2kfPyB(CDgM$uh@&OVgosk$Abu`@u#mLxqSzT zD-a)~%aEoIEv{-_#zsG@RzaY&$ZU`$C$s)!X35tcP>=Dik@0(;Wj#%WI|+YQ99a^u zCZIl@2Gz2xcDJ1AGyqxX-tr!E;E;n$u#SHd-sS)@9?u@Tlwh~M$FNrb)+7g>7K|1h z!H~LPSGh$#XN(OWrChrh?Rp=oQD_2U5sgH_S{OWc?S2Gn0rOw@mT#+ZE?hB@@kdka z91aX+IV$*Ug&1}Y(fX%IBI2J7-%^7=sw&qmgYb&wtKJBC8`MwTXB(`OL*1gb^nL0- z;NG}dX=`jgIc4$BTAR;2gKuP*b#*wSeDfCA?>q`E0z7&qVef!|Q2+6xRP*#NVD%qx z62SFH@k%noZQ=^Y#n}E*;OAm9fnxZX5`^`PnYV4b8uG<~L!iR3Ozq^fW>DSkmb07y zU`DGJl!{-DJ(x-Lfwgw;V**uN^gEtt6G9EYHyzgeS3{N9GZ?FKW5HcS92!atgx&?fH@u95x50h+ z@l}aW`~`+ybrhfZjZml)JMS*c;zz65sxO3Sm+}rk?D6GivQ~@ z1Ym-O0|s)wfoB&yJ2?B>m_bkSojq`dvI!(EyBmT_kuPtL$?VmER1h$G#}h{#r!)Klep?0XxPq3CWpUk#LbXTV%E=^ zgiEF&uQ?}3S5Vb-Y!bG0xBa?5S0P0;)T}$rvvhSyd7sC+hVd@t^AtCA**RtYx*oc& zy58QSPGfMa!#9$4Ie_yU($;AJ42az#lkhBT?*SNTfq@U08mI}P3k(9qb_~k@CNZR( zM6U^f@NxJsQ9dOxV?0#td&ZcUDWYwQ|4q~p@A^Q@K3g!zm5-5p_IiQa+6zz!sK}%*Pgb_X1`7B#439vTcP$jk!o{KH7VazBFVzVlEG(>6C zn5mxdt7LBlISWGYtlvWT+@RiDTgJ~tDdt~-Z{cbP#3L@xRC@Mjs9$^<+zz*Fq}XR4 zg%B_?d!8&QYG3~;)y)CzA>dfOQfXepz>JsQD?MK>}A-4Vd0~&bND#Hv^yY`rEsJ1E9T#+BWC`8gEkB*_JAN?{t7g7_fhOB z?A370cLHKVB)YXTsp=jC;;IAj{kAm&)3IXye#=j4y;Ye>IP!AIT0H}3kDVghnbN4K zaIw#601OD+Vw3Poaj*u1=ceE@3^uy!hq(T8?}JJfE_q`xI0OXIb2L#87zHkUDKWsC zzQhgXHX4s@T1T`DmeWw3D|f?y^~yzdxoIxek3S6+_Y0`Boz*zklZ7BwyNgfX4||WJ zb5ZrIWr%@Oux)T1BH%$FVaDyVUy}=9A%cHOBd}&6(MQuru6!Kt_G+w4Biu9_m$u_+ zY6uXoBHFb`?S&!d`~)-pTfzKiE1MeizA^L9z~D@3paixa-LU45J{xw4NtTRh9{l$NDHQn4Ak9l}rijfY_92F*thzJ>Nm{9>2i25awc zr6?@Fw>XrveD+tUqrHHWvIX33)^4$IQGyYzM=zoQh*i<=NTMWH`eV;h>`efszkLx5ULj!Yf)9Na3P3po%~W#slyx$^DN&>t0OQ=N zrorIvM8jO^lku`d{GO}Tdmp=gF6xUlu|ObU^mi`Rzc-J3M~7+3TpDX(H3JVIG+LF{ zSla?U;de0$SZD(Fxg~%sL~Rw1p#-22<0*E{n;3m8bnRXu)WA*cuE|&mz&4;aBaCZE zDrY(O+fZTtZy+In2W&MX<|d9m8UE?8hAuzfTl@T-*X%<`);meg|2r7X&ftutp{=pA zzd+)QJM-7BEG5eY*x7OVkFd;BYrVvgu?VIE4~{J80@#Ro@~gho z&v}zj24f*0k=_Xa39_|;{}|xJML)$%@wSS6rc6C zU_t;R(}Qg>Mx~L*zR3RnYW^mp>b zaP@jPAg1WEOZfK7C%%deY4+QBIQXez!^o&2r|}@Ce_kBStn`mh`8*)w@uE*YSK10L z=j1C$#b;;_fg~tYW3#M#!Te$LC%*Iy3}H_XijnI7e|uK~Cpl5|UwUTe*o$R3mSed^ zE;$5*^+M!QxjaxrKt2Q&KTnkJLj^xw7ePf7Z$D8Gg%uDHRQR|>E*FrS1(t<{g+18& z-ks_0>E!#rbXTU5u1YHDbWhK0jE;nr7!Pn0MrPw3>^5kKa@d?5--9mkb$Gvvo(1Te`Q0%ZB)_AB1A)cp;+=Uj zzBsrV-!i|1y5rsJXnZ4I$nvqeVI|A!F%u(3j6aBX$hVyb`3REMV-!0cO7rMW_MQJ* z4u|uyx~w>e;D_$6q5yUL$7ffNmz;HjLYXAGW=g{`~cfM^b_UH z)CH>e=W5&-Djff9D!lXiIA7co(fH=xg0DuNc?7+BKZ0!={DJ`LxL9|h_y^#uS%*M5 zg?^gzn93nHcn(s@N>R1EN!i(RGt7I|xgovT?hK~b{NNYhiNS?Kb_{^Rej_&vy`8k* zp=gZ$ukku!1iSl(w_;@UY$|;2KD>L)@7r_lQG8}~3kF{`Ffu+=K@J4Cix_*S2cBT7 z?aA2*LCX$@R%bWlFB%&0%r3fD*32bu-aVM$=$}M${{=_46kW@ZiN>@M=(>7vH}V08 zQQ?DsK}&*&VmNL5)O!0_m^kMaU+X-2LfWE8RZ6H;uc92-0Tj9V%>X=TWDV@Dg~aCOj$4p_&S zCcm+s0Q(9cjje}0Enh6`1W))G-bJ3-cy%y%%Ka4_>8AV%8s0%R*s~xjS|=NGsY zes{bSqtTc64xd)T=`Wv+C)*dWw*4Xu>SG$n;HOP)*cxcuz#ZBGoew?^4L^D_I`Vmv z3<+t`f%i1VLfno4f-CV#fUA+Comx}{y%@f}I7q{cjLsovk@NNoaFFJaS`W=7Jf_0^ z5 z2Q9s>S)O7`cpYE^0ENv)b{0RCPMAQ2(;uRS=LP_j_x$h3z4EhY>^=m?G(A__c?<8y zyW`XG731qwXPraC5mJyFYrcW`=3&Rp4Ff;1~pT^NP*bDVxe^L`IZX zqjQuj%duY_zl{L5ki%_7D>o5vC<1|)Ai$0RXyrL-3t4=%uIeB7VZ>CW7~Vy;%lt zVlUEsEPkBV%uUE<#UfkGm;k#NP{dXn#~}v+i{=td+=QGh4{Es1Ja~`h|CQ*`zrbN1 zNi=5LhA{&GEC%De=`@TUhl6m{~%`!Jm_-Fw1?o7x3&)i`229s3_Jdb)dJ6@Um$Bns6^GlfQr|;_H@k#0md^RZyi%Dy)c_Zh~ zZH|UNMxtNj2ivB+f==v{z*Cls_xeV4ma$o%Cg~)L3EHPfAfO2X>>$99@iwLdZoIGp zS>d$%@Je9M#%sR%MT`e{JDyB1;`vN;Pv#i})U@;F-GRY@XJbXcx%m#RYrOWkA_VXI z_d19QN2AMsxGas^s1@Moyhne8PbRUd;4(NSG?;#{$IhcoHZi!*ALp?(29q9yc^LLV zaMsm$cf7KSm_Ne3`Y?PM^E|r!vDi`$y>^5Fy#3RU$Ys!{x}5Bpz>2sc8jVFb2DEH z)G3jFhW{QJ4S};KCN4SwbHwj{O8!EI3nEth^VbvDA5Ydh?2BHd0do4V8f728!oX`0 z{{<{|e%s#+2fz-W8&2*e!_Vo)RN9kwroxm{sPJBVcRvN=F?h-4roM}U4tIZsynAi{ z*+3@0z^jGNAQ+qmWg6cG9{vH9ZuyztgJwMFPly$^=Id0X#a__Jd*RsPXk>aRjpZ?F zCs@jqlYD*zuGq`vY12Yi@cHldnLiKQBt3*&xjsoeCgqGLuw{DW`PVj1AnI9r1%QvA zWEz{^h%CSt3MR#IPJ+|f36linu(>y%j1}%~#8b=pPL48J82GN`G*EO za7=6~&eLst-Pg9@OORTg(~SbW%A#$suEdUbt+g{|z1-?RfMdjGi#G3pbIJWHKG!|; z1OxzA=OVT8!VT2_`%l1Tuv^-IS#pMcQaVmlE)6ZfLgz3M90YOa*@R!BDX`Pb5l@2F zC#7pqPn4lV6#z&ug@RLi1z-aJ$t)XTk{i*9n_@fw-rbMesc{2fkrfvci+ImH0nDG{ zmB1N|W5yv2VBPp9e?i{Em*H!H`97uJR=4^_j?*zx=0EY{#&@=uh&2m7fysT&#%Eod zMX2nd(gHm366V48=HH9KtQZ)&bT$HlmoZ3gH3sEzP~cUca=2j?jVm{X?1;pVUn#H? z#A<^6x&ad~8PsOG;M2Xm;rI{6{$K)8MxPdg85Ebdy} z9q;Zx@()D7m>j3k4PCbGyB!J+9+lcKTp9s^9u4FyMkz5b?x?CXW~ne zpHz;U+kfImW8-XvC;t6U#@Y;@g`;WwlddGuBfcExo{G!JTQvvMF2C+i*hGCR@rfH= z8@L$k!jJg{ID5Q8qV92+@eaY(m`TLbTGP16=n_X>8%(a`J$5m%4Xi-_=?%(8Nh!vRZ<+q3VPg#XC@5X5M-SfdsLcxeFo;1aK`u9XHK0w~; z4b>+>wEuo1lXF87s}4JTF@UTWkDNPTx!V1BpyX*7djY3oH*0~K1-z$!LGCsGjp>82 za_6ac<@04hc`dsAkEF`Xr>f3Btz(wx6CJdCCM7;OTbGW-&iQ_ATgM+YPTqll4FIAR zw#Ok0@CAa4&iTL(@ZEVn@1ni={~+&*4`I6CiB$N+y_DDT!6Cil4%W>hZ}y+@85N$U z=3+vjwFn0Il?QkKqG8E3AgJB2!Sb|d1f3p49a~{Squt(vFD_0*Pe>EK6OXIEEgKdV z;IS<3^eWApraN}DJK?tV|D(*rp*ij zY!862vfT$3;HT9djI=-H2F%iSSdiUF!kcqFxmRGa7oI7N8@DmrGy<2M7hR#=tG8p( z9t0xu9>WZD^NIRP)z8d0_~FKef3*fo*D(2m##jsHsRd2`o_iR&5Lt}FH{sjvL(UFU z$k`EJENrn43Q%Y_YXOA?yjfRaet(SgpR^6W^~e1&c6$X?`mEwDpQM4irdL1rOY2A_ zC$75>lp0BV%5o_)5jU;Q61FZmY@Yt3705FX;5Lgl8vs=8VE;!fz)#4Sfv)gzILfg* zMGCVWdNVIWBX>4AJHL?%r`$=@yG1sjytsH2-dc<#UxKBFmtZQ|^$`GIdz>Bb*4_PJl}ayL>4w?&#Q*7@h`_)|H3u1Dy8 zj~u6|WZtw1L4bpbdOTHm(k4i30FY#w9Lc9|Jz$pCe(|s=2 z$HoTYE#TKLO6i<^da(LV+Ju)K3ezRg z*64h)C@q)qCh{8z0whQ2JAWBVDpP*$$MS_PLLd2<^LS$%fh*EU*gj+ApUlHW0#hP$ z0;3=^&cSnK?fK*Xj)b@~MPatR_vnS> z{`o=#0s9~bxTQUVfNWK>T-E}{7VzfZMc(gD#Op9jo&Aa1;r!8Sl*3ke_A2VX>a*1z zEb-PU&8;iZ#y+J-b(Q#{Me=bXrXh}usY(ZaG!8EyQXwSd38&9wA{}++2@qUdr=Cf7 zMS_zz5L+b~@K!fs0%JLraF|+vrwV-nPbvS*XFwoZ!8!1JeA|3Jd9$9zD}kf&xfY(X z?Pe{o5m~@{VLEx2pHOxFr(BE%3(p`3IFe|?!Uhp7yS2dZuz>eG z=BdDdKiXtM^~rzYUb!glVqk0kRi~4;9;+#iY5)@5!?BJ!3T^1LV=)aeqM}vD>>K?} zIAcB-DlaE=z@F6-KVQE*{sooI4mMP#$*!^GY^??Os>M~}-F6XX_WN~ivi+Wb6Q|+x zycfv*{o$C`|JB^EEs(W9J6gbd2H*Kl|2)15!ScbUV<2o!PyYTaf4@HogIF=kANSgc zjqlww8|a&{409`-zwc{BeTUeqIjC^-M;%ZuuP663=QM$Kh)tECoh@z;3-DEf_fFp5 zze?WA*XO2_v;TkLi-1eXTktBmS0V^lH7hr43uG?9t_1`6D?*pszU*s~wA3Ee#zDWI79E0Ao*Xx~s1_#p&=bs8Q z%gN??@`K3`dNJYj#XeOvGMpzZe#X}eLufi}Rct{!TYyIwuU<>upYRFOl1FmW)Y%p* zpM4VFLQmYB+^arM-Xj;}hHZhY1%|=`-W{JN_wQKJcgm4eI0@HwPOCk-t6uV*e`Wss zdgtHlin7x(*kYZ(A%;$j|FF*(L*%{K*^8e}$KjGcL?#?A=COJzEx@CUSFA#}Cg%8G z{)CbwQ|9LTVr2Bam?PlLcxu9+!@K`86O3iD78p_s6ql2G-I3(pc@;T_eH5R){wQKx z0bGh8zy<(;)odcQ1vm&;whTeQaR>q)PtC4nD0ETb*y+^?gJwTP?r#nu@0FXho`^H`sJfo{c!DMtD(O-={G~ zi#--Q|CVnp6xm{Pw%n9fV6!dY2Lb2_xaK$v44jdxH0PjiP~p=U9Ef@N-OEoV@81{Z zif_TJ1@f|hH|Njf{`N>LB(;VLXG|w&-!J6_P41E>sqb=h`_IRKzZ{)^-o7nwJYhiJ zN%6lHc`Nb6Khm8)+qXp~6{phfN2CQf2w0BAbFTX!MkU{!YZaaC-$#W{-AB$F_r)3l z-y!$rlZlEea+P7htOXjefcMb1;rvg-0#TUP|5LY;v-1ZVfeZ0g7CcCOzd4rNg^T?G zf3XdAnkPr5O-morEPT)`=kH75k^U{(Fubotk`lzEJwH)6!`A?@*HaYJ9$O1&ExJv^BS$}(9C5UPnV}!c#peDKztC5; z&qYdmfpmQ9@KIlbN{?nzBM_U@0VXSFh{Ag%kkuFwK>t_ zH{x}`m6%Vx2gg(LlVOpp1xzil_9cHYEANR15SX4qg%AE2Gx2R=%AH78p7kdxUU??D zYcaiVZM1*lQ?{X3_i+qqeMJ*!WA#el)fs}D5+ApjkEpC0e*VHdEUb2{(6Eg-b_$PV; zFfDQabL4Dy2o^vYqolW))&hB3z?*Xec~^fFV_p_wQLFEe^Um+G7s*Xb`SD*-|J7e2 zudhEey>G0eW$A{_$j33H^(z%ao0m?q@qA0N%=}C`2+z3U$H~MB46@dxgk2=OI+~%* z;QHx<02=@d_4yf*^7+QC;HsN_4`%9GNzV31Ew9xuu>s{fS3M+1y;5r zXVX3Mm1EJY1tJ#k9y}jky_`$V_;Hxl_gZpxJ0(KV*kSqJZ&CmCQ;7z!q%Xf#t8Kw3 zc#)yn3x}jCtL6D5X&sgZH^5TKW2ci=4&_sPwA?_aA6zw7tk_iO5=s#5AawgGR= zl7aPEeCIBLnCNj;dX+|;50O{h7oEy?da;TG<=1x=7GRGyW(&BeJpT^*AUW^35)VmI zi)Ss&IgC9>EiFoG=3?+?LK-Al3rj>_3wCxBnt=jks`|cPc35cNHEn!Y2elsv)8NQ=+J>|NvxYwJ0Kl&{%hJdT^huMDZOPDy zN~Zx&Nh|qX6V6ywQ(^`3xHlFX2LWsguj1MsfT~IC|CU$)JplvVX1%33vMlO|wSYg+@0N4PTlhK#`JF(8BYy@5Jt5cnRu;~n z{;N(UciuwvcUW+Sc?AH0LrLRcHM9Yi&Kep%9XaRw^~}Jh#Edw8rWsP_FO<|c?nHYE zezDi!h~n6NEeP;wJX+oHt;6hRfUyR%h51XUy#g(=@e zw|u@|N>`r!BlTZ-di5KB4YaXSOmLhb2a`Y>GKzvWgcTx|4itP+XEx&9Rz4%GfR`R1#l6TR(Mq2{rxod@b;}_g+BG8%}D5B#Su$Ea1()mb}}}!zZSA>VNxjR5;?tnB8xi+-p|4 z=NnYK1=#$#Y|OY=W5<}_5CSKYKo_d0hBm+o5laUeK8Yff^y|nuDfvPm;vnMu+v2HT z=$2CzCAe$@4I@1OPGwr}N(?j2w{I(?r9H3~P*?yrd~vZy{o{9|ai6-9I=A0XL6lFH zH)}e1w|PP_LISUtUCfwR=-H@z2}qnubVM%1$vNSwiTPKo zw1)a`JcG&)VxlY_=*Pd9Esp>o8!; z`>v+wTbVhX`v3G_@Y=Rc#xx2`laUIdh`^nkjjk(Y8)-pR^QQ@#Nsc-_O^4<1OJx>EA?y5OdoPGk8?)z)in~V4T2F}j->7VtB z!3#O17`nP@MrcDgb;MFegik67lDRs6MwMg^OXnY0CPPB1dn)c)4}j~r&pQJb^jr(W zeKZw-CAJo5h6T7MU{$pzfG4aPbM%Qc_G3RLXLSDWWJBt&Ux?2I@h*t$vN;? zD!lD{tZ2Azh|C@gLkp~X4d?cI2=Fiv6f0Fa2fhdI`oB#yv3WgAm034nX1_0!yJ%^3 zav#x9N1j%7)-(pbvSjzQijAQTM7AEfF1w8FTu!u1a<3+9s1Nxc zJn_FfUpX?GTcYBv=TPbHEAWXQTG{9)eg*+Rfg5zuTOecW(i#U^=bSWjN?3`u4oAs= zOo>NFQWpRi@aVAQS1C<#{;XS!b2YY$wgOT?j2wwdpUlAT;PNb0++RE8Z})t!(BYt! zvzxU*n^-^u0dp}*8$p0Grjy1Te+G^H@b}TE_BLNheos8(dqj`_4bx>}+RXiq!WRSQ zkh9G@n=ji+Xv_jw7s7i4j{hM%@vkpofajYrlizvd?08ILxCz{qg^y72FQ28#^Uqct zzs}j~@@x3UPya$6g%edeCk35=sN2_Ql{j_8wG0FNx&VM#4fvEI^M3MYJ%l5bb>h58 znOv;YElZ}5orRZqQu23zenp>qu~VMb^X)>x`DRwRmd{$CDHf;&0c#NiR4|1wmGSk| z-n-M-(=Vk_yS}?ABI`hTTH%L(K=kO1=sq5RGdYNygFcHvgC7BDQ<{M~6>Nr~1^8S& zf-guOy@9+wboK9fASUzqDmB~jvv#EizfYx`@hRb2?y^eIHzok^pZ>Yr^wQGM)j4hr zomSHteI1ULp;izhCs*gs;+hcvB-GEhhX@FmHl@=|fNu;hr7j&fR|{5EE^r3E-E*eX z;rupHIZI$I&}s`vL4b?p(LDqK&X_Lr2AoM_K6D{DqgphzF9wi#kN*_!lCdh>>J8-V zv@<3YI;;BmV3%D_5J3SpV z`lu6V%n9G6!Y13Qd7F{z4Ujh*6UjXG8=@B;=I?3oTHpYDPkt&UmBCsAwpXADR>ydd z`S)Q0C)oUno5@>;_xsyygHipMy>IU`TlVRuyZ8wz{_QJNe)1ulbX1d{`ms-R6v84+ z3;?t`#5g#imb~|I((uI4HpTffXpBs`F0ttt46QA7fN33Y-Z&}cV=3SbuPrL><}5vf z#!cL*7hyDQq0`CcTMG=i1r$Mm-y49}0-cj5(byBeN3{pQFjy>lAXfKLY)_NiT(4t?)3Dw`w+d&;AZJhJEL~iWU0MYVYw*1Y2j4v+D=o z2%LO<0$MrS5ZWrLK?SEWvnmlZ1oAJ?r^_LkoDO#d!y2A&Jx|L{KLy@3)o zVJ*;(7KjD`wWle6YykA_+W$Zr`_T)r%<#Kful+zDc`soA+S6B~SKvVm8mv?omf7=Y zqTN1%r`5OHV8HaOu+!%rmgjCJdgWc8dd z7~wy&`iWlTW$8!?0DQ-n;2f1kRq*(?ry}3y*X1k02Qym{0HkvMgQ_()h)>|8aO8r; z->2lO47j)VURZpee;UfudM`y_b#@5Q9#{*sqXp3TmR5VjUkA86CO|YKxBeuGN)|Cy){I`*h#g&c;s z9@V7P+z5^KDLLkKK@{FN2#Lt9!;#D7bd*qa9HH0NOXiL6$VJg~U}q!XD0j@Uq(dMh zhCEc1((#6PqX${B@J)Z3jjOw6gZq=sepo!)uX<%__u14@xHJujrL`6qG7IQ}09FV= z0gn&p+pRHV`7r!2h;iIb zh+JCLl|5u(H00G_eqipZ{0O)i(yQ9{+RMDMFE9jnOw zJQJE4bEuA5qiH4S3u-#}yA=8afLR@P0Dwdz7%2k)UTf{q1@2c4zN~nuU)|EwQTul| z9S`F>6cpLbT3{GhAT9`i`utEy_>J0iM;d#=*Qon#rw@IlxMyGvCKsA>C()c4jHN8uRlce8a~&1?cr)L#B(c*LKCzd7Gv7=Frqgc zPtK%+VUwY2hAPit8sFP4q{@rWR~^1kMdKJkPKmED4PEHsi_paSGQ%LC-Fg6G>m(Z^ zVhg!QPS@GlSb&TYNlUWp@FS$LhmAOI88|CW$^ZbPmIs#gRi#!uKB z0|5)PxvY;(TMM+c1rmY)*4-Z;fJU@y-~BOvz<*QMejjX)DwWrhw`d05ao<7StN4!m zHM}Y)!Xfe$$ez#Ah^5gg59TU{yv73^E@D+?6Gf6Zrdh9bs z{z){6e#|5Q0A8IQ5s|^6Bs<8fCF(F@XrsLTu|%I(F99I&h^*+oPA?`f77#^~j%%`& z_!3!SGOOd3fnzX)e*V`+DtpE73K5~%rWp7_Rru&-P%D7 zIVhO4E0(Z*BLaloh$g&|oXz&Yduil%;uS}$r}4m`M=Gzw#7Hms@9$~FEPMs=0@2bJ z;rP+hQN-sN*qkmrLT`~lY104zBm+rAK~%j9Cgwp9vkm6s-|jFB;@c4g?eWUPUG_Yc z?zxCc5C0wZ#=9eY#8Kz?{fh9v`b{*>L5aBLf(%6>LZkI%CeEMXfmf%8Lad(^ku8(e zVZ_kNd_lTKudPo&C?yPJ)ak|Ssf0-KNgFufL>LW*k$xK9I++LrDxP~& z&v%NxuMf;$o{A}fJM5Iebq2E;?Qa2-Ab@MZfdB>yI-?8JbMT=w`q=+&-L%4KtvIj& z4hc`qi_mSp7$f1AJWI5Mo$a#f+VTRg7bDXqY=PGXc&Z+^H73Q`65qt**NeQ-2oAa@ zzzJiv!mjZM6hK>mdcNm&fx|vWw;7;jkAU>%!Q*GU92CA(?*g6ULDP0RE&x>Lye|bfRe(hhSnn z0*vt(thecQc$(iCOY5R%V&Y!a$#_PMQL?s6rtkP4{0WsFxQ4u?n74sDBE)Va1kR}M=iitn~ zJp$baybXcCmoc^QF~h3LfwDZ+rO`2t6HmV&8z?0)C3;r}+||at9C`xS->O z6$XkJ3*-(yb#SjhCw^UU;2r2G=o;tu9#HQ@^d@YHFBi7O>xNCMW!#f6%rfl4+_=8q3p;8gL%uZ9niS=Qo0e}HrP%}xk$WzvX3l+42N4W=mY<;3k z3HVyQ7$=pWs9;o0$QJv060@8J9Cx4tOKJco6>o)>y|$$94ZB=M=)Q}b;(=*B*I+`R zleoZc)&j%Q0?{DAq;cdx0DjTwDNxs5`_bsbKTX{SpE5+Bpbbl_x2@9d;wQ0M-!G{2 z@4w=SAAt~mb%1Lm)cCUYNsd5KUWZ|VBP<2HL?32w?fPmN&Xcg0Oxc!j93Qo->k@(Q$|5Gh{{_UmHVSUTw0k;$1iP!v4U=ix}9) zfgSEaA}I7T?LTXQ;bH;45zv#}HQu3dJD^AW)!Jl1Nev{*9e${FT`E5QIF+9K40Y{t zG4&k&AJqMhGpH~I@6+uztSnG@=}tWH|C~xs-HX>F==osB&(jFw&)@i35$Rf1>@F>R zELg2D36o#R#9h0hJP9X8moz4bf$@v9qtufaqvfbior6@+M6*nemGx!&@un=S7AgM= zK4oDzGZs1pP8bzOX?SrhEnHc-N5%;0wc%Wv+&!k}1z3LwXHJpTvuSIAj1~|*0U`(p zUFix;xtwn*^pf+<)w%U%)IH@GtTS*Xb?$hug3)HRjRnemRDSvzbo2j?24+1@ULU4o z?!t-1wGiFv9E^Paqr~D^qVbc`u^=&ZB1TWkD*QlD&0leVkU%G~)X~=2K_*Uv%W8l= z7Ei_&X^jjc91X94R_*<%gjEHcmliLD^Np=f3Y z<+^Z}K1TzO{tn&zH&JCC+BO$0Dm#90PQ_kQxUNA~&`9Lfq(oE4FNh@?k)_(_5&($a z0YjO-9uZn?J(xH`tEz{{W1LtlK^WaDWEkTpc%$(0ajwpvfejqDQC$ph@#BgAxf%E@5#9W}Mm)D@39W8I zaZ5}idhcU}X|BmS9#gtHMw<~>K)6Ij8{pGK%f)d3P@iar>r80H(}b*E@3L| zbyI1pUczgDf`bo-?Pe`70xV$K6HvPw1Q&%doiu8*iN7okg|T-ItXGzOc_T`3z)>cBque$#2Y6k_US*4F+*AEI)q$u zN`VGF0NkFHEAE;Z3yQnF`%1$1!h@UAe0U9TH4KJf&~~#H7$Fu&3Ie1%At?X|8d2PQ z{8b$vcWgF>M(uGB0)h8a*S;U10#D3ix5h0{8KBC7f8*W$^>F%kkURes|J{CppY(Yy zgA9&T*+5I@U#oPDM#(RjOmIMJ6aX-$1~26NW9Yajv`Kie^$<)Fy~v90WgIyjrPCfu zG8*Mq$r!QDpDSw^0Bk6E)5m?U|J0~`B-0NTm8W*Uw@@hDI+$Zq)&e8I0&zirbSD@G z0Kz1Q;CZfX|5HN9C~P*Ky7!)fbq9{2QExih_6!I+neH)|uY&av%Fq3s$}|5#6*zr& z{Q&VSW)3@j?1N1@Z$Vx(5us5!nFvi3!auIjDES402@Yt7EC66VP3mD-pQtUO#{wpH zFWD?Lzr?GPv9SjL93-z?=N`S~4~um^U1`2Y51>(RKCb6+yasra&ZsuuT3}dOKoDVY1``GFngmm6~0@c3=O&x|0tYVDh)o_&jf;1vaWXpTM)54_Z zf|)dUnR@^v%-DL!3Tt%mp%i7txI#t^BQ;-yUmQmFtq1@z>)wLy|Gu(2bNU^{{m*)g zxW6*ADNbLtyz)3x9b>zwbMp4o zx!b|iwfmviA4Y{uwyhR!WdGguOYlDbeyY559}T?xZ;al50qYE`_g|^_-TUnH*-1uP z*2rPiYDwoLQl1GzoF8B*`9(SJBl6@TPB$e0VBiF~OcHD+^$^4{xKUd~j|D{Hp7mj( z7+J9x8opLIe_w5l{8*hEasCW!*!{nz-~H027Z;VjT&wn)uhV8@x_f8hYPByjW6z>3 z9F`W)1Oc(mUsP0k*9d~zK1#>I00s~890LVjk7tuH)Vb4cG-{Uvu|J49-|!BM9hf}w zdI&HDvAcQ!RbHEcuKh=7;FTxf@Si7d?K*O?03Ulq?%wx3qx@v7@FsOxQ5)AxAKFD| z>M#Uxgid6K_Mp-73&I4PrUU>9GKFelU)O^m3RL?T?5HiG$0|5wo{3$RjI~UKjvKr4 zXUo7Wix#cud(-4!&~lae6lNPFD}Sr!yI3LcYlAs9Wi2p*EFcE~{FKg42wQ9r5PQc| z`Gfy)w21y4{QQ6bfk6SQ(K(}gsAKEx5De@?9oxN$I=4T7I=0=13cXm>Z@9cRz~_0D zRrASR_#_Q1dPYb^L-- zq7hljJ?OL;f*}FRzrGS^1eCvz&?=pGgeJtVI8b6J=v49rna&Qne8H#M`#dS@5W-RL zwjuz?QrGZ@c%fRDADBG-|Il1GN1`HdfXj|pNAd-{>+erkwSL?K|wFZ4Qzu~2fI;Wi=C)r z%QsNRR(l}5D*}TFn2@Mfr)6{US;6uKayP6ZZ{;ggS^g4Lmdqh{*<5m$VzAzl*Ql}v zbMBW){)&sN1doOAoj%)Ewu_OiWd@D&4U@3Q@FtaO8*GUt%p5)nowIP!;86@#D7cKF z8w5itLZ@}!5xNkDd;mJF9b`I@*5K+ebol~KwKuY>iZPle>AEoo0Bi=Y;H~@D%l-Sj z>neIBY9?_knM-7a_XAUVe~t_8bKzWjWGyg)EFgk_*Q#p=BnAPAcMWV~K;x6}KNW2) zAn=0%1Sb5I0jK%Z0gdV)r?-nbHkpVec_&fFrd#240#@uBKZ%^Nn`3^0O%XV3N`=vz zVI{u__)dO|A1FBNIb`nvXU;1E5=Py7WlW@ll?1(h{EBPvsohFA`IY3YL(k!c<>ang zhA#VM=*nM;C5V@kw;tX10~k|O0tP?T^CsZgvGY%=SIF@(EpJSdv_-s03=!8oCK0>E;-VwSG zhIC+52Z>LwurGOnx+TGm@mM+s9LV^!Ox1^{X57pRR}DwmD#$C!;x$WQ-Iz23jy zftS&o7*hZCjVt%dFfYI*m>1xjL_$koEijxd0B7U}0rPODvTxKiM!NiH-4p2iMkIkI zfHa}2(FCN?28WM>!bn;O;&O>b>1?EO!KU0xbRowl6E_+FFqR}oh7P4`G_ei00gll* zi@^!mA%;$+JLf6ShfHjM>60YcUB>hUhcjaB2-2i-8Lf`ipbj#BH0?kAGe+7vMuB3E z>vWEx^^2nSViLWsJi+-h8$bQ8Sm*v|i%W`$KHJDdB`W?14+=|kI@x?{fe~Q=++6-r z!rP(sz)e(rQf^|+xKYTfVUX42#!obWe20r4*Gc|~e0eW;#a_l0>AZAixf}DAmmRa% zFs9zT!Lf%>yg?#wycV1reyh|L zn}O3zqi5=Ci0#l~TdXU27k}(;zRymqno$72C<|Bh{Sp; zlqIRY8s&m(S5ux_c1HaY<>wuEvYzrUQGt{M240$bmj+zAcDG*?|1S-?0dyFyNd4!c zvWvsH_Q+abgjzrq1ei8VF%HATuZ>WPW~x@poKBo}rsth86tqgeqoC8NkoX0FMy?Jo zb$$w61$Ha1b7l9xP$atNlOcZ5vUWO7(2*U#Kk#qBTYU3O_~w*b>HvTT1mcU~#Lo*- z>S4*P1=`mFxC!(AIv^%C$ZiKT(1{IhQv}DWoVt;T!X;KJ%FvwS!2bn_lyb82)x`Ld zL8TO#NS;ev-J^RIW*&L0k78q8#Lq9rmpyBW z?l~v?h2|^BW3w_h2Ls>gxdu}$o)n923#|o4k_B+1iOGV3$#IhEr@6!G8b1wP2;PvU z4qFB>#1JeEVF_8-Yl8qmBLr&pPHj10O>y$84>0<5Ns<>+9%qgCXWpiHF;;uKx>o+;}CP%9dISj35hOa-gnp4vph^0{G66Zct?{ z4H_+<&y-FnB%GNDm83Jnnb0H(8pO%m$jDXGJPpYtxui|%ZYn5(#S<+yvYD9N$8VLb z(p09wx*J`SY4k}!t8>07AkvYttt5NJ$*;KHi!Z+hUz~Bvd~c5bAuV%V?<{itrAso3 zw`|q|!^{F`T!YsECPBb3t6re4)Bpu}854~|4BTxFUQd~HTh((!ayq8={lN3QKSi?bp|!xswtxr%wuftJ zv?rh)y;H)|hw;g6af7YXD|a<=2h?evU%rV`Ns<;|WUYTzK3TCmFl4-#bjyM!u2ZdE zfsHkKad}_az45f~mcFkcG0tu{0ARJ(EbRX@lz-A#swK1*7zq~OAb`gN})D zWOI21pm?HfHZ z#WSw2E?Fi4rBCJ&0MNwCX!XE`%E<@A;vqg-) zsT%Sa9G&Qf^AltS`X|tZ^oRsa0Y-=@-9ZQ=jV=)}xi}snU+g0?+WwIBmUL&^hU^=u z0GGKHTKd%D$|*ZtNvk5onGSO~4=lO+;?nbO$wLs}8Bar)Nn^`oEzoWjhzkO6)3$1B zp{P_NLQCS3OLPbFHh;jrGc;o9C`8 zx@W%eX9IT$s66($1^}#3=d`}-$nidxhjJFfT3}dNKota--s~oHCN%A6usrlO!7!m| zNBbD))D&lAAh&5GF}*cuWd@%Bj^OiOEP0>bYE#|R`PQH;#oy55siVjW`iP_n0`mq8lgm2pHm zi~fSQS$m;VOkLvwyi&zIcg**TziNhhO$h*4QG6bF301uFnxVACv=(S<3&=qLrVp08 zVcS~op;Ru(!E@s&b!Tf;)iko923A9(#mu3g(4fqa{%Q3wv0GZqD19UKV_xx#;x=+D zFdNY=5BUigap$%IA3FM?;tvuaG8Z>30AP(eruBc<_5@@;HJZ&%s0g*xS8Bi4T<-A0z4OE0(8}E2;MSV3$(8Vu z!F%yzv}iiJgm_NK@vl+WTfe^Sp4{`j;xFSF@+oae0KlqtPVKuEZQ-#n=z@Gyw!|YP3`~ZK(TTZ2J<|wDz|yo0wdM}QV`%^On`Ex z48sPmr8Y9rDTXH1G{7-9L7id8mTo3Gu|lSF8I^A|0P)3Uv0W4DmHRc3(WdRh=E5gF zv($ahj=vnZri=y%CZ(1atqXgfU%PuEaeGpn$WnW zs$-J;r1Dh4hBtAez085{HMMDkE>?boR%>Z)?M-QAkSsjRpOsIRohMEdH{m$e<_WxM zir4jf*DYG#cjQ68DLtEpFAv%rI{C7zQJLC%E+!4Sh*vhwj$%2j1%{agxVvwyN9*RJ zg=Ehl--U8oSFISD(34^eT>u?J;}`M27#b6tP?v8KmZm(^&1>@5qQD8+MkubJ6Gfpt z=#>02Q4Cfp8wgAZuMyb+oNPACe7QOF9}L&c-YQ{V`)(DflQ8{8+_yaD`b zRlLfYe)s%|mo&brUshFOOqvxk9bfsI-A5K2=jT*#-k6TlQdmh$JFdL49Ph2#s76N`p?xFB2tT z1$IcF3m_%BMrAW5zh@3M2|LI$NQ5v9=mV07yucO#L5f5Kivv{jsigogBTclq8B84& zr#2&u??-z#Vl2EzFQFi57|-6g6sE@y`Bo|Dm4iwO8XzHAtf~L+mF*G5(7`gycLlbg-8kzuu z6AGG4Jpd7`P<>>93VCv|NQ(ws94q%4tdI?uQA4N1WOCC-wHVwwj2K$29?X-0FTktu z*4ZNUG_i@pN` z1gEz|pcP^*Fw_>P^#qK`VPIgUCl={RswJi{k!M1ar?Lj}8g&G9Bi{{V%2hNzw`p*h zHVwV3P}a1NnU`FFV{9OE#Tz~6EQx~?#wnG(>G#d;e`h;6f1w}m+in|}+I=j--fzNo zZ)rQ_tU}fTd0Qab6Oa^|bIYRGLXDP&rjAWRml{ihQ}?u|p$q91p{eTuVB#bjF-;98 zR2R;VZV`EP#ay016Yyy0GTA|Z0yD7=60Jze`??+gQK->Z6wCWShZH&6govbr1p8<)BsmhA zHmS5nN(=$6)kzST?1gL|S0K`U5(m<;4CQCzpEuyGU0d?5T(GYAlf5saIWkQH8m%<}{&gMgU3HfRWAXaa2#Xnd>$8Xqfx z#&75oXp(TMx)^}OkOa0#aBw>N1pEO(EfFJAu9wo`rNC0kPm(R+S8XU|#3f^Fq|`%T zrO+qV9w~5GbgWK7w~TvL?-Q%XaYDJ`Em>WvT(xp#;n#a!S$r|0h#_N3Y33o*Qz>}e zc{HiFqx)m%2RsdHuD@AHWHYS=hN}g1K|su18#IJ5G=Vu1X#CD^&u>Z}VOT}xCxtE+ONipvT;dH{{u_kG>( zb~>Gt9M}1v9VZ}L$EJt11yTk9K_h5-XD84ZJB=8eJOThdhgDr-1o=ezvmMxmNn#va zfDjQC;tz;wi3n}9n2(KKg)Dt#K$}g|brJ#ux8fGu-90!Ir$CWng#yK;1&Sp|ad$1W zKyhht*CIuW6f0IJ?(X?=zt5LH$)8-iGuQ0ynKQF9{MNWedH4eLxTMR(gTNtND(cx? z=y_y)u*ConU_-S=xyy2)@ogJ`_{LS;RxZ7^T;I9*%6}T|2R!$ZBJD+YJxf`z$&$WX zmHz%jVU_Cp3!0bEZ5izzDQtV!%Jg|M6sdrTQyPNEl$vvc*!)y9)GiPji0;9nx}%`7 zEXnk=B>3#R1G9bZkEb1}weg2J)lt6}`&1Q+rPU!xTogYnQ$Dn0MqZI?^QV8l9C`<* zuKperhiDfp(es{RN9#%;bHI;s=rm7uhm+LDJYU17wc2ZG#OWRxwD#tr6?k9E5GAl( zTNY~c3vYXBb6jtEkPLggCvts7k#@zXVH?7ez*9@+pn;1tSW zkB7pyreJQ5;oL(~zQ!8@nqROvlem}^-!ytP`uv#NLJrnMK9Uyk+l_s-ecx>fE)1VJ z_&SJHGWhK4<8JyV`3+X*1uww+DQoSBbGzJgR38m|Kg?Xc!ctg-?cYs-sncG876EFwrd~5^iZDaR9Z0C08>Agi$UEH@B{)7nMkB*gSK| zSNSr#xmtyGPK-FsteJWI(W35{Srn^1a>ek5N`jWffOhVHv?4TGXOm;|A2EPG2+wS1 zAl{L!GGb1lhO~Nv8+BXid(ADJ>BfyI==w`#ECu{uDUH5Jd=%b(=Q^EgBq(wME|HUd|}o? zO;t63p`KEF_?)bGcb=1ZQ&KFdj2d%kx3OHuKUfUo0SH?_BT$oOz{7a$zi`!Eul^!} zvs_)xf2W^-f%OpGaJ|j@HQS5+SC@Aq5~~v1Qri|wN-~yj8?q@4BhxFY^Cp&B?SV7*qku2+Sq+{WZuYqs<_P6+g+jPg(_O$B=HHx8rNF zwnU>CN?A8_rEX=kORB3%w)UJ@=S%Qt5P^l%;pv!pB%hB#c>(t1&C)v)g2`z zCT%jF*Ry5MrHXVv38waUsEA6l2o8mP>>IHbVAPo+c3%DcUv==T-0Cu zR#?1u8$8Lx+9Nk4J37^}K3V?s<*CfI)UuR(W>v~Dj8f_=b0B9R*CTr%TOi+~X7oFg zR>ntW^R&(+UUZ4JC)3#Jn9 zSGoVvqkSbmMYE|z9mnYO5B?PbHGOKovAAKa{fc(^ltRKUDY@ptt;sSZ^fyn^!$|o8 z`(4iDn0XM!D*hMs3h&>dKS^IM)Rfn7UK}qjO%h_rWAqfmD)FQFe@bqJS4pAqFM|;(GJ)W`VxbA+1l}UyHITtBk6@? z?dm=4uEyWxcTK;15!Z$jY)Vq}VpPa#F)ArbMkLvoSgcKGIqh!$$j`FF?>LQ7{SBnjKhyDdsd|H; zS6wt7Q(>VjY;352rq}?F(L6F1kF?D1#v(`UUlJot1~UW#3PC^<1;N6H-I?t;HfLm7 zek23`E_X&)V^_`8rd^A7RL{GEYpxGhuJ_0D>Z^K8>UrJ-YSo1sW?!t? zi8PmZM*aUkyAtug?J&C2D!#n;Z=|l-&Tn@5xKuvX@hXi8AVpWg+S1@P;P@uis3<}) zEy1LdSswO30lFDLUstNt$BY&O0D`$N&;2< zNcg8~Qht|eZ2u>>0K_Ud1E2Y;W0^=CA>=vl6aB;ZGS1_XkB`j=*Wzgg3-zmUFQMw&DWadntt-KAlQs#X9u-K0IC**NKKa(0(fLCbIzM%y z!7UNL{NB}HZ-tdJdpX>vYn!N`RilSNdjj~N0LjQLru#%Fc(OYUljYS(m!(za1?AiG zU$l-B(+va07MMY^xifwb;Vc|^tB;=A`?!jEZ`j{cxw=mm33JAw>;mS;)O|)L+EKot zT=d-a`Elp-;|F>eN&E)tSC8?l(WUDRB=IbQArKW^o< zkX#`G4dM+rAl>7;2B~QoUf<*gB))fAO3-od7XN44Vc;U%yLz{IrO|>zD45!g$R#tz zU0wr31xi%;JH%(f!gv7I6r}&t`!Db5nLe$J!*VP{ z(2S`Naots`yo+A&l6}bjv)!zzbie^z!d{qipaHTm&nELZ#R3bZ1yd#{GqlQ0r)WHj zFM&LUnk0fL z5VfF#IT46N#6?%s5`5t22e|XUx{n5S1#Nyl(dqyn8@_gk5h}y}Jf*0q@=66PT&2{! z&Luc_7$j)!s%Az%}~F%~ogIZkXXXA~fK z_a$BJ38T9i7g>_Hape+6uS^xS_+K-krp79*F4y8BkwtJ3>KAC1wI`=fKNSsj z$0YJqLk0-_(n(;tA(Y1ad?K-PmGO8 z6-CJlBV<>Eslh0pl|8*Kdy)&?lVc0gnTiLyXZY~4KK8Au)%Y%9!`}QLj)ZeqOVl!- zj9yi>@s)ZBx?oEsh0&|C0sOz(`;3l``O?Ie*%MdmWdGkTTfhiX0CB!f-efv8Kqj@O zq%$L=T7x8a-KteIgVQ1{5v$rP73wip$FlB@WOg^Pa#h(bd z;5z)ztx*#^K?5=Xg9>)4@pHF|eO- zZ74*WxE(zDcsEmt)wV6pvBgpoL5Mk?y^Qo+!BQdX;O$+dbWJuxsgpPipabUz?YWgC zKRtzjMHpvQ6uNWY)9uE6n|owR+psy{C?FqW@ETAmU0&zf5#~_a`U5_o$Tv(dxW^pY zK?;|(p4h5#qp4yY9jmZ*41Ax`lOV`SQ2^k#r+an&oYb*K%cr8d<5WifPt7OfC@G%) zzAY3rdffkEd_B>aB=MZgjTs;&Gp)FxcW2<;ydn^3E1qvq@e9}n_$|Dkm6*iMWn#C; z^Owc4Hv{$5WFJc7E4hw$`ae;773!?i1=~tMKcA!>-XDmu+?rZ;YSEEjRJgJ%8(&Pd6(G}qxY7I2h&CC=u8s$omTC0$_%qJCLVCPDM zmSsv1=AL`HxGWC*$R71v_NFj{<0b)Knm0t6s#FS^MLb!1`*>IeTT;Mzq~ppd|CM5; zl6nYCMA_<^Nlv)S}%UMsOI-MJxW)lSwDtGn~1mnvr!JrH=(V39M&xBw2GVFIjwZmMQn zY)mZei7LVf1Q?!qWPVu-b3oIF!w;@tY6$b9zgyEWu56F9ARQy52Q|l-RT5%iUfCV= ztNOin42wvTgWh#SA(vX)*;r!4pIleXRcTXHlJ!~z)- z0m*3YHJzRAyw~==Q-z$$sSE&aFvvy8U0`oow-rF`t5smsyM3RyjC1+rT8$4bGPPST z{`Gk^%j_eDJ0Q}En|kqiVimWI$?wIVZcHhBV5^OH<#}28r_8^70`RMBH?Wywpoy*! z{)*KLdEc77xR0W1Oo_olwfND-pTFQi2HDKvSXd|S_Q{2Je5>+!2~x9F^kt%K>2hgC zU52OmFpz7nFF?TgB?*8s$AoF4Oe-OoFDdo`3Me4zpp;@ z^u4{er1iv7>%QEfrxU!lk-yIV_<=x2Zrr1G9b5cF_a8^k^6`XmUUUBo7JXyFQb)+a zs&ctN`o3q*%l7YojEbTsn13!}XaOU8WpDCs<$rKBGOIo)Ak+cy-@S1fRg8x8dMnJz zs#eotMV8_?6IZf-huYND4?455|@`iZ0Vl}pi*?-D$uRzvXSY5^1spCnJS9|jVDs9!%pt1`0 z96)mUwm`8RKMjnfF?xo4Cs6HWP1PWGW{80s*f_6gx9^5xhEBl|;EX1j zPp}>W;do6=NMC2LMMz9Y9@ufhs$}pW%wdG=88_a4I`mIOrI?@S7T?z_uHc<{+IH*C z8yy>xjaa4sX#B1^w3!Xq6dU`<7wSm)SsOJ31f&@w1_uV?i@@8#b#G?xyah4F36~JQ z#>IUf7=XWyd+#RHyY5%JlgTzx!)#Hhh80=^nS+zAAhBEZ-iFd~okYi}*(W7{;C%8A z-utcS{}9Zztup6ZGqTopQ4Ur}(KBF&m(Z^(^s9Sads`UwNdz7mo&fF)jvMnMu-;fgy%n?lD8XlxLg1r8O_#XayX~4_QfJns z-Bdv*>(QOyK(tSoSXSXAU0zUNC@*~zvaG8MCTb9mx$jj892%bJz@r7pB>ksN0iv~q zdlhPLKoTd1G-yAory01mD{7CHRGw^urG&t=7sY+>bG%$p<~O*^hczo!@S0uI{|(5e z={Tbmq^F9E47ORXZj-8CytuLOXa9o!#4|}QWeOXz)ex0B=wL!Yt{=IDYeDYGeWJ{5 zP+b|KwI-)&V&f}U51&UBJY$Si9Gzf$BIR18bnu_gnK$~gdEg@0T@Kt^LBN;NmcvTMnS|M(iI)U$?h5&CIK0lvCBO3~ z=}2=JQT3=B7}dRYa6psoCu=AHTgc_0DU3?~E9!z6*brNpJi@QvoEacp=N_+J8P4NU zh5~L)+cRokAUdFYFL#u^rZT|qV49%{&g^#kc`xS$x^FN?9NP$*TtJicA6C$HAN!>B z{u^;#0r3$uh&C_0WOS98B_3@RfmvJ9onlPikAPx?2&_LJ9^O*}C0E_?nP0zDoM4{) zEnm9&K4vH&0J3|_XA&HxkT*B&N8VHE2XP8u3kmP38d}kZk!u(&1pu9i5VQ#|NGiQr zYQNVm;0&`u4Bmi6{bm4RuV28W%Yx6>MI#$Dv@`M4pEH5WNw6j(FXe<#^S_ER9%0-EOq8?5B3M>WRIM3NUc|ES=q z;cN2AzC>`C31x);2(55VWtO5EgLIF=uJg;W{^Vm!u+BbAc6UP;0mlV*hKi(Yz`G^_ zqLc0M&4JqqgFLJ9zNKA~#3BEbB`<`6Rr0`QF&S}3 z0=pt;DnUn#Hro2oG}{m(%yqWY*^6}&UPR=Qp&SikNG)`J2g+zw+4?2-#TcI=dt%mn zaBT_&M5TwFC87d~QfOcF)8O&n@|nlpCDZF;QNoF99*>F{9KzV0(+wVSIX+<2R2sOn zvB`RYKxs9+G2zX1^==E#>tM1JfR)t0bK5I=99aoA$UF@3vHPoA)Kzsu(t=`ob|B&N z8#HI`clcj5GOy-EsLm#fo;3smR^b5`$z^G>#)-vu@Z-*+vZt!|NLIWdibr4P0-ve~ z|5au|%NBGESAUm^2OGoebY^G`k6uMxZ6#5~cJa0`PNLTKz|Y|XyZ-w37_${gN!O&> zqVbvX`2WGnK=4T~RVaU?NTzL9Y(_4%1=HgX`fn_!<%n!i*4gW+#MFj30Kwu-skVKh zqfgD@>$fRH!G zI5z|XOAjsvu9JNPF5`oLzN7mSp;Blq?4ry?h{J%gu+t#VKu)M7@a8G3DTE$)_J8ylMZ4yi}M0`MDYe=A2*m zps!s#bx|GyBU5)>avZ&?Y({C}0q^{wgnpnKTbiW?E|}zFU5XzU2bNmv9-P4TLq3!G z<&%@`yU%o!b#MZ5x#nA!)lcsJVegoL?dT zG!^i%-Y#Vv!T11S!Pq4@>-j?8P{2KrMj3N26cF0_-=Mfe zSb#<{X$gh@PI(B(m8d)CtIsjxVs8H%#AGMgJEmEBBJcui5@z2IJu_6B%$%&b*$e|=uQ3?HVr5ic{P5I3fVa=eEafQSoT zjhvr>L{ORjSG}c+YK@pMwM*Vq|x1+lqh;0t`6=&vH2Cd?^uEN z-ibjQy_?{N9xm&#rwHqmeEb)^$I&er7szqO^WusT?^B$K#0N`jW-B>ie~#znkWY6a zjstTb*jKaf9k1j@NC3sC;^P^rLI150ddQl~bPk+x@iB(J;X?&ei3B606L|fV>$Bs> z+j?#+-@a*$w{#zG7u4#+fp?EwYo<-o>log+c@0MsIS;sxKH|wVQ`fshww>4Yr2bHo z{m1pZ$cGU|VE%ZIQSac|;{v6`i!TXwVho&AZ$_$13>qVNvQG+MrhCiED?gvE{f>5~ zjIy5xMZ{`jhkvci2@P`Z!Z?MqB|El<&!#YmSb*>%vbf~$gY#MnFEe6p@v?o8of0$` zeKFV*^wZ_crs~>DZIva4czfUHQLv7z^(dP^Bj5Ah z1US5Sm`^LtrD{=Cd?Ywm_)pu3gy4BA`|0*DgTvOTMa9}5{DZjNn&Fs4)GEr=OUWU> zh}6i5yUUST?lntj4Z129M|U0r`uE%0iP?Y{WTIBk&)@fRMcy59e?`tb(fv7vc~la= z*sJ4pQG=l$fgz6c&&z|_n!$)SZ7ds#yqrRtQr7<4>zw#8kTJehlvj^_)~g0s*wIB(p8FIi(MI4g|kNNThE{#u`e@R8Nd|YQFv@phLxW6DTNjANg=b zTS=nuswY|pm}(Si^NE7feLIkc=fk_PzwW&n`xPZMthZMV)5*LKw} z;#7lkxg-yEKCF7kJo*Wghoc3uM#*7@e{&U5)R^~f7TFzDtJuQr9=8PVA?swC_Uy=y ziWb@D<7VEtX&V;b8x|&d0`3^t5F*;!|I>!_$laQvp$fq9&35mx0y&1x5FAA?r~yFI z&BuM*_S4RDY5T{YSUYy`=l*SwRmzAHsx;%Z2WJ5yjre(OJMGobvDCiqQAtp5 ztO6)FqQ*$u>{#rRS%q?*SrV!-gQRQSY^4A` z`i3HOh=#k?B00a9QOvuPr`;c6mqw&WA`MW@P%^BSF#d%{vKqqT)Z4T2>2%0U>VZ}& zuG9|e@2#cModgBV(PG*&pFVL1dg-_z)84K(X8QJ>@sGmQvc9}pU1fJrK#OQPP{CG4 z&Z6H5^#1HTD9l6gQMf~NHyx_`p3thn&xnkYNp7Ik-2dg=8(FE4o$Vj&mWZrrNx|@Z zZAa#GbmBL0?QUo@b=$AG=CguL!bLor_gbHMhQfCBV;j8C1;SdAbX zRK|I(G(Oa2@%A=2tLnx-L!Re};J>|)Hld1ku1qKBl@i(XcHn>-6c#_8WX_+EhV5i1 zNzHBi^@NR^b#r!M>Q!z1dd_mtY{4IU!3Pl~vsWF*V?Rdm5C9 zZ0LS^Qv6{7TDI(7^A>6cKSezqlkx$Pdhr%aazc}Hp1A<+AV16J(<1vOj_4lxuvGEd;f6Q-P&Eev|un7^ySl>JC?2Mc!n0UUY0|ZkA zo@LO+2=$k1kE1wk#0#)*?L7bL+p^GG0*Pm6)XB9)jA<$`{TMpg z*vpbDhA6^#!kxsDc7m~b#T^?Mm|^#uv;`Sm@x?{EQF*r;A(aIZ%M5nU@!8H9q}$%I zK4j&dMCb1LJfpPlq&L5DyA2+l(}q4y>e-G5hF`Qc@V6_KkdGu49AXQvEi$$xdXp64kQIqRl z3(OI2%RjWA?dS<+546hx->_a21H8!~LjiQ*gz-vk(~5WVZe`C2ON}5_1(QqA0-wPB zqwnVh`p#3y?@C*1YDp+d_`*~GDu(&v1EXjdAtS5qFX8R_5)_m7ooJU^3qw&c9ER`# zF4pZp6gb9JapiKZ#nghqF1t9t)xpV>J|u>;h z6}Eg}Qk*u+eFj2uV*5r9-76u<|AoHZLJlHkxSg@yw~mP1Urs^;BHklqw_%4qCzpm} z0*Y=xZR8{O)OpG4?&WC8`E{%oZbKydJUWd+y{l_CFXCfL(I!LfmKW{@;a|LhQ;$UM zS>*nlA_%6ycK30np=H6A1~`VQ)hDk{rR+NLC(azQ{^jNg zSEHkb2J&=9>S^L#KUeXRIPjiZZyBT6ZF$80{Kz{=Bod|J#*v;nk}B%+O{j z>~3vmz2iffJPI%zK)d(O@pPBkw0?y0Tvk0@_F;>Z8l?=0Uk4hSU9+6eN(~2iQv7Os zLwa`W0TYqPi)EKgoN%v^(Q@NoPI42! z66Y!sv3yTSxQFHzy~0HHBm{jR@1&hfzWD{8v3`ptYIFNh1p64azcxiHZaQd4tI00- zi_ppP3#)nPo3132M8nwF$zN*3D37a%5z&()%G(?B6F88^Hv25+<|NkkNAA!^r)Mc1 zXEcJW7TS0F=(a1Ey|uXe8BuB?_uVdgGWu2cBy9+#HR>vDvgg`r0B7w{pLPE(!JcxY z!=u)^$G%AD)EI>yDE()F1Q!)ihnW0&mjnK3V^@%q`n*-*an3F80rpq=;9?jB$z2+D zt31_iu@QHbmw9Otj>1Gx*|7EfIv28D{}5%T?*Wo zyf4g&C+-$HYJdhuCE6?^dqhf2m9&q0BRI$%iH^J;nc8|_j9gf_EAt<$u2Un+TH&?> zGU2!?AOh7@9j2;C9j2%BAD_WY3#1G4>4E$9wH;;Kt*lgvfk1)iv-iI<-KJ^}8=F~7VmNhmd3Y^G}oMZB)+N)pGoMxIEu|(&*blwVK-@|2%2l8D~(Z1TGJx zBynZ6nQ~G>_a(Do)!NE=p#~RZE4WI?np;f)@&#WO<>w+IW9vFzTGS~%NJ8)NiaEl0 znS*GP6;X?Uh7pj)JP~WSRA?P09KqgI*N2U7_fokJBxf`(a*JU^ zo27^1`VIPuvEr_X74Sy)+riiH1WM6+8WuA=2Y_HR4>1=vO8(^9BKd1&EPk&xO@i9m z@P1rDZAOT@m%$s@sC%AXMwJ2}dq~YvA6VZ`@xYdLrm~6}mDfMiR_74--U~VYgH8}! z_w6{`pSa-6tZ#_WTU>e}G99HJ+fw?&b{cZj$wN=nJsS4ii^%l?AF^WhST^5X|Cz$5 zi))P_sQa^+{1~yI_I+Y(VNis7t=ntGOyJ2jvOhoQ<1DCmde?$5ILA6N^2wB$ojdg5 zggSUn1q9vUPJ`!caJ<1QvelP@}2F zYv{?`TTe#JRcH=ml6=zcfQ|Wg}s-q^iR`)1~s+f z4G7^VPHVp)4zc{H4xq+xo!8tFnmm$N_!G0BC<=j%`e^(+C+?nw;lGprZ*#f{2h@0N z{Chz=5%z60CG#W83F!!8_UtU9VDB;5;239;-M3>YOa|THenWr zZGYBMCE(eDTmRx6G5;ObBX8calAfVTH7s6Ip&%7J>6X7?qV%kr-5;~a^wMQJ8*~)- z!ItKhTrl33aH`@{-s@^qsEEW#!fM)Re!Cs>iM(ANswgOR zju%_j)0oixBLD|Zu~xb=xAw7P(2!Icr|fT#l9LhB3X-!#nQ7}~=$e$wKkJz$^fqid z^*gCViY^j6j`9%$C4vVb431d+*qow%hHfUA8lIO%T7b6eLtvN7a_~%6O0OR17byOu=rTJP@EGpLM}~{#On6a-ab*l8JlwB69YOyx-DBx zHbB(KcBkqvsev-m5TIZuW|EB{U1ib+wqNJaQFYC?zO;6aIqChiG|yCH8bHAk0kt9k z2K6jV!TBG2s1-Z%`iru02fT|ZER4pkn+y+lTs7s}5##fQCuvK=0UrdteU{eUs7tj- z^Rxz_4wTrnuEWgF_5TuDaTu5g12Z|y>YfHpG$qiP-`$u)Bg=AXTBpD#B2d|2M}5t` z8>!)&4gCXkL~(<+dF4iqtQ6cWl(EMb$A zMMWTxJK=N2SZaWY%nv26W|0($x(7DDUTfZn6zya%5feUp>Zm2}$>Og)^cAf<|7M~y z{L8llR_RZF6bUZXwEFHuzxxudT5lid3>N&mgbe{k;(g8~1*70oFMZBgX|UBltnU{I zt5~r+KLR6-f)awQZ5|GIJxkX!J2X3i)ENO9TcL^qI3MPec|4+L`iTeDnkr?8=R+0r zK}2e(5XgUEz4!czUT{DY6AQgZtI#$ETzfJor<%o52DY2IvQ>Y2$$Oh^#KDaFC*qqGlydl*roa_nQrTPC{=9zXYeE%Z$f$`j@?&gVAIO(c;+ zh!|=f(vydZf*!vAEtJfAUe5OWA#NsOS~nts!L@kD_hl zEE1L0ejYSGR6M2!Bwn*}zvvP&Y#$J20CL}OVAlQp<$f&nmY3*2XG%ty8R%FF}1|GHG0T5vowMl0^FkN-r@wiCNhHAU5(KIJD`iyx4AU+HD_3)!opy_adv ziMv5wVngq+oE@~`M2q?Re>OVElg`OjZ7_6!gXd8e9N`hScTJ#QQ^P3D8?Oj`b8V@s^k?d zzjgpQ(By04r+dbFAXAk0)1H4@`FS6dN*Db+^HaOW^7X#jJ@yM22o$1|ByhkisEvfI zK>L>aY>&cAe%cD=KjCoyn{c;Gh)E{H5`U5hPySS$(Q$5&b}X+ly@+m#k`2ChefP4X z`En;g9`GvJjRD}Xo`xF&;{a8@9gzor2O=@)k*g&v+rK>J@X<;J-?j1UxAfld-*ZU!H8D~R^@UA)cNbw&H15Q_#i!^`Oj{4El#F|IG)i34-vPm z)s$aZboiGJ6{Y;wsy!3=jE?b8g@&b@#ZFRwcKX75w`1$D2(Yy^%P<^F@$!k8-I#Fj zbh|X69P`yieBV)EoQ!PA|9l5JaT>MgLhJoE8fu64z$CQ6je@~v&S>CJqW}#@c>A zF>R^O%?uA?B`P*8M`EuTjyO)wY@$bT@B6GMhbPV}4opa^o!S$Rah zB9R+?=iY9vFSVs%A^~{^LCT8Om4|51wVaZ|DAVJK?SbrdSCi>x3+x@#-=8LNxDX>WReKD%eyw3?DG(tsZbd z(W*BTl>bu2zz@to`RmTBNbV1;?NY7C9<$ZvizodC_=k1+$^`;qUF{n)!-yHDPCw~S z^2Yp&TAzFAe{x$AYn;092faE^+Sm&Nh=*%p8&HFdZ^Ygv0OZ`{A6I`}kNl1~?%kpz z|3U<}RGh_CdL#2C%*ABOKi|dBxJ?ANwN{x+AuoGkRq4(gdB|e$>jM;s%9q5(s(r8X z$L=f`YtcB|C5?ZZW#+JTAvy(4g9=$%=zkUKc z{TqpL6b&I9Id2NWhxDr$aS>A!K6t_kr);WD??4JAEka_s&i{ycb z5%VWsu-sAgnjT!$0dk=SD|40Lqd?<*`Uips_qT^e)q~ulmyC&;Qgseu%+OEX!S{Wa zTYstK6-G-UNL-M`ulN*$s?ETBS%tO2ml2yymOk1(6~g%K9!67BnT|@W+Qw;=$uDRfhCB$GNntA`Y^mNo6Blt`; z<2BjlO7YJoe8Ydy{BLF~H5;mR-y@J8!un-Tg%`rmpSHTU#E8zCWr{LjIl}wZ2*#eW zb{qzv^m*J?Ma^7a+-1cFGWn(@9WM3>w~DB*)+S$gAmV>KhX0^lxBHxQ!fgyU78d0! z?2Qk}vv2HANc^O4Xt$Nn2*HX^FWta5%GT?v-neBJe0RJLm)Qiv0lpL%p~u7G>vBqQ zRxc9qy#DrT$GgvI(DgXqxp|BjdtAWHFlLdakRWH9*1v51*c9>N=$1E& zm5zR*-bQVt*LaFlxZ}($5FlCW0WE;IpsNMy$W%V|trG`s+D6#6_9!v=btx?jmE$wU zifABpBnAbZ#xC~M^;2O;TD=}X0<&st_7AdrP;@$VOr<#fB{k^+gpJ?Z#7^l0^a($O z5D=Np17U9rqtQ*xxy`o5Uz6EG0^8gG`d?ddP({_mr?J(}GCOia zyE$z$V`oV+aVSEIc+F|Uzo|QZ6L)IK#~&_pn24w*Pm(-KNau-T;*pq(6M6bhkOCUu z`o%E154q zEG`XQfFEA{bJc&yM1 zE<3ZCk6xU;lAo9BT`294*WC@(n3N?74zK5gA7^Zh>1rZhpv;? zrtoeDh%*EkLin=R^4qRDhBt|`^D1C6_t73#!GD)3#MW^E>PZ0t`$9v=L2yPacW`W_aU5G&Gn5ybgiclpDh0^KyaSKeisq7HAhLQ_9mF4BMia}Dryc)3O>Y7V7>OO1TlyVR`xAF~ zalDBKckn^8-AIC#S8kp*!Dm=#K!(7kOVXNW$1q#JfUpyT9zm!u@qaChj`0*@i42E@pVy9Pn=s;s@Oo3Qegf~q! z9R|w+?oAZ0DShrtzZsCl!zi#|R$TNcq{~Nb36C!xRrk!Ki4j>10!LW-myX5E&2~k+ zmw4&XoKehNxc55%m3~Z_B1VEjf7;Hr4Jp z5BHFH{I=;%-nbFS-X7kIKi^*}dH|5cmiy$|bw(s|ve^Xs9BSE|brCUlGuJn2T68xG zHSEfC;44q_;Ps$5F%PAgijfDU-zb7m^>D{{wUYPFq#P=uIo(4I-cMvdUenV1U(s)W zAjgB1AAPFNc?ITPPiXiq`%?Y}Ikwukp6@K{DgO7kCKTGY=vC9DR0B6G+c!%I{&fzX zIQW42Q!O*`^vj%$Gs)AvQPfkNs{-Z6dSpubwM4Dz_N!|2mJFqcCxZ%a;yfDi0a1El=!Xd5y7gvgg)hwp5b{sM+papE_IK9p&; zwAcK=rSBRPmomnt8#*eJ~Nek<+c{W$LW|N`mD$deoWaXx854K zL#`vgXXOL#5&W=r5H>ddK@6^Q*AcS~v$XU(Nc*|$rCPqFDM4|T=sYEVysipDUwwTnKRVxb{qi7Y`Kf=~q%`%*FKN)A=5 z@ZUJyidjmPcjbkPAYTw63VA7CJgLg>KV-%oASAt(ISD^n2-Kabdx`#jxTc40WJa8h zdWIInIsS-8l>r4lJwz&O#*{1(6T#ZhEnTSvvOuofX8#{;z*l%=< zHL>8Er>NB>B3`4eCgM7K4iay49m9xX0^om?J6uq!KiJshR#yVd=--q7{ub8dxCsqc z3u_ID2m^qV5|M^Ds6>QQJsIRdTTlKIsLfw1R9@GHqUIZ)zj@e2L(+V)`te}tbiL*1 zAHN@FMdaNwu9K&Y`}jtst;nQU0rJHAT2Gm(I7}FAW|YI(ji@=6;MPe>5%TuZQt>Fe}2CQ|Bmav zuM^MfoO7M?ynCE_XCc_Pu(4ydBxmN0k^o%7h1D~NW_U5_6| zI((D%6ERc?o>%E|Sw_=?pcEVrY?^VA1cH2j=H~)TF{tY_t}TEStU)ODV)(|DMz&kM z$~p=FH+bHCE^qPM#(pk%)2IoJrX_HF{qb2s@T~Na5(G0*^f_PuYp{HGN%xA>>-z++ zf`J^2iQ@Vy%o4;g;jnu?q9hMicFVTH7e#(R&56`a(x?)Vx6QOQk^yXP_j87`9IS}J zW$BWLvQlAO`{tp}Q0U}c#-&4|P=f*a_|+Cm%~OU~hk!G97Nge&knTcmrtys*BV&=w z3CwSL<=2)jU&QCc1%W^ItQ#rZN(H~UP$S}Xt0GQ|ea$_SL!>#cU2h5fEbHu;MYM=-jX=#2PBe8A7+H{R8kzv6KPwGF7mLX5Z_x%y&@ zyS&M}!S4Qzf$y`?tH{ZH4lZh?R07Oga6n>6V2rKp+=HAG8D|Zc6E_b7&>3|?pS(IL zPL{e6*&2`8{6q&E-#)m;02D>_FN%?NSfb6O zg7@vlOT*b+y$qA6Q347?$ZHSgs0j>P_oy~#$xHagtnzEa`RVTva~x%!P4~0FgBDad z+lOuw@jOKg_k-_L@HAlN8g6E3XU4cy9Qr#vysygiUdZT=OpcqS_Z}?gX|hYnKQ~N# z@T^>9#Jnf(i-ZSViyO7as`x1ic(X}qkSt*p_87;4qu>ADH0k%I3;|B(?mg`|2*93^ z^P~Dz(d-dJjGqGKT+`l|gOxRrn62(6_b+;%(@S%=pEIJo^SAFySLP!gI~ANYI%2{| z5cg2T@b>4jo9yCwMbbn-%|o)3wcE>iL>XoE1>$$?Ai3!WCmXlR!a9AK>rcT%Eq3^T zK{dB4f>bNOkATIqSU5`fYjZnSx6E{pZrPPYD#>i~yuPf7rf+jG6`!emp zAuJiBF=QSSEX=rz$3vs{c)>Z2#>WYEir%Jh65RM5xrIWGKOB^ZF-sFf#`H&v7f4hm ziqSBMsb(j>Pvf|0rZy)is9%V{w*_e1;UZ<_gW~7OxGJ9L7U@#5-%C8oo{)z-ik=-| z2>3-0{hZHqGaGo(Y3Cum-C6Qxd>D1uCfSy~?yuaL{B?{;Kk?Cfl<*dAO4a4z)#0%w zR^m@)nL%##?4O`0A*B^ZWI#o2Nv%Q>JGmDrrfw{+7^PS`>8cQO zMfE826S{|a#V3DGE9kFxxvuqls8l{NnQ1W|ejf}7z46;Zf^!l>sc+)^GQjhUfr&k*J$ffD&JIg{921fMex?xqECyVDso|bgCEJI4 zqgS5Dd;1_D9VYtqBJ)r6m%3KQ(B`->_6ba!ViiGR#1hMF&&|WKwa1cQK1FuB&ekWL z%wUmkeT2+axFmA9*CAsbkw_g+B-k-M%$|zU@kQPv0{e>dfi$DtphBVp(oa8#cTxa% z&?Q_2JS%PF8O}6CIeEuoiF*YCi76+^BTIi7DL|L+J0~!d)5Nm9tUX7ng6TLbDin2> z)j&=HT2^k>fK4BXPE;&1Z zY$%FAl|~%v+vY3J_tXr^eKZlLu!nDJ3Ei^#L^`g%2ps%a*hNmRWP8L-cbW|0eK+kV}|mi|4Y zn($rSUhVz4<?^T_O>a zDVQsvUJq#??V-x9@RzkI{lY)bVKgOta|@}ZzZE;4!9XnHV)i+JBtmhFcrU@X07n{# zE|NCNSs=nY^n}S6Q+7zc%)qX1Z{MiuG8b)}zzxMpk3=~G(gIhC1u`M#E7FN|SM%`F z&F>;YU(9t7r+{~Vsv^b%EH5%TT}E_E>?OsMH)!`$*DyZjBfpCfIpMJT?DmW++~s$# z8xtwZJ7uuzNR9pr#T4rck#52KT@sqoSPvo4zu~+6b*QHT_rUAW&ym-JcI~g5r#elOvLp54IsRN0YRDO2+GyeE|x$@~L zeHL1ZunVd7APsZke^JiWaKR73%EdAh^HgSJN?f$^wb|JCt1#rt z$2;LhUh#u9{)CYoYQpn7Q^l7_87@Bz-s1zd{mI`NBN6FGG$PPMKLx)qc{5Wo3uNfp;FxeX&7d@juMCrivZf{kG)ED!_l8yM^4x3 zG8^scAJ_4GDU$=W>4nUa4u6I6Z@eS<5dY3bA@+EozQBJkK-Pn2?^!kp^E!QIKhJV1 za_Kxx9IO-(;m`CuP+-Cuto9me3FiKdbkfS^<^VkR<|<-dg`$Sav*89u{uLcNJ@Hpk zVfagkI}=wvi?SFQIUq=J5eom-eQL+i_P5bn{@(O}N z{JbMx!!R~YKq4rh{9smVoaSH6OmjF)Nf{)!^1L-7klS|5IHk@3dO|4q>2Ii=eW8op z`Je-3txPI4`HU^wFh6(^Mt3A^1-1Q{Cv$4c9gAXp3>uXMLmU;Bzv?Hon^3ox{F z=DW|^7eeNz9dFennbp3AiEp0g4@kb|8n@S(Ellg;1KU3R!aEo1o*|WXIm->%v&s`P zWyPqKj@#A{9wZj^5HF_yR!W{%mvv2aJuf1vp1AR;yuUMu(YpSt$bFNT7cfE~kQ5T92Rq0zJfReXK?zX-Wm&APY&?C6(Z`YxSB zW`}&f6@xp3)w+OW9s!+x5BHmu&>HDLpq&M8S&UUjK` zn%6{#(BD-!eh_tebEqMq*Ftu;F&;C-E)w0$x8_E#DoZ3?a%Heu^a=^A zQzMaEp*)P1W}F8kU=6O`&<&rrji$9reWM7b&447{X|jq4o#M8o&7ynh$V32+Dx49G6dj<_$jK*bKwWK7DtP4_I1Q4N-V=)4THgfV$Z4rQ1gUS8RGBK(WMj zr)J?vY3e!q>b@w?^w)6X_6aBz0@r-)&?|nx@4I|o zkkOu_Kz)|^fHZK^ai@=bQorhpzvAp4OG6TUt#(u1Rn}YXhybh6*pUMwqKnTFF6xXI!KJ&#Nk}!jzV;3Yb{;+V#x=G=bD!v9H z9h#f?xk&eR*GX@h`%`NAgRjiH6{%eid6%D?57zZafc&j~M?BAN zBPf^TzgXjimIC_Os8j1G5>^R1_9hRW2VV&0D(Ft>^I=I!6h`j)54|ahn&TiSV$0l% zJDct^HTS^DDQLI*d%|Bt0#aQF%=G03($W&)xa!+^Qb2;S@C<<*n97;nw)v`SMK$*X zUJS*Ae3qz`zrRgsuku~)O=4FpuKARStN0#AnnKVW$l3zsbpIfhLRgfNIwIG zR5xiaTE~AGrs%hg$^ae`kYhzFD?Dn0VY_Nda9WxkVUjg{p98mF5>XLn&IQF{E3R^& z8iK{OdhH!xAu6w_2iJvkEcDfb_z=z9HN$tWi`Cdq{`DJct*=a#D7hshS-2L>9LxW?TlX&J=yl z4VT9w4Mm~Wo)9{dE%Pbt6T3Db!t>@857a7QXzJ;_f`pS1?uFA+@-_gPH$VH>9 zXP6_ZA|RU^on~5EEKXD?=J=u-@QZ| z5=zNHi-$+MXR1d;wG`b&De3kUJ+7f((=q9PN1W_zmr z^CYA=)%%;T?%HdlO_0iuy9^J+N zTYFupb+x(lf)*Sf6m~5oT&DDh0quuC z<*%IpC2VAX6K6wOx@{&=or)!<$rjK|CEYec5TL8jTK;dQt7$u1;A?t0BP8rX z%Aq2=k#nVFA^pXkoJ3M@Xyv~b@?OPh;BanE6lsg2Fxc=VNYq%@hH1hxUq6V_`r8YG z?P9@=7*R9Mw?!aeG{1X)mUfK~%-`is3rlM~y2nz=n<;&CUrAy?X=5ogg|myXxY0r= zqrbH%yT_lm@j)Srefqnn&Mbmwobt(0DS$oOOIszo+@Gbu$R&Y^*t1>O^bKBNj0kVN zk2{Q+x&pLA@V7*iG-IZqwv_9B+0VC8bB33x8IXg7H(jZiJrv3KXr{=PS|iu+-pZ6i zFm8fY>eA@5u@M@&=%gY1USo|pAa&FiFx%fBjQ0U!R}_SKccKA750A)`6sZ;wL>B1E z5`K8GG@A0gv|ja|k=C}aGAJSwA_4bWB5OG$pfDT9)`AU8_T6Nx=|{|4a>9Yzsy0Cb zqqD<|akY~j@{Ag@>)N?STBmBLtb==UASm}n^l`PqO@b55_rwpm1k8~ zINfqU?>#Gze8pPEUTwN9W7}8Jzn~p7bpH+^%!}GhyN!2z+c2;hRh^RAfxE-twK9k^ zrv{$i-ju20z-Fq*QWGxyTN%`S2)X0|!@#7M*)VY6L8NQmmK0fJIt78Y`RBR@|G63x z!^XTG_|zRG)=ZZ&W>D!r28n)arK<#etr2Y9`Ot_5Bp7*J5lG*$r#E1_M+Oc3g&btk zqGeS#{>^x;zew2HL_%b1PR`2#B&>m4^8W8p0C4%Keu>~UCrg$7%yqVBj`~&XKBeb1 zLCu9eO1Ny#?{+ZByc$kS5q%JyeULaj61# z`=a`9_BJ3ri(B_^G!?tc8$odRD+q%_KJgUZFv_%2*3@ix@gUA6K>iCI9_S2Uy>OS8 z>aUlUtC(OpeJQP*D^nL6Qqm(;6FKQ$ru>pu^TOGmvV4mh)sME9<|YEg-}>yzgxF2% zpUkUM(YxP6@LS#dy4PfS&|m&!CTa1QPykg^jaMky0UQoL%=8YIt_twC@6x)Sowm*3 z+1i@XSX@X1jh)F>Hlm>Vnz2z;0%Xl{=t>|{AM)R?d z((l}3gs(v)FB;=NHr`{RZ1#Q4+0@7O(qIS`kuM3v5dbaoaHE#vXv0&vB9Qc8v8FF; zp-Xt7#hDg^gIf>iIf~ZpCHigDaPvO3E4WEUO#)DVloN<~pv{Z-$?pAN4@0_qhBnAI7-z}gR>7NCAqg8o(UlUvvF%EnwH&AfnV zNs}tPhAa=Nc6zdEIfLKwIkpg@xFj=4UZ66dP?65NpA3ZSqGv<&EKW@5ZXQUy@8pwT zu{Vmn$Fou$+&%JLR0$RjDVa$B&XDx1q`3;0opS68PpTS}=a~^YZtCp|_Y}U|$2CzQ$OUzGe)DKS zH90^o494db4>db|ACzxr2JOYWTxuA($FM)CN;c!7#wW+l92^8b(0Z#A^8v;QtyLGf zM??fs5Fn;m$$N(W?fCO#6s?woNavs*pMNzg(xMvaM2LM1mS{q@2iAOR&9 zAshdI0+}oz<&T;Ez>a*=x4jOjQogT55GQvbV=<|LCB$|$Aw1_z{Ii&(0W)sE6CF*s z??EXe5flVP8>ZaVgD%#8_ds+5qEEGwwXheU2{e08L%9Pq^+&8%IomZ?AAYz5cnepU zyb>*<7wy(VOlGk9qw!rYOQp^R#KdR@EQtZ%P050%{mV>PN22BRJpKhmgH=19jmLp; zU6dGxZ;Y*w>aEVl^d%ah(22N~PfkxXOSSMGpEo9S{?ir&m5TZo>`dpLyvOpQXJYea z8lK?EDn08|)H9K@kYZutd-QEHg6^P~k*eLA1IS_f_S!;M6A49npIe2=sNxW%8KOOX ztXB>2H#o}}p45-+#F`p8RKH1?MEz$)nov;x6pq(!BuXAd1DVRrvoy5AM1~4yYtT=W zvwrIep7458*C3PY@R#gOGdM$3n7crZlMrEsM+E~fF79S{df>(cpAs@`kCVG;Z+&`Y z%ZUCiT%?$*-!Gn-a&b*)n2LQK4|k7hVhg6;TvbdD+c(;`8ZM76d3WIZeehLz?Z6eH z_n`BIg=s8O?A~+6zjQEjQ%yKD{uQ=N8m9$=!;B$HoP-8ztyQ4N_q!Q!d7i8j#x@!` z*t1+MvYX(O5N~xT?n|b|jSJ~azNGK=b-3m~cl#)Nv5(X41(%x$c~YPTraBdsFBY

Zm-!Bv9n*Q!jo(hT0w{eq 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 - - - - Identifier - com.cocos2d-v3.4.Cocos2D-iOS-Template - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Ancestors - - com.cocos2d-v3.bundlebase - com.cocos2d-v3.iosbase - com.cocos2d-v3.cocos2d-base - com.cocos2d-v3.cocos2d-effects - com.cocos2d-v3.cocos2d-ui - com.cocos2d-v3.cocos2d-platform - com.cocos2d-v3.cocos2d-support - com.cocos2d-v3.cocos2d-ccb - com.cocos2d-v3.objectal - com.cocos2d-v3.chipmunk - - Concrete - - Definitions - - Supporting Files/Prefix.pch - - Group - Supporting Files - Path - Supporting Files/Prefix.pch - TargetIndices - - - Supporting Files/main.m - - Group - Supporting Files - Path - Supporting Files/main.m - TargetIndices - - 0 - - - Classes/HelloWorldScene.h - - Group - Classes - Path - Classes/HelloWorldScene.h - TargetIndices - - - Classes/HelloWorldScene.m - - Group - Classes - Path - Classes/HelloWorldScene.m - TargetIndices - - 0 - - - Classes/AppDelegate.h - - Group - Classes - Path - Classes/AppDelegate.h - TargetIndices - - - Classes/AppDelegate.m - - Group - Classes - Path - Classes/AppDelegate.m - TargetIndices - - 0 - - - Resources/white_square.png - - Group - Resources - Path - Resources/white_square.png - TargetIndices - - 0 - - - - Description - This template provides the minimum setup for any application. - Nodes - - Supporting Files/Prefix.pch - Supporting Files/main.m - Classes/AppDelegate.h - Classes/AppDelegate.m - Classes/HelloWorldScene.h - Classes/HelloWorldScene.m - Resources/white_square.png - - - From 1964a8161006d19091700c0e971639eb0ae4b598 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 23:49:10 +0300 Subject: [PATCH 35/94] remove dummy files --- API-Index.md | 3 - AUTHORS | 3 + CHANGELOG | 1819 ----------------------------- VERSION | 1 - cocos2d.xcodeproj/project.pbxproj | 4 - 5 files changed, 3 insertions(+), 1827 deletions(-) delete mode 100644 API-Index.md delete mode 100644 CHANGELOG delete mode 100644 VERSION diff --git a/API-Index.md b/API-Index.md deleted file mode 100644 index bbc7c352c99..00000000000 --- a/API-Index.md +++ /dev/null @@ -1,3 +0,0 @@ -This is the Cocos2D-SpriteBuilder Class Reference where you can look up public classes, methods, parameters, protocols, constants and enums. -To learn how to work with Cocos2D (and SpriteBuilder) please refer to the [**Developer Guide**](http://www.makeschool.com/docs) -and the [**Learn SpriteBuilder book**](http://www.apress.com/9781484202630). diff --git a/AUTHORS b/AUTHORS index abf4ca34000..8bdd132651c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -15,6 +15,9 @@ Lead Developer: People and companies, who have contributed, in alphabetical order. +* Andrey Volodin + Drives the project since 3.5 + * Andy Korth Co-author of chipmunk (http://howlingmoonsoftware.com/index.php) CCPhysics diff --git a/CHANGELOG b/CHANGELOG deleted file mode 100644 index 6e1cd46977a..00000000000 --- a/CHANGELOG +++ /dev/null @@ -1,1819 +0,0 @@ -03-03-14 -Deprecated, as all changes can be found and backtracked on Git. -/Birkemose - -version 2.1 - 17-Jun-2013 -. [NEW] EaseActions: Added CCEasePolynomialIn,Out,InOut -. [NEW] LabelTTF: Added support for Shadow and stroke -. [FIX] Actions: TargetedAction # startWithTarget uses correct arguments (issue #1488) -. [FIX] All: Compiles and runs on iOS7 -. [3RD] SpiderMonkey: Updated to v21.0 -. [3RD] Chipmunk2d : Updated to v6.1.5 -. [3RD] JS Bindings: Updated to v0.8 - -version 2.1-rc2 - 01-May-2013 -. [NEW] Director: Added popToSceneStackLevel method -. [NEW] LabelTTF: Can load .ttf in runtime without adding them in the info.plist file for iOS -. [NEW] Scheduler: Added 'setPaused' / 'isPaused' property -. [FIX] DrawingPrimitives: DrawSolidCircle calls lazy_init() -. [FIX] Layer: "swallow" is now a property. Can be changed in runtime. -. [FIX] MenuItem: target is not retained when using setTarget:selector: (issue #1482) -. [FIX] ParticleSystem: renders particles OK on device (issue #1462) -. [FIX] Progress Actions: "updateProgress" is called after setting the type -. [FIX] TileMaps: tile's offset property is used -. [3RD] JS Bindings: Updated to v0.7 -. [3RD] SpiderMonkey: Updated to v20.0 - -version 2.1-rc1 - 20-Mar-2013 -. [NEW] DrawingPrimitives: Added DrawSolidCircle, DrawArc, DrawSolidArc (issue #1465) -. [NEW] GLProgram: Added 2 class methods to create the instance -. [NEW] MenuItem: rect -> renamed activeArea. If contentSize is modified, activeArea is modified too -. [FIX] ClippingNode: Uses glClear to clear the stencil buffer (issue #1463) -. [FIX] Director: Only create the statsLabels if view is not nil -. [FIX] EaseActions: fixed rounding error in BounceXXX and ExpXXX actions -. [FIX] GLProgram: If shader files are not found at init time, returns nil and log warning on console -. [FIX] RenderTexture: returns correct value of contentSize - Internal sprite sets opacityModifyRGB=YES (issue #1464) -. [FIX] Texture2D: Logs using RGB565 textures only if RGB565 is being used - Fixed deprecation warnings on iOS6 (issue #1467) -. [PERF] Uniforms: small performance improvement when setting uniforms -. [3RD] CCBReader: new version of CCBReader (which version is it???) -. [3RD] Chipmunk: Updated to 6.1.4 -. [3RD] JS Bindings: Updated to v0.6 -. [3RD] SpiderMonkey: Updated to v19.0 - -version 2.1-rc0a 07-Feb-2013 -. [NEW] Actions: Stackable actions behavior can be disabled at compile time (issue #1461) - BezierTo copy: works as expected -. [FIX] LabelBMFont: setting color of label and individual chars works as expected -. [FIX] RGBAProtocol: color and opacity are propagated if parent has cascade property enabled - renamed methods: cascadeColor -> cascadeColorEnabled, cascadeOpacity -> cascadeOpacityEnabled -. [FIX] Sprite: color code improved. Removed 'unmodifiedColor' ivar. -. [FIX] SpriteFrame: rectInPixels is calculated correctly - -version 2.1-rc0 28-Jan-2013 -. [NEW] Actions: All the actions that modify the position property can be run at the same time. - MoveBy/To, JumpBy/To, BezierTo/By, CatmullRomTo/By and CardinalSplineTo/By won't override the results of previous actions. -. [NEW] FileUtils: Added "filename lookup" dictionary, useful to alter the name of an asset in runtime. Useful for cross platform -. [NEW] GLProgram: Added uniformLocationForName: method -. [NEW] NodeRGBA: New node that implements opacity and color. Sprite, Label, Menu and other are subclasses of this one. - It also supports cascading color and opacity (disabled by default in v2.1) -. [NEW] OpenGL: CC_ENABLE_GL_STATE_CACHE is enabled by default. If you are migrating from v1.x, then turn it off to easy the transition -. [FIX] Texture: PVRv3 textures automatically set the correct value for premultiplid alpha -. [FIX] Actions, Animations, Camera, Director, Menu, Node, Particles, Parallax, Sprite, SpriteBatch, Texture, TextureAtlas, Transitions: All ivars use _ as prefix, not as suffix -. [FIX] CocosDenshion: Tests moved to tests directory. Merged CocosDenshion and CocosDenshionExtras directories -. [FIX] Configuration: Can be initialized before an OpenGL context is created (issue #1450) -. [FIX] Director: replaced lenght with length - Fixed 2 memory leaks in createStatsLabel - Frees DrawingPrimitives resources (issue #1456) - The 1st dt after startAnimation will be 0 (issue #1435) -. [FIX] EaseActions: "other_" ivar renamed to "_inner". It is a property now -. [FIX] Effects: ccGridSize is no longer used. It was replaced by CGPoint and CGSize - API fixes: The first parameters that is received is the duration of the action. This is consistent with the actions API. - API fixes: parameter "grid" was renamed to "size" -. [FIX] externals: All JS related projects are in the externals/JavaScript subfolder -. [FIX] FileUtils: Suffixes for iPhone5 are: "-iphone5" and "-iphone5hd", and not "-wide" and "-widehd" -. [FIX] Layer: _touchPriority is an NSInteger, not a BOOL (issue #1449) -. [FIX] MenuItem: "releaseBlockAtCleanup" enabled by default. Rolls back behavior from v2.1-beta4 -. [FIX] RenderTexture: Restures the Projection after using it (issue #1425) -. [FIX] Particles: Adding or removing particles in runtime from an emitter works as expected -. [3RD] CCBReader: is a submodule in github. Using lastest stable version -. [3RD] JRSwizzle: is a submodule -. [3RD] JS Bindings: Updated to v0.5 -. [3RD] SpiderMonkey: Updated to v18.0 - -version 2.1-beta4 4-Dec-2012 -. [NEW] FileUtils: Supports iPhone5 resources (-wide, -widehd) - Option to search "resolution resources" in "resolution directores", instead of using "resolution suffixes". - Option to search resources in different subdirectories (good for themes, cache, etc.) - Add method to search resources not associated with any resolution (ideal for music, shaders, etc.) -. [FIX] From cocos2d v1.1-rc0: - Animate Action: Works as expected when display frame rate > than FPS (issue #1438) -. [FIX] Actions: Fixed CCRotateTo, startAngleX now is modded similar to startAngleY to keep the rotation values the same -. [FIX] CocosDenshion: Mute can be called before loading a file (issue #1434) - By default it uses cocos2d fileutils. Define CD_USE_OWN_FILEUTILS to use CD fileutils -. [FIX] Director: fps_images.png is no longer needed. It uses the image from a header file -. [FIX] LabelBMFont: Fixed bug with newlines and fixed width labels -. [FIX] Layer: LayerMultiplex can be created with an NSArray - ivars use '_' as suffix, not preffix -. [FIX] MenuItem: block is no longer released at cleanup. To do so, enable the "releaseBlockAtCleanup" property - ivars use '_' as suffix, not preffix -. [FIX] Templates: sets the Directors delta-time to 0 when the Application Controller become active -. [FIX] Tests: Box2dTestBed: Using new API for touches/accelerometer - JS tests are using a new repo: cocos2d-js-tests -. [FIX] TileMaps: Fix firstGID parser issue for new version TMX file with external TSX file -. [FIX] Transitions: Fixed possible memory leak in some tranitions - Events are enabled/disabled at onEnter/onExit preventing possible bugs -. [FIX] Particles: "unscheduleUpdate" is no longer called at dealloc time -. [FIX] PhysicsSprite: Can be scaled up/down. AnchorPoint works OK. -. [3RD] JS Bindings: Updated to v0.4. Chipmunk-JS + cocos2d-html5 is compatible with cocos2d/chipmunk + JSB -. [3RD] SpiderMonkey: Updated to v17.0 - - -version 2.1-beta3 7-Nov-2012 -. [NEW] ClippingNode: New node that let's you clip objects inside it. Check the demos! -. [NEW] Node API additions: - Added: removeChild. Calls removeChild:cleanup: with cleanup=YES - Added: removeChildByTag. Calls removeChildByTag:cleanup: with cleanup=YES - Added: removeFromParent. Calls removeFromParentAndCleanup: with cleanup=YES - Added: removeAllChildren. Calls removeAllChildrenWithCleanup: with cleanup=YES -. [NEW] EventDispatcher: Adds support for gestures in OSX -. [NEW] Layer: Added support of gestures in OSX -. [NEW] RenderTexture: Supports "auto rendering" its children to the texture. No need to call being/end -. [NEW] Scheduler: It is possible to schedule blocks too. -. [NEW] Tests: Added 'JS CocosDragon'. Shows the power of CocosBuilder + JS -. [FIX] Actions: TargetedAction can be copied. Calls super correctly - Blink: "stop" restores original "visibility" state - BezierTo: works with Repeat (issue #1008) - CatmullRom: No "bouncing". Fixed interpolation (issue #1441) -. [FIX] Director: Fixed possible retain cycle with the delegate - Fixed possible crash when purgeCacheData is called before the view is initialized (issue #1440) -. [FIX] Dispatcher: Queueing nested events works as expected (issue #1279, #1410) -. [FIX] Director: Returns correct GL value for coordinates event in custom projections -. [FIX] Documentation: Fixes DrawingPrimitives doc (issue #1409) -. [FIX] GL Cache: when texture is deleted, it is removed form teh GL cache (issue #1429) -. [FIX] LabelAtlas: Honors the directory of the .plist file when loading the .png file -. [FIX] LabelBMFont: Does not crash if it can't parse the FNT. Instead it logs an error and return nil - contextSize honors shadows and strokes -. [FIX] LabelTTF: It is possible to set an empty string -. [FIX] Layer: API improvements - setIsKeyboardEnabled -> setKeyboardEnabled - setIsMouseEnabled -> setMouseEnabled - setIsTouchEnabled -> setTouchEnabled - setIsAccelerometerEnabled -> setAccelerometerEnabled - Old methods can be called, but are deprecated. - New way to enable "targeted" touches: [self setTouchMode:kCCTouchOneByOne]; -. [FIX] LayerColor: uses correct default blending function (issues #1422 #1423) -. [FIX] Particle: Honors the directory of the .plist file when loading the .png file - Uses Orphaning + glMapBuffer. Performance improve when rendering serveral particles -. [FIX] Scheduler: API improvements: - unscheduleAllSelectors -> unscheduleAll (since it also unschedules blocks) - unscheduleAllSelectorsForTarget -> unscheduleAllForTarget (since it also unschedules blocks) - Old methods can be called, but are deprecated. - isTargetPaused: fixed logic error - Timer: fixed logic error in non repeat-forever timers -. [FIX] Templates: Autoration can be overriden in runtime on iOS 6 - Fixed some grammar errors -. [FIX] TextureAtlas: Uses Orphaning + glMapBuffer. Performance improve when rendering serveral particles -. [FIX] Tests: Watermelon With Me uses new Chipmunk API - Added new JS tests for Chipmunk (Buoyancy, Pyramid, Joints, etc...) - EventTest (Mac): Fixed memory leaks, dangling pointer and logic -. [FIX] Texture: Improved assert when updating filter on NPOT textures -. [FIX] TextureCache: filenames are standarized before adding them into the cache -. [FIX] TMX Tiled Maps: Resused code is re-initialized in a faster -. [FIX] Touch Delegate: - CCTargetedTouchDelegate -> CCTouchOneByOneDelegate - CCStandardTouchDelegate -> CCTouchAllAtOnceDelegate -. [FIX] Windows: Toggle fullscreen does not reset whether or not to support touches (issue #1420) -. [FIX] Xcode: Fixed compiler warnigns -. [3RD] JS Bindings: Updated to v0.3 - Chipmunk API is compatible with Chipmunk-JS - CocosBuilder Reader supports "outlets", Animation callbacks, and improved JSB API - Better registration code -. [3RD] Chipmunk: Updated to v6.1.2. - Chipmunk is a git submodule now. -. [3RD] CocosBuilder Reader: Updated to v2.1 -. [3RD] SpiderMonkey: Updated to v17-beta - Added armv7s support -. [3RD] uthash: Updated to v1.9.7 -. [3RD] ThoMoNetwork / Fragaria: Removed. No longer bundled with cocos2d. - - -version 2.1-beta2 13-Sept-2012 -. [NEW] Templates: Support for new iPhone5 resolution: Added Default-568h@2x.png in templates and cocos2d-ios.xcodeproj -. [FIX-MAC] LabelTTF works as expected on HiDPI / RetinaDisplay MacBooks -. [FIX] Templates: Mac Chipmunk template compiles OK - Mac Templates don't include the 32-bit architecture - Mac Temapltes use "current version" as new deploy OS version - -version 2.1-beta 7-Sept-2012 -. [NEW] DrawNode: Node that batches drawing primitives (replaces the drawing primitives free functions ) -. [NEW] FileUtils: Added support for mac and retinaDisplay Mac suffix. -. [NEW] GL ES 2.0 code: General improvements in the shader and cache code. Better error reporting. -. [NEW] Javascript bindings for cocos2d, CocosDenshion, CocosBuilder Reader and Chipmunk. - Includes Javascript remote console - Removed old JSCocoa code and samples - Uses Spidermonkey JS VM from Firefox 15.0 - Includes JavaScript Templates for iOS and OS X for cocos2d + chipmunk + CocosBuilder Reader -. [NEW] LabelTTF API consistency changes: - "font" and "size" are always the 2nd and 3rd params. eg: - labelWithString:font:size: -> Not changed - labelWithString:dimension:hAlign:font:size -> labelWithString:font:size:dimension:hAlign: - labelWithString:dimension:hAlign:vAlign:font:size -> labelWithString:font:size:dimension:hAlign:vAlign: -. [NEW] Node: Added RotationalSkew featur (compatible with Flash) -. [NEW] Physics nodes: PhysicsSprite and PhysicsDebugNode are part of cocos2d -. [NEW] Tests: Tests for RotationalSkew feature -. [NEW] Texture: Supports PVR v3 file format (issue #1385) -. [FIX] All: fixed many English grammar/syntax errors in the docstrings -. [FIX] Actions: Fixed possible double 'fire' of instant actions inside a sequence (issue #1398) -. [FIX] Director: Fixed flicker again. - Autorotation works on iOS6. - onExitTransitionDidFinish when the director is ended and other "corner" cases. -. [FIX] MenuItemToggle: Don't remove tag of added item. -. [FIX] Node & BatchNode: RENDER_IN_SUBPIXEL works as expected. -. [FIX] LabelBMFont: removed forward declarations for tFontDefHashElement and tKerningHashElement. They are in the header now. - Don't assert if character is not found. Just continue with logging the warning (issue #1404) -. [FIX] LabelTTF: loads custom fonts correctly on Mac -. [FIX] ProgressTimer: reverseDirection properly releases vertex if needed. - -version 2.0.0 8-Jul-2012 -. [FIX] EventDispatcher: fixed ccMouseEnter/Exit -. [FIX] LabelTTF: supports multiline even if no dimensions are provided -. [FIX] Macros: CCLOGERROR defined in ccDeprecated as CCLOGWARN -. [FIX] Scheduler: removeUpdateFromHash calls [target release] at the very end to prevent a possible crash -. [FIX] Templates: Generate no-flicker-at-startup code - Improved Physics templates: multitouch and gravity+accel works OK -. [FIX] TexturePVR: wrong type when calculating PVR length -. [FIX] Xcode: Fixed compile errors and warnings in Xcode 4.5 -. [3RD] libpng: updated to 1.2.49 - -version 2.0-rc2 03-Jun-2012 -. [NEW] Added Javascript test using JSCocoa (Mac only) - ActionTests, SpriteTests (WIP) -. [NEW] Director: Added popToRootScene method -. [NEW] RenderTexture: Added support for Depth Stencil -. [FIX] Actions: CardinalSpline#copy uses tension (issue #1377) - CallFunc: fixed possible crash when releasing the action (issue #1369) -. [FIX] ccArray: Implementation is no longer inlined. Needed for gen_bridge_metada. - Make it compatible with C99 - Added __cplusplus #ifdef in header -. [FIX] CocosDenshion: Fixed buffer overrun while resizing buffer (issue #1372) -. [FIX] Director: Fixed memory leak when createStatsLabel was called more than once (issue #1373) -. [FIX] FileUtils: easier to override the search folder - Added __cplusplus #ifdef in header -. [FIX] LabelTTF: improved loading time. Label is updated only if the string is set. -. [FIX] Macros: CCLOG doesn't log the function name. Only CCLOGWARN -. [FIX] MenuItem: setIsEnabled can be called before setting the images -. [FIX] Particle: Handles premultipled images correctly - Fixed possible memory leak when changing textures. - Examples: Removed ARCH_OPTIMAL_PARTICLE_SYSTEM since PointParticle is no longer supported -. [FIX] SpriteFrameCache: plist is not loaded again if it was already loaded (performance) -. [FIX] Texture2d: JPEG are loaded correctly on iOS4 (re-re-fixed issue #886) - Improved iOS5 allocation bug warning and internal conversions. - Fixed alpha when converting RGBA8 textures to RGB5A1 -. [3RD] Chipmunk Physics: Updated to v6.1.1 - -version 2.0-rc1 19-Apr-2012 -. [NEW] v1.1 Forward-ported changes: - CCArray: new sorting methods, replaceObjectAtIndex, isEqualToArray - CCArray: equalilty is tested by isEqual instead of comparing pointer addresses - CCArray: CCARRAY_FOREACH macro is now ARC compatible - DrawPrimitives: Added new functions: ccDrawRect, ccDrawSolidRect - Macros: CCLOG logs the class/method name - Particles: The scheduler is removed on dealloc - TMX: fixed bug on release when parsing errors. -. [NEW] Actions: Added Catmull Rom By/To and Cardinal Spline By/To actions -. [NEW] ActionManager: Added support for pause/resume all actions of target -. [NEW] Configuration: logs in which thread the director is running (Mac only) -. [NEW] DrawingPrimitives: added ccDrawCatmullRom, ccDrawCardinalSpline -. [NEW] FileUtils: It is a singleton (easier to subclass) - NSFileManager and NSBundle are properties (can be changed in runtime) - Added "fallback suffix" support for "get full path" and "remove suffix" (disabled by default). - On iPad the default suffix is "-ipad". Before it was "" -. [NEW] LabelAtlas: added .plist config file support. Easier to migrate games to higher resolutions. -. [NEW] LabelTTF: Added support for vertical alignment -. [NEW] Tiled: TMX tile rotation is supported (issue #1350) -. [FIX] All: Fixed compiler warnings. Format strings changed from %08X to %p -. [FIX] Deprecated: displayedFrame points to displayFrame avoiding infinite loop (issue #1347) -. [FIX] Director: Fixed projection. ViewPort is the size of the screen. Projection adjusted (issue #1355) - Fixed crash when calling "end" on RetinaDisplay - Only enable DepthTesting is the view has a depth buffer - Does not raise assert if startAnimation is called when it is already animated. -. [FIX] Events: onMouseExit/Enter fixed on Mac -. [FIX] LabelBMFont: can be "init" without further arguments - Glyphs with big yOffset are rendered correctly (issue #1343) -. [FIX] LabelTTF: Better support for custom TTF (Mac) - Alignments and LineBreak modes values are the both on iOS and Mac. Needed for editors. -. [FIX] MotionStreak: Fast mode works with textures (issue #1358) - The initial position will be the 1st "new" position. Prevents "tail" from (0,0) -. [FIX] NSThread+Block: fixed crash due to block not being copied to the heap -. [FIX] OpenGL: VAO are initialized on the cocos2d thread on machines that don't support shareables VAOs -. [FIX] Scheduler: Logs warnings with better precision (.4f instead of .2f) (issue #1362) -. [FIX] Sprite: setTexture when Batched, don't raise exception. Only if texture id is <> than batch.texture id -. [FIX] Templates: LICENSE_cocosdension -> LICENSE_CocosDension (issue #1363) -. [FIX] Texture: If defaultAlpha is RGBA8888 and image has no alpha, use RGBA8 instead of RGB565 - PVR textures sets the glTexParams before creating the texture. faster. - PVR texture logs warning if NPOT + 16-bit textures, or if RGB888 textures are being used on iOS5 - "PNG" textures: converts NPOT + 16 bit textures to POT on iOS5 - More permissive assert on setTexParams() when CLAMP is used on NPOT textures - -version 2.0-rc0a 13-Mar-2012 -. [FIX] PerformanceTest: Compiles and run -. [FIX] Tests: fixed shaders tests - -version 2.0-rc0 12-Mar-2012 -. [NEW] v1.1 Forward-ported changes: - Actions: CCRepeat ends as expected (issue #1288) - ColorLayer: incorrect size in init method - Denshion: Background music fades ok (issue #1304) - MenuItem: removed warning when deleting item - ParticleSystem: prevent bursts of particles due to too high emitCounter (issue #1201) - Sprite: fixed possible setColor and opacity - TileMap: Flipped tiles can be changed during runtime (issue #1264) - TileMap: Fixed a problem with multiple layers and multiple tile sets that could cause TMX maps to not load if rotation is used (issue #1302) - Types: Added convenience function to create a ccColor4F from color components -. [NEW] Actions: Added ActionTargeted action. Useful to target other nodes from a sequence. -. [NEW] Animation: Added new animation format that supports delays per frame, loops and notifications per frame -. [NEW] Deprecated: Added CC_ENABLE_DEPRECATED in ccConfig.h. All deprecated functions, methods and classed are included by default. -. [NEW] Director: When the stats are on, the number of GL draw calls per frame are displayed - Added support for main-thread director (Mac only. Needed for some editors) - Added KVO for isPaused (issue #1324) -. [NEW] DrawingPrimitives: Added ccDrawPoly() free function -. [NEW] LabelTTF: fontName, fontSize and dimensions are properties. - It is possible to init one without parameters -. [NEW] LabelBMFont: added setFntFile method (issue #1119) - Added support for image offset in order to share the texture (issue #762) - Added support for any unicode char (issue #770) - Consumes less memory. Only defined Glyphs are allocated. -. [NEW] FileUtils: Added support for iPad RetinaDisplay files (default suffix is: -ipadhd ) -. [NEW] Menu: could be created/initialized using NSArray - Menu could be created without items - Menu could be enabled/disabled (no events will be accepted when it is disabled) - It is possible to change its priority on runtime - Renamed kCCMenuTouchPriority -> kCCMenuHandlerPriority -. [NEW] MenuItem: SpriteItem: Added setters for enabled,disabled,selected sprites - Added setter for targe:selector and block -. [NEW] Node: Added userObject. Similar to userData, but it holds an id. - zOrder property is readwrite -. [NEW] Particle: It is possible to resize the particle in runtime -. [NEW] Sprite: spriteWithBatchNode / initWithBatchNode were removed. Use initWithTexture:batch.texture / spriteWithTexture:batch.texture instead -. [NEW] TextureAtlas: Added option to not use VAO (might be a bit slower, but it consumes less memory) -. [NEW] Texture2D: Added kCCTexture2DPixelFormat_RGB888 to the list of "default alpha pixel formats" -. [NEW] TileMap: polygon, polilines and gid are parsed from the objects (issue #1311) -. [FIX] All: replaced some NSLog() with CCLOG() is some parts of the code (issue #1250) -. [FIX] Actions: Instant actions are trigged on stop and not start (issue #1305) -. [FIX] CocosDenshion: fixed memory leak on CDBufferLoadRequest (issue #1286) -. [FIX] CocosDenshion: fixed issue when background music looping was not respected on resume if playback was stopped (issue #1284) -. [FIX] Director: It is possible to re-init a director after it has been quit (issue #1313) -. [FIX] Director: becomes firstResponder after toggling fullscreen (Mac only) (issue #1189) -. [FIX] DrawingPrimitives: drawColor4f() uses GLFloat instead of GLbyte (issue #1307) -. [FIX] GLProgram: report error correctly if vertex shader has compile issues - Base shaders are no longer parsed files. Instead they are parsed from memory. Faster and ease the migration to v2.0 -. [FIX] GLView: Fixed memory leak while dispatching events (Mac only) -. [FIX] GLView: MSAA support is working (issue #1315) -. [FIX] Label: LabelBMFont fixed y-offset in RetinaDisplay (issue #1309) -. [FIX] Node: flip, visible are no longer bitfields to prevent signed issues (issue #1314, issue #1287) -. [FIX] Particles: Fixed memory leak in fillWithEmptyQuadsFromIndex -. [FIX] Progress: works with rotated sprite frames (issue #1303) -. [FIX] RenderTexture: If (running thread != cocos2d thread ) then it locks the OpenGL context. Prevents nasty crash - added newCGImage (issue #1214) - Added save buffer support on Mac - Refactored save code: easier to read and mantain -. [FIX] Sprite: adding family of sprites to a batchnode works as expected (issue #1217) -. [FIX] SpriteBatch: Quad extensions are public -. [FIX] Templates: added -all_load -ObjC on "other linkers" -. [FIX] Tests: LabelTest with custom TTF font works on Mac too -. [FIX] Texture2D: initWithImage renamed with initWithCGImage - JPEG: No need to convert JPG to PNG on iOS4 (issue #886 re-fixed) - BMP: Images are displayed on iOS4 like on iOS5 (without alpha channel) [iOS5 BUG] - 'Delete texture' is executed on current thread (not on main thread) -. [FIX] TextureCache: async invokes callback on cocos2d thread (and not on main thread) -. [FIX] Types: kCCResolutionStandard renamed to kCCResolutioniPhone - -version 2.0-beta2 17-Jan-2012 -. [NEW] v1.1 Forward-ported changes: - LabelTTF: word wrap works on Mac (issue #1074) - Node: Added onExitTransitionDidStart (issue #792) -. [NEW] ActionManager: It is no longer a singleton. It is an ivar of director -. [NEW] Director: it is a subclass of UIViewController (iOS only) -. [NEW] Director: pushScene is the new recommended way to start the scene. Director will start the animation - automatically once the view is displayed (iOS only) -. [NEW] Director: FPS & seconds per frame are displayed at the same time -. [NEW] EventDispatcher / TouchDispatcher: They are no longer singletons. They are an ivar of director. -. [NEW] GL View: Some classes were renamed to have more API concistency: - MacWindow -> CCWindow (Mac) - MacView -> CCGLView (Mac) - EAGLView -> CCGLView (iOS) - ESRenderer -> CCESRenderer (iOS) - ES2Renderer -> CCES2Renderer (iOS) - GLProgram -> CCGLProgram -. [NEW] Macros: Using __CC_PLATFORM_IOS/MAC internally. Suggested way for games too. -. [NEW] Menu: API CHANGE. "itemFrom..." was replaced with "itemWith..." -. [NEW] Menu: target/selector pattern simulated with blocks. Before, blocks were simulated with target/selector -. [NEW] MenuItem: overrides "cleanup" in order to break circular references. -. [NEW] Node: Supports custom scheduler and actionManager -. [NEW] Scheduler: It is no longer a singleton. It is an ivar of director -. [NEW] Template: AppController use a navigation controller (like the cocos2d's tests) -. [NEW] Template: cocos2d v2 and v1 templates can be installed at the same time -. [NEW] Template: Added option for Device Family -. [NEW] Test: Added Director tests. Tests integration with GameCenter and other UIKit components (iOS) -. [NEW] Transitios: Added new transitions: CCTransitionProgressHorizontal, CCTransitionProgressVertical, - CCTransitionProgressInOut and CCTransitionProgressOutIn -. [NEW] Transitions: CCTransitionRadial... renamed to CCTransitionProgressRadial... -. [FIX] Actions: IntervalAction works OK in rewind mode -. [FIX] Actions: EaseIn/EaseOut actions support float arguments -. [FIX] Director: Uses DisplayLink timestamp. More stable delta times (iOS) (issue #1277) -. [FIX] Director: CC_DIRECTOR_INIT() centers main window (Mac) -. [FIX] Effects: 2D Effects and Transitions work as expected with a 2D projection -. [FIX] Events: Events are removed/added from outside an event (Mac) (issue #1282) -. [FIX] Events: Fixed memory leak when removing delegate (Mac) -. [FIX] Grid: Fixed two big memory leaks (issue #1280) -. [FIX] Grid: CCGrid3D was allocating 2x memory on Mac -. [FIX] Menu: Blocks API doesn't crash on Mac -. [FIX] RenderTexture: Works with RGB888 (issue #1293) -. [FIX] RenderTexture: Supports NPOT textures (issue #1291) -. [FIX] Shaders: example shaders have the "example_" prefix -. [FIX] Sprite: isFrameDisplayed takes into accout the offset (issue #1295) -. [FIX] Tests: ActionProgress, Box2dtest, ChipmunkTest, LayerTest, MotionStreakTest, NodeTest, RotateWorld and SceneTest work on Mac -. [FIX] Tests: MenuTestBlocks removed. Merged into MenuTest -. [FIX] Tests: ShaderTest works (issue #1285) -. [FIX] Tests: ShaderTest centers shaders (Mac and iOS Retina Display) -. [FIX] Texture2D: Uses CGImageRef instead of UIKit for iOS API -. [FIX] TileMaps: Re-added "cc_vertexz" property -. [3RD] Chipmunk: Using Chipmunk v6.0.3 - -version 2.0-beta 27-Nov-2011 -. [NEW] v1.1 Forward-ported changes: - reorderSprite: faster reordering sprites/nodes - Particle batches: Particles support batch rendering - TMX parse from memory - events fixes - ARC compatible -. [NEW] Director: Added API to display Milliseconds Per Frame -. [NEW] LabelBMFont: Added support for alignment, also in multiline (issue #1178) -. [NEW] Node: Added glServerState property. Ideal to enable/disabled blending for certain nodes. -. [NEW] Particle: ParticlePoint removed -. [NEW] Shader: Added AlphaTesting shader -. [NEW] DrawingPrimitives: DrawPoint and PointSize fixed both on Mac and iOS. DrawPoly fixed on Mac -. [FIX] Node#draw() Added helper macro to setup draw -. [FIX] Node#draw() removed [super draw]. Draw() should be "atomic". It shall not depend on a possible state of super class. -. [FIX] ccGLState: Added cache for texture unit and GL_BLEND -. [FIX] Paticles: Faster initialization: texCoords are generated only once. -. [FIX] SpriteFrameCache: readded API to create spriteFrames from CCTexture2D -. [FIX] Shaders: Using correct precision. Fixed performance issue with iOS 5 -. [FIX] Shaders: Improved internal API and constants names -. [FIX] Templates: Works when the project name contains spaces -. [3RD] Chipmunk: Using Chipmunk v6.0.2 - -version 2.0-alpha 18-Sept-2011 -. [NEW] Action: Added new CallBlockO action -. [NEW] AtlasNode: added init method -. [NEW] ccConfig: removed CC_USES_VBO since VBO is always used -. [NEW] ccConfig: removed CC_OPTIMIZE_BLEND_FUNC_FOR_PREMULTIPLIED_ALPHA since the ccBlendFunctions keeps state -. [NEW] ccConfig: removed CC_SPRITEBATCHNODE_DEBUG_DRAW. CC_SPRITE_DEBUG_DRAW can be used both for batches and non batches. -. [NEW] ccConfig: renamed CC_COCOSNODE_RENDER_SUBPIXEL to CC_NODE_RENDER_SUBPIXEL -. [NEW] ccGLState: added helper functions that keeps the GL state -. [NEW] CCProgressTimer: - - Convenience class constructor now passes in CCSprite (this gives developers easier access to timer with CCSpriteFrames, CCSprites, etc) - - Reduced the progress timer types to just radial and bar - added in reverse, midpoint, barChangeRate to be have more flexible options to modify the progress. - - Supports Tint + Color -. [NEW] Director: Removed Fast, FastThreaded and NSTimer director. The only one available is DisplayLink. -. [NEW] Director: Orientations are no longer supported. Only Portrait mode is supported. Use a ViewController to rotate the EAGL view. -. [NEW] Director: The FPS position can be configured via ccConfig.h file -. [NEW] Director: Fast FPS is the only supported way to display FPS. Removed the CCLabelTTF way of doing it -. [NEW] Macros: ccgl* replaced with ccGL* -. [NEW] Macros: CC_ENABLE/DISABLE_DEFAULT_STATE: Removed. No longer needed. -. [NEW] MotionStreak: Using new motion streak code. 10x faster than the old one. -. [NEW] OpenGL ES: Added support for OpenGL ES 2.0. OpenGL ES 1.1 is no longer supported -. [NEW] ParticleQuad: Uses VAO for rendering. Indices are part the VBO. -. [NEW] ParticlePoint: removed code. It is a subclass of ParticleQuad for compatibility. -. [NEW] Profiler: API heavily updated to make it easier to integrate into any kind of component -. [NEW] Sprite: initWithTexture:rect is the designated initializer -. [NEW] Sprite: removed pixels API. -. [NEW] Sprite: useSelfRender / useBatchNode replaced with setBatchNode -. [NEW] Sprite: Improved API in order to make it easier to create DoubleResolution sprites -. [NEW] SpriteBatchNode / Sprite / Node: Simplied rendering. Easiert to integrate with physics engines. Just subclass nodeToParentTransform(). -. [NEW] SpriteBatchNode: Removed support for HONOR_PARENT_TRANSFORM. -. [NEW] SpriteFrameCache: addSpriteFramesWithFile:textureFile renamed to addSpriteFramesWithFile:textureFilename to be consistent with the new API -. [NEW] Templates: Removed Xcode3 templates. Updated Xcode4 templates. -. [NEW] Templates: Box2d & Chipmunk templates use new way to sync cocos2d and physics engine by using PhysicsSprite -. [NEW] Tests: All tests use RootViewController -. [NEW] Tests: Box2d + cocos2d test: Added PhysicsSprite and other Box2d best practices -. [NEW] Tests: Chipmunk + cocos2d test: Added PhysicsSprite and other Chipmunk's best practices -. [NEW] Tests: FontTest uses "bundle" fonts instead of FontLabel -. [NEW] Tests: Removed HelloWorld* tests -. [NEW] Tests: TextureTest has TextureCache#asyncWithBlock test -. [NEW] Tests: Removed Chipmunk iOS TestBed since it was outdated -. [NEW] Texture: Uses NPOT textures (gles20 already supports them) -. [NEW] Texture: PVRTC-RAW format is no longer supported. Use the non-raw format instead. -. [NEW] TextureAtlas: Uses VAO for rendering -. [NEW] TextureCache: Added asyncWithBlock method -. [NEW] Tiled: cc_vertexz property is no longer supported. Will raise exception if found. -. [FIX] All: Removed deprecated methods and classes that were scheduled for removal post 1.0 -. [FIX] Node: slightly faster nodeToParentTransform() -. [FIX] ProgressTimer: reverse renamed to reverseDirection in order to prevent possible collision with action#reverse -. [FIX] RenderTexture: getUIImageFromBuffer doesn't return artifacs -. [FIX] TextureCache: Uses "self" instead of "CCTextureCache" in shared instance -. [FIX] Sprite: displayedFrame correctly returns originalSize -. [FIX] SpriteFrameCache: it doesn't retain the textures when they are loaded from a dictionary file (issue #1227) -. [FIX] Xcode: cocosLive: Removed. Use OpenFeint or GameCenter instead -. [FIX] Xcode: FontLabel: Removed since in iOS 4 you can load custom TTF -. [FIX] Xcode: TouchJSON: Removed. No longer needed since cocosLive was removed -. [FIX] Xcode: Tremor / vorbis: Removed. Experimental sound engine is no longer supported -. [FIX] Xcode: iOS 4 is minimun required to run -. [3RD] Box2d: Using Box2D 2.2.1 -. [3RD] Chipmunk: Using Chipmunk v6.0.1 -. [3RD] Kazmath: New external library. kazmath library for matrix and projection operations, and matrix GL stack -. [3RD] Kazmath: Added ARM NEON Matrix Multiplication from Oolong project - -version 1.1-rc0 .. -..-2012 -. [NEW] Macros: made CCLOG a bit more verbose -. [NEW] CCSprite: added useTrimmedFrameForAnchorPoint property. This makes the trimmed frame frame of reference for the anchorpoint and contentSize. -. [FIX] CCAnimation: bug in addFrames that resulted in incorrect delayPerUnit (issue #1341) -. [FIX] CCSprite: CCSprite bug in setDisplayFrameWithAnimationName -. [FIX] CCParticleSystem: unschedule update method when deallocated -. [FIX] CCParticleSystemQuad: Changed animation property to particleAnimation, for compiler warning -. [FIX] CCRenderTexture: fixed getUIImageFromBuffer -. [FIX] CCTouchDispatcher: fixed crash after showing UIAlertView (issue #1279) -. [FIX] CCGrabber: added log message to warn that grabber doesn't support transparent parts with a color buffer of RGB565 -. [FIX] Compiler: fixed unrecognised clang pragmas so cocos can still be compiled with LLVM version < 2.0. - -version 1.1-beta2b 14-Mar-2012 -. [FIX] CCUtils: missing method declaration - -version 1.1-beta2 12-Mar-2012 -. [NEW] v2.0 forward ported changes: - LabelBMFont: added setFntFile method - Animation: Added new animation format that supports delays per frame and notifications per frame - Actions: Added ActionTargeted action. Useful to target other nodes from a sequence. -. [NEW] All: Code is compatible with ARC (issue #1199) -. [NEW] CCArray: new sorting methods, replaceObjectAtIndex, isEqualToArray -. [NEW] ccFileUtiles: new iPad retina file extension (ipadhd) -. [NEW] DrawPrimitives: Added new functions, ccDrawRect, ccDrawSolidRect, ccDrawSolidPoly -. [NEW] DrawPrimitives: Added batch drawing of lines, ccDrawLines (issue #1081) -. [NEW] Node: Added onExitTransitionDidStart (issue #792) -. [NEW] ParticleSystem: supports animations in new animation format -. [NEW] TileMap: supports in-memory TMX map creation (issue #1239) -. [NEW] TileMap: Flipped tiles can be changed during runtime (issue #1264) -. [NEW] Touchdispatcher: new implementation, supporting changing dispatchers based on (ranges) of properties, custom sorting and more (full list in online release notes) -. [NEW] Types: Added convenience function to create a ccColor4F from color components -. [FIX] Actions: incorrect behavior of CCRepeat -. [FIX] CCArray: equalilty is tested by isEqual instead of comparing pointer addresses -. [FIX] CCArray: CCARRAY_FOREACH macro is now ARC compatible -. [FIX] CCLabelBMFont: full unicode support -. [FIX] CCTMXXMLParser: removed unused variables in release mode -. [FIX] ColorLayer: incorrect size in init method -. [FIX] Director: 3d projection setting for iPad retina -. [FIX] Denshion: Background music fades ok (issue #1304) -. [FIX] EAGLView: always destroy and recreate OpenGL buffers completely (issue #1254) -. [FIX] MenuItem: removed warning when deleting item -. [FIX] Node: orderOfArrival is @synthezied correctly (issue #1273) -. [FIX] Node & Sprite: Scale before Skew to prevent issues with negatives scales. -. [FIX] ParticleSystem: prevent bursts of particles due to too high emitCounter (issue #1201) -. [FIX] ParticleSystem: CCParticleExamples on armv6 uses quad particle system by default, so CCParticleBatchNode can be used -. [FIX] ParticleBatchNode: removeChild error and 'freezing' particles (issue #1316) -. [FIX] ParticleBatchNode: memoryleak (issue #1306) -. [FIX] Sprite: fixed possible setColor and opacity -. [FIX] Sprite: fixed adding premade sprite hierarchy to batchnode (issue #1217) -. [FIX] TileMap: Fixed a problem with multiple layers and multiple tile sets that could cause TMX maps to not load if rotation is used (issue #1302) -. [FIX] TouchDispatcher: correctly handles addition and removal of handlers when being inside a touch handler (issue #1084, #1139) -. [FIX] TouchDispatcher: new implementation fixes multiple issues (issue #1173, #1267) -. [FIX-MAC] LabelTTF: word wrap works on Mac (issue #1074) -. [FIX-MAC] fix for failed to compile on 32-bit mac builds. - -version 1.1-beta 11-Oct-2011 -. [NEW] Animation: Added file format. AnimationCache can load animations from file -. [NEW] ccConfig: Removed CC_RETINA_DISPLAY_FILENAME_SUFFIX. Use CCFileUtils API instead -. [NEW] ccConfig: Removed CC_RETINA_DISPLAY_SUPPORT. It is always enabled. -. [NEW] FileUtils: Added iPad / RetinaDisplay extension. To use it, call [CCFileUtils setiPadSuffix:@"-ipad"] or setRetinaDisplaySuffix (issue #1211) -. [NEW] FileUtils: Added xxxFileExistAtPath for iPad and RetinaDisplay resources -. [NEW] Node: improved speed when reordering and adding nodes (integration of reorderSprite branch) -. [NEW] Particles: Added ParticleBatchNode (issue #955) -. [NEW] Sprite: improved speed when reordering and adding sprites (integration of reorderSprite branch) -. [NEW] Scheduler: Added support for delay and repeat (issue #630) -. [NEW] Textures: Added support for RGB888 textures (issue #958) -. [NEW] TileMap: TMX map supports flipped tiles (issue #1233) -. [FIX] TileMap: don't use new sorting for tilemap (issue #1262) -. [FIX] Actions: removed #undef CLAMP (issue #1210) -. [FIX] Actions: Repeat & RepeatForEver work as expected(issue #1247) -. [FIX] Actions: duration is not divided by zero (issue #615) -. [FIX] Actions: Instant actions can be sequenceables (issue #1166) -. [FIX] FileUtils: Loads -hd resources even if the sd resource is not present (issue #1179) -. [FIX] FileUtils: renamed ccRemoveSuffixFromFile to +[CCFileUtils removeSuffixFromFile:]; -. [FIX] FileUtils: localized resources can be loaded using fullPathFromRelativePath (issue #1230) -. [FIX] LayerColor: init calls initWithColor:width:height (issue #1226) -. [FIX] Sprite: Debug draw fixed (issue #1069) -. [FIX] SpriteBatchNode: removeAllChildrenWithCleanup works correctly (issue #1216) -. [FIX] Texture2D: drawAtPoint uses the correct vertices -. [FIX] Texture2D: drawAtPoint, drawInRect disables color state (issue #1222) -. [FIX-MAC] Director: Only call set setAcceptsTouchEvents: when OS X >= 10.6 (issue #1225) - -version 1.0.1 - 28-July-2011 -. [FIX] All: Implicit atomic properties converted to nonatomic -. [FIX] All: Removed deprected code -. [FIX] CCArray: copyWithZone fixed -. [FIX] Director: frames -> totalFrames, and it works as expected. Value is not being reset. -. [FIX] Menu: If any ancestor is invisible, then touches won't be accepted -. [FIX] Node: vertexZ returns points, not "pixels" -. [FIX] LabelTTF: don't crash when calling description after dealloc -. [FIX] Tests: [window release] instead of [window dealloc] -. [FIX] Texture: TextureCache#dump reports the right info (issue #1205) -. [FIX-MAC] CocosDenshion: Cleanup buffers to prevent noise - -version 1.0.0 - 13-July-2011 -. [NEW] ccpSegmentIntersect & ccpPointIntersect: Added helper functions for ccpLineIntersect (issue #1193) -. [NEW] ccConfig: Added possibility to define the configuration as preprocessor macros -. [NEW] Director: frames is a readonly property -. [NEW] Menu: MenuItemFont can change size and font from instance (issue #1192) -. [NEW] Scheduler: Added isTargetPaused method -. [NEW] Sprite: Debugging draw for texture (issue #879) -. [NEW] Textures: PVR supports NPOT textures -. [FIX] CCArray: ForEach prepends "__" to inner variables to prevent conflict -. [FIX] ccpLineIntersect works as expected. Improved performance (issue #1174, #1193) -. [FIX] cocosLive: fixed memory leak in ScoreServerPost -. [FIX] Director: Added asserts to prevent calling startAnimation twice. -. [FIX] EAGLView: Fixed leak when using multisampling and resizing the layer (issue #1198) -. [FIX] Menu: Column aligment is centered. Removed the +10 pixels padding. -. [FIX] Node: Node#Draw calls super#draw -. [FIX] Tests: Fixed memory leak in ParticleTest -. [FIX] Tests: Fixed memory leak in cocosLiveTest -. [FIX] Tiles: Worked around memory leak in NSXMLParser (issue #1197) -. [FIX] TouchDispatcher: added setPriority (issue #757) -. [FIX] Xcode: cocos2d compiles OK with Xcode 4.2 + llvm 3.0 -. [3RD] Chipmunk: updated to v5.3.5 - -version 1.0-rc3 - 31-May-2011 -. [NEW] Actions: Added SkewTo and SkewBy actions -. [NEW] LabelTTF: Added support for LineBreakMode. Mac only supports Word-Break. -. [NEW] Node / Sprite: Added support for SkewX and SkewY properties -. [NEW] Tests: Added skewX, skewY tests for sprites and actions. Added linebreak tests for LabelTTF. -. [NEW] TextureCache: Added dumpCachedTextureInfo method. Shows the RAM used by the cached textures (issue #1154) -. [FIX] cocosLive: Fixed memory leaks in NSURLConnection -. [FIX] Sprites: DisplayedFrame returns the correct frame (issue #1182) -. [FIX] Templates: Supports spaces in project name (issue #1158) -. [FIX] TextureCache: Textures are autoreleased to prevent a crash in multi-threading environments -. [FIX] TexturePVR: clean glError() before creating textures -. [FIX] TMX Maps: Consume less memory (only what is needed), faster loading times (issue #1175) -. [FIX-MAC] Tests: Added test case for issue #1071 -. [FIX-MAC] Director: Doesn't crash when entering fullscreen if window is not Key (issue #1185) - -version 1.0-rc2 - 03-May-2011 -. [NEW] CCArray: Added reduceMemoryFootprint and reverseObject (issue #1167) -. [NEW] Director: Use small dt when the game is being debugged. -. [NEW] Label: TTF supports new LA88 texture format instead of RGBA8888. A8 is still the default one. -. [NEW] Particles: Added support for ParticleDesigner 1.3.60 (spinning support) -. [NEW] Tests: Added test case for bug 1159 -. [FIX] Particles: TTL is always >= 0. -. [FIX] Particles: texture coordinates are being used correctly when texture is NPOT. -. [FIX] Scheduler: Fixed possible crash when unscheduling a sibling (issue #1144) -. [FIX] Templates: Use NS_BLOCK_ASSERTIONS and NDEBUG in Release Mode to remove asserts -. [FIX] Templates: Xcode 3 templates fixed. Removed unused files in cocos2d lib. Added missing files from TouchJSON -. [FIX] Templates: ARMv6 devices uses "none" autorotation to improve speed -. [FIX] Templates: Added Xcode 4 "File" templates both for iOS and Mac OS X -. [FIX] Templates: Uses CFBundleIconFiles in Info.plist instead of "Icon Files" (issue #1151) -. [FIX] Templates: Xcode 4 templates generates "sub groups" -. [FIX] Templates: Xcode 4 Mac templates include CocosDenshion -. [FIX] TextureAtlas: Render "static" VBO batches between 6~10 % faster (issue #1150) -. [FIX-MAC] Templates: Generates by default an RGBA8 color buffer instead of an RGBA16 - -version 1.0-rc - 29-Mar-2011 -. [NEW] Actions: Added the possibility to create a CCSpawn and CCSequence with an NSArray -. [NEW] CCArray: Added exchangeObject & exchangeObjectAtIndex (issue #1085) -. [NEW] Templates: Added Xcode4 templates for cocos2d, cocos2d+box2d, cocos2d+chipmunk both for iOS and Mac OS X -. [NEW] Templates: Possibility to run the installer from any directory -. [NEW] Tests: Added DirectorTest -. [NEW] Tests: Added Texture2d subtest for an unsupported PVR pixel format -. [NEW] TextureAtlas: added possibility to draw the quads in parts -. [FIX] All: Removed many deprecated methods and classes that were scheduled for removal on v1.0 -. [FIX] Actions: Instant, "base" actions, ReverseTime, Spawn and Sequence don't leak memory if actions are reused -. [FIX] ccpLineIntersect: doesn't produce false positives for collisions (issue #962) -. [FIX] Director: convertToUI works OK in RetinaDisplay mode -. [FIX] Documentation: Drawing primitives fixed syntax error (issue #1127) -. [FIX] Documentation: onExit doxystring improved (issue #1135) -. [FIX] MenuItemToggle: Don't scale up if it is pressed several times (issue #948) -. [FIX] ProgressTimer: fixed underflow in setPercentage() (issue #1123) -. [FIX] RenderTexture: Only enable default GL states, without disabling them (mitigated issue #1145) -. [FIX] StreakMotion: fixed flicker introduced in v0.99.x (issue #1075) -. [FIX] Templates: Don't generate analyze warnings in Xcode4 (issue #1142) -. [FIX] Xcode: TexturePVR compiles when using cocos2d as an external library (issue #1132) -. [FIX] Xcode: Added SKIP_INSTALL=YES in libraries for Xcode4 (issue #1137) -. [FIX-MAC] All: Code is 64-bit friendly. No more warnings when casting from 64 to 32 bits -. [FIX-MAC] Director: Compiles in Mac when "slow" FPS are selected (issue #1126) -. [FIX-MAC] Director: Fullscreen reuses the OpenGL view. -. [3RD] FontLabel: Fixes issues with wrapping and apostraphes and hyphens (issue #1124) -. [3RD] TouchJSON: Updated to "master" from March, 5 2011 (issue #1128) -. [3RD] uthash / utlist: Updated to version 1.9.3 - -version 1.0-beta - 01-Mar-2011 -. [NEW] Actions: Repeat and RepeatForEver has getter/setter for the inner action (issue #1110) -. [NEW] LayerGradient: Added "compressed interpolation" (default mode) in order to display all graident's colors in any vector -. [NEW-MAC] Added CC_DIRECTOR_INIT(). It is possible to create a Mac Window programatically -. [NEW-MAC] EventDispatcher: Added support for Touch events -. [FIX] CocosDenshion: Improved logging -. [FIX] CocosDenshion: Fixed excessively large or negative gain values cause distorted audio in the simulator. -. [FIX] CocosDenshion: Added guards to prevent memory corruption caused by invalid parameters -. [FIX] CocosDenshion: Define some constants for defaults, make const parameter on buffer asynch load method -. [FIX] CCArray: insertObjectAtIndex checks bounds (issue #1121) -. [FIX] Director: Fixed possible crash when purging the TextureCache -. [FIX] Layer: CCMultiplexLayer deprecated. New name is CCLayerMultiplex -. [FIX] Particles: consumes less memory (12 bytes less per particle) and are a bit faster -. [FIX] ProgressTimer: Consumes less memory -. [FIX] RenderTexture: Added possibility to save buffer in any place (issue #1100) -. [FIX] RenderTexture: re-added getUIImageFromBuffer method. Supports RetinaDisplay -. [FIX] Sprite: flipx/flipy don't modify the contentSize (issue #1073) -. [FIX] SpriteFrame: setRect sets pixels too. setRectInPixels sets points too (issue #1088) -. [FIX] Templates: ItunesArtwork renamed to iTunesArtwork (issue #1092) -. [FIX] Templates: HelloWorld -> HelloWorldLayer and other improvements (issue #873) -. [FIX] TextureCache: asyncObject#dealloc uses CCLOGINFO instead of CCLOG (issue #1096) -. [FIX] TiledMap: TMX maps work with zlib compression (Tiled v0.6) -. [FIX-MAC] Director: runLoop enables NSTimers events (issue #1107) -. [FIX-MAC] EventDispatcher: flagsChanged is triggered correctly (issue #1066) -. [FIX-MAC] EventDispatcher: queue & dispatch events are synced (issue #1083) -. [FIX-MAC] LabelTTF: alignment works OK (issue #1073) -. [FIX-MAC] Menu: Menu doesn't hang up with invisible menus (issue #1070) -. [FIX-MAC] Menu: Tracking "touches" works as expected (issue #1114) -. [FIX-MAC] Templates includes AudioToolbox and OpenAL frameworks - -version 0.99.5 - 16-Dec-2010 -. [NEW] All: small performance improvements in all the code -. [NEW] Layer: Added gradient layer -. [NEW] MenuItem: it also supports class methods -. [NEW] SpriteFrameCache: added method to load a plist file with a texture file name -. [NEW] Texture: It is possible to use a subclass like MutableTexture without modifying the code -. [NEW-MAC] Added Mac templates -. [NEW-MAC] Added "flagsChanged" keyboard event -. [NEW-MAC] Added support for Fullscreen / window mode -. [NEW-MAC] Added support for AutoScale if the window is resized / fullscreen (EXPERIMENTAL) -. [FIX] All: Misc cleanups in the code -. [FIX] Action: Blink restores doesn't set as invisible the frame when the action is done (issue #1061) -. [FIX] Camera: uses points intead of pixels. Works OK in RetinaDisplay mode (issue #1023) -. [FIX] CCArray: fixed possible crash -. [FIX] Configuration: checks for possible glErrors. Only ask for max samples if iOS >= 4 (issue #1041) -. [FIX] Director: Fixed possible memory leak when popping a scene. -. [FIX] FileUtils: loads .gz / .ccz files correctly in RetinaDisplay mode (issue #1037) -. [FIX] FileUtils: fixed big memory leaks on .ccz inflater -. [FIX] FileUtils: removes -hd suffix if the filename already has it (issue #1040) -. [FIX] Node: updated doxygen strings regarding default anchorPoint (issue #1049) -. [FIX] Sprite: updateTransform can be overriden (issue #824) -. [FIX] Sprite: Assert if an sprite initialized with a batchnode and it is not using it (issue #1053) -. [FIX] Sprite: correctly overrides setIsRelativeAnchorPoint (issue #1055) -. [FIX] SpriteFrameCache: textureFileName is relative to path (issue #1044) -. [FIX] Particles: QuadParticle uses Points (issue #1057) -. [FIX] Templates: removeStartup compiles (issue #1059) -. [FIX] Texture: PVR with non-square mipmaps generates a warning log in debug mode (issue #1052) -. [FIX-MAC] Display Link thread: async images works as expected. Enabled by default. -. [FIX-MAC] EAGLView: VSync is enabled when the view is loaded from the NIB -. [TEST] Added Glyph Designer test case -. [TEST] Added LayerGradient test -. [TEST-MAC] Added cocos2d icon to Mac tests -. [TEST-MAC] Added EventTest -. [3RD] Chipmunk: Updated to v5.3.4 -. [3RD] libpng: don't compile pngtest.c (issue #1058) - - -version 0.99.5-rc1 - 15-Nov-2010 -. [NEW] Director: setProjection calls "updateProjection" delegate if "custom" projection is used -. [NEW] Label: The CCLabelProtocol implements the -(NSString*)string method. -. [NEW] Particles: Added a new type kCCPositionTypeRelative. Useful for "trail" particles. Added Test. -. [NEW] Textures: Added support for pvz.ccz and pvr.gz formats -. [NEW] Textures: TextureCache has a method to test if a texture is already cached (issue #793) -. [NEW] ZipUtils: Added generic functions to uncompress any .gz or .ccz file (issue #1016) -. [FIX] Actions: OrbitCamera doesn't crash on Simulator -. [FIX] CCArray: fastRemoveObjectAtIndex works as expected (issue #1024) -. [FIX] CocosDenshion: Fixed possible loss of audio on iOS 4.2 -. [FIX] config: CC_FONT_LABEL_SUPPORT is again, enabled by default -. [FIX] Configuration: removed main bundle from CCConfiguration (issue #839 issue #773) -. [FIX] Director: projection is doubled in RetinaDisplay mode -. [FIX] DrawingPrimitives: don't modify the buffer in RetinaDisplay (issue #995) -. [FIX] EAGLView: Doesn't crash in multithread environment (re-fixed issue #350) -. [FIX] Label: BMFontLabel simplified loading of atlas. Doesn't use CCFileUtils (issue #1031) -. [FIX] Label: setString copies the string, and not retain it (issue #1034) -. [FIX] Mac: Events are dispatched when CC_DIRECTOR_MAC_USE_DISPLAY_LINK_THREAD is used -. [FIX] Menu: MenuItems can draw its children (issue #458) -. [FIX] Menu: MenuItems positions can be controlled manually (issue #1013) -. [FIX] Menu: Menus uses touch priority kCCMenuTouchPriority (-128) (issue #1033) -. [FIX] Node: convertToAR method fixed (issue #1017) -. [FIX] Node: vertexZ works OK in RetinaDisplay mode -. [FIX] Particles: Improved doxygen documentation (issue #1026) -. [FIX] Particles: centerOfGravity renamed to sourcePosition (issue #1026) -. [FIX] RenderTexture: removed unneeded and dangerous assert in getUIImageAsDataFromBuffer -. [FIX] RenderTexture: fixed important memory leak when saving images -. [FIX] SpriteBatchNode: improved performance when drawing the batch (issue #824) -. [FIX] SpriteBatchNode: children sprites use the visible property correctly (issue #665) -. [FIX] TextureCache: Improved loading time of cached PVR images (issue #998) -. [FIX] Texture2D: addPVRTCImage: -> addPVRImage: since it also loads non-compressed PVR images -. [FIX] Texture2D: Use 32-bit textures when creating labels on ARM_NEON hardware. Performance improvement. - To enable it, edit ccConfig and set CC_USE_RGBA32_LABELS_ON_NEON_ARCH = 1 -. [FIX] Texture2D: Improved creation time of texts. It's not so expensive to create ZFont labels (issue #971) -. [FIX] Tiled: images can be relative to source map (issue #787) -. [FIX] Tiled: TMXLayer checks for correct GID (issue #742) - -version 0.99.5-rc0 - 25-Oct-2010 -. [NEW] AnimationCache: New class. It deprecates the CCSprite#animation methods (issue #848) -. [NEW] Animation: simplified API. Name is no longer needed. Deprecated API that uses name. -. [NEW] Animation: Animation has its own file: CCAnimation.m -. [NEW] CocosDenshion: Added duration, freq and size queries for buffers -. [NEW] Director: Added "hook" for notifications or any other kind of object like CCNotifications -. [NEW] Director: Added "enableRetinaDisplay:(BOOL)enabled" -. [NEW] EAGLView: Added support for multisampling -. [NEW] EAGLView: Added support sharegroup -. [NEW] Templates: Install HD, iPad and spotlight icons -. [FIX] Blocks: Actions and MenuItems copy the blocks instead of retaining it (issue #1007) -. [FIX] config: CC_FONT_LABEL_SUPPORT is disabled by default since it performs really bad on iOS >= 4.0 -. [FIX] Layer: register accelerometer onEnterTransitionDidFinsih (issue #624) -. [FIX] Node: converToNodeSpace works on RetinaDisplay (issue #1000) -. [FIX] Node: all transform methods uses Points instead of Pixels (issue #999) -. [FIX] Node: onEnterTransitionDidFinsih is also called when added a node to a running node (issue #1018) -. [FIX] Node: addChild returns void, and not self in order to simplify the API -. [FIX] Node: Initializes parent_ to nil at init time -. [FIX] Node: Performance improvement in insertChild (issue #909) -. [FIX] RenderTexture: improved performance, improved logic, no more glMaskColor() bugs (issue #1012) -. [FIX] Sprite: setPositionInPixels set to dirty when called (issue #1001) -. [FIX] Templates: Fixed startup flicker (issue #947) -. [FIX] Templates: Installs @2x, iPad and spotlight icons -. [FIX] Tests: Touch Tests works on RetinaDisplay (issue #1000) -. [FIX] Tests: box2d tests work with RetinaDisplay -. [FIX] Transitions: PageTurnTransition re-fixed. No more artifacts. This time is for real (issue #751) -. [3RD] Chipmunk: Using version 5.3.2 - -version 0.99.5-beta3 23-Sep-2010 - . [NEW] RetinaDisplay supported automatically: - Director: winSize returns size in Points. Use winSizeInPixels for pixels - Node: position is in Points. Use positionInPixels for pixles - Node: contentSize is in Points. Use contentSizeInPixels for pixels - Node: boundingBox is in Points. Use boundingBoxInPixels for pixels - Texture2d: contentSize is in Points. Use contentSizeInPixels for pixels - FileUtils: Will try to load the file with the suffix "-hd" if RetinaDisplay is enabled, unless the "-hd" suffix is already present - The following objects were enhanced to work with points: - TMXTileMap, Sprite, SpriteFrame, Node, ParticleSystem, LabelBMFont, LabelTTF, Menu, MenuItem, - ColorLayer, RenderTexture, MotionStreak, Transitions, Actions, LabelAtlas, AtlasNode - and the drawing primitives - The nodes that weren't updated is because there was no need to update them. - . [NEW] SpriteFrameCache: Added a way to remove from the SpriteFrameCache frames given a dictionary, file or texture (issue #953) - . [FIX] CCArray: improved speed in inserting and deleting elements - . [FIX] ParticleSystem: fixed memory leak when using ParticleDesigner (issue #986) - . [FIX] RenderTexture: creates a POW texture, but this doesn't mean that it should be an squared texture (issue #993) - . [FIX] Templates: Default SDK is 4.1 - . [FIX] Texture2d: Fixed possible crash in NPOT PVR images - . [FIX] Texture2d: If Text in context can't be created return nil (prevent possible crash) - . [FIX] Texture2d: Optimized loading time of PVR images - . [FIX] Transitions: PageTurn3D transition has fewer visible artifacts (issue #751) - -version 0.99.5-beta2 31-Ago-2010 - . [NEW] Actions: files renamed: CCXXXAction.[hm] -> CCActionXXX.[hm] - . [NEW] Actions: Using new naming convetion: - CCInstantAction -> CCActionInstant - CCIntervalAction -> CCActionInterval - CCEaseAction -> CCActionEase - CCCameraAction -> CCActionCamera - . [NEW] Action: CCPropertyAction renamed to CCActionTween - . [NEW] Director: New naming convention: CCnameDirector -> CCDirectorName - . [NEW] Director: DirectorIOS is responsible for swapping buffers - . [NEW] Label: CCLabelAtlas#labelAtlasWithString: -> labelWithString. Old method deprecated - . [NEW] Label: CCBitmapFontAtlas deprecated. Use CCLabelBMFont instead. - . [NEW] Label: CCBitmapFontAtlas#bitmapFontAtlasWithString -> labelWithString. Old method deprecated. - . [NEW] Label: CCLabel renamed to CCLabelTTF - . [NEW] Mac: cocos2d works on Mac. All objects works with the following exceptions: - - CCParticleSystemPoint is not supported. Use CCParticleSystemQuad instead - - CCRenderTexture doesn't save textures to images - - ZLabel (FontLabel) is not supported - - Mmm... probably a bit more. - . [NEW] Particles: New naming convention: - CCPointParticleSystem -> CCParticleSystemPoint - CCQuadParticleSystem -> CCParticleSystemQuad - . [NEW] Transitions: new transition naming convention (issue #946) - . [FIX] Actions: ivars 'duration', 'elapsed', 'tag' now have the '_' suffix in their names. - . [FIX] Artifact fixer is a compile time option in ccConfig. Disabled by default - . [FIX] ccCArray: off-by-1 offset, and lastObject fixed (issue #960 and #961) - . [FIX] ccTypes: using GL types for CC GL structures. Prevents possible errors on 64-bit machines - . [FIX] CocosDenshion: Added SDK4.0 compile check in CDAudioManager - . [FIX] CocosDenshion: panning does not work correctly on iOS4 (issue #949) - . [FIX] Director: Works with Fast FPS disabled (issue #954) - . [FIX] Director: it's possible to set a custom projection before setting the openGL view (issue #952) - . [FIX] Label: BitmapFontAtlas supports empty strings (issue #950) - . [FIX] Label: LabelAtlas doesn't crash if the texture file can't be found (issue #965) - . [FIX] Layer: ivars isTouchEnabled / isAccelerometerEnabled have the '_' suffix in their names - . [FIX] Menu: Disabled possible menuItem on onExit (issue #969) - . [FIX] Sprite: little optimization when using BatchNode + children - . [FIX] Templates: Added missing keys in Info.plist (issue #939) - . [FIX] Tools: mkatlas supports artifact removal (issue #549) - . [FIX] Tools: mkatlas supports spaces in the name (issue #618) - . [3RD] Chipmunk: updated to Chipmunk v5.3 and Chipmunk Demos - -version 0.99.5-beta 30-Jul-2010 - AKA 'CJ the artifact killer' - . [NEW] BitmapFontAtlas: added support for multilines labels - . [NEW] BitmapFontAtlas: added optional setCString method - . [NEW] Configuration: added a helper method to obtain the iOS version - . [NEW] Config: added CC_OPTIMIZE_BLEND_FUNC_FOR_PREMULTIPLIED_ALPHA. Enabled by default. - . [NEW] Texture Atlas & Particles: Uses VBO on ARMv7 and iPhone Simulator. - Uses a vertex array list on ARMv6. Performance improvment. - . [NEW] Sprite: Added support for Zwoptex v1.0 (issue #913) - . [NEW] SpriteFrameCache: Added support for Zwoptex name aliases (issue #935) - . [NEW] SpriteSheet is deprecatd. Use SpriteBatchNode instead. - . [NEW] Support/ccUtils.h: added new file that contains some useful functions like nextPOT - . [NEW] RenderTexture: default blend function compatible with premultiplied alpha (issue #937) - . [NEW] Tests: Zwoptex Test added - . [NEW] Texture2D: Added support for Non compressed PVR images. New supported formats: - RGBA_8888, BGRA_8888, RGBA_4444, RGBA_5551, RGB_565, A_8, AI_88, I_8 - . [NEW] Texture2D: PVR images can be treated as having alpha premultiplied with: - +(void) PVRImagesHavePremultipliedAlpha:(BOOL) - . [FIX] CCArray: conforms to NSCopying protocol (issue #934) - . [FIX] CocosDenshion: Improved sound interruption code (issue #928) - . [FIX] Particles: Built-in particles use QuadParticles when compiled in ARMv7, - and PointParticles when compiled in ARMv6 - . [FIX] Sprites: No artifacts when using spritehsheets (issue #938) - . [FIX] Templates & Tests: call CC_DIRECTOR_END() on AppDelegate Terminate - . [FIX] Templates: Use LLVM-GCC as default compiler - . [FIX] Tests: AtlasTest renamed to LabelTest - . [FIX] Tests: CocosLive Demo: added requestRank tests - . [FIX] TextureCache: JPEG workaround (issue #866) is only applied on iOS >= 4 (issue #932) - . [3RD] libpng: updated to v1.2.44 (libpng is only used by a cocos2d test) - -version 0.99.4 - 14-Jul-2010 - . [NEW] CocosDenshion: switching between background and foreground music (issue #928) - . [FIX] CocosDenshion: fixed memory leak weak reallocing buffers (issue #919) - . [FIX] CocosDenshion: SimpleAudioEngine's enable works as expected (issue #927) - . [FIX] ccCArray: ccCArrayAppendValueWithResize fixed function signature (issue #926) - . [FIX] Director: 2d projection + HighRes works OK (issue #918) - . [FIX] Director: purgeCachedData doesn't purge the SpriteFrameCache (issue #922) - . [FIX] EAGLView: removed unused 'delegate_' ivar - . [FIX] EAGLView: it is possible to resize the view (issue #914) - . [FIX] EAGLView: projection is recalculated after view is resized (issue #924) - . [FIX] GLES-Render: solid objects' colors synced with box2d repository - . [FIX] Scheduler: Doesn't reschedule already scheduled method. It only updates the interval. - . [FIX] Templates & Tests: added App Delegate foreground & background callbacks - - version 0.99.4-rc3 - 01-Jul-2010 - . [FIX] All: Import ccCArray instead of ccArray (compiles in case sentive file system) - . [FIX] CCArray: fixed overflow (issue #901) - . [FIX] CocosDenshion: Fixed bug in CDBufferManager, added test case to FadeToGrey, fixed Info.plist - . [FIX] RenderTexture: works in HiRes mode (issue #898) - . [FIX] Director: Avoid re-scale initial issue (issue #899, issue #350) - . [FIX] Director: convertToUI works as expected (issue #902) - . [FIX] Director: renamed mainLoop -> drawScene - . [FIX] Director: appended '_' to ivars (eg: FPSLabel -> _FPSLabel) - -version 0.99.4-rc2 - 24-Jun-2010 - . [NEW] CCArray: Internally uses CCARRAY_FOREACH. Improved performance (issue #353) - . [NEW] Templates: BaseSDK 4.0. Deploy OS Target: 3.0 - . [FIX] CocosDenshion: compiles with LLVM v1.5 - . [FIX] Removed artifacts from PageTurnTransition (issue #751) - . [FIX] Templates: calls Director#purgeCachedData on memory warning - . [FIX] Templates: sets CD_DEBUG=1 in debug configuration - . [FIX] Texture2D: JPEG images are displayed correctly in iOS4 (issue #886) - -version 0.99.4-rc - 22-Jun-2010 - . [NEW] Director: supports "setContentScaleFactor" (high-res support natively) - . [FIX] Effects: Creates correct color buffer - . [FIX] Director: Sets correctly portrait upside-down orientation - . [FIX] Sprites: flipX/Y works with offsets (issue #732) - . [FIX] Templates: Bundle Version is 1.0 (issue #871) - -version 0.99.4-beta - 14-Jun-2010 - . [NEW] CDSoundEngine loadBufferFromData method added for loading custom buffer data. - . [NEW] CDSoundEngine channel groups renamed source groups to make function clearer. - . [NEW] CDSoundEngine source groups can be dynamically modified using defineSourceGroups. - . [NEW] CDSoundSource new object oriented sound API - . [NEW] CDSoundEngine added soundSourceForSound method to create CDSoundSource objects - . [NEW] CDSoundEngine buffers are automatically increased as needed (no more CD_MAX_BUFFERS) - . [NEW] CDPropertyModifier class for modifying properties such as pitch and gain over time - . [NEW] CDXPropertyModifierAction class for modifying properties such as pitch and gain using cocos2d actions - . [NEW] Convenience methods for fading volume of background music, sound effects and CDSoundSource objects - . [NEW] SimpleAudioEngine soundSourceForFile method for creating CDSoundSource objects - . [NEW] SimpleAudioEngine rewrote buffer management code using new CDBufferManager class - . [NEW] CDBufferManager - class for associating buffer ids with a file name - . [NEW] CDAudioManager simplified initialisation. Now by default creates a single source group containing all sources - . [NEW] CDAudioInterruptProtocol - implemented by classes that can be muted or enabled such as CDAudioManager - . [NEW] Mute now works like television mute i.e. audio continues but is silenced use the enabled property to disable sound. - . [NEW] CDAudioTransportProtocol - implemented by classes that can be played, paused, stopped and rewound. - . [NEW] CDAudioInterruptTargetGroup container for objects that implement CDAudioInterruptProtocol so that groups of objects can be set mute/enabled. - . [NEW] CCArray: added high performance array. Used by CCNode, CCSpriteSheet - . [NEW] Director: added support for high-res resolutions - . [NEW] EAGLView: renderer is an object. EAGLView creates a ES1Renderer object (issue #883) - . [NEW] EAGLView: it's possible to create a EAGLView manually, or by using Interface Builder - . [NEW] Particle: QuadParticle supports subrects (issue #870) - . [NEW] TextureCache: Added removeTextureForKey: instance method - . [NEW] Tests: Added PerformanceNodeChildren performance test - . [FIX] Particle: Added support for ParticleDesigner 1.2 - . [FIX] Particle: QuadParticle renders the image correctly (not upside-down) (issue #872) - . [FIX] Particle: ParticleSamples are subclass of 'quad' particle and not 'point' particle - . [FIX] Tests: removed ParticleView, AccelViewPortDemo since they were deprecated - . [FIX] Tests: fixed some tests so they look OK on the ipad - . [FIX] Xcode: default family is: iPhone/iPad - -version 0.99.3 - 25-May-2010 - . [NEW] Animation: added 2 methods to create the Animation without delay (updated samples) - . [NEW] Director: added 'purgeCachedData' method. Should be called on memory-warning event. - . [FIX] ActionManager: Improved API, with better names (issue #835) - . [FIX] Action CCCallFunc: supports class methods (issue #868) - . [FIX] BitmapFontAtlas: Improved loading times (issue #833) - . [FIX] Node: Improved performance when rendering at the cost of 64 bytes more per node (issue #830) - . [FIX] Particle: Kill the particle if timeToLive < 0 before updating it. - . [FIX] Templates: Define DEBUG in Debug configurations - -version 0.99.3-rc - 18-May-2010 - . [NEW] License: Using MIT license - . [NEW] Node: added removeFromParentAndCleanup:(BOOL) (issue #566) - . [NEW] Particle: Added support for modes: "gravity mode" (old behavior) and "radial movement" mode - . [NEW] Particle: Added support Particle Designer (issue #XXX) - . [NEW] Scheduler: supports pause/resume/'update' with priority (issue #439) - . [FIX] ActionManager: using uthash instead of ccHashSet (easier to use) - . [FIX] Actions: CallFuncND can pass any void ptr, even 0 or 1. - . [FIX] BitmapFontAtlas: using uthash instead of ccHashSet (easier to use) - . [FIX] Grid: Fixed memory leak (issue #853) - . [FIX] Menu: If items are disabled or invisible, touch is not consumed (issues #779, #866) - . [FIX] Particles: Removed unnecesary assert (issue #851) - . [FIX] Particles: QuadParticle works with NPOT textures (issue #863) - . [FIX] Scheduler: Improved performance (issue #492) - . [FIX] Templates: Using uthash instead of ccHashSet (issue #860) - . [FIX] Templates: templates can be installed in user directory (issue #856) - -version 0.99.2 - 28-Apr-2010 - . [FIX] ActionManager: removeByTag doesn't crash if action is also running (issue #841) - . [FIX] cocos2d/*.m: fixed several memory leaks in cases where initXXX failed (issue #XXX) - . [FIX] Director: fixed start-up flicker (issue #350) - . [FIX] EAGLView: If discard-framebuffer is supported and using depthBuffer, then discard it before swapping (SDK4.0 only) (issue #XXX) - . [FIX] Grid: simplied code, easier to maintain, added support for flipped textures (part of issue #448) - . [FIX] Sprite/SpriteSheet: reorderChild works as expected when using subchildren (issue #767) - . [FIX] Templates: installer has better error messages and checks the installer conditions in a better way (issue #842) - . [FIX] Xcode: compiles OK with LLVM Compiler SDK 4.0beta2 - . [3RD] Box2d: Updatd to SVN r100 (v2.1.2) - -version 0.99.2-rc - 15-Apr-2010 - . [NEW] Actions: Added blocks actions via PLBlocks: CCCallBlock and CCCallBlockN (issue #699) - . [NEW] Actions: Added CCFollow, an action that follows a CCNode (issue #738) - . [NEW] Actions: Added CCPropertyAction, a generic way to update properties using an action (issue #491) - . [NEW] MenuItem: MenuItems supports blocks via PLBlocks (issue #699) - . [NEW] Texture2D: added support for NPOT textures where available (issue #818) - . [NEW] Templates: file templates for CCLayer, CCNode, CCSprite (issue #XXX) - . [NEW] TMXMaps: added support for per-tile properties (issue #606) - . [NEW] ProfilingTimer: new class to test performance (issue #724) - . [NEW] Xcode: added "build all tests" target (issue #XXX) - . [FIX] Box2d: GLES-DebugDraw draws non-solid circles as non-solid circles (issue #831) - . [FIX] Director: FPSLabel uses RGBA4444 texture to reduce possible performance impact (issue #658) - . [FIX] EAGLView: swapBuffers doesn't bind the color buffer. It assumes it is already bound (issue #XXX) - . [FIX] Particles: constants stars with kCC (issue #809) - . [FIX] Particles: Asserts if start/end size is <0 or >64 - . [FIX] Protocols: CCAnimationProtocol removed. Merged into CCAnimation (issue #XXX) - . [FIX] Protocols: CCFrameProtocol removed. Merged into CCSprite (issue #XXX) - . [FIX] Ribbon: fixed memory corruption bug (issue #XXX) - . [FIX] Ribbon/RenderTexture: use objective-c like ivars (part of issue #733) - . [FIX] Templates: Improved logic in template installer (issue #XXX) - . [FIX] Templates: Generates optimized binaries. ARMv7 binaries have thumb-2 enabled (issue #XXX) - . [FIX] SpriteSheet: Improved doxygen documentation (issue #827) - . [FIX] SpriteFrameCache: logs warning if frame is not found - . [FIX] Xcode: uses optimized binary. ARMv7 binary has thumb-2 enabled (issue #XXX) - . [3RD] Box2d: updated to SVN r91 (v2.1.1) - -version 0.99.1 - 19-Mar-2010 - . [FIX] Menu: If menu is not visible it doesn't receive touches (issue #88) - . [FIX] Menu: MenuItemLabel restores the scale property (issue #500) - . [FIX] SpriteFrameCache: set singleton to nil when it is purged (issue #814) - . [FIX] Templates: thumb-compilation turned off at project settings (already off in target settings) (issue #772) - . [FIX] Texture2D allocs the right texturememory when using the non-premultiplied alg.(issue #813) - . [FIX] Texture2D supports A8 textures (issue #816) - . [3RD] Libpng: updated to v1.2.43 (libpng is only used by a cocos2d test) - -version 0.99.1-rc - 12-Mar-2010 - . [NEW] Actions: new added actions: CCProgressTo, CCProgressFromTo (issue #783) - . [NEW] CGPointExtensions: new add functions: CGPointExtension like: clampf, ccpClamp, ccpFromSize, - ccpCompOp, ccpLerp, ccpFuzzyEqual, ccpCompMult, ccpAngleSigned, ccpAngle, - ccpRotateByAngle, ccpLineIntersect (issue #783) - . [NEW] Macros: added CCLOGINFO() and CCLOGERROR(). CCLOGINFO() disabled by default (issue #799) - . [NEW] SpriteFrameCache: added support for Zwoptex Desktop version (issue #812) - . [NEW] TMX: if layer contains cc_vertezx=automatic, tiles will use vertexZ and GL_ALPHA_TEST (issue #780) - . [NEW] TMX: TMXLayer supports Tiled offset property (issue #616) - . [NEW] TMX: Added support for .tsx tilesets (issue #619) - . [NEW] Transition: new added transitions: CCRadialCCWTransition, CCRadialCWTransition (issue #783) - . [FIX] All: cocos2d constants start with kCC. Change is backward compatible (issue #809) - . [FIX] Actions: CCRepeat works smoothly, without jerks (re-fixed issue #390) - . [FIX] Actions: CCAnimate frame calculation is more precise (issue #758) - . [FIX] CocosDenshion: Fixed mute (issue #789) - . [FIX] RenderTexture: removed limit when saving images (issue #782) - . [FIX] RenderTexture: doesn't use GL_DITHER and restores glColorMask() (issue #796) - . [FIX] Sprite, LabelAtlas, TiledMap: opactiy + color works even when the texture is premultiplied (issue #668) - . [FIX] TMX: TMXTileMap supports any kind of objects, like CCSprite (issue #700, #765) - . [FIX] TMX: TMXLayer uses the opacity defined for the layer (issue #785) - . [FIX] TMX: TMXLayer raises exception if it receives the addChild message (issue #808) - . [FIX] Texture2D: removed NSLog when image was NULL (issue #802) - . [FIX] Xcode: hardware requirements in .plist: doesn't contain disabled features (issue #769) - . [3RD] Box2d: updated to r66 (issue #795) - . [3RD] Chipmunk: updated to v5.2 (issue #784) - -version 0.99.0 - 18-Feb-2010 - . CocosDenshion: background music can loop (issue #774) - . CocosDenshion: allow audio session category to be changed (issue #775) - . CocosDenshion: can be initialized before cocos2d (issue #777, #773) - -version 0.99.0-final - 15-Feb-2010 - . Box2d: updated to r58 (issue #494) - . Director: Only send "cleanup" when the scene is replaced (re fixed issue #709) - . CocosDenshion: SimpleAudioEngine incorrectly accessing CDAudioManager (issue #748) - . CocosDenshion: added support for 22Khz OpenAL (issue #594) - . CocosDenshion: fixed wrong error check in CocosDenshion (issue #678) - . CocosDenshion: added shutdown method (issue #688) - . CocosDenshion: allow usage of alBufferDataStatic (issue #753) - . CocosDenshion: added stopAllSounds (issue #756) - . CocosDenshion: fixed small leak in background music file name string (issue #644) - . CocosDenshion: CDAudioManager support for multiple AVAudioPlayers (issue #764) - . Compatiblity: TextureNode is subclass of CCSprite (issue #755) - . Node: only uses bits as bools, when they are not properties (fixed issue #743) - . Node: relativeAnchorPoint renamed to isRelativeAnchorPoint (issue #749) - . Node: improved doxygen string in rotation (issue #761) - . Sprite: use correct blending functions (issue #728) - . Sprite: supports CGImageRef with key (issue #349) - . Sprite: when texture is nil, supports opacity & color (issue #741) - . Sprite: setTextureRect() and setColor() works OK with subchildren (issue #763) - . SpriteFrameCache: removed @syncronized() (issue #663) - . Template: box2d template treats warnings as erros, uses unroll loops for performance (issue #750) - . Template: Info.plist uses UIRequiredDeviceCapabilities (issue #769) - . Tests: SpriteTest uses GL_ALPHA_TEST is zVertex test (issue #XXX) - . TMX: filling empty tiles doesn't crash (issue #740) - . TMX: if compression is not "gzip", abort (tiled 0.4 feature) (issue #XXX) - -version 0.99.0-rc - 31-Jan-2010 - . All: Default OpenGL state is: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY (issue #718) - . Action: Improved CCSequence performance (issue #XXX) - . BitmapFontAtlas: huge performance boost in update/create time (issue #730) - . Box2d: updated to r39 (issue #494) - . Camera: Offset fixed in landscape mode (issue #378) - . Camera: It's possible to orbit around any point (issue #438) - . Camera: Doesn't reset affine matrix (issue #XXX) - . Chipmunk: Using Chipmunk v5.1.0 (issue #664) - . Configuration: added object that knows GL capabilities and other misc stuff (issue #712) - . Director/Particles/Grid: removed hardcoded display size values. Using variable (issue #XXX) - . Director: send "cleanup" message to root scene when it is being replaced (issue #709) - . Effects: works independently of the display resolution (issue #XXX) - . Grid: optimized code. Only call camera.locate if it is dirty (issue #XXX) - . Node: Uses cached Affine matrix to transform the nodes (2 GL calls vs. 5 GL calls) (issue #XXX) - . Node: uses bits instead of bools when compiled with SDK >= 3_0 (issue #726) - . Node: uses "_" suffix for ivars (children_, isRunning_, tag_, etc..) (issue #733) - . Scheduler: removed support of repeats. Postponed for v0.99.1 (rolling back issue #630) - . Singletons: removed @syncronized() since cocos2d is not thread safe (issue #663) - . SpriteSheet: reorder updates descendants. Added test for this case (issue #708) - . Sprite: can create sprite from SpriteSheet. deprecated creation method from SpriteSheet (issue #657) - . Sprite: optimized rendering when using spriteSheet and subchildren (issue #XXX) - . Sprite: flip only flips the texture (not the anchor point and children) (issue #725) - . Templates: Updated to support v0.99, Chipmunk v5.1 and Box2D r39 - . Templates: install_template.sh supports custom directory (issue #736) - . Templates: box2d+cocos2d template doesn't generate warnings... well only 2 warnings (issue #739) - . Tests: Works independently of the display resolution - . TextureNode: Removed Node. Superseded by Sprite - . TMXMaps: objectGroup support offsets (issue #689) - . TMXMaps: objectGroup: Simplified object creation. All objects are NSDictionaries. For custom objects, subclass TMXTiledMap (issue #636) - . TMXMaps: groupNamed renamed to objectGroupNamed (issue #XXX) - . TouchDispatcher: StandardTouchHandler returns void (not BOOL). They are executed after the TargetedHandlers (issue #710) - . Xcode: doxygen scripts runs with spaces in subdirectories (issue #684) - -version 0.9.0-beta2 - 11-Jan-2010 - . Actions: added 2 new instant actions: FlipX and FlipY (counter-rollback of part issue #620) - . Actions: uses FLT_EPSILON constant (issue #701) - . Actions: prevent jerk in Repeat and RepeatForEver (issue #390) - . Actions: RotateTo can be repeated without losing information (issue #705) - . BitmapFontAtlas: doesn't override color when using setString (issue #610) - . Chipmunk: removed compiler warning on chipmunk demo (issue #680) - . CocosLive: added sanity checks on demo (issue #681) - . Director: removed compile warning on DisplayLink director (issue #682) - . Particles: prevent possible memory corruption when autoRemove is ON (issue #703) - . Scheduler: Supports repeat-number-of-times in scheduled selectors (issue #630) - . Sprite: anchor + offset + scale works (issue #671) - . Sprite: can create subclasses with an SpriteFrameName (issue #XXX) - . Sprite: flip works as scale * -1 (issue #690) - . Sprite: easier to subclass. [self init] is called (issue #485) - . Sprite: isFrameDisplayed works OK with offsets (issue #707) - . SpriteFrame: removed support for flipX and flipY (rollback of a part issue #620) - . SpriteFrameCache: If originalSize is not present, display warning (issue #670) - . SpriteSheet: adding grand-children doesn't crash (issue #676) - . SpriteSheet: child and children work OK with negative scales (issue #677) - . SpriteSheet: It is easier to subclass (issue #397) - . Templates: uses rfc1034identifier (issue #685) - . Texture2D: simulator treats pre-multiplied alpha images correctly (issue #697) - . TextureCache: doesn't crash when file not found. log error insted (issue #695) - . TMXTiledMap: added support for object and objectgroup (issue #636) - . TMXTiledMap: TMXLayer and TMXObjectGroup on it's own files (part of issue #636) - . TMXTiledMap: doesn't generate descendants when not necessary (works as fast as in v0.8.2) - . TMXTiledMap: removeChild works without corrupting the tilemap (issue #XXX) - -version 0.9.0-beta - 14-Dic-2009 - . ActionManager: fixed leak (issue #635) - . Actions: using [self class]. Easier to subclass (issue #655) - . Box2d: updated to r31 (pre 2.1.0) (issue #494) - . Chipmunk: updated to v5.0 (issue #664) - . CocosDenshion: support for detecting ringer/mute switch state (issue #593) - . CocosDenshion: doesn't crash when file has no extension (issue #595) - . ColorLayer: supports Blend Protocol (issue #597) - . Node: vertexZ is translated just once (issue #641) - . Director: call schedulers before glClear in mainLoop (part of issue #533) - . Director: "global" NSBundle to facilitate the integration of more than 1 game (issue #654) - . Particles: code easier to mantain, same performance - . Particles: small performance improvement (issue #661) - . SpriteSheet: supports any level of sub-children (issue #346, issue #665) - . Sprite: supports "honor parent transform" (issue #643) - . Sprite: displayFrame renamed to displayedFrame (issue #XXX) - . Sprite: fixed zwoptex offset & anchorPoint (issue #653) - . Sprite: setDisplayFrame works OK with different texture sizes (issue #666) - . Templates: using SDK 3.0 as base SDK - . Textures: supports mipmap generation (issue #632) - . Texture Atlas: uses VBO instead of vertex array list (issue #581) - . TextureCache: don't use autorelease pool to load images (issue #XXX) - . Tiles: TMX maps supports sub-directories (issue #539) - . Transition: added CrossFadeTransition (issue #646) - -version 0.9.0-alpha - 18-Nov-2009 - . All: using CC namespace (issue #520) - . All: prevents warnings with Static Analizer (issue #613) - . All: cocos protocols renamed to avoid confusion (part of issue #520) - . All: Added compatibility with v0.8 (part of issue #520) - . Animation: supports duration and reverse (issue #627) - . Tests: Performance Tests re-integrated to main Xcode project (issue #XXX) - . BitmapFontAtlas: works with subdirectories (issue #612) - . Box2d: updated to r26 (pre 2.1.0) (issue #494) - . CocosLive: Uses CL namespace (part of issue #520) - . CocosLive: Uses ASCII encoder (issue #617) - . Sprite: Sprite and AtlasSprite merged in just one class (issue #620) - . Sprite: AtlasSpriteManager renamed to SpriteSheet (issue #620) - . Sprite: Sprite Frames and animations supports flipx / flipy (issue #620) - . SpriteFrameCache: added an easier way to create animations and sprites (issue #620) - . Templates: updated (part of issue #520 and issue #620) - . Templates: includes cocos2d and CocosDenshion licences files - . TextureMgr: renamed to TextureCache (part of issue #620) - . Xcode: textures files in 1 Xcode group (Texture2d, PVRTexture, TextureAltas, TextureCache) - -version 0.8.2 - 19-Oct-2009 - . Actions: Animate copy restoreOriginalFrame parameter (issue #602) - . ChipmunkTest: uses new API to set director type (issue #XXX) - . CocosLive: doesn't use deprecated methods (issue #604) - . MenuItem: added isSelected property (issue #601) - . Tests: removed copyrighted fonts (part of issue #596) - -version 0.8.2-rc1 - 14-Oct-2009 - . Actions: start/stop sets the target (issue #489 and issue #589) - . Actions: Compound actions call "inner" stop (issue #489 and #issue #589) - . Actions: Fixed BezierBy reverse. BezierBy doesn't use startPosition (issue #586) - . Actions: added BezierTo (issue #562) - . Actions: RotateTo uses min distance (issue #584) - . Actions: JumpBy/To uses parabolic function (issue #324) - . BitmapFontAtlas: added limited unicode support (issue #596) - . Director: Rolling back buffer format. Default buffer format is RGB565. - . FontLabel: updates version from git 2009-10-07 (issue #582) - . Particles: FreeMovement uses World-Coordinates (issue #241) - . Tests: Added Particle + Parallax test (part of issue #241) - . TileMap: TMXLayers work without tiles (issue #587) - . TileMap: TMX maps HUGE performance boost (issue #574) - -version 0.8.2-rc0 - 5-Oct-2009 - . Actions: Added EaseBack family actios (issue #568) - . AtlasSprite: set atlasIndex to invalid on remove (issue #569) - . Box2d: using google code r22 (pre v2.1.0) (issue #494) - . CocosNode: Better message error on scale (issue #556) - . Effects: [effect copy] works (issue #573) - . Effects: restore orignal director projection (issue #573) - . Extras: added Joystick / ProximityManager (issue #XXX) - . FontLabel: updates version from git (issue #582) - . Macros: CCLOG uses the "cocos2d:" prefix (issue #XXX) - . Parallax: fixed limit of 5 children (issue #565) - . Templates: works with FontLabel (part of issue #534) - . Templates: added cocos2d+chipmunk template (issue #XXX) - . TextureAtlas: insertQuad fixed signed math (issue #575) - -version 0.8.2-beta - 23-Sept-2009 - . All: ccConfig.h file added (issue #551) - . Actions: added Ease Elastic actions (issue #530) - . Actions: added Ease Bounce actions (issue #546) - . Actions: added PageTurn3D action (issue #522) - . BitmapFontAtlas: fixed contentSize (issue #536, #538) - . BitmapFontAtlas: fixed offset/width (issue #537) - . BitmapFontAtlas: only supports Latin 1 chars (issue #517) - . Box2d: using google code r21 (pre v2.1.0) (issue #494) - . CocosDenshion: muted property in SimpleAudioEngine (issue #526) - . CocosDenshion: added preloadBackgroundMusic and willBackgroundMusicPlay to SimpleAudioEngine (issue #545) - . CocosNode: improved doxygen documentation (issue #XXX) - . CocosNode: added boundingBox method (issue #528) - . Director: added convertToUI and renamed convertCoordinate to convertToGL (issue #531) - . Director: fixed 2 leaks on Director#end (issue #524) - . Director: Added a threaded FastDirector (issue #560) - . Director: Added a CADisplayLink Director (issue #560) - . Director: buffer default pixel format is RGBA_8888 - . Documentation: doxygen builds OK when there are spaces in the path (issue #540) - . Label / Texture2D: Supports any .ttf via FontLabel (issue #534) - . LabelAtlas: works with 256 different chars (issue #516) - . RenderTexture: added RenderTexture test (issue #191) - . Resources: improved directory structure (issue #552) - . Template: using removeUnusedTextures (issue #550) - . TileMap: TMX supports multiple tilesets (1 tileset per layer) (issue #510) - . TileMap: TMX raises expection if map is not encoded and/or gzipped (issue #559) - . Transition: ease actions can be overriden (issue #548) - . Transition: added PageTurnTransition (issue #522) - -version 0.8.1 - 26-Ago-2009 - . ActionManager: doesn't delete running actions (issue #481) - . Box2d: using google code r10 (pre v2.1.0) (issue #494) - . CocosDenshion: resumeBackground music (issue #513) - . MultiplexLayer: removes child using cleanup:YES (issue #466) - . Particles: no negative size (issue #514) - . Resources: added new cocos2d logos (issue #521) - . Template: added Icon.png and Default.png (part of issue #469) - . Texture2D: using CCLOG instead of NSLog+#ifdef (issue #519) - -version 0.8.1-rc - 19-Ago-2009 - . All: Using nonatomic properties (issue #509) - . ActionManager: fixed crash (issue #490) - . Actions: RotateTo always rotates to shortest angle fix (issue #499) - . Box2d: using google code r8 (issue #494) - . Box2d: added box2dTestBed (part of issue #494) - . CocosDenshion: correct channel in SimpleAudioEngine (issue #465) - . CocosDenshion: update buffer status after deletion ( issue #486) - . CocosDenshion: SimpleAudioEngine can stop sounds (issue #498) - . Parallax: update children at draw (issue #471) - . TileMap: TMX maps starts at 0,0 position (part of issue #462) - . TileMap: TMX getter/setters works OK with async maps (issue #506) - . TileMap: anchorPoint works OK (issue #508) - . Xcode: COCOS2D_DEBUG used instead of DEBUG (issue #507) - -version 0.8.1-beta - 10-Ago-2009 - . BitmapFontAtlas: .png image can be in subfolders (issue #464) - . Box2d: possibility to call world.DrawDebugData() from draw (issue #493) - . Box2d: updated box2d repository. using r228 (issue #494) - . CocosNode: parent is set to nil only after calling onExit (issue #476) - . CocosNode: added user data (issue #482) - . CocosLive: added support to request current ranking (issue #495) - . MotionStreak: moved from experimental to stable. uses v0.8 API (issue #484) - . MotionStreak: by default uses GL_SRC_ALPHA blend function (issue #405) - . ParticleView: integrated Particle visual editor (issue #480) - . Parallax: more precise absolute coords (issue #471) - . RenderTexture: let's you render CocosNode objects into a texture (issue #XXX) - . Template: added Xcode cocos2d Template (issue #469) - . TextureMgr: Async reuses EAGL context (issue #472) - . tools: added mkatlas.pl script (issue #483) - . TiledMap: Added support for the TMX format: iso, ortho and hex maps (issue #462) - . TouchDispatcher: don't dispatch empty touches (issue #468) - -version 0.8 - 27-Jul-2009 - . Action: Speed#stop calls other's stop (issue #460) - . BitmapFontAtlas: opacity and color work as expected (issue #463) - . CocosNode: setRelativeAnchorPoint error (issue #461) - . Director: convertCoordinate roundoff error (issue #453) - -version 0.8-rc2 - 21-Jul-2009 - . Actions: Repeat repeats OK (issue #424) - . Actions: Prevents division by 0 when duration==0 (issue #452) - . ActionManager: 5% increase in performance (issue #451) - . CocosDenshion: fixed clicking on looped waves sounds (issue #440) - . CocosDenshion: Added properties in SimpleAudioEngine (issue #454) - . CocosLive: using the deprecated CString API (issue #441) - . CocosLive: send-score object can be reused (issue #417) - . CocosNode: children is an explicit "property" (issue #411) - . CocosNode: relativeTransformAnchor -> relativeAnchorPoint (part of issue #303) - . ColorLayer: uses floats instead of ints for its size (issue #339) - . ColorLayer: updates contentSize when when size is used (issue #443) - . Demos: added basic template to start new projects (issue #447) - . Director: FastDirector with fast events or not at compile time (issue #449) - . FileUtils: Absolute paths are not converted (issue #352) - . Menu: MenuItems works with anchorPoint correctly (issue #412) - . Menu: ItemLabel disabled color is configurable. color is saved (issue #366) - . Particle: VBO update only the needed particles (issue #367) - . TextureMgr: new (and recommended) way to add CGImages (issue #349) - . TouchDispatcher: retains/releases the delegates (issue #422) - . Transitions: Fixed artifacts in Slide transitions (issue #442) - -version 0.8-rc - 13-Jul-2009 - . ActionManager: actions logic were removed from CocosNode (issue #437) - . Actions/Scheduler: the 1st time a Timer or Action is fired, is with dt=0 (issue #429) - . Actions: CallFuncND doesn't leak if reused (issue #336) - . AtlasSpriteManager: fixed blend function (part of issue #125) - . AtlasSprite: render in subpixel by default (issue #414, issue #399) - . BitmapFontAtlas: opacity and color are applied (issue #425) - . BitmapFontAtlas: cache the configuration. FASTER loading times (issue #382) - . CocosDenshion: improvements (issues #415, #431, #432, #433) - . CocosNode: RGBA protocol setColor new API (issue #273) - . CocosNode: removeAllChildren unschedules the timers correctly (issue #435) - . Director: added isPaused property (issue #375) - . Director: fixed memory leak in FPSLabel (issue #370) - . Layer: possibility to hook / unkook touches/Accelerometer in runtime (issue #164) - . ParallaxNode: uses world coordinates (issue #373) - . Particles: support for auto-remove-on-finish (issue #385) - . Scheduler: it's possible to scale the time (issue #236) - . Scheduler: removed unused API (issue #427) - . Scheduler: Added a way to remove all scheduled Timers (issue #421) - . Tests: ParticleTest tests 'free' and 'grouped' emitter (part of issue #241) - . TextureMgr: supports loading images asynchronously (issue #420) - -version 0.8-beta - 17-Jun-2009 - . Actions: Added BezierBy action (issue #313) - . Actions: improved performance when running Actions (issue #301) - . Actions: fixed Repeat skipping when duration not an integer (issue #394) - . All: removed deprecated classes/methods (issue #326) - . AtlasSprite: supports flipX and flipY properties (issue #343) - . BitmapFontAtlas: new features (issue #317) - . box2d: Integrated box2d physics engine (issue #406) - . CocosDenshion: new sound engine in experimental (issue #407) - . CocosNode: actions don't retain the target (issue #150) - . CocosNode: support real openGL Z vertex (issue #355) - . CocosNode: faster transforming of local/world coordinates (issue #263) - . CocosNode: anchorPoint uses normalized coords (0,0) to (1,1) (issue #303) - . Director: supports PortraitUpsideDown and Right orientation (issue #351) - . LabelAtlas: don't render in subpixel (issue #135) - . Menu: All MenuItems supports CocosNodeRGBA protocol (issue #347) - . Menu: Support for BitmapFontAtlas (or any other Label) (issue #365) - . Menu: Support for Sprite and AtlasSprite (or any other CocosNodeRGBA node) (issue #383) - . ParallaxNode: parallax code refactored (issue #358) - . Particles: Added QuadParticleSystem. renamed ParticleSystem to PointParticleSystem (issue #245) - . Particles: added support for endSize and endSizeVar (issue #241) - . Particles: added support for start/end/var spinning (issue #335) - . Particles: support for World/Local coordinates (issue #241) - . Primitives: added bezier path support (issue #380) - . Tests: Added PerformanceParticleTest (issue #331) - . Tests: Added TouchTest (issue #211, #402) - . Texture2D: new alias/antialias API (issue #226) - . Texture2D: supports 16-bit textures RGB4 and RGB5A1 (issue #356) - . Texture2D: blending mode varies according to texture (issue #125) - . Texture2D: Supports images up to 1024x1024. Assert if bigger (issue #396) - . TextureAtlas: uses interleaved vertex array (issue #359) - . TextureMgr: added method that removes unused textures (issue #117) - . Transition: onEnterTransitionDidFinsih added. OnExit and onEnter only once (issue #172) - . Types: types follows OpenGL "standards" (issue #360) - . Touch Events: support for Targeted touches (issue #211) - . Touch Events: menu uses new touch dispatcher (issue #362) - . Touch Events: supports priority (issue #307) - . Xcode: fixed compile error when keyboard registry is enabled (issue #387) - - version 0.7.3 - 18-May-2009 - . Actions: Sequence works when 1st action is an InstantAction. InstantActions are reversible (issue #348) - . CocosLive: Demo shows world rankings (issue #342) - . Director: "new" Fast Director. Attach/Detach, auto-lock, SDK 3.0 works (issue #145, #issue #239, issue #340) - . Texture2D: supports 16-bit textures RGB4 and RGB5A1 (issue #356) - . Support: CGPointExtension compatible with c++ (issue #369) - -version 0.7.2 - 23-Apr-2009 - . All: removed chipmunk macros. using CG macros (issue #290) - . Actions: Added TintTo and TintBy (issue #204) - . AtlasSprite: don't overwrite index 0 (issue #283) - . AtlasSprite: Supports Z-order (issue #275) - . AtlasSprite & Sprite: don't auto center sprite when setting frame (issue #281) - . AtlasSprite: don't render in subpixels (issue #135) - . AtlasSpriteManager: supports transformations (issue #308) - . AtlasSpriteManager: fixes in removeChild (issue #296) - . AtlasSpriteManager: works with capacity=1 (issue #305) - . CocosNode: CocosNodeExtras merged into CocosNode (issue #292) - . CocosNode: improved runAction/stopAction (issue #300) - . CocosNode: possible memory leak when running actions (issue #298) - . CocosNode: dont execute an already running action (issue #299) - . CocosNode: children referring to deallocated parent (issue #297) - . CocosNode: fixed "already scheduled exception" (issue #251) - . CocosNode: don't render in subpixels (issue #135) - . Demos: AtlasSprite with z-order (issue #275) - . Demos: ParticleDemo uses touches to move the center of the emitter (issue #138) - . Demos: organized tests folder (issue #280) - . Demos: Atlas and Sprites uses TintBy and TintTo (issue #204) - . Demos: Menu shows how to use padding / dynamic toggle items (part of issue #249, issue #224) - . Demos: added drawing primitives excample (part of issue #322) - . Director: Attach uses 'bounds' not 'frame' (issue #233) - . Director: runWithScene / end doesn't crash/leak anymore (issue #325) - . Director / Transitions: pushScene with Transitions works (issue #267) - . Documentation: API doc documents free functions (issue #314) - . Menu: an empty menu can be crated (issue #277) - . Menu: align supports padding (issue #249) - . Menu: align takes into account scale (issue #248) - . Menu: MenuToggleItem supports add/remove items in runtime (issue #224) - . Particles: Use by default fire.pvr (issue #276) - . Particles: resetSystem actually resets the system (issue #252) - . Particles: texture is a property (issue #282) - . Particles: colors and vertices in 1 VBO (issue #246) - . Primitives: deprecated all functions. New functions uses CGPoint (issue #322) - . Scheduler: improved timer performance (issue #309) - . SoundSupport: supports vorbis codec (issue #321) - . ccArray: a fast alternative to NSMutableArray (issue #304) - . TextureAtlas: fixed colorarray memory leak (issue #272) - . TextureAtlas: support for insert,remove,reorder (issue #275) - . TextureAtlas: free indices correctly when out of memory (issue #293) - . TextureAtlas: resizeCapacity returns BOOL instead of raise exception (issue #294) - . TextureAtlas: prevent crash when not enough memory while allocating color (issue #295) - . TextureNode: texture is "retain" not "assign" (issue #230 and issue #274) - . TileMapAtlas: supports fullpath (issue #220) - . TileMapAtlas: don't render in subpixels (issue #135) - . Xcode project: added class model (issue #312) - -version 0.7.1 - 20-Mar-2009 - . Actions: added tags to actions (issue #222) - . Actions: Spawns can be Speeded (issue #257) - . Actions: Speed can be altered in runtime (part of issue #236) - . AtlasSprite: Sprite sheet implementation (issue #238) - . Chipmunk: cpVect is defined as a CGPoint (issue #260) - . CocosNode: Camera is lazy alloced (issue #94) - . CocosNode: addChild, removeChild:cleanup, getChildByTag family functions (issue #253) - . CocosNode: added better comments, cleanup code (issue #219) - . CocosNode: added RGB protocol: Atlas,Texture & ColorLayer conforms it (issue #234) - . CocosNode: fixed memory leak when removeAndStop a node with children with actions (issue #254) - . CocosNode: added transform local to world coordinates that supports rotation,scale & position (issue #207) - . CocosNode: removed scale ivar (issue #231) - . CocosNode: improved handling of nil parameters (issue #262) - . CocosLive: filter by device id (issue #223) - . CocosLive: category is UTF8'ized (issue #227) - . CocosLive: using cc_playername instead of usr_playername (issue #242) - . CocosLive: supports "update score" (issue #250) - . Demos: added performance test (issue #243) - . Director: FastDirector doesn't leak autoreleased objects (issue #221) - . Director: prevents calling startAnimation twice in a row (issue #215) - . Menu: can be aligned in columns / rows. Updated menu example (issue #206) - . Menu: MenuItem supports LabelAtlas (issue #235) - . Menu: MenuItemFont fixed memory leak (issue #232) - . Menu: MenuItem improved hit testing (issue #214) - . Scheduler: if signature is not correct Assert (issue #218) - . Sprite: correct transform anchor point (issue #216) - . TextureAtlas: support for texture2D (issue #161) - . Tools: Added perf-test results (issue #243) - -version 0.7.0 - 19-Feb-2009 - . Action: elapsed is a property (issue #203) - . Actions: EaseIn/Out added. Cubic/Quad removed (issue #195) - . Atlas: Fixed black line (issue #135 and issue #47) - . Atlas: Works when GL_CULL_FACE is enabled (issue #179) - . Atlas: updateAltasValues renamed to updateAtlasValues (issue #198) - . CocosLive: added client and example that uses the CocosLive service (issue #175) - . CocosNode: children is a property (issue #185) - . CocosNode: rotate before scale (issue #217) - . Demos: Creating Window and attaching cocos2d to it (issue #180) - . Demos: Texture2dDemo shows how to load PVR images and PVR Mipmap images (issue #112) - . Demos: Added AttachDemo (issue #180) - . Demos: Added EffectsDemo and EffectsAdvancedDemo (issue #183) - . Director: OpenGLview is attached to a given UIView/UIWindow (issue #180) - . Director: winSize returns a CGSize (not a CGRect) (issue #159) - . Director: added FastDirector (issue #145) - . Director: dispatch missing events in main loop (issue #146) - . Director: renamed runScene with runWithScene (issue #194) - . Director: SignificantTimeChange fixed (issue #6) - . Effects: Added Effects support (Grid and TiledGrid) (issue #183) - . Effects: Basic: StopGrid, ReuseGrid (issue #183) - . Effects: Grid: Waves3D, FlipX3D, FlipY3D, Lens3D, Ripple3D, Liquid, Shaky3D, Waves - Twirl (issue #183) - . Effects: Tiled: ShakyTiles3D, ShatteredTiles3D, ShuffleTiles, FadeOutTRTiles, FadeOutBLTiles, - FadeOutUpTiles, FadeOutDownTiles, TurnOffTiles, WavesTiles3D, JumpTiles3D - SplitRows, SplitCols (issue #183) - . Experimental: Added StreakDemo (issue #171) - . Menu: aligItemsVerticallyOld removed. (issue #196) - . MenuItemFont: can be changed in runtime (issue #202) - . MenuItemFont: assign correct size and documented isEnabled (issue #132) - . Particle: Buffers updated on update (issue #163) - . Sprite: initWithPVRTCFile is deprecated. will be removed in v0.8 (issue #197) - . Texture: Support for full PVRTC (issue #112) - . Texture: Easier to set Alias and/or AntiAlias texture parameters (issue #135 and issue #47) - . TileMapAtlas: it is readable / writeable now (issue #200) - . Transitions: added new Effects transitions - SplitRowsTransition, SplitColsTransition, TurnOffTilesTransition, - FadeTRTransition, FadeBLTransition, FadeUpTransition, FadeDownTransition (issue #187) - . Xcode: treat warnings as errors (issue #201) - - -version 0.6.3 - 28-Jan-2009 - . Actions: ScaleTo & ScaleBy supports X and Y factors (issue #156) - . Actions: Added collections of Ease Actions (issue #157) - . Chipmunk: cpFlaot is a float, not a double (issue #130) - . CocosNode: fixed absolutePosition (issue #140) - . CocosNode: unschedule timers only when running (issue #142) - . CocosNode: prevents crash under certain circumstances while executing actions (issue #141) - . Demos: Added Texture2dDemo example (issue #169) - . Demos: SpritesDemo has an improved Accelerate example (issue #168) - . Demos: ParticlesDemo has the Rain Particle example (issue #136) - . Demos: Added EaseDemo showing all the ease capabilities (issue #158) - . Director: allow cleanup when deallocing the director (issue #144) - . Director: avoid useless GL commands when displaying FPS (issue #162) - . Director: possibility to change the DepthBuffer size (issue #160) - . Label: possibility to create Label without dimensions and aligment (issue #154) - . Menu: MenuItemToggle supports assigning the selectedIndex (issue #152) - . Menu: aligment takes into account if status bar is present (issue #131) - . MenuItem: improved compiler warning (issue #147) - . Misc: added 'f' to numbers so they are floats, not doubles (issue #130) - . Particles: added ParticleRain (issue #136) - . Particles: center of emitter can be moved independently from position (issue #138) - . Sprites: fixed possible memory leaks (issue #139) - . Texture2D: prevent allocating more memory than needed (issue #154) - . TextureMgr: supports directories withing the image name (issue #151) - . TileMapAtlas: fixed bug when using TGA files (issue #124) - . TileMapAtlas: supports up to 255 chars (issue #153) - -version 0.6.2 - 24-Dec-2008 - . Actions: Accelerate & Speed ratios can be modified at runtime (issue #127) - . CocosNode: added absolutePosition (issue #9 & issue #122) - . CocosNode: tag is propagated when adding children (issue #118) - . CocosNode: change change z-order at runtime (issue #59) - . Demos: Chipmunk_Accel supports multiple touches (issue #129) - . Demos: fixed typo in MenuTest (issue #111) - . Demos: shows how to set multiple Touches and other options (issue #116) - . Director: Touches work fast again (issue #126) - . License: removed "GNU LGPL" from sources files (issue #115) - . License: fixed grammar errors (issue #120) - . Sprite & Animation: can be created from Texture2D, updated SpriteDemo example (issue #113) - . TextureMgr: Avois duplicate cache (issue #121) - . Transitions: FadeTransition supports variable color. Updated TransitionsDemo (issue #129) - -version 0.6.1 - 08-Dec-2008 - . Documentation: Generation of doc fixes (issue #105) - . Primitives: drawLine prototype fixed (issue #103) - . Xcode: all projects have "thumb compilation" turned off (issue #104) - -version 0.6.0 - 05-Dec-2008 - . Actions: Sequences of Repeats fixes (issue #80) - . Actions: Added RepeatForEver. Added example in SpritesDemo example (issue #93) - . Actions: Repeat can be reversed (issue #92) - . Actions: Memory leaks detected by static analyzer. (issue #90) - . CocosNode: added support for Parallax scroller. Created ParallaxDemo example (issue #89) - . CocosNode: removed deprecated 'named' methods (issue #91) - . CocosNode: lazy allocations with timers, children & actions (issue #94) - . CocosNode: added removeAndStop, removeAndStopByTag and removeAndStopAll (issue #101) - . Demos: fixed memory leaks in AnchorDemo, SpritesDemo and RotateWorld (related to issue #90) - . Director: propagation of Touch events can be stopped (issue #96) - . Documentation: properties are documented (issue #100) - . Menu: conforms to CocosNodeSize protocol (issue #99) - . Menu: support both vertical & horizontal alignment (issue #97) - . Menu: added MenuItemToggle (issue #83) - . Particle: Added ParticleSnow (issue #102) - . Texture2D: creates the textures with clamp to edge and mag filter to linear (issue #95) - -version 0.5.3 - 18-Nov-2008 - . Actions: Repeat fixes (issue #81) - . CocosNode: added numberOfRunningActions (issue #72) - . CocosNode: removeAll fixes (issue #74) - . CocosNode: stopAction fix (issue #82) - . CocosNode: supports flipX and flipY (issue #53) - . CocosNode: supports scaleX and scaleY (issue #54) - . Layer: isTouchEnabled, isAccelerometerEnabled are properties (issue #70) - . Menu: supports CocosNodeOpacity protocol (issue #76) - . MultiplexLayer: added switchToAndReleaseMe (issue #71) - . OpenGLSupport: performance improvements (issue #84) - . Particles: ParticleCount is a property (issue #68) - . Texture2D: images & RGBA8 fixes (issue #86) - . TextureMgr: Simulator supports PVRTC images (issue #75) - . TextureMgr: removeTexture fixed (issue #85) - . TextureMgr: supports CGImageRef (issue #87) - . TileMapAtlas: supports TGA RLE format (issue #38) - -version 0.5.2 - 04-Nov-2008 - . All: assign [super init] to self (issue #61) - . Documentation: Add AUTHORS file with the cocos2d's contributors (issue #62) - . CocosNode: added tags (getByTag, removeByTag) (issue #52) - . CocosNode: fixed big memory leak (issue #67) - . Director: able to remove event enabled nodes (issue #56) - . Director: can be hidden / unhidden (issue #55) - . License: Explicit paragraphs that allows cocos2d + closed source projects (issue #57) - . MenuItemImage: able to modify inner sprites (issue #58) - . OpenGLSupport: added PowerVR Texture Compression (PVRTC) format support (issue #66) - . Transitions: don't flicker (issue #60) - -version 0.5.1 - 20-Oct-2008 - . Actions: Animation has restoreOriginalFrame argument (issue #46) - . Actions: CallFunc retains target (issue #42) - . AtlasNode: renders some artifacts (partially fixed issue #47) - . Demos: Updated Chipmunks demos (issue #43) - . Demos: Elasticity fixed in Chipmunk_Accel (issue #45) - . Director: fps_images.png consumes much less texture memory (issue #49) - . Documentation: included LICENSE.artwork (issue #51) - . LabelAtlas: works with NxM size images (issue #50) - . MenuItem: supports enable/disable (issue #22) - . Particle system: exports more variables (issue #48) - -version 0.5.0 - 05-Oct-2008 - . Actions: copy protocol fixed on some actions (issue #27) - . Chipmunk: using newest version from svn (issue #34) - . CocosNode: Nodes not being dealloced with active actions (issue #25) - . CocosNode: Doxygen API reference fixed (issue #29) - . Demo: added test/example of the new Atlas feature (issue #40) - . Director: Doxygen API reference fixed (issue #29) - . Director: Display FPS are rendered 10 times per second (issue #37) - . LabelAtlas: Fast render update Label (issue #36) (*NEW_FEATURE*) - . MenuItem: sending correct 'self' as argument (issue #19) - . Misc: improved cocos2d icon and default image (issue #33) - . TextureAtlas: Object to render indexed vertex arrays from 1 texture (issue #32) (*NEW_FEATURE*) - . TileMapAtlas: Tile Map renderer (issue #35) (*NEW_FEATURE*) - . TextureMgr: added removeAllTextures (issue #31) - . Scheduler: retain arguments (issue #28) - . Scheduler: passes correct delta time (issue #26) - . Sprite: replaced xxxFromFile with xxxWithFile (issue #39) (*API_CHANGED*) - -version 0.4.3 - 19-Sept-2008 - . Demo: AccelViewPort using code without the VirtualAccelerometer - . Demo: TransitionDemo shows the 6 new transitions - . Demo: Updated Icon.png & Default.png files - . MenuItem: MenuItemFont are 3 pixels heigher. - . Transitions: all Flip transitions have orientation: Left<->Right, Up<-->Down (6 new transitions) - -version 0.4.2 - 10-Sept-2008 - . Action: FadeOut reverse fixed - . Demo: AnchorDemo using back, restart, forward arrows - . MenuItem: callback receives the sender as its argument (issue 14) - . Particles: added initWithTotalParticles method. - . Transitions: Fixed HUGE memory leak - . Transitions: Timing fix. Slide transitions don't show "black" space - -version 0.4.1 - 08-Sept-2008 - . Actions: commented an NSLog() - . CocosNode: added removeAll (by Codemattic) - . CocosNode: implementation file reorganized - . CocosNode: added stopAction method (to remove just 1 one action) - . CocosNode: sanity check when removing actions - . Demo: ClickAndMove demo working again (issue 12) - . Demo: SpritesDemo using back, restart & forward arrows - . Demo: TransitionsDemo using back, restart & forward arrows - . Demo: ParticleDemo using back, restart & forward arrows - . Director: added eventsEnabled. You can enable/disabled touch events globally (eg: Transitions want this feature) - . Director: implementation file reorganized - . Director: drawScene renamed to mainLoop - . Director: FPS are shown in the very bottom-left corner - . Transitions: Added new ZoomFlipXTransition transition. - . Transitions: Added new ZoomFlipYTransition transition. - . Transitions: Added new ZoomFlipAngularTransition transition. - -version 0.4.0 - 30-Ago-2008 - . CocosNode: private methods are private - . CocosNode: stop renamed to stopAllActions - . CocosNode: children does not use a auxiliar array (by Codemattic) - . Director: private methods are private - . Menu: removed setOffsetY - . Menu: can be positioned like any other CocosNode using the position property - . MenuItem: renamed to MenuItemFont - . MenuItem: added MenuItemImage - . MenuItem: uses target/selector, not receiver/selector - . MenuItem: MenuItemFont restore scale to 1.0 after being invoked (by Codemattic) - . MenuItem: can be positioned on runtime. - . TextureNode: renamed setR:g:b: to setRGB::: - -version 0.3.3 - 23-Ago-2008 - . Action: Added CallFuncND. Like CallFuncN but accepts data - . CocosNode: actions can schedule actions [FIXED CRASH] - . CocosNode: added default capacity to actions, children, & schedulers - . CocosNode: relativeTrasnformAnchor is property - . CocosNode: childrenAnchor removed (It wasn't working and it wasn't very useful) - . CocosNode: negative z-order working - . Demos: removed playgroud - . Demos: added AnchorDemo - . Demos: removed unused code from MenuTest - . Demos: removed TcpAccelClient (deprecated) - . Demos: AccelViewPort using VirtualAccelerometer - . Director: fixed memory leak. First scene wasn't released - . Director: fixed issue #6. Delta Time is never negative, and if a "Significant Time Change" is present, then DeltaTime will be 0. - -version 0.3.2 - 14-Ago-2008 - . Action: Animate was using the wrong index. Possible crash fixed - . ColorLayer: added support to change width & height at runtime - . Demos: IntervalDemo using relative path for plist.info file - . Demos: added filter to TcpAccelClient & Chipmunk_Accel demos (by Brian Hammond) - . Director: propagates TouchEvents to all registered layers - . Misc: Removed sound support. Not part of cocos2d - . Misc: Moved OpenGLSupport inside the cocos2d directory. cocos2d.h includes OpenGLSupport headers - . Misc: added getCocos2dVersion() function - . Particles: It was (mistakenly) using Z coordinate - . Sprite: added setDisplayFrame selector - - -version 0.3.1 - 30-Jul-2008 - . All: methods that receives target/selector, are named:Target selector (unified API) - . All: added "cocos2d.h". applications should only import this file. - . Demos: added resume/pause to application - . Demos: chipmunk_accel is frame independent - . Demos: added IntervalDemo demo. Shows how to uses interval timers, and how pause/resume works - . Demos: removed JumpingSisters demo - . Demos: new Default.png - . Director: when paused don't consume CPU. Only renders the screen at 4 FPS. - . Particles: don't uses draw to update, uses scheduled step. (pause/resume works) - . Scheduler: added interval timers - . Transitions: they don't flickr (bug introduced in v0.3.0) - . Types: created ccTime type (float or double) used to calculate delta time - . Types: older types have the prefix "cc" (cocos) - - -version 0.3.0 - 27-Jul-2008 - . Actions: they are not cloned. If you want to reuse them, clone them manually using the method 'copy' - . Actions: CallFunc, CallFuncN using performSelector instead of NSInvocator - . Actions: added CallFuncN action. First argument is the target node - . Core: Using own scheduler to schedule timers/etc. - . Demos: Added OrbitCamera demo in SpritesDemo project - . Director: can initialize the view with pixel format RGBA8 or RGB565 (default) - . Director: if in landscape mode, tells the application to be in landscape mode too - . Director: landscape mode is LEFT again, since "Touch fighter" (apple game) uses left landscape - . Director: setFPS, FPS renamed to setDisplayFPS, displayFPS - . Director: added pause/resume support - . Label: supports changing it's string - . Menu: added support for y-offset - . MenuItem: font size and font name are customizables - . MenuItems: doesn't have "artifacts" - . Texture Node: Added FadeIn/FadeOut support - . Texture Node: Added transform anchor support - . Texture Node: Added color suppport - . Texture Node: Added new cocos2d node. Base class of Sprite and Label - - -version 0.2.1 - 21-Jul-2008 - . Director: landscape can be RIGHT or LEFT (at compile time) - . Director: proxies touchesCancelled - . Particle System: added smoke particle. - . Particle System: fire example improved. - . Particle System: supports for additive and blend colors - . Particle System: splited in 2 files: particle.[hm] and ParticleSystems.[hm] - . Particle System: doesn't iterate over dead particles - . Particle System: fire.png uses white color, so "blend" mode works ok. fire.png is smaller (less resources) - - -version 0.2 - 5-Jul-2008 - . Replaced CGPoint with chipmunk's vector (cpVect) in CocosNode - . Added particle system. - . uses VBO + POINT_SPRITES - . Built-in systems: Fire, Fireworks, Sun, Galaxy, Flower, Meteor, Spiral, Explosion - . supports: system duration, paticle duration, gravity, radial, tangential, color, size, texture, direction, spread (all of them with its variation) - . added support to display FPS - - -version 0.1 - 25-jun-2008: - -25-jun-2008: - . renamed MoveBy:actionWithDuration:delta to MoveBy:actionWithDuration:position - . added Animation, Animate classes to animates sprites - . removed box2d and related stuff to box2d - . added and ported Chipmunk Demo - . added primitives like drawCircle(), drawPoly(), drawLine(), drawPoint() - -24-jun-2008: - . moved all main.c and other tests files to tests/ - . moved plists, sounds and images to Resources/ - . removed unused images - . Using only one plist file in Resources - . cocos2d-port renamed to trunk - . Imported code from Assembla diff --git a/VERSION b/VERSION deleted file mode 100644 index e0940d40cc3..00000000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -3.4.9 \ No newline at end of file diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 7266e1e7af1..55e0ac03ba2 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -615,7 +615,6 @@ 509A79960F6188420032F449 /* CCSprite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CCSprite.m; sourceTree = ""; }; 50A07B7A0E4CBCD300AAF0BB /* cocos2d.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = cocos2d.m; sourceTree = ""; }; 50AC0A500EC34DD400EB5EDC /* DONORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DONORS; sourceTree = ""; }; - 50B2C9BF0E109A5900AE9530 /* CHANGELOG */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGELOG; sourceTree = ""; }; 50BAF3970F33CCD8003F654C /* ccMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccMacros.h; sourceTree = ""; }; 50C508C40F7C194400799124 /* CCFileUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCFileUtils.h; sourceTree = ""; }; 50C508C50F7C194400799124 /* CCFileUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtils.m; sourceTree = ""; }; @@ -754,7 +753,6 @@ D39FA9C718C1BC6B00441627 /* CCShader_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCShader_Private.h; sourceTree = ""; }; D3C12815199D40AC005D2119 /* CCShaders.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = CCShaders.metal; sourceTree = ""; }; D3E3752E19CC842A0076CDBB /* CCRendererSharedTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRendererSharedTypes.h; sourceTree = ""; }; - DCF7B34D1A1D426000E0EEAF /* API-Index.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "API-Index.md"; sourceTree = ""; }; E01E6D8A121F130E001A484F /* CCLabelBMFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CCLabelBMFont.h; sourceTree = ""; }; E01E6D8B121F130E001A484F /* CCLabelBMFont.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CCLabelBMFont.m; sourceTree = ""; }; E02BB6D4126CA93A006E46A2 /* CCAnimationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAnimationCache.h; sourceTree = ""; }; @@ -867,10 +865,8 @@ E0BC7D721342CC58001B4DCC /* LICENSE_CocosDenshion.txt */, A0707F6215F946E9001C1263 /* LICENSE_CCBReader.txt */, A07EC9B2141A8D32008C1F12 /* README.md */, - DCF7B34D1A1D426000E0EEAF /* API-Index.md */, 501A7CAC0EBC97BA005BC158 /* AUTHORS */, 508A4A2310B47A46004B9CC3 /* RELEASE_NOTES */, - 50B2C9BF0E109A5900AE9530 /* CHANGELOG */, 50AC0A500EC34DD400EB5EDC /* DONORS */, 5018F2510DFDEAFF00C013A5 /* cocos2d */, B78AE45917E7AF010028BE0B /* cocos2d-ui */, From f1908546485b071f27ac881a6e75f643f6e7e602 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 23:50:26 +0300 Subject: [PATCH 36/94] More folder cleanup --- DONORS | 4 +--- RELEASE_NOTES | 15 --------------- cocos2d.xcodeproj/project.pbxproj | 2 -- 3 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 RELEASE_NOTES diff --git a/DONORS b/DONORS index bd704966329..c3c7d92fc92 100644 --- a/DONORS +++ b/DONORS @@ -165,6 +165,4 @@ Zemlyanov, Anton Thank you! - -Do you want to donate ? Click here: -https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3316057 +Do you want to donate ? Contact us! diff --git a/RELEASE_NOTES b/RELEASE_NOTES deleted file mode 100644 index 337c6ea95d6..00000000000 --- a/RELEASE_NOTES +++ /dev/null @@ -1,15 +0,0 @@ -===== cocos2d for iPhone 3.0.0 Release Notes ===== - -FIX Invalid time intervals for scheduled timers -FIX Updated installer -NEW Full support for 64 bit -FIX Retina control -FIX Adjustments to layouts -FIX Changes to Z behaviour -FIX Font sizing fixes -NEW Sine actions -FIX Portraid / landscape fixes -NEW Improved scroll view -NEW Betetr versioning -NEW Better and more in depth tests -NEW A lot of preparations for 3.1 \ No newline at end of file diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 55e0ac03ba2..4869b3fce66 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -609,7 +609,6 @@ 505462FB1062768000AB7C52 /* ccConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccConfig.h; sourceTree = ""; }; 5066020F0E38A70D000B500E /* CCScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCScheduler.h; sourceTree = ""; }; 506602100E38A70D000B500E /* CCScheduler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCScheduler.m; sourceTree = ""; }; - 508A4A2310B47A46004B9CC3 /* RELEASE_NOTES */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RELEASE_NOTES; sourceTree = ""; }; 508EAC2F1193F8B0007F058D /* utlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utlist.h; sourceTree = ""; }; 509A79950F6188420032F449 /* CCSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CCSprite.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 509A79960F6188420032F449 /* CCSprite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CCSprite.m; sourceTree = ""; }; @@ -866,7 +865,6 @@ A0707F6215F946E9001C1263 /* LICENSE_CCBReader.txt */, A07EC9B2141A8D32008C1F12 /* README.md */, 501A7CAC0EBC97BA005BC158 /* AUTHORS */, - 508A4A2310B47A46004B9CC3 /* RELEASE_NOTES */, 50AC0A500EC34DD400EB5EDC /* DONORS */, 5018F2510DFDEAFF00C013A5 /* cocos2d */, B78AE45917E7AF010028BE0B /* cocos2d-ui */, From 6064d264702fc3c44c91fa44bf11a805cb11da8a Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 23:53:24 +0300 Subject: [PATCH 37/94] clean-up --- cocos2d-demo/Info.plist | 53 ----------------------------------------- cocos2d-demo/Prefix.pch | 14 ----------- cocos2d-demo/main.m | 17 ------------- 3 files changed, 84 deletions(-) delete mode 100755 cocos2d-demo/Info.plist delete mode 100755 cocos2d-demo/Prefix.pch delete mode 100755 cocos2d-demo/main.m diff --git a/cocos2d-demo/Info.plist b/cocos2d-demo/Info.plist deleted file mode 100755 index cdb6f534a62..00000000000 --- a/cocos2d-demo/Info.plist +++ /dev/null @@ -1,53 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIcons - - CFBundleIcons~ipad - - CFBundleIdentifier - Cocos2d-Objc.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIPrerenderedIcon - - UIRequiredDeviceCapabilities - - accelerometer - - opengles-2 - - - UIStatusBarHidden - - UISupportedInterfaceOrientations - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/cocos2d-demo/Prefix.pch b/cocos2d-demo/Prefix.pch deleted file mode 100755 index f2861ffe94d..00000000000 --- a/cocos2d-demo/Prefix.pch +++ /dev/null @@ -1,14 +0,0 @@ -// -// Prefix header for all source files of the 'Test' target in the 'Test' project -// - -#import - -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iPhone SDK 3.0 and later." -#endif - -#ifdef __OBJC__ -#import -#import -#endif diff --git a/cocos2d-demo/main.m b/cocos2d-demo/main.m deleted file mode 100755 index 2e2b812f4d6..00000000000 --- a/cocos2d-demo/main.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// main.m -// cocos2d-demo -// -// Created by Lars Birkemose on 20/07/15. -// Copyright Cocos2D 2015. All rights reserved. -// - -#import - -int main(int argc, char *argv[]) { - - @autoreleasepool { - int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); - return retVal; - } -} From 1679203b34cd63a868c04dd16e05471f1c6ec394 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 21 Feb 2016 23:53:47 +0300 Subject: [PATCH 38/94] Mac fixes --- cocos2d-tests.xcodeproj/project.pbxproj | 2 -- cocos2d-ui/CCPotentiometer.m | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cocos2d-tests.xcodeproj/project.pbxproj b/cocos2d-tests.xcodeproj/project.pbxproj index ef184970d59..c39dd3f8346 100644 --- a/cocos2d-tests.xcodeproj/project.pbxproj +++ b/cocos2d-tests.xcodeproj/project.pbxproj @@ -447,7 +447,6 @@ D3763D4F19E734C5006C050D /* ColorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7587BDB6185A64AD00EEEFDE /* ColorTest.m */; }; D3763D5019E734C5006C050D /* CCBMFontTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D3B2A7E4187DD60B00406C5A /* CCBMFontTest.m */; }; D3763D5119E734C5006C050D /* VertexZTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A6167B92189A7D4D0044D391 /* VertexZTest.m */; }; - D3763D5219E734C5006C050D /* PositioningTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A664A4EE18A3D9B8006184B8 /* PositioningTest.m */; }; D3763D5619E73513006C050D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D3763D5519E73513006C050D /* AppDelegate.m */; }; D3763D5819E7352F006C050D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D3763D5719E7352F006C050D /* main.m */; }; D3763DD919E735CB006C050D /* libcocos2d-mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3763BBF19E72F85006C050D /* libcocos2d-mac.a */; }; @@ -2288,7 +2287,6 @@ 084B95771C6BA1DD003A580D /* OALTools.m in Sources */, D3763D5119E734C5006C050D /* VertexZTest.m in Sources */, 084B95471C6BA1DD003A580D /* OALActionManager.m in Sources */, - D3763D5219E734C5006C050D /* PositioningTest.m in Sources */, 084B95001C6BA116003A580D /* CCActionAudio.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/cocos2d-ui/CCPotentiometer.m b/cocos2d-ui/CCPotentiometer.m index 58863a87249..160a5343436 100755 --- a/cocos2d-ui/CCPotentiometer.m +++ b/cocos2d-ui/CCPotentiometer.m @@ -164,6 +164,7 @@ -(BOOL)hitTestWithWorldPos:(CGPoint)pos { } +#if __CC_PLATFORM_IOS -(void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event { _previousLocation = [touch locationInNode:self]; @@ -186,6 +187,8 @@ -(void)touchCancelled:(CCTouch *)touch withEvent:(CCTouchEvent *)event { [self touchEnded:touch withEvent:event]; } +#endif + #pragma mark - #pragma mark CCControlPotentiometer Public Methods From 185a517e66371bc8eb2585412c6ffaa7df970ed6 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 22 Feb 2016 00:14:57 +0300 Subject: [PATCH 39/94] #1271 --- cocos2d/CCRenderTexture.m | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cocos2d/CCRenderTexture.m b/cocos2d/CCRenderTexture.m index 6c7cead900a..0f528cdd5ef 100644 --- a/cocos2d/CCRenderTexture.m +++ b/cocos2d/CCRenderTexture.m @@ -572,5 +572,14 @@ -(void) setContentSize:(CGSize)size _contentSizeChanged = YES; } +// See issue #1271 +-(void)setShader:(CCShader *)shader { + self.sprite.shader = shader; +} + +-(CCShader *)shader +{ + return self.sprite.shader; +} @end From e5a2c754a3728df01364cc1e44f3ac0059f744e6 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 22 Feb 2016 00:19:37 +0300 Subject: [PATCH 40/94] template clean-up --- cocos2d-template.xcodeproj/project.pbxproj | 1849 ----------------- .../contents.xcworkspacedata | 7 - .../cocos2d-template.xcscmblueprint | 37 - .../WorkspaceSettings.xcsettings | 10 - .../xcschemes/ObjectiveChipmunk.xcscheme | 77 - .../xcschemes/cocos2d-template.xcscheme | 88 - .../xcschemes/xcschememanagement.plist | 32 - 7 files changed, 2100 deletions(-) delete mode 100644 cocos2d-template.xcodeproj/project.pbxproj delete mode 100644 cocos2d-template.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 cocos2d-template.xcodeproj/project.xcworkspace/xcshareddata/cocos2d-template.xcscmblueprint delete mode 100644 cocos2d-template.xcodeproj/project.xcworkspace/xcuserdata/Birkemose.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100644 cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/ObjectiveChipmunk.xcscheme delete mode 100644 cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/cocos2d-template.xcscheme delete mode 100644 cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/cocos2d-template.xcodeproj/project.pbxproj b/cocos2d-template.xcodeproj/project.pbxproj deleted file mode 100644 index 724a3481b93..00000000000 --- a/cocos2d-template.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1849 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 0E0CB3FD1B3B1D0D00DC6213 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB3FB1B3B1D0D00DC6213 /* main.m */; }; - 0E0CB4051B3B1DFB00DC6213 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4001B3B1DFB00DC6213 /* AppDelegate.m */; }; - 0E0CB4071B3B1DFB00DC6213 /* HelloWorldScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4041B3B1DFB00DC6213 /* HelloWorldScene.m */; }; - 0E0CB53E1B3B1E1B00DC6213 /* CCAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB40B1B3B1E1A00DC6213 /* CCAction.m */; }; - 0E0CB53F1B3B1E1B00DC6213 /* CCActionCatmullRom.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB40D1B3B1E1A00DC6213 /* CCActionCatmullRom.m */; }; - 0E0CB5401B3B1E1B00DC6213 /* CCActionEase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB40F1B3B1E1A00DC6213 /* CCActionEase.m */; }; - 0E0CB5411B3B1E1B00DC6213 /* CCActionInstant.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4111B3B1E1A00DC6213 /* CCActionInstant.m */; }; - 0E0CB5421B3B1E1B00DC6213 /* CCActionInterval.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4131B3B1E1A00DC6213 /* CCActionInterval.m */; }; - 0E0CB5431B3B1E1B00DC6213 /* CCActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4151B3B1E1A00DC6213 /* CCActionManager.m */; }; - 0E0CB5441B3B1E1B00DC6213 /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4181B3B1E1A00DC6213 /* CCActionProgressTimer.m */; }; - 0E0CB5451B3B1E1B00DC6213 /* CCActionTween.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB41A1B3B1E1A00DC6213 /* CCActionTween.m */; }; - 0E0CB5461B3B1E1B00DC6213 /* CCAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB41C1B3B1E1A00DC6213 /* CCAnimation.m */; }; - 0E0CB5471B3B1E1B00DC6213 /* CCAnimationCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB41E1B3B1E1A00DC6213 /* CCAnimationCache.m */; }; - 0E0CB5481B3B1E1B00DC6213 /* CCCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4201B3B1E1A00DC6213 /* CCCache.m */; }; - 0E0CB5491B3B1E1B00DC6213 /* CCClippingNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4221B3B1E1A00DC6213 /* CCClippingNode.m */; }; - 0E0CB54A1B3B1E1B00DC6213 /* CCConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4251B3B1E1A00DC6213 /* CCConfiguration.m */; }; - 0E0CB54B1B3B1E1B00DC6213 /* CCDirector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4271B3B1E1A00DC6213 /* CCDirector.m */; }; - 0E0CB54C1B3B1E1B00DC6213 /* CCDrawNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB42A1B3B1E1A00DC6213 /* CCDrawNode.m */; }; - 0E0CB54D1B3B1E1B00DC6213 /* CCEffect.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB42C1B3B1E1A00DC6213 /* CCEffect.m */; }; - 0E0CB54E1B3B1E1B00DC6213 /* CCEffectBloom.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB42F1B3B1E1A00DC6213 /* CCEffectBloom.m */; }; - 0E0CB54F1B3B1E1B00DC6213 /* CCEffectBlur.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4311B3B1E1A00DC6213 /* CCEffectBlur.m */; }; - 0E0CB5501B3B1E1B00DC6213 /* CCEffectBrightness.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4331B3B1E1A00DC6213 /* CCEffectBrightness.m */; }; - 0E0CB5511B3B1E1B00DC6213 /* CCEffectColorChannelOffset.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4351B3B1E1A00DC6213 /* CCEffectColorChannelOffset.m */; }; - 0E0CB5521B3B1E1B00DC6213 /* CCEffectContrast.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4371B3B1E1A00DC6213 /* CCEffectContrast.m */; }; - 0E0CB5531B3B1E1B00DC6213 /* CCEffectDFInnerGlow.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4391B3B1E1A00DC6213 /* CCEffectDFInnerGlow.m */; }; - 0E0CB5541B3B1E1B00DC6213 /* CCEffectDFOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB43B1B3B1E1A00DC6213 /* CCEffectDFOutline.m */; }; - 0E0CB5551B3B1E1B00DC6213 /* CCEffectDistanceField.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB43D1B3B1E1A00DC6213 /* CCEffectDistanceField.m */; }; - 0E0CB5561B3B1E1B00DC6213 /* CCEffectDropShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB43F1B3B1E1A00DC6213 /* CCEffectDropShadow.m */; }; - 0E0CB5581B3B1E1B00DC6213 /* CCEffectGlass.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4431B3B1E1A00DC6213 /* CCEffectGlass.m */; }; - 0E0CB5591B3B1E1B00DC6213 /* CCEffectHue.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4451B3B1E1A00DC6213 /* CCEffectHue.m */; }; - 0E0CB55A1B3B1E1B00DC6213 /* CCEffectInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4471B3B1E1A00DC6213 /* CCEffectInvert.m */; }; - 0E0CB55B1B3B1E1B00DC6213 /* CCEffectLighting.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4491B3B1E1A00DC6213 /* CCEffectLighting.m */; }; - 0E0CB55C1B3B1E1B00DC6213 /* CCEffectNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB44B1B3B1E1A00DC6213 /* CCEffectNode.m */; }; - 0E0CB55D1B3B1E1B00DC6213 /* CCEffectOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB44D1B3B1E1A00DC6213 /* CCEffectOutline.m */; }; - 0E0CB55E1B3B1E1B00DC6213 /* CCEffectPixellate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB44F1B3B1E1A00DC6213 /* CCEffectPixellate.m */; }; - 0E0CB55F1B3B1E1B00DC6213 /* CCEffectReflection.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4511B3B1E1A00DC6213 /* CCEffectReflection.m */; }; - 0E0CB5601B3B1E1B00DC6213 /* CCEffectRefraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4531B3B1E1A00DC6213 /* CCEffectRefraction.m */; }; - 0E0CB5611B3B1E1B00DC6213 /* CCEffectRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4551B3B1E1A00DC6213 /* CCEffectRenderer.m */; }; - 0E0CB5621B3B1E1B00DC6213 /* CCEffectSaturation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4571B3B1E1A00DC6213 /* CCEffectSaturation.m */; }; - 0E0CB5631B3B1E1B00DC6213 /* CCEffectStack.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4591B3B1E1A00DC6213 /* CCEffectStack.m */; }; - 0E0CB5641B3B1E1B00DC6213 /* CCEffectStereo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB45D1B3B1E1A00DC6213 /* CCEffectStereo.m */; }; - 0E0CB5651B3B1E1B00DC6213 /* CCEffectUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB45F1B3B1E1A00DC6213 /* CCEffectUtils.m */; }; - 0E0CB5661B3B1E1B00DC6213 /* ccFPSImages.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4611B3B1E1A00DC6213 /* ccFPSImages.m */; }; - 0E0CB5671B3B1E1B00DC6213 /* CCLabelBMFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4631B3B1E1A00DC6213 /* CCLabelBMFont.m */; }; - 0E0CB5681B3B1E1B00DC6213 /* CCLabelTTF.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4661B3B1E1A00DC6213 /* CCLabelTTF.m */; }; - 0E0CB5691B3B1E1B00DC6213 /* CCLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4681B3B1E1A00DC6213 /* CCLayout.m */; }; - 0E0CB56A1B3B1E1B00DC6213 /* CCLayoutBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB46A1B3B1E1A00DC6213 /* CCLayoutBox.m */; }; - 0E0CB56B1B3B1E1B00DC6213 /* CCLightCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB46C1B3B1E1A00DC6213 /* CCLightCollection.m */; }; - 0E0CB56C1B3B1E1B00DC6213 /* CCLightNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB46F1B3B1E1A00DC6213 /* CCLightNode.m */; }; - 0E0CB56D1B3B1E1B00DC6213 /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4731B3B1E1A00DC6213 /* CCMotionStreak.m */; }; - 0E0CB56E1B3B1E1B00DC6213 /* CCNoARC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4741B3B1E1A00DC6213 /* CCNoARC.m */; }; - 0E0CB56F1B3B1E1B00DC6213 /* CCNode+Debug.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4761B3B1E1A00DC6213 /* CCNode+Debug.m */; }; - 0E0CB5701B3B1E1B00DC6213 /* CCNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4781B3B1E1A00DC6213 /* CCNode.m */; }; - 0E0CB5711B3B1E1B00DC6213 /* CCNodeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB47B1B3B1E1A00DC6213 /* CCNodeColor.m */; }; - 0E0CB57B1B3B1E1B00DC6213 /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4961B3B1E1A00DC6213 /* CCParallaxNode.m */; }; - 0E0CB57C1B3B1E1B00DC6213 /* CCParticleBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4981B3B1E1A00DC6213 /* CCParticleBatchNode.m */; }; - 0E0CB57D1B3B1E1B00DC6213 /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB49A1B3B1E1A00DC6213 /* CCParticleExamples.m */; }; - 0E0CB57E1B3B1E1B00DC6213 /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB49C1B3B1E1A00DC6213 /* CCParticleSystem.m */; }; - 0E0CB57F1B3B1E1B00DC6213 /* CCParticleSystemBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB49F1B3B1E1A00DC6213 /* CCParticleSystemBase.m */; }; - 0E0CB5801B3B1E1B00DC6213 /* CCPhysicsBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4A31B3B1E1A00DC6213 /* CCPhysicsBody.m */; }; - 0E0CB5811B3B1E1B00DC6213 /* CCPhysicsJoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4A51B3B1E1A00DC6213 /* CCPhysicsJoint.m */; }; - 0E0CB5821B3B1E1B00DC6213 /* CCPhysicsNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4A71B3B1E1A00DC6213 /* CCPhysicsNode.m */; }; - 0E0CB5831B3B1E1B00DC6213 /* CCPhysicsShape.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4A91B3B1E1A00DC6213 /* CCPhysicsShape.m */; }; - 0E0CB5841B3B1E1B00DC6213 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4AB1B3B1E1A00DC6213 /* CCProgressNode.m */; }; - 0E0CB5851B3B1E1B00DC6213 /* CCRenderDispatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4AF1B3B1E1A00DC6213 /* CCRenderDispatch.m */; }; - 0E0CB5861B3B1E1B00DC6213 /* CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4B11B3B1E1A00DC6213 /* CCRenderer.m */; }; - 0E0CB5871B3B1E1B00DC6213 /* CCRendererBasicTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4B41B3B1E1B00DC6213 /* CCRendererBasicTypes.m */; }; - 0E0CB5881B3B1E1B00DC6213 /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4B61B3B1E1B00DC6213 /* CCRendererGLSupport.m */; }; - 0E0CB5891B3B1E1B00DC6213 /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4B91B3B1E1B00DC6213 /* CCRenderTexture.m */; }; - 0E0CB58A1B3B1E1B00DC6213 /* CCResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4BC1B3B1E1B00DC6213 /* CCResponder.m */; }; - 0E0CB58B1B3B1E1B00DC6213 /* CCResponderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4BE1B3B1E1B00DC6213 /* CCResponderManager.m */; }; - 0E0CB58C1B3B1E1B00DC6213 /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4C01B3B1E1B00DC6213 /* CCScene.m */; }; - 0E0CB58D1B3B1E1B00DC6213 /* CCScheduler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4C21B3B1E1B00DC6213 /* CCScheduler.m */; }; - 0E0CB58E1B3B1E1B00DC6213 /* CCShader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4C41B3B1E1B00DC6213 /* CCShader.m */; }; - 0E0CB58F1B3B1E1B00DC6213 /* CCSprite.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4C71B3B1E1B00DC6213 /* CCSprite.m */; }; - 0E0CB5901B3B1E1B00DC6213 /* CCSprite9Slice.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4C91B3B1E1B00DC6213 /* CCSprite9Slice.m */; }; - 0E0CB5911B3B1E1B00DC6213 /* CCSpriteBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4CC1B3B1E1B00DC6213 /* CCSpriteBatchNode.m */; }; - 0E0CB5921B3B1E1B00DC6213 /* CCSpriteFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4CE1B3B1E1B00DC6213 /* CCSpriteFrame.m */; }; - 0E0CB5931B3B1E1B00DC6213 /* CCSpriteFrameCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4D01B3B1E1B00DC6213 /* CCSpriteFrameCache.m */; }; - 0E0CB5941B3B1E1B00DC6213 /* CCTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4D21B3B1E1B00DC6213 /* CCTexture.m */; }; - 0E0CB5951B3B1E1B00DC6213 /* CCTextureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4D51B3B1E1B00DC6213 /* CCTextureCache.m */; }; - 0E0CB5961B3B1E1B00DC6213 /* CCTexturePVR.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4D71B3B1E1B00DC6213 /* CCTexturePVR.m */; }; - 0E0CB5971B3B1E1B00DC6213 /* CCTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4D91B3B1E1B00DC6213 /* CCTiledMap.m */; }; - 0E0CB5981B3B1E1B00DC6213 /* CCTiledMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4DB1B3B1E1B00DC6213 /* CCTiledMapLayer.m */; }; - 0E0CB5991B3B1E1B00DC6213 /* CCTiledMapObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4DE1B3B1E1B00DC6213 /* CCTiledMapObjectGroup.m */; }; - 0E0CB59A1B3B1E1B00DC6213 /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4E01B3B1E1B00DC6213 /* CCTMXXMLParser.m */; }; - 0E0CB59B1B3B1E1B00DC6213 /* CCTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4E21B3B1E1B00DC6213 /* CCTouch.m */; }; - 0E0CB59C1B3B1E1B00DC6213 /* CCTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4E41B3B1E1B00DC6213 /* CCTouchEvent.m */; }; - 0E0CB59D1B3B1E1B00DC6213 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4E61B3B1E1B00DC6213 /* CCTransition.m */; }; - 0E0CB59E1B3B1E1B00DC6213 /* cocos2d.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4E91B3B1E1B00DC6213 /* cocos2d.m */; }; - 0E0CB59F1B3B1E1B00DC6213 /* NSValue+CCRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB4EB1B3B1E1B00DC6213 /* NSValue+CCRenderer.m */; }; - 0E0CB5AA1B3B1E1B00DC6213 /* CCAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB50E1B3B1E1B00DC6213 /* CCAppDelegate.m */; }; - 0E0CB5AB1B3B1E1B00DC6213 /* CCDirectorIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5101B3B1E1B00DC6213 /* CCDirectorIOS.m */; }; - 0E0CB5AC1B3B1E1B00DC6213 /* CCGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5121B3B1E1B00DC6213 /* CCGLView.m */; }; - 0E0CB5AD1B3B1E1B00DC6213 /* CCMetalSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5131B3B1E1B00DC6213 /* CCMetalSupport.m */; }; - 0E0CB5AE1B3B1E1B00DC6213 /* CCMetalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5161B3B1E1B00DC6213 /* CCMetalView.m */; }; - 0E0CB5B01B3B1E1B00DC6213 /* CCTouchIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5191B3B1E1B00DC6213 /* CCTouchIOS.m */; }; - 0E0CB5B11B3B1E1B00DC6213 /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB51B1B3B1E1B00DC6213 /* UITouch+CC.m */; }; - 0E0CB5B21B3B1E1B00DC6213 /* CCDirectorMac.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB51E1B3B1E1B00DC6213 /* CCDirectorMac.m */; }; - 0E0CB5B31B3B1E1B00DC6213 /* CCGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5201B3B1E1B00DC6213 /* CCGLView.m */; }; - 0E0CB5B41B3B1E1B00DC6213 /* CCWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5221B3B1E1B00DC6213 /* CCWindow.m */; }; - 0E0CB5B51B3B1E1B00DC6213 /* NSEvent+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5241B3B1E1B00DC6213 /* NSEvent+CC.m */; }; - 0E0CB5B61B3B1E1B00DC6213 /* base64.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5261B3B1E1B00DC6213 /* base64.c */; }; - 0E0CB5B71B3B1E1B00DC6213 /* CCColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5291B3B1E1B00DC6213 /* CCColor.m */; }; - 0E0CB5B81B3B1E1B00DC6213 /* CCFileUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB52B1B3B1E1B00DC6213 /* CCFileUtils.m */; }; - 0E0CB5B91B3B1E1B00DC6213 /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB52D1B3B1E1B00DC6213 /* CCProfiling.m */; }; - 0E0CB5BA1B3B1E1B00DC6213 /* ccUtils.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB52E1B3B1E1B00DC6213 /* ccUtils.c */; }; - 0E0CB5BB1B3B1E1B00DC6213 /* CCVertex.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5311B3B1E1B00DC6213 /* CCVertex.m */; }; - 0E0CB5BC1B3B1E1B00DC6213 /* CGPointExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5331B3B1E1B00DC6213 /* CGPointExtension.m */; }; - 0E0CB5BD1B3B1E1B00DC6213 /* NSAttributedString+CCAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5351B3B1E1B00DC6213 /* NSAttributedString+CCAdditions.m */; }; - 0E0CB5BE1B3B1E1B00DC6213 /* NSThread+performBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5371B3B1E1B00DC6213 /* NSThread+performBlock.m */; }; - 0E0CB5BF1B3B1E1B00DC6213 /* TGAlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5391B3B1E1B00DC6213 /* TGAlib.m */; }; - 0E0CB5C01B3B1E1B00DC6213 /* ZipUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB53D1B3B1E1B00DC6213 /* ZipUtils.m */; }; - 0E0CB5F51B3B1E2300DC6213 /* CCAnimationManager+FrameAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5C41B3B1E2300DC6213 /* CCAnimationManager+FrameAnimation.m */; }; - 0E0CB5F61B3B1E2300DC6213 /* CCAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5C61B3B1E2300DC6213 /* CCAnimationManager.m */; }; - 0E0CB5F71B3B1E2300DC6213 /* CCBAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5C91B3B1E2300DC6213 /* CCBAnimationManager.m */; }; - 0E0CB5F81B3B1E2300DC6213 /* CCBKeyframe.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5CB1B3B1E2300DC6213 /* CCBKeyframe.m */; }; - 0E0CB5F91B3B1E2300DC6213 /* CCBLocalizationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5CD1B3B1E2300DC6213 /* CCBLocalizationManager.m */; }; - 0E0CB5FA1B3B1E2300DC6213 /* CCBReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5CF1B3B1E2300DC6213 /* CCBReader.m */; }; - 0E0CB5FB1B3B1E2300DC6213 /* CCBsequence.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5D21B3B1E2300DC6213 /* CCBsequence.m */; }; - 0E0CB5FC1B3B1E2300DC6213 /* CCBSequenceProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5D41B3B1E2300DC6213 /* CCBSequenceProperty.m */; }; - 0E0CB5FD1B3B1E2300DC6213 /* CCButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5D71B3B1E2300DC6213 /* CCButton.m */; }; - 0E0CB5FE1B3B1E2300DC6213 /* CCControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5D91B3B1E2300DC6213 /* CCControl.m */; }; - 0E0CB5FF1B3B1E2300DC6213 /* CCControlTextureFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5DC1B3B1E2300DC6213 /* CCControlTextureFactory.m */; }; - 0E0CB6001B3B1E2300DC6213 /* CCScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5DE1B3B1E2300DC6213 /* CCScrollView.m */; }; - 0E0CB6011B3B1E2300DC6213 /* CCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5E01B3B1E2300DC6213 /* CCSlider.m */; }; - 0E0CB6021B3B1E2300DC6213 /* CCTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5E21B3B1E2300DC6213 /* CCTableView.m */; }; - 0E0CB6031B3B1E2300DC6213 /* CCTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5E41B3B1E2300DC6213 /* CCTextField.m */; }; - 0E0CB6061B3B1E2300DC6213 /* CCPlatformTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5EE1B3B1E2300DC6213 /* CCPlatformTextField.m */; }; - 0E0CB6071B3B1E2300DC6213 /* CCPlatformTextFieldIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5F11B3B1E2300DC6213 /* CCPlatformTextFieldIOS.m */; }; - 0E0CB6081B3B1E2300DC6213 /* CCPlatformTextFieldMac.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB5F41B3B1E2300DC6213 /* CCPlatformTextFieldMac.m */; }; - 0E0CB6541B3B1E5700DC6213 /* ChipmunkBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6301B3B1E5700DC6213 /* ChipmunkBody.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0E0CB6551B3B1E5700DC6213 /* ChipmunkConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6311B3B1E5700DC6213 /* ChipmunkConstraint.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0E0CB6561B3B1E5700DC6213 /* ChipmunkMultiGrab.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6321B3B1E5700DC6213 /* ChipmunkMultiGrab.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0E0CB6571B3B1E5700DC6213 /* ChipmunkShape.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6331B3B1E5700DC6213 /* ChipmunkShape.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0E0CB6581B3B1E5700DC6213 /* ChipmunkSpace.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6341B3B1E5700DC6213 /* ChipmunkSpace.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0E0CB6591B3B1E5700DC6213 /* chipmunk.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6361B3B1E5700DC6213 /* chipmunk.c */; }; - 0E0CB65B1B3B1E5700DC6213 /* cpArbiter.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6381B3B1E5700DC6213 /* cpArbiter.c */; }; - 0E0CB65C1B3B1E5700DC6213 /* cpArray.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6391B3B1E5700DC6213 /* cpArray.c */; }; - 0E0CB65D1B3B1E5700DC6213 /* cpBBTree.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB63A1B3B1E5700DC6213 /* cpBBTree.c */; }; - 0E0CB65E1B3B1E5700DC6213 /* cpBody.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB63B1B3B1E5700DC6213 /* cpBody.c */; }; - 0E0CB65F1B3B1E5700DC6213 /* cpCollision.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB63C1B3B1E5700DC6213 /* cpCollision.c */; }; - 0E0CB6601B3B1E5700DC6213 /* cpConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB63D1B3B1E5700DC6213 /* cpConstraint.c */; }; - 0E0CB6611B3B1E5700DC6213 /* cpDampedRotarySpring.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB63E1B3B1E5700DC6213 /* cpDampedRotarySpring.c */; }; - 0E0CB6621B3B1E5700DC6213 /* cpDampedSpring.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB63F1B3B1E5700DC6213 /* cpDampedSpring.c */; }; - 0E0CB6631B3B1E5700DC6213 /* cpGearJoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6401B3B1E5700DC6213 /* cpGearJoint.c */; }; - 0E0CB6641B3B1E5700DC6213 /* cpGrooveJoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6411B3B1E5700DC6213 /* cpGrooveJoint.c */; }; - 0E0CB6651B3B1E5700DC6213 /* cpHashSet.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6421B3B1E5700DC6213 /* cpHashSet.c */; }; - 0E0CB6661B3B1E5700DC6213 /* cpPinJoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6431B3B1E5700DC6213 /* cpPinJoint.c */; }; - 0E0CB6671B3B1E5700DC6213 /* cpPivotJoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6441B3B1E5700DC6213 /* cpPivotJoint.c */; }; - 0E0CB6681B3B1E5700DC6213 /* cpPolyShape.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6451B3B1E5700DC6213 /* cpPolyShape.c */; }; - 0E0CB6691B3B1E5700DC6213 /* cpRatchetJoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6461B3B1E5700DC6213 /* cpRatchetJoint.c */; }; - 0E0CB66A1B3B1E5700DC6213 /* cpRotaryLimitJoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6471B3B1E5700DC6213 /* cpRotaryLimitJoint.c */; }; - 0E0CB66B1B3B1E5700DC6213 /* cpShape.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6481B3B1E5700DC6213 /* cpShape.c */; }; - 0E0CB66C1B3B1E5700DC6213 /* cpSimpleMotor.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6491B3B1E5700DC6213 /* cpSimpleMotor.c */; }; - 0E0CB66D1B3B1E5700DC6213 /* cpSlideJoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB64A1B3B1E5700DC6213 /* cpSlideJoint.c */; }; - 0E0CB66E1B3B1E5700DC6213 /* cpSpace.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB64B1B3B1E5700DC6213 /* cpSpace.c */; }; - 0E0CB66F1B3B1E5700DC6213 /* cpSpaceComponent.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB64C1B3B1E5700DC6213 /* cpSpaceComponent.c */; }; - 0E0CB6701B3B1E5700DC6213 /* cpSpaceDebug.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB64D1B3B1E5700DC6213 /* cpSpaceDebug.c */; }; - 0E0CB6711B3B1E5700DC6213 /* cpSpaceHash.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB64E1B3B1E5700DC6213 /* cpSpaceHash.c */; }; - 0E0CB6721B3B1E5700DC6213 /* cpSpaceQuery.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB64F1B3B1E5700DC6213 /* cpSpaceQuery.c */; }; - 0E0CB6731B3B1E5700DC6213 /* cpSpaceStep.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6501B3B1E5700DC6213 /* cpSpaceStep.c */; }; - 0E0CB6741B3B1E5700DC6213 /* cpSpatialIndex.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6511B3B1E5700DC6213 /* cpSpatialIndex.c */; }; - 0E0CB6751B3B1E5700DC6213 /* cpSweep1D.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6521B3B1E5700DC6213 /* cpSweep1D.c */; }; - 0E0CB6BA1B3B1E6C00DC6213 /* OALAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB67A1B3B1E6C00DC6213 /* OALAction.m */; }; - 0E0CB6BB1B3B1E6C00DC6213 /* OALActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB67C1B3B1E6C00DC6213 /* OALActionManager.m */; }; - 0E0CB6BC1B3B1E6C00DC6213 /* OALAudioActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB67E1B3B1E6C00DC6213 /* OALAudioActions.m */; }; - 0E0CB6BD1B3B1E6C00DC6213 /* OALUtilityActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6801B3B1E6C00DC6213 /* OALUtilityActions.m */; }; - 0E0CB6BE1B3B1E6C00DC6213 /* OALAudioTrack.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6831B3B1E6C00DC6213 /* OALAudioTrack.m */; }; - 0E0CB6BF1B3B1E6C00DC6213 /* OALAudioTrackNotifications.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6851B3B1E6C00DC6213 /* OALAudioTrackNotifications.m */; }; - 0E0CB6C01B3B1E6C00DC6213 /* OALAudioTracks.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6871B3B1E6C00DC6213 /* OALAudioTracks.m */; }; - 0E0CB6C11B3B1E6C00DC6213 /* OALSimpleAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6891B3B1E6C00DC6213 /* OALSimpleAudio.m */; }; - 0E0CB6C21B3B1E6C00DC6213 /* ALBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB68F1B3B1E6C00DC6213 /* ALBuffer.m */; }; - 0E0CB6C31B3B1E6C00DC6213 /* ALCaptureDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6911B3B1E6C00DC6213 /* ALCaptureDevice.m */; }; - 0E0CB6C41B3B1E6C00DC6213 /* ALChannelSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6931B3B1E6C00DC6213 /* ALChannelSource.m */; }; - 0E0CB6C51B3B1E6C00DC6213 /* ALContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6951B3B1E6C00DC6213 /* ALContext.m */; }; - 0E0CB6C61B3B1E6C00DC6213 /* ALDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6971B3B1E6C00DC6213 /* ALDevice.m */; }; - 0E0CB6C71B3B1E6C00DC6213 /* ALListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6991B3B1E6C00DC6213 /* ALListener.m */; }; - 0E0CB6C81B3B1E6C00DC6213 /* ALSoundSourcePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB69C1B3B1E6C00DC6213 /* ALSoundSourcePool.m */; }; - 0E0CB6C91B3B1E6C00DC6213 /* ALSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB69E1B3B1E6C00DC6213 /* ALSource.m */; }; - 0E0CB6CA1B3B1E6C00DC6213 /* ALWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6A11B3B1E6C00DC6213 /* ALWrapper.m */; }; - 0E0CB6CB1B3B1E6C00DC6213 /* OpenALManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6A31B3B1E6C00DC6213 /* OpenALManager.m */; }; - 0E0CB6CC1B3B1E6C00DC6213 /* OALAudioSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6A61B3B1E6C00DC6213 /* OALAudioSession.m */; }; - 0E0CB6CD1B3B1E6C00DC6213 /* OALSuspendHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6A81B3B1E6C00DC6213 /* OALSuspendHandler.m */; }; - 0E0CB6CE1B3B1E6C00DC6213 /* IOSVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6AC1B3B1E6C00DC6213 /* IOSVersion.m */; }; - 0E0CB6CF1B3B1E6C00DC6213 /* mach_timing.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6AD1B3B1E6C00DC6213 /* mach_timing.c */; }; - 0E0CB6D01B3B1E6C00DC6213 /* NSMutableArray+WeakReferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6B01B3B1E6C00DC6213 /* NSMutableArray+WeakReferences.m */; }; - 0E0CB6D11B3B1E6C00DC6213 /* NSMutableDictionary+WeakReferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6B21B3B1E6C00DC6213 /* NSMutableDictionary+WeakReferences.m */; }; - 0E0CB6D21B3B1E6C00DC6213 /* OALAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6B41B3B1E6C00DC6213 /* OALAudioFile.m */; }; - 0E0CB6D31B3B1E6C00DC6213 /* OALTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0CB6B71B3B1E6C00DC6213 /* OALTools.m */; }; - 0E1D34C01B56AB310014C76A /* white_square.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E1D34BF1B56AB310014C76A /* white_square.png */; }; - 0E26A6F11B4A946300C3D15F /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6E71B4A946300C3D15F /* Default-568h@2x.png */; }; - 0E26A6F21B4A946300C3D15F /* Default-Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6E81B4A946300C3D15F /* Default-Landscape.png */; }; - 0E26A6F31B4A946300C3D15F /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6E91B4A946300C3D15F /* Default.png */; }; - 0E26A6F41B4A946300C3D15F /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6EA1B4A946300C3D15F /* Default@2x.png */; }; - 0E26A6F51B4A946300C3D15F /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6EB1B4A946300C3D15F /* Icon-72.png */; }; - 0E26A6F61B4A946300C3D15F /* Icon-Small-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6EC1B4A946300C3D15F /* Icon-Small-50.png */; }; - 0E26A6F71B4A946300C3D15F /* Icon-Small.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6ED1B4A946300C3D15F /* Icon-Small.png */; }; - 0E26A6F81B4A946300C3D15F /* Icon-Small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6EE1B4A946300C3D15F /* Icon-Small@2x.png */; }; - 0E26A6F91B4A946300C3D15F /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6EF1B4A946300C3D15F /* Icon.png */; }; - 0E26A6FA1B4A946300C3D15F /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0E26A6F01B4A946300C3D15F /* Icon@2x.png */; }; - 0E7B6A0F1B53F56100A453BF /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E7B6A0E1B53F56100A453BF /* OpenAL.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 0E0CB3F91B3B1C8700DC6213 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 0E0CB3FB1B3B1D0D00DC6213 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 0E0CB3FF1B3B1DFB00DC6213 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = "templates/cocos2d iOS.xctemplate/Classes/AppDelegate.h"; sourceTree = SOURCE_ROOT; }; - 0E0CB4001B3B1DFB00DC6213 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = "templates/cocos2d iOS.xctemplate/Classes/AppDelegate.m"; sourceTree = SOURCE_ROOT; }; - 0E0CB4031B3B1DFB00DC6213 /* HelloWorldScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HelloWorldScene.h; path = "templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.h"; sourceTree = SOURCE_ROOT; }; - 0E0CB4041B3B1DFB00DC6213 /* HelloWorldScene.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HelloWorldScene.m; path = "templates/cocos2d iOS.xctemplate/Classes/HelloWorldScene.m"; sourceTree = SOURCE_ROOT; }; - 0E0CB40A1B3B1E1A00DC6213 /* CCAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAction.h; sourceTree = ""; }; - 0E0CB40B1B3B1E1A00DC6213 /* CCAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCAction.m; sourceTree = ""; }; - 0E0CB40C1B3B1E1A00DC6213 /* CCActionCatmullRom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionCatmullRom.h; sourceTree = ""; }; - 0E0CB40D1B3B1E1A00DC6213 /* CCActionCatmullRom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionCatmullRom.m; sourceTree = ""; }; - 0E0CB40E1B3B1E1A00DC6213 /* CCActionEase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionEase.h; sourceTree = ""; }; - 0E0CB40F1B3B1E1A00DC6213 /* CCActionEase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionEase.m; sourceTree = ""; }; - 0E0CB4101B3B1E1A00DC6213 /* CCActionInstant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionInstant.h; sourceTree = ""; }; - 0E0CB4111B3B1E1A00DC6213 /* CCActionInstant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionInstant.m; sourceTree = ""; }; - 0E0CB4121B3B1E1A00DC6213 /* CCActionInterval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionInterval.h; sourceTree = ""; }; - 0E0CB4131B3B1E1A00DC6213 /* CCActionInterval.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionInterval.m; sourceTree = ""; }; - 0E0CB4141B3B1E1A00DC6213 /* CCActionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionManager.h; sourceTree = ""; }; - 0E0CB4151B3B1E1A00DC6213 /* CCActionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionManager.m; sourceTree = ""; }; - 0E0CB4161B3B1E1A00DC6213 /* CCActionManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionManager_Private.h; sourceTree = ""; }; - 0E0CB4171B3B1E1A00DC6213 /* CCActionProgressTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionProgressTimer.h; sourceTree = ""; }; - 0E0CB4181B3B1E1A00DC6213 /* CCActionProgressTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionProgressTimer.m; sourceTree = ""; }; - 0E0CB4191B3B1E1A00DC6213 /* CCActionTween.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionTween.h; sourceTree = ""; }; - 0E0CB41A1B3B1E1A00DC6213 /* CCActionTween.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCActionTween.m; sourceTree = ""; }; - 0E0CB41B1B3B1E1A00DC6213 /* CCAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAnimation.h; sourceTree = ""; }; - 0E0CB41C1B3B1E1A00DC6213 /* CCAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCAnimation.m; sourceTree = ""; }; - 0E0CB41D1B3B1E1A00DC6213 /* CCAnimationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAnimationCache.h; sourceTree = ""; }; - 0E0CB41E1B3B1E1A00DC6213 /* CCAnimationCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCAnimationCache.m; sourceTree = ""; }; - 0E0CB41F1B3B1E1A00DC6213 /* CCCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCCache.h; sourceTree = ""; }; - 0E0CB4201B3B1E1A00DC6213 /* CCCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCCache.m; sourceTree = ""; }; - 0E0CB4211B3B1E1A00DC6213 /* CCClippingNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCClippingNode.h; sourceTree = ""; }; - 0E0CB4221B3B1E1A00DC6213 /* CCClippingNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCClippingNode.m; sourceTree = ""; }; - 0E0CB4231B3B1E1A00DC6213 /* ccConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccConfig.h; sourceTree = ""; }; - 0E0CB4241B3B1E1A00DC6213 /* CCConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCConfiguration.h; sourceTree = ""; }; - 0E0CB4251B3B1E1A00DC6213 /* CCConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCConfiguration.m; sourceTree = ""; }; - 0E0CB4261B3B1E1A00DC6213 /* CCDirector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCDirector.h; sourceTree = ""; }; - 0E0CB4271B3B1E1A00DC6213 /* CCDirector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCDirector.m; sourceTree = ""; }; - 0E0CB4281B3B1E1A00DC6213 /* CCDirector_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCDirector_Private.h; sourceTree = ""; }; - 0E0CB4291B3B1E1A00DC6213 /* CCDrawNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCDrawNode.h; sourceTree = ""; }; - 0E0CB42A1B3B1E1A00DC6213 /* CCDrawNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCDrawNode.m; sourceTree = ""; }; - 0E0CB42B1B3B1E1A00DC6213 /* CCEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffect.h; sourceTree = ""; }; - 0E0CB42C1B3B1E1A00DC6213 /* CCEffect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffect.m; sourceTree = ""; }; - 0E0CB42D1B3B1E1A00DC6213 /* CCEffect_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffect_Private.h; sourceTree = ""; }; - 0E0CB42E1B3B1E1A00DC6213 /* CCEffectBloom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectBloom.h; sourceTree = ""; }; - 0E0CB42F1B3B1E1A00DC6213 /* CCEffectBloom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectBloom.m; sourceTree = ""; }; - 0E0CB4301B3B1E1A00DC6213 /* CCEffectBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectBlur.h; sourceTree = ""; }; - 0E0CB4311B3B1E1A00DC6213 /* CCEffectBlur.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectBlur.m; sourceTree = ""; }; - 0E0CB4321B3B1E1A00DC6213 /* CCEffectBrightness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectBrightness.h; sourceTree = ""; }; - 0E0CB4331B3B1E1A00DC6213 /* CCEffectBrightness.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectBrightness.m; sourceTree = ""; }; - 0E0CB4341B3B1E1A00DC6213 /* CCEffectColorChannelOffset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectColorChannelOffset.h; sourceTree = ""; }; - 0E0CB4351B3B1E1A00DC6213 /* CCEffectColorChannelOffset.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectColorChannelOffset.m; sourceTree = ""; }; - 0E0CB4361B3B1E1A00DC6213 /* CCEffectContrast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectContrast.h; sourceTree = ""; }; - 0E0CB4371B3B1E1A00DC6213 /* CCEffectContrast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectContrast.m; sourceTree = ""; }; - 0E0CB4381B3B1E1A00DC6213 /* CCEffectDFInnerGlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDFInnerGlow.h; sourceTree = ""; }; - 0E0CB4391B3B1E1A00DC6213 /* CCEffectDFInnerGlow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDFInnerGlow.m; sourceTree = ""; }; - 0E0CB43A1B3B1E1A00DC6213 /* CCEffectDFOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDFOutline.h; sourceTree = ""; }; - 0E0CB43B1B3B1E1A00DC6213 /* CCEffectDFOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDFOutline.m; sourceTree = ""; }; - 0E0CB43C1B3B1E1A00DC6213 /* CCEffectDistanceField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDistanceField.h; sourceTree = ""; }; - 0E0CB43D1B3B1E1A00DC6213 /* CCEffectDistanceField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDistanceField.m; sourceTree = ""; }; - 0E0CB43E1B3B1E1A00DC6213 /* CCEffectDropShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectDropShadow.h; sourceTree = ""; }; - 0E0CB43F1B3B1E1A00DC6213 /* CCEffectDropShadow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectDropShadow.m; sourceTree = ""; }; - 0E0CB4421B3B1E1A00DC6213 /* CCEffectGlass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectGlass.h; sourceTree = ""; }; - 0E0CB4431B3B1E1A00DC6213 /* CCEffectGlass.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectGlass.m; sourceTree = ""; }; - 0E0CB4441B3B1E1A00DC6213 /* CCEffectHue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectHue.h; sourceTree = ""; }; - 0E0CB4451B3B1E1A00DC6213 /* CCEffectHue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectHue.m; sourceTree = ""; }; - 0E0CB4461B3B1E1A00DC6213 /* CCEffectInvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectInvert.h; sourceTree = ""; }; - 0E0CB4471B3B1E1A00DC6213 /* CCEffectInvert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectInvert.m; sourceTree = ""; }; - 0E0CB4481B3B1E1A00DC6213 /* CCEffectLighting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectLighting.h; sourceTree = ""; }; - 0E0CB4491B3B1E1A00DC6213 /* CCEffectLighting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectLighting.m; sourceTree = ""; }; - 0E0CB44A1B3B1E1A00DC6213 /* CCEffectNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectNode.h; sourceTree = ""; }; - 0E0CB44B1B3B1E1A00DC6213 /* CCEffectNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectNode.m; sourceTree = ""; }; - 0E0CB44C1B3B1E1A00DC6213 /* CCEffectOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectOutline.h; sourceTree = ""; }; - 0E0CB44D1B3B1E1A00DC6213 /* CCEffectOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectOutline.m; sourceTree = ""; }; - 0E0CB44E1B3B1E1A00DC6213 /* CCEffectPixellate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectPixellate.h; sourceTree = ""; }; - 0E0CB44F1B3B1E1A00DC6213 /* CCEffectPixellate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectPixellate.m; sourceTree = ""; }; - 0E0CB4501B3B1E1A00DC6213 /* CCEffectReflection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectReflection.h; sourceTree = ""; }; - 0E0CB4511B3B1E1A00DC6213 /* CCEffectReflection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectReflection.m; sourceTree = ""; }; - 0E0CB4521B3B1E1A00DC6213 /* CCEffectRefraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectRefraction.h; sourceTree = ""; }; - 0E0CB4531B3B1E1A00DC6213 /* CCEffectRefraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectRefraction.m; sourceTree = ""; }; - 0E0CB4541B3B1E1A00DC6213 /* CCEffectRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectRenderer.h; sourceTree = ""; }; - 0E0CB4551B3B1E1A00DC6213 /* CCEffectRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectRenderer.m; sourceTree = ""; }; - 0E0CB4561B3B1E1A00DC6213 /* CCEffectSaturation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectSaturation.h; sourceTree = ""; }; - 0E0CB4571B3B1E1A00DC6213 /* CCEffectSaturation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectSaturation.m; sourceTree = ""; }; - 0E0CB4581B3B1E1A00DC6213 /* CCEffectStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectStack.h; sourceTree = ""; }; - 0E0CB4591B3B1E1A00DC6213 /* CCEffectStack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectStack.m; sourceTree = ""; }; - 0E0CB45A1B3B1E1A00DC6213 /* CCEffectStack_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectStack_Private.h; sourceTree = ""; }; - 0E0CB45B1B3B1E1A00DC6213 /* CCEffectStackProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectStackProtocol.h; sourceTree = ""; }; - 0E0CB45C1B3B1E1A00DC6213 /* CCEffectStereo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectStereo.h; sourceTree = ""; }; - 0E0CB45D1B3B1E1A00DC6213 /* CCEffectStereo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectStereo.m; sourceTree = ""; }; - 0E0CB45E1B3B1E1A00DC6213 /* CCEffectUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectUtils.h; sourceTree = ""; }; - 0E0CB45F1B3B1E1A00DC6213 /* CCEffectUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectUtils.m; sourceTree = ""; }; - 0E0CB4601B3B1E1A00DC6213 /* ccFPSImages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccFPSImages.h; sourceTree = ""; }; - 0E0CB4611B3B1E1A00DC6213 /* ccFPSImages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ccFPSImages.m; sourceTree = ""; }; - 0E0CB4621B3B1E1A00DC6213 /* CCLabelBMFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLabelBMFont.h; sourceTree = ""; }; - 0E0CB4631B3B1E1A00DC6213 /* CCLabelBMFont.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLabelBMFont.m; sourceTree = ""; }; - 0E0CB4641B3B1E1A00DC6213 /* CCLabelBMFont_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLabelBMFont_Private.h; sourceTree = ""; }; - 0E0CB4651B3B1E1A00DC6213 /* CCLabelTTF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLabelTTF.h; sourceTree = ""; }; - 0E0CB4661B3B1E1A00DC6213 /* CCLabelTTF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLabelTTF.m; sourceTree = ""; }; - 0E0CB4671B3B1E1A00DC6213 /* CCLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLayout.h; sourceTree = ""; }; - 0E0CB4681B3B1E1A00DC6213 /* CCLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLayout.m; sourceTree = ""; }; - 0E0CB4691B3B1E1A00DC6213 /* CCLayoutBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLayoutBox.h; sourceTree = ""; }; - 0E0CB46A1B3B1E1A00DC6213 /* CCLayoutBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLayoutBox.m; sourceTree = ""; }; - 0E0CB46B1B3B1E1A00DC6213 /* CCLightCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightCollection.h; sourceTree = ""; }; - 0E0CB46C1B3B1E1A00DC6213 /* CCLightCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLightCollection.m; sourceTree = ""; }; - 0E0CB46D1B3B1E1A00DC6213 /* CCLightGroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightGroups.h; sourceTree = ""; }; - 0E0CB46E1B3B1E1A00DC6213 /* CCLightNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightNode.h; sourceTree = ""; }; - 0E0CB46F1B3B1E1A00DC6213 /* CCLightNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLightNode.m; sourceTree = ""; }; - 0E0CB4701B3B1E1A00DC6213 /* CCLightNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLightNode_Private.h; sourceTree = ""; }; - 0E0CB4711B3B1E1A00DC6213 /* ccMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccMacros.h; sourceTree = ""; }; - 0E0CB4721B3B1E1A00DC6213 /* CCMotionStreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMotionStreak.h; sourceTree = ""; }; - 0E0CB4731B3B1E1A00DC6213 /* CCMotionStreak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMotionStreak.m; sourceTree = ""; }; - 0E0CB4741B3B1E1A00DC6213 /* CCNoARC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNoARC.m; sourceTree = ""; }; - 0E0CB4751B3B1E1A00DC6213 /* CCNode+Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CCNode+Debug.h"; sourceTree = ""; }; - 0E0CB4761B3B1E1A00DC6213 /* CCNode+Debug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CCNode+Debug.m"; sourceTree = ""; }; - 0E0CB4771B3B1E1A00DC6213 /* CCNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNode.h; sourceTree = ""; }; - 0E0CB4781B3B1E1A00DC6213 /* CCNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNode.m; sourceTree = ""; }; - 0E0CB4791B3B1E1A00DC6213 /* CCNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNode_Private.h; sourceTree = ""; }; - 0E0CB47A1B3B1E1A00DC6213 /* CCNodeColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNodeColor.h; sourceTree = ""; }; - 0E0CB47B1B3B1E1A00DC6213 /* CCNodeColor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCNodeColor.m; sourceTree = ""; }; - 0E0CB4951B3B1E1A00DC6213 /* CCParallaxNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParallaxNode.h; sourceTree = ""; }; - 0E0CB4961B3B1E1A00DC6213 /* CCParallaxNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParallaxNode.m; sourceTree = ""; }; - 0E0CB4971B3B1E1A00DC6213 /* CCParticleBatchNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleBatchNode.h; sourceTree = ""; }; - 0E0CB4981B3B1E1A00DC6213 /* CCParticleBatchNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleBatchNode.m; sourceTree = ""; }; - 0E0CB4991B3B1E1A00DC6213 /* CCParticleExamples.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleExamples.h; sourceTree = ""; }; - 0E0CB49A1B3B1E1A00DC6213 /* CCParticleExamples.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleExamples.m; sourceTree = ""; }; - 0E0CB49B1B3B1E1A00DC6213 /* CCParticleSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystem.h; sourceTree = ""; }; - 0E0CB49C1B3B1E1A00DC6213 /* CCParticleSystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleSystem.m; sourceTree = ""; }; - 0E0CB49D1B3B1E1A00DC6213 /* CCParticleSystem_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystem_Private.h; sourceTree = ""; }; - 0E0CB49E1B3B1E1A00DC6213 /* CCParticleSystemBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystemBase.h; sourceTree = ""; }; - 0E0CB49F1B3B1E1A00DC6213 /* CCParticleSystemBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCParticleSystemBase.m; sourceTree = ""; }; - 0E0CB4A01B3B1E1A00DC6213 /* CCParticleSystemBase_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCParticleSystemBase_Private.h; sourceTree = ""; }; - 0E0CB4A11B3B1E1A00DC6213 /* CCPhysics+ObjectiveChipmunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CCPhysics+ObjectiveChipmunk.h"; sourceTree = ""; }; - 0E0CB4A21B3B1E1A00DC6213 /* CCPhysicsBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsBody.h; sourceTree = ""; }; - 0E0CB4A31B3B1E1A00DC6213 /* CCPhysicsBody.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsBody.m; sourceTree = ""; }; - 0E0CB4A41B3B1E1A00DC6213 /* CCPhysicsJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsJoint.h; sourceTree = ""; }; - 0E0CB4A51B3B1E1A00DC6213 /* CCPhysicsJoint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsJoint.m; sourceTree = ""; }; - 0E0CB4A61B3B1E1A00DC6213 /* CCPhysicsNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsNode.h; sourceTree = ""; }; - 0E0CB4A71B3B1E1A00DC6213 /* CCPhysicsNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsNode.m; sourceTree = ""; }; - 0E0CB4A81B3B1E1A00DC6213 /* CCPhysicsShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsShape.h; sourceTree = ""; }; - 0E0CB4A91B3B1E1A00DC6213 /* CCPhysicsShape.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsShape.m; sourceTree = ""; }; - 0E0CB4AA1B3B1E1A00DC6213 /* CCProgressNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProgressNode.h; sourceTree = ""; }; - 0E0CB4AB1B3B1E1A00DC6213 /* CCProgressNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCProgressNode.m; sourceTree = ""; }; - 0E0CB4AC1B3B1E1A00DC6213 /* CCProgressNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProgressNode_Private.h; sourceTree = ""; }; - 0E0CB4AD1B3B1E1A00DC6213 /* CCProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProtocols.h; sourceTree = ""; }; - 0E0CB4AE1B3B1E1A00DC6213 /* CCRenderDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderDispatch.h; sourceTree = ""; }; - 0E0CB4AF1B3B1E1A00DC6213 /* CCRenderDispatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRenderDispatch.m; sourceTree = ""; }; - 0E0CB4B01B3B1E1A00DC6213 /* CCRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderer.h; sourceTree = ""; }; - 0E0CB4B11B3B1E1A00DC6213 /* CCRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRenderer.m; sourceTree = ""; }; - 0E0CB4B21B3B1E1A00DC6213 /* CCRenderer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderer_Private.h; sourceTree = ""; }; - 0E0CB4B31B3B1E1B00DC6213 /* CCRendererBasicTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRendererBasicTypes.h; sourceTree = ""; }; - 0E0CB4B41B3B1E1B00DC6213 /* CCRendererBasicTypes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRendererBasicTypes.m; sourceTree = ""; }; - 0E0CB4B51B3B1E1B00DC6213 /* CCRendererBasicTypes_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRendererBasicTypes_Private.h; sourceTree = ""; }; - 0E0CB4B61B3B1E1B00DC6213 /* CCRendererGLSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRendererGLSupport.m; sourceTree = ""; }; - 0E0CB4B71B3B1E1B00DC6213 /* CCRendererSharedTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRendererSharedTypes.h; sourceTree = ""; }; - 0E0CB4B81B3B1E1B00DC6213 /* CCRenderTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderTexture.h; sourceTree = ""; }; - 0E0CB4B91B3B1E1B00DC6213 /* CCRenderTexture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRenderTexture.m; sourceTree = ""; }; - 0E0CB4BA1B3B1E1B00DC6213 /* CCRenderTexture_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderTexture_Private.h; sourceTree = ""; }; - 0E0CB4BB1B3B1E1B00DC6213 /* CCResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCResponder.h; sourceTree = ""; }; - 0E0CB4BC1B3B1E1B00DC6213 /* CCResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCResponder.m; sourceTree = ""; }; - 0E0CB4BD1B3B1E1B00DC6213 /* CCResponderManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCResponderManager.h; sourceTree = ""; }; - 0E0CB4BE1B3B1E1B00DC6213 /* CCResponderManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCResponderManager.m; sourceTree = ""; }; - 0E0CB4BF1B3B1E1B00DC6213 /* CCScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCScene.h; sourceTree = ""; }; - 0E0CB4C01B3B1E1B00DC6213 /* CCScene.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCScene.m; sourceTree = ""; }; - 0E0CB4C11B3B1E1B00DC6213 /* CCScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCScheduler.h; sourceTree = ""; }; - 0E0CB4C21B3B1E1B00DC6213 /* CCScheduler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCScheduler.m; sourceTree = ""; }; - 0E0CB4C31B3B1E1B00DC6213 /* CCShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCShader.h; sourceTree = ""; }; - 0E0CB4C41B3B1E1B00DC6213 /* CCShader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCShader.m; sourceTree = ""; }; - 0E0CB4C51B3B1E1B00DC6213 /* CCShader_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCShader_Private.h; sourceTree = ""; }; - 0E0CB4C61B3B1E1B00DC6213 /* CCSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite.h; sourceTree = ""; }; - 0E0CB4C71B3B1E1B00DC6213 /* CCSprite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSprite.m; sourceTree = ""; }; - 0E0CB4C81B3B1E1B00DC6213 /* CCSprite9Slice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite9Slice.h; sourceTree = ""; }; - 0E0CB4C91B3B1E1B00DC6213 /* CCSprite9Slice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSprite9Slice.m; sourceTree = ""; }; - 0E0CB4CA1B3B1E1B00DC6213 /* CCSprite_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite_Private.h; sourceTree = ""; }; - 0E0CB4CB1B3B1E1B00DC6213 /* CCSpriteBatchNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSpriteBatchNode.h; sourceTree = ""; }; - 0E0CB4CC1B3B1E1B00DC6213 /* CCSpriteBatchNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSpriteBatchNode.m; sourceTree = ""; }; - 0E0CB4CD1B3B1E1B00DC6213 /* CCSpriteFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSpriteFrame.h; sourceTree = ""; }; - 0E0CB4CE1B3B1E1B00DC6213 /* CCSpriteFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSpriteFrame.m; sourceTree = ""; }; - 0E0CB4CF1B3B1E1B00DC6213 /* CCSpriteFrameCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSpriteFrameCache.h; sourceTree = ""; }; - 0E0CB4D01B3B1E1B00DC6213 /* CCSpriteFrameCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSpriteFrameCache.m; sourceTree = ""; }; - 0E0CB4D11B3B1E1B00DC6213 /* CCTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTexture.h; sourceTree = ""; }; - 0E0CB4D21B3B1E1B00DC6213 /* CCTexture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTexture.m; sourceTree = ""; }; - 0E0CB4D31B3B1E1B00DC6213 /* CCTexture_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTexture_Private.h; sourceTree = ""; }; - 0E0CB4D41B3B1E1B00DC6213 /* CCTextureCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTextureCache.h; sourceTree = ""; }; - 0E0CB4D51B3B1E1B00DC6213 /* CCTextureCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTextureCache.m; sourceTree = ""; }; - 0E0CB4D61B3B1E1B00DC6213 /* CCTexturePVR.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTexturePVR.h; sourceTree = ""; }; - 0E0CB4D71B3B1E1B00DC6213 /* CCTexturePVR.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTexturePVR.m; sourceTree = ""; }; - 0E0CB4D81B3B1E1B00DC6213 /* CCTiledMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTiledMap.h; sourceTree = ""; }; - 0E0CB4D91B3B1E1B00DC6213 /* CCTiledMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTiledMap.m; sourceTree = ""; }; - 0E0CB4DA1B3B1E1B00DC6213 /* CCTiledMapLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTiledMapLayer.h; sourceTree = ""; }; - 0E0CB4DB1B3B1E1B00DC6213 /* CCTiledMapLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTiledMapLayer.m; sourceTree = ""; }; - 0E0CB4DC1B3B1E1B00DC6213 /* CCTiledMapLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTiledMapLayer_Private.h; sourceTree = ""; }; - 0E0CB4DD1B3B1E1B00DC6213 /* CCTiledMapObjectGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTiledMapObjectGroup.h; sourceTree = ""; }; - 0E0CB4DE1B3B1E1B00DC6213 /* CCTiledMapObjectGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTiledMapObjectGroup.m; sourceTree = ""; }; - 0E0CB4DF1B3B1E1B00DC6213 /* CCTMXXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTMXXMLParser.h; sourceTree = ""; }; - 0E0CB4E01B3B1E1B00DC6213 /* CCTMXXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTMXXMLParser.m; sourceTree = ""; }; - 0E0CB4E11B3B1E1B00DC6213 /* CCTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouch.h; sourceTree = ""; }; - 0E0CB4E21B3B1E1B00DC6213 /* CCTouch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouch.m; sourceTree = ""; }; - 0E0CB4E31B3B1E1B00DC6213 /* CCTouchEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouchEvent.h; sourceTree = ""; }; - 0E0CB4E41B3B1E1B00DC6213 /* CCTouchEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouchEvent.m; sourceTree = ""; }; - 0E0CB4E51B3B1E1B00DC6213 /* CCTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTransition.h; sourceTree = ""; }; - 0E0CB4E61B3B1E1B00DC6213 /* CCTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTransition.m; sourceTree = ""; }; - 0E0CB4E71B3B1E1B00DC6213 /* ccTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccTypes.h; sourceTree = ""; }; - 0E0CB4E81B3B1E1B00DC6213 /* cocos2d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cocos2d.h; sourceTree = ""; }; - 0E0CB4E91B3B1E1B00DC6213 /* cocos2d.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = cocos2d.m; sourceTree = ""; }; - 0E0CB4EA1B3B1E1B00DC6213 /* NSValue+CCRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+CCRenderer.h"; sourceTree = ""; }; - 0E0CB4EB1B3B1E1B00DC6213 /* NSValue+CCRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSValue+CCRenderer.m"; sourceTree = ""; }; - 0E0CB5081B3B1E1B00DC6213 /* CCDirectorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCDirectorView.h; sourceTree = ""; }; - 0E0CB5091B3B1E1B00DC6213 /* CCGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCGL.h; sourceTree = ""; }; - 0E0CB50A1B3B1E1B00DC6213 /* CCNS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNS.h; sourceTree = ""; }; - 0E0CB50B1B3B1E1B00DC6213 /* CCRenderDispatch_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderDispatch_Private.h; sourceTree = ""; }; - 0E0CB50D1B3B1E1B00DC6213 /* CCAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAppDelegate.h; sourceTree = ""; }; - 0E0CB50E1B3B1E1B00DC6213 /* CCAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCAppDelegate.m; sourceTree = ""; }; - 0E0CB50F1B3B1E1B00DC6213 /* CCDirectorIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCDirectorIOS.h; sourceTree = ""; }; - 0E0CB5101B3B1E1B00DC6213 /* CCDirectorIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCDirectorIOS.m; sourceTree = ""; }; - 0E0CB5111B3B1E1B00DC6213 /* CCGLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCGLView.h; sourceTree = ""; }; - 0E0CB5121B3B1E1B00DC6213 /* CCGLView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCGLView.m; sourceTree = ""; }; - 0E0CB5131B3B1E1B00DC6213 /* CCMetalSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMetalSupport.m; sourceTree = ""; }; - 0E0CB5141B3B1E1B00DC6213 /* CCMetalSupport_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMetalSupport_Private.h; sourceTree = ""; }; - 0E0CB5151B3B1E1B00DC6213 /* CCMetalView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMetalView.h; sourceTree = ""; }; - 0E0CB5161B3B1E1B00DC6213 /* CCMetalView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMetalView.m; sourceTree = ""; }; - 0E0CB5171B3B1E1B00DC6213 /* CCShaders.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = CCShaders.metal; sourceTree = ""; }; - 0E0CB5181B3B1E1B00DC6213 /* CCTouchIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTouchIOS.h; sourceTree = ""; }; - 0E0CB5191B3B1E1B00DC6213 /* CCTouchIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTouchIOS.m; sourceTree = ""; }; - 0E0CB51A1B3B1E1B00DC6213 /* UITouch+CC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITouch+CC.h"; sourceTree = ""; }; - 0E0CB51B1B3B1E1B00DC6213 /* UITouch+CC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITouch+CC.m"; sourceTree = ""; }; - 0E0CB51D1B3B1E1B00DC6213 /* CCDirectorMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCDirectorMac.h; sourceTree = ""; }; - 0E0CB51E1B3B1E1B00DC6213 /* CCDirectorMac.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCDirectorMac.m; sourceTree = ""; }; - 0E0CB51F1B3B1E1B00DC6213 /* CCGLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCGLView.h; sourceTree = ""; }; - 0E0CB5201B3B1E1B00DC6213 /* CCGLView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCGLView.m; sourceTree = ""; }; - 0E0CB5211B3B1E1B00DC6213 /* CCWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCWindow.h; sourceTree = ""; }; - 0E0CB5221B3B1E1B00DC6213 /* CCWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCWindow.m; sourceTree = ""; }; - 0E0CB5231B3B1E1B00DC6213 /* NSEvent+CC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSEvent+CC.h"; sourceTree = ""; }; - 0E0CB5241B3B1E1B00DC6213 /* NSEvent+CC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSEvent+CC.m"; sourceTree = ""; }; - 0E0CB5261B3B1E1B00DC6213 /* base64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = base64.c; sourceTree = ""; }; - 0E0CB5271B3B1E1B00DC6213 /* base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = ""; }; - 0E0CB5281B3B1E1B00DC6213 /* CCColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCColor.h; sourceTree = ""; }; - 0E0CB5291B3B1E1B00DC6213 /* CCColor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCColor.m; sourceTree = ""; }; - 0E0CB52A1B3B1E1B00DC6213 /* CCFileUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCFileUtils.h; sourceTree = ""; }; - 0E0CB52B1B3B1E1B00DC6213 /* CCFileUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCFileUtils.m; sourceTree = ""; }; - 0E0CB52C1B3B1E1B00DC6213 /* CCProfiling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProfiling.h; sourceTree = ""; }; - 0E0CB52D1B3B1E1B00DC6213 /* CCProfiling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCProfiling.m; sourceTree = ""; }; - 0E0CB52E1B3B1E1B00DC6213 /* ccUtils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ccUtils.c; sourceTree = ""; }; - 0E0CB52F1B3B1E1B00DC6213 /* ccUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccUtils.h; sourceTree = ""; }; - 0E0CB5301B3B1E1B00DC6213 /* CCVertex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCVertex.h; sourceTree = ""; }; - 0E0CB5311B3B1E1B00DC6213 /* CCVertex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCVertex.m; sourceTree = ""; }; - 0E0CB5321B3B1E1B00DC6213 /* CGPointExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CGPointExtension.h; sourceTree = ""; }; - 0E0CB5331B3B1E1B00DC6213 /* CGPointExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CGPointExtension.m; sourceTree = ""; }; - 0E0CB5341B3B1E1B00DC6213 /* NSAttributedString+CCAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSAttributedString+CCAdditions.h"; sourceTree = ""; }; - 0E0CB5351B3B1E1B00DC6213 /* NSAttributedString+CCAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSAttributedString+CCAdditions.m"; sourceTree = ""; }; - 0E0CB5361B3B1E1B00DC6213 /* NSThread+performBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSThread+performBlock.h"; sourceTree = ""; }; - 0E0CB5371B3B1E1B00DC6213 /* NSThread+performBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSThread+performBlock.m"; sourceTree = ""; }; - 0E0CB5381B3B1E1B00DC6213 /* TGAlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGAlib.h; sourceTree = ""; }; - 0E0CB5391B3B1E1B00DC6213 /* TGAlib.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGAlib.m; sourceTree = ""; }; - 0E0CB53A1B3B1E1B00DC6213 /* uthash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uthash.h; sourceTree = ""; }; - 0E0CB53B1B3B1E1B00DC6213 /* utlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utlist.h; sourceTree = ""; }; - 0E0CB53C1B3B1E1B00DC6213 /* ZipUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZipUtils.h; sourceTree = ""; }; - 0E0CB53D1B3B1E1B00DC6213 /* ZipUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZipUtils.m; sourceTree = ""; }; - 0E0CB5C31B3B1E2300DC6213 /* CCAnimationManager+FrameAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CCAnimationManager+FrameAnimation.h"; sourceTree = ""; }; - 0E0CB5C41B3B1E2300DC6213 /* CCAnimationManager+FrameAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CCAnimationManager+FrameAnimation.m"; sourceTree = ""; }; - 0E0CB5C51B3B1E2300DC6213 /* CCAnimationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAnimationManager.h; sourceTree = ""; }; - 0E0CB5C61B3B1E2300DC6213 /* CCAnimationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCAnimationManager.m; sourceTree = ""; }; - 0E0CB5C71B3B1E2300DC6213 /* CCAnimationManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAnimationManager_Private.h; sourceTree = ""; }; - 0E0CB5C81B3B1E2300DC6213 /* CCBAnimationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBAnimationManager.h; sourceTree = ""; }; - 0E0CB5C91B3B1E2300DC6213 /* CCBAnimationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBAnimationManager.m; sourceTree = ""; }; - 0E0CB5CA1B3B1E2300DC6213 /* CCBKeyframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBKeyframe.h; sourceTree = ""; }; - 0E0CB5CB1B3B1E2300DC6213 /* CCBKeyframe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBKeyframe.m; sourceTree = ""; }; - 0E0CB5CC1B3B1E2300DC6213 /* CCBLocalizationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBLocalizationManager.h; sourceTree = ""; }; - 0E0CB5CD1B3B1E2300DC6213 /* CCBLocalizationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBLocalizationManager.m; sourceTree = ""; }; - 0E0CB5CE1B3B1E2300DC6213 /* CCBReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBReader.h; sourceTree = ""; }; - 0E0CB5CF1B3B1E2300DC6213 /* CCBReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBReader.m; sourceTree = ""; }; - 0E0CB5D01B3B1E2300DC6213 /* CCBReader_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBReader_Private.h; sourceTree = ""; }; - 0E0CB5D11B3B1E2300DC6213 /* CCBSequence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBSequence.h; sourceTree = ""; }; - 0E0CB5D21B3B1E2300DC6213 /* CCBsequence.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBsequence.m; sourceTree = ""; }; - 0E0CB5D31B3B1E2300DC6213 /* CCBSequenceProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBSequenceProperty.h; sourceTree = ""; }; - 0E0CB5D41B3B1E2300DC6213 /* CCBSequenceProperty.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBSequenceProperty.m; sourceTree = ""; }; - 0E0CB5D51B3B1E2300DC6213 /* CCBuilderReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBuilderReader.h; sourceTree = ""; }; - 0E0CB5D61B3B1E2300DC6213 /* CCButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCButton.h; sourceTree = ""; }; - 0E0CB5D71B3B1E2300DC6213 /* CCButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCButton.m; sourceTree = ""; }; - 0E0CB5D81B3B1E2300DC6213 /* CCControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCControl.h; sourceTree = ""; }; - 0E0CB5D91B3B1E2300DC6213 /* CCControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCControl.m; sourceTree = ""; }; - 0E0CB5DA1B3B1E2300DC6213 /* CCControlSubclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCControlSubclass.h; sourceTree = ""; }; - 0E0CB5DB1B3B1E2300DC6213 /* CCControlTextureFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCControlTextureFactory.h; sourceTree = ""; }; - 0E0CB5DC1B3B1E2300DC6213 /* CCControlTextureFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCControlTextureFactory.m; sourceTree = ""; }; - 0E0CB5DD1B3B1E2300DC6213 /* CCScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCScrollView.h; sourceTree = ""; }; - 0E0CB5DE1B3B1E2300DC6213 /* CCScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCScrollView.m; sourceTree = ""; }; - 0E0CB5DF1B3B1E2300DC6213 /* CCSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSlider.h; sourceTree = ""; }; - 0E0CB5E01B3B1E2300DC6213 /* CCSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSlider.m; sourceTree = ""; }; - 0E0CB5E11B3B1E2300DC6213 /* CCTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTableView.h; sourceTree = ""; }; - 0E0CB5E21B3B1E2300DC6213 /* CCTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTableView.m; sourceTree = ""; }; - 0E0CB5E31B3B1E2300DC6213 /* CCTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTextField.h; sourceTree = ""; }; - 0E0CB5E41B3B1E2300DC6213 /* CCTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTextField.m; sourceTree = ""; }; - 0E0CB5E51B3B1E2300DC6213 /* cocos2d-ui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "cocos2d-ui.h"; sourceTree = ""; }; - 0E0CB5ED1B3B1E2300DC6213 /* CCPlatformTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPlatformTextField.h; sourceTree = ""; }; - 0E0CB5EE1B3B1E2300DC6213 /* CCPlatformTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPlatformTextField.m; sourceTree = ""; }; - 0E0CB5F01B3B1E2300DC6213 /* CCPlatformTextFieldIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPlatformTextFieldIOS.h; sourceTree = ""; }; - 0E0CB5F11B3B1E2300DC6213 /* CCPlatformTextFieldIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPlatformTextFieldIOS.m; sourceTree = ""; }; - 0E0CB5F31B3B1E2300DC6213 /* CCPlatformTextFieldMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPlatformTextFieldMac.h; sourceTree = ""; }; - 0E0CB5F41B3B1E2300DC6213 /* CCPlatformTextFieldMac.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPlatformTextFieldMac.m; sourceTree = ""; }; - 0E0CB60C1B3B1E5700DC6213 /* chipmunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chipmunk.h; sourceTree = ""; }; - 0E0CB60D1B3B1E5700DC6213 /* chipmunk_ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chipmunk_ffi.h; sourceTree = ""; }; - 0E0CB60E1B3B1E5700DC6213 /* chipmunk_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chipmunk_private.h; sourceTree = ""; }; - 0E0CB60F1B3B1E5700DC6213 /* chipmunk_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chipmunk_types.h; sourceTree = ""; }; - 0E0CB6101B3B1E5700DC6213 /* chipmunk_unsafe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chipmunk_unsafe.h; sourceTree = ""; }; - 0E0CB6111B3B1E5700DC6213 /* cpArbiter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpArbiter.h; sourceTree = ""; }; - 0E0CB6121B3B1E5700DC6213 /* cpBB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpBB.h; sourceTree = ""; }; - 0E0CB6131B3B1E5700DC6213 /* cpBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpBody.h; sourceTree = ""; }; - 0E0CB6141B3B1E5700DC6213 /* cpConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpConstraint.h; sourceTree = ""; }; - 0E0CB6151B3B1E5700DC6213 /* cpDampedRotarySpring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpDampedRotarySpring.h; sourceTree = ""; }; - 0E0CB6161B3B1E5700DC6213 /* cpDampedSpring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpDampedSpring.h; sourceTree = ""; }; - 0E0CB6171B3B1E5700DC6213 /* cpGearJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpGearJoint.h; sourceTree = ""; }; - 0E0CB6181B3B1E5700DC6213 /* cpGrooveJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpGrooveJoint.h; sourceTree = ""; }; - 0E0CB6191B3B1E5700DC6213 /* cpPinJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpPinJoint.h; sourceTree = ""; }; - 0E0CB61A1B3B1E5700DC6213 /* cpPivotJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpPivotJoint.h; sourceTree = ""; }; - 0E0CB61B1B3B1E5700DC6213 /* cpPolyShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpPolyShape.h; sourceTree = ""; }; - 0E0CB61C1B3B1E5700DC6213 /* cpRatchetJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpRatchetJoint.h; sourceTree = ""; }; - 0E0CB61D1B3B1E5700DC6213 /* cpRotaryLimitJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpRotaryLimitJoint.h; sourceTree = ""; }; - 0E0CB61E1B3B1E5700DC6213 /* cpShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpShape.h; sourceTree = ""; }; - 0E0CB61F1B3B1E5700DC6213 /* cpSimpleMotor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpSimpleMotor.h; sourceTree = ""; }; - 0E0CB6201B3B1E5700DC6213 /* cpSlideJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpSlideJoint.h; sourceTree = ""; }; - 0E0CB6211B3B1E5700DC6213 /* cpSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpSpace.h; sourceTree = ""; }; - 0E0CB6221B3B1E5700DC6213 /* cpSpatialIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpSpatialIndex.h; sourceTree = ""; }; - 0E0CB6231B3B1E5700DC6213 /* cpTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpTransform.h; sourceTree = ""; }; - 0E0CB6241B3B1E5700DC6213 /* cpVect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpVect.h; sourceTree = ""; }; - 0E0CB6281B3B1E5700DC6213 /* ChipmunkBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChipmunkBody.h; sourceTree = ""; }; - 0E0CB6291B3B1E5700DC6213 /* ChipmunkConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChipmunkConstraint.h; sourceTree = ""; }; - 0E0CB62A1B3B1E5700DC6213 /* ChipmunkExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChipmunkExtras.h; sourceTree = ""; }; - 0E0CB62B1B3B1E5700DC6213 /* ChipmunkMultiGrab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChipmunkMultiGrab.h; sourceTree = ""; }; - 0E0CB62C1B3B1E5700DC6213 /* ChipmunkShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChipmunkShape.h; sourceTree = ""; }; - 0E0CB62D1B3B1E5700DC6213 /* ChipmunkSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChipmunkSpace.h; sourceTree = ""; }; - 0E0CB62E1B3B1E5700DC6213 /* ObjectiveChipmunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectiveChipmunk.h; sourceTree = ""; }; - 0E0CB6301B3B1E5700DC6213 /* ChipmunkBody.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChipmunkBody.m; sourceTree = ""; }; - 0E0CB6311B3B1E5700DC6213 /* ChipmunkConstraint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChipmunkConstraint.m; sourceTree = ""; }; - 0E0CB6321B3B1E5700DC6213 /* ChipmunkMultiGrab.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChipmunkMultiGrab.m; sourceTree = ""; }; - 0E0CB6331B3B1E5700DC6213 /* ChipmunkShape.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChipmunkShape.m; sourceTree = ""; }; - 0E0CB6341B3B1E5700DC6213 /* ChipmunkSpace.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChipmunkSpace.m; sourceTree = ""; }; - 0E0CB6361B3B1E5700DC6213 /* chipmunk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = chipmunk.c; sourceTree = ""; }; - 0E0CB6371B3B1E5700DC6213 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 0E0CB6381B3B1E5700DC6213 /* cpArbiter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpArbiter.c; sourceTree = ""; }; - 0E0CB6391B3B1E5700DC6213 /* cpArray.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpArray.c; sourceTree = ""; }; - 0E0CB63A1B3B1E5700DC6213 /* cpBBTree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpBBTree.c; sourceTree = ""; }; - 0E0CB63B1B3B1E5700DC6213 /* cpBody.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpBody.c; sourceTree = ""; }; - 0E0CB63C1B3B1E5700DC6213 /* cpCollision.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpCollision.c; sourceTree = ""; }; - 0E0CB63D1B3B1E5700DC6213 /* cpConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpConstraint.c; sourceTree = ""; }; - 0E0CB63E1B3B1E5700DC6213 /* cpDampedRotarySpring.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpDampedRotarySpring.c; sourceTree = ""; }; - 0E0CB63F1B3B1E5700DC6213 /* cpDampedSpring.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpDampedSpring.c; sourceTree = ""; }; - 0E0CB6401B3B1E5700DC6213 /* cpGearJoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpGearJoint.c; sourceTree = ""; }; - 0E0CB6411B3B1E5700DC6213 /* cpGrooveJoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpGrooveJoint.c; sourceTree = ""; }; - 0E0CB6421B3B1E5700DC6213 /* cpHashSet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpHashSet.c; sourceTree = ""; }; - 0E0CB6431B3B1E5700DC6213 /* cpPinJoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpPinJoint.c; sourceTree = ""; }; - 0E0CB6441B3B1E5700DC6213 /* cpPivotJoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpPivotJoint.c; sourceTree = ""; }; - 0E0CB6451B3B1E5700DC6213 /* cpPolyShape.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpPolyShape.c; sourceTree = ""; }; - 0E0CB6461B3B1E5700DC6213 /* cpRatchetJoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpRatchetJoint.c; sourceTree = ""; }; - 0E0CB6471B3B1E5700DC6213 /* cpRotaryLimitJoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpRotaryLimitJoint.c; sourceTree = ""; }; - 0E0CB6481B3B1E5700DC6213 /* cpShape.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpShape.c; sourceTree = ""; }; - 0E0CB6491B3B1E5700DC6213 /* cpSimpleMotor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSimpleMotor.c; sourceTree = ""; }; - 0E0CB64A1B3B1E5700DC6213 /* cpSlideJoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSlideJoint.c; sourceTree = ""; }; - 0E0CB64B1B3B1E5700DC6213 /* cpSpace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSpace.c; sourceTree = ""; }; - 0E0CB64C1B3B1E5700DC6213 /* cpSpaceComponent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSpaceComponent.c; sourceTree = ""; }; - 0E0CB64D1B3B1E5700DC6213 /* cpSpaceDebug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSpaceDebug.c; sourceTree = ""; }; - 0E0CB64E1B3B1E5700DC6213 /* cpSpaceHash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSpaceHash.c; sourceTree = ""; }; - 0E0CB64F1B3B1E5700DC6213 /* cpSpaceQuery.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSpaceQuery.c; sourceTree = ""; }; - 0E0CB6501B3B1E5700DC6213 /* cpSpaceStep.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSpaceStep.c; sourceTree = ""; }; - 0E0CB6511B3B1E5700DC6213 /* cpSpatialIndex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSpatialIndex.c; sourceTree = ""; }; - 0E0CB6521B3B1E5700DC6213 /* cpSweep1D.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpSweep1D.c; sourceTree = ""; }; - 0E0CB6531B3B1E5700DC6213 /* prime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prime.h; sourceTree = ""; }; - 0E0CB6781B3B1E6C00DC6213 /* OALAction+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OALAction+Private.h"; sourceTree = ""; }; - 0E0CB6791B3B1E6C00DC6213 /* OALAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAction.h; sourceTree = ""; }; - 0E0CB67A1B3B1E6C00DC6213 /* OALAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAction.m; sourceTree = ""; }; - 0E0CB67B1B3B1E6C00DC6213 /* OALActionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALActionManager.h; sourceTree = ""; }; - 0E0CB67C1B3B1E6C00DC6213 /* OALActionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALActionManager.m; sourceTree = ""; }; - 0E0CB67D1B3B1E6C00DC6213 /* OALAudioActions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioActions.h; sourceTree = ""; }; - 0E0CB67E1B3B1E6C00DC6213 /* OALAudioActions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioActions.m; sourceTree = ""; }; - 0E0CB67F1B3B1E6C00DC6213 /* OALUtilityActions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALUtilityActions.h; sourceTree = ""; }; - 0E0CB6801B3B1E6C00DC6213 /* OALUtilityActions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALUtilityActions.m; sourceTree = ""; }; - 0E0CB6821B3B1E6C00DC6213 /* OALAudioTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioTrack.h; sourceTree = ""; }; - 0E0CB6831B3B1E6C00DC6213 /* OALAudioTrack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioTrack.m; sourceTree = ""; }; - 0E0CB6841B3B1E6C00DC6213 /* OALAudioTrackNotifications.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioTrackNotifications.h; sourceTree = ""; }; - 0E0CB6851B3B1E6C00DC6213 /* OALAudioTrackNotifications.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioTrackNotifications.m; sourceTree = ""; }; - 0E0CB6861B3B1E6C00DC6213 /* OALAudioTracks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioTracks.h; sourceTree = ""; }; - 0E0CB6871B3B1E6C00DC6213 /* OALAudioTracks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioTracks.m; sourceTree = ""; }; - 0E0CB6881B3B1E6C00DC6213 /* OALSimpleAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALSimpleAudio.h; sourceTree = ""; }; - 0E0CB6891B3B1E6C00DC6213 /* OALSimpleAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALSimpleAudio.m; sourceTree = ""; }; - 0E0CB68A1B3B1E6C00DC6213 /* ObjectAL (iOS)-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ObjectAL (iOS)-Prefix.pch"; sourceTree = ""; }; - 0E0CB68B1B3B1E6C00DC6213 /* ObjectAL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectAL.h; sourceTree = ""; }; - 0E0CB68C1B3B1E6C00DC6213 /* ObjectALConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectALConfig.h; sourceTree = ""; }; - 0E0CB68E1B3B1E6C00DC6213 /* ALBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALBuffer.h; sourceTree = ""; }; - 0E0CB68F1B3B1E6C00DC6213 /* ALBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALBuffer.m; sourceTree = ""; }; - 0E0CB6901B3B1E6C00DC6213 /* ALCaptureDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALCaptureDevice.h; sourceTree = ""; }; - 0E0CB6911B3B1E6C00DC6213 /* ALCaptureDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALCaptureDevice.m; sourceTree = ""; }; - 0E0CB6921B3B1E6C00DC6213 /* ALChannelSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALChannelSource.h; sourceTree = ""; }; - 0E0CB6931B3B1E6C00DC6213 /* ALChannelSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALChannelSource.m; sourceTree = ""; }; - 0E0CB6941B3B1E6C00DC6213 /* ALContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALContext.h; sourceTree = ""; }; - 0E0CB6951B3B1E6C00DC6213 /* ALContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALContext.m; sourceTree = ""; }; - 0E0CB6961B3B1E6C00DC6213 /* ALDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALDevice.h; sourceTree = ""; }; - 0E0CB6971B3B1E6C00DC6213 /* ALDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALDevice.m; sourceTree = ""; }; - 0E0CB6981B3B1E6C00DC6213 /* ALListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALListener.h; sourceTree = ""; }; - 0E0CB6991B3B1E6C00DC6213 /* ALListener.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALListener.m; sourceTree = ""; }; - 0E0CB69A1B3B1E6C00DC6213 /* ALSoundSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALSoundSource.h; sourceTree = ""; }; - 0E0CB69B1B3B1E6C00DC6213 /* ALSoundSourcePool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALSoundSourcePool.h; sourceTree = ""; }; - 0E0CB69C1B3B1E6C00DC6213 /* ALSoundSourcePool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALSoundSourcePool.m; sourceTree = ""; }; - 0E0CB69D1B3B1E6C00DC6213 /* ALSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALSource.h; sourceTree = ""; }; - 0E0CB69E1B3B1E6C00DC6213 /* ALSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALSource.m; sourceTree = ""; }; - 0E0CB69F1B3B1E6C00DC6213 /* ALTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALTypes.h; sourceTree = ""; }; - 0E0CB6A01B3B1E6C00DC6213 /* ALWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ALWrapper.h; sourceTree = ""; }; - 0E0CB6A11B3B1E6C00DC6213 /* ALWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ALWrapper.m; sourceTree = ""; }; - 0E0CB6A21B3B1E6C00DC6213 /* OpenALManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenALManager.h; sourceTree = ""; }; - 0E0CB6A31B3B1E6C00DC6213 /* OpenALManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenALManager.m; sourceTree = ""; }; - 0E0CB6A51B3B1E6C00DC6213 /* OALAudioSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioSession.h; sourceTree = ""; }; - 0E0CB6A61B3B1E6C00DC6213 /* OALAudioSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioSession.m; sourceTree = ""; }; - 0E0CB6A71B3B1E6C00DC6213 /* OALSuspendHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALSuspendHandler.h; sourceTree = ""; }; - 0E0CB6A81B3B1E6C00DC6213 /* OALSuspendHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALSuspendHandler.m; sourceTree = ""; }; - 0E0CB6AA1B3B1E6C00DC6213 /* ARCSafe_MemMgmt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARCSafe_MemMgmt.h; sourceTree = ""; }; - 0E0CB6AB1B3B1E6C00DC6213 /* IOSVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOSVersion.h; sourceTree = ""; }; - 0E0CB6AC1B3B1E6C00DC6213 /* IOSVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IOSVersion.m; sourceTree = ""; }; - 0E0CB6AD1B3B1E6C00DC6213 /* mach_timing.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mach_timing.c; sourceTree = ""; }; - 0E0CB6AE1B3B1E6C00DC6213 /* mach_timing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mach_timing.h; sourceTree = ""; }; - 0E0CB6AF1B3B1E6C00DC6213 /* NSMutableArray+WeakReferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+WeakReferences.h"; sourceTree = ""; }; - 0E0CB6B01B3B1E6C00DC6213 /* NSMutableArray+WeakReferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+WeakReferences.m"; sourceTree = ""; }; - 0E0CB6B11B3B1E6C00DC6213 /* NSMutableDictionary+WeakReferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableDictionary+WeakReferences.h"; sourceTree = ""; }; - 0E0CB6B21B3B1E6C00DC6213 /* NSMutableDictionary+WeakReferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableDictionary+WeakReferences.m"; sourceTree = ""; }; - 0E0CB6B31B3B1E6C00DC6213 /* OALAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALAudioFile.h; sourceTree = ""; }; - 0E0CB6B41B3B1E6C00DC6213 /* OALAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALAudioFile.m; sourceTree = ""; }; - 0E0CB6B51B3B1E6C00DC6213 /* OALNotifications.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALNotifications.h; sourceTree = ""; }; - 0E0CB6B61B3B1E6C00DC6213 /* OALTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OALTools.h; sourceTree = ""; }; - 0E0CB6B71B3B1E6C00DC6213 /* OALTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OALTools.m; sourceTree = ""; }; - 0E0CB6B81B3B1E6C00DC6213 /* ObjectALMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectALMacros.h; sourceTree = ""; }; - 0E0CB6B91B3B1E6C00DC6213 /* SynthesizeSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SynthesizeSingleton.h; sourceTree = ""; }; - 0E0CB6D41B3B1F8C00DC6213 /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = ""; }; - 0E1D34BF1B56AB310014C76A /* white_square.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = white_square.png; path = "templates/cocos2d iOS.xctemplate/Resources/white_square.png"; sourceTree = ""; }; - 0E26A6E71B4A946300C3D15F /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "../Resources/Default-568h@2x.png"; sourceTree = ""; }; - 0E26A6E81B4A946300C3D15F /* Default-Landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-Landscape.png"; path = "../Resources/Default-Landscape.png"; sourceTree = ""; }; - 0E26A6E91B4A946300C3D15F /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = ../Resources/Default.png; sourceTree = ""; }; - 0E26A6EA1B4A946300C3D15F /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "../Resources/Default@2x.png"; sourceTree = ""; }; - 0E26A6EB1B4A946300C3D15F /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72.png"; path = "../Resources/Icon-72.png"; sourceTree = ""; }; - 0E26A6EC1B4A946300C3D15F /* Icon-Small-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small-50.png"; path = "../Resources/Icon-Small-50.png"; sourceTree = ""; }; - 0E26A6ED1B4A946300C3D15F /* Icon-Small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small.png"; path = "../Resources/Icon-Small.png"; sourceTree = ""; }; - 0E26A6EE1B4A946300C3D15F /* Icon-Small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small@2x.png"; path = "../Resources/Icon-Small@2x.png"; sourceTree = ""; }; - 0E26A6EF1B4A946300C3D15F /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = ../Resources/Icon.png; sourceTree = ""; }; - 0E26A6F01B4A946300C3D15F /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "../Resources/Icon@2x.png"; sourceTree = ""; }; - 0E6B406A1B3B1BF9006FB98A /* cocos2d-template.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "cocos2d-template.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0E6B406E1B3B1BF9006FB98A /* libObjectiveChipmunk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libObjectiveChipmunk.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 0E7B6A0E1B53F56100A453BF /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 0E6B40671B3B1BF9006FB98A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E7B6A0F1B53F56100A453BF /* OpenAL.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0E0CB3FE1B3B1D3100DC6213 /* Resources */ = { - isa = PBXGroup; - children = ( - 0E1D34BF1B56AB310014C76A /* white_square.png */, - ); - name = Resources; - sourceTree = ""; - }; - 0E0CB4081B3B1E0700DC6213 /* Libraries */ = { - isa = PBXGroup; - children = ( - 0E0CB4091B3B1E1A00DC6213 /* cocos2d */, - 0E0CB6761B3B1E6C00DC6213 /* ObjectAL */, - 0E0CB5C11B3B1E2300DC6213 /* cocos2d-ui */, - 0E0CB6091B3B1E3C00DC6213 /* Chipmunk */, - ); - name = Libraries; - sourceTree = ""; - }; - 0E0CB4091B3B1E1A00DC6213 /* cocos2d */ = { - isa = PBXGroup; - children = ( - 0ED5FCCA1B4AF017001874AD /* Unused */, - 0E26A6FE1B4ABADA00C3D15F /* Base Types */, - 0E8287EB1B4A8C8B00E34977 /* Base Nodes */, - 0E0CB40A1B3B1E1A00DC6213 /* CCAction.h */, - 0E0CB40B1B3B1E1A00DC6213 /* CCAction.m */, - 0E0CB40C1B3B1E1A00DC6213 /* CCActionCatmullRom.h */, - 0E0CB40D1B3B1E1A00DC6213 /* CCActionCatmullRom.m */, - 0E0CB40E1B3B1E1A00DC6213 /* CCActionEase.h */, - 0E0CB40F1B3B1E1A00DC6213 /* CCActionEase.m */, - 0E0CB4101B3B1E1A00DC6213 /* CCActionInstant.h */, - 0E0CB4111B3B1E1A00DC6213 /* CCActionInstant.m */, - 0E0CB4121B3B1E1A00DC6213 /* CCActionInterval.h */, - 0E0CB4131B3B1E1A00DC6213 /* CCActionInterval.m */, - 0E0CB4141B3B1E1A00DC6213 /* CCActionManager.h */, - 0E0CB4151B3B1E1A00DC6213 /* CCActionManager.m */, - 0E0CB4161B3B1E1A00DC6213 /* CCActionManager_Private.h */, - 0E0CB4171B3B1E1A00DC6213 /* CCActionProgressTimer.h */, - 0E0CB4181B3B1E1A00DC6213 /* CCActionProgressTimer.m */, - 0E0CB4191B3B1E1A00DC6213 /* CCActionTween.h */, - 0E0CB41A1B3B1E1A00DC6213 /* CCActionTween.m */, - 0E0CB41B1B3B1E1A00DC6213 /* CCAnimation.h */, - 0E0CB41C1B3B1E1A00DC6213 /* CCAnimation.m */, - 0E0CB41D1B3B1E1A00DC6213 /* CCAnimationCache.h */, - 0E0CB41E1B3B1E1A00DC6213 /* CCAnimationCache.m */, - 0E0CB41F1B3B1E1A00DC6213 /* CCCache.h */, - 0E0CB4201B3B1E1A00DC6213 /* CCCache.m */, - 0E0CB4211B3B1E1A00DC6213 /* CCClippingNode.h */, - 0E0CB4221B3B1E1A00DC6213 /* CCClippingNode.m */, - 0E0CB4241B3B1E1A00DC6213 /* CCConfiguration.h */, - 0E0CB4251B3B1E1A00DC6213 /* CCConfiguration.m */, - 0E0CB4261B3B1E1A00DC6213 /* CCDirector.h */, - 0E0CB4271B3B1E1A00DC6213 /* CCDirector.m */, - 0E0CB4281B3B1E1A00DC6213 /* CCDirector_Private.h */, - 0E0CB4291B3B1E1A00DC6213 /* CCDrawNode.h */, - 0E0CB42A1B3B1E1A00DC6213 /* CCDrawNode.m */, - 0E0CB42B1B3B1E1A00DC6213 /* CCEffect.h */, - 0E0CB42C1B3B1E1A00DC6213 /* CCEffect.m */, - 0E0CB42D1B3B1E1A00DC6213 /* CCEffect_Private.h */, - 0E0CB42E1B3B1E1A00DC6213 /* CCEffectBloom.h */, - 0E0CB42F1B3B1E1A00DC6213 /* CCEffectBloom.m */, - 0E0CB4301B3B1E1A00DC6213 /* CCEffectBlur.h */, - 0E0CB4311B3B1E1A00DC6213 /* CCEffectBlur.m */, - 0E0CB4321B3B1E1A00DC6213 /* CCEffectBrightness.h */, - 0E0CB4331B3B1E1A00DC6213 /* CCEffectBrightness.m */, - 0E0CB4341B3B1E1A00DC6213 /* CCEffectColorChannelOffset.h */, - 0E0CB4351B3B1E1A00DC6213 /* CCEffectColorChannelOffset.m */, - 0E0CB4361B3B1E1A00DC6213 /* CCEffectContrast.h */, - 0E0CB4371B3B1E1A00DC6213 /* CCEffectContrast.m */, - 0E0CB4381B3B1E1A00DC6213 /* CCEffectDFInnerGlow.h */, - 0E0CB4391B3B1E1A00DC6213 /* CCEffectDFInnerGlow.m */, - 0E0CB43A1B3B1E1A00DC6213 /* CCEffectDFOutline.h */, - 0E0CB43B1B3B1E1A00DC6213 /* CCEffectDFOutline.m */, - 0E0CB43C1B3B1E1A00DC6213 /* CCEffectDistanceField.h */, - 0E0CB43D1B3B1E1A00DC6213 /* CCEffectDistanceField.m */, - 0E0CB43E1B3B1E1A00DC6213 /* CCEffectDropShadow.h */, - 0E0CB43F1B3B1E1A00DC6213 /* CCEffectDropShadow.m */, - 0E0CB4421B3B1E1A00DC6213 /* CCEffectGlass.h */, - 0E0CB4431B3B1E1A00DC6213 /* CCEffectGlass.m */, - 0E0CB4441B3B1E1A00DC6213 /* CCEffectHue.h */, - 0E0CB4451B3B1E1A00DC6213 /* CCEffectHue.m */, - 0E0CB4461B3B1E1A00DC6213 /* CCEffectInvert.h */, - 0E0CB4471B3B1E1A00DC6213 /* CCEffectInvert.m */, - 0E0CB4481B3B1E1A00DC6213 /* CCEffectLighting.h */, - 0E0CB4491B3B1E1A00DC6213 /* CCEffectLighting.m */, - 0E0CB44A1B3B1E1A00DC6213 /* CCEffectNode.h */, - 0E0CB44B1B3B1E1A00DC6213 /* CCEffectNode.m */, - 0E0CB44C1B3B1E1A00DC6213 /* CCEffectOutline.h */, - 0E0CB44D1B3B1E1A00DC6213 /* CCEffectOutline.m */, - 0E0CB44E1B3B1E1A00DC6213 /* CCEffectPixellate.h */, - 0E0CB44F1B3B1E1A00DC6213 /* CCEffectPixellate.m */, - 0E0CB4501B3B1E1A00DC6213 /* CCEffectReflection.h */, - 0E0CB4511B3B1E1A00DC6213 /* CCEffectReflection.m */, - 0E0CB4521B3B1E1A00DC6213 /* CCEffectRefraction.h */, - 0E0CB4531B3B1E1A00DC6213 /* CCEffectRefraction.m */, - 0E0CB4541B3B1E1A00DC6213 /* CCEffectRenderer.h */, - 0E0CB4551B3B1E1A00DC6213 /* CCEffectRenderer.m */, - 0E0CB4561B3B1E1A00DC6213 /* CCEffectSaturation.h */, - 0E0CB4571B3B1E1A00DC6213 /* CCEffectSaturation.m */, - 0E0CB4581B3B1E1A00DC6213 /* CCEffectStack.h */, - 0E0CB4591B3B1E1A00DC6213 /* CCEffectStack.m */, - 0E0CB45A1B3B1E1A00DC6213 /* CCEffectStack_Private.h */, - 0E0CB45B1B3B1E1A00DC6213 /* CCEffectStackProtocol.h */, - 0E0CB45C1B3B1E1A00DC6213 /* CCEffectStereo.h */, - 0E0CB45D1B3B1E1A00DC6213 /* CCEffectStereo.m */, - 0E0CB45E1B3B1E1A00DC6213 /* CCEffectUtils.h */, - 0E0CB45F1B3B1E1A00DC6213 /* CCEffectUtils.m */, - 0E0CB4601B3B1E1A00DC6213 /* ccFPSImages.h */, - 0E0CB4611B3B1E1A00DC6213 /* ccFPSImages.m */, - 0E0CB4621B3B1E1A00DC6213 /* CCLabelBMFont.h */, - 0E0CB4631B3B1E1A00DC6213 /* CCLabelBMFont.m */, - 0E0CB4641B3B1E1A00DC6213 /* CCLabelBMFont_Private.h */, - 0E0CB4651B3B1E1A00DC6213 /* CCLabelTTF.h */, - 0E0CB4661B3B1E1A00DC6213 /* CCLabelTTF.m */, - 0E0CB4671B3B1E1A00DC6213 /* CCLayout.h */, - 0E0CB4681B3B1E1A00DC6213 /* CCLayout.m */, - 0E0CB4691B3B1E1A00DC6213 /* CCLayoutBox.h */, - 0E0CB46A1B3B1E1A00DC6213 /* CCLayoutBox.m */, - 0E0CB46B1B3B1E1A00DC6213 /* CCLightCollection.h */, - 0E0CB46C1B3B1E1A00DC6213 /* CCLightCollection.m */, - 0E0CB46D1B3B1E1A00DC6213 /* CCLightGroups.h */, - 0E0CB46E1B3B1E1A00DC6213 /* CCLightNode.h */, - 0E0CB46F1B3B1E1A00DC6213 /* CCLightNode.m */, - 0E0CB4701B3B1E1A00DC6213 /* CCLightNode_Private.h */, - 0E0CB4711B3B1E1A00DC6213 /* ccMacros.h */, - 0E0CB4721B3B1E1A00DC6213 /* CCMotionStreak.h */, - 0E0CB4731B3B1E1A00DC6213 /* CCMotionStreak.m */, - 0E0CB4741B3B1E1A00DC6213 /* CCNoARC.m */, - 0E0CB47A1B3B1E1A00DC6213 /* CCNodeColor.h */, - 0E0CB47B1B3B1E1A00DC6213 /* CCNodeColor.m */, - 0E0CB4951B3B1E1A00DC6213 /* CCParallaxNode.h */, - 0E0CB4961B3B1E1A00DC6213 /* CCParallaxNode.m */, - 0E0CB4971B3B1E1A00DC6213 /* CCParticleBatchNode.h */, - 0E0CB4981B3B1E1A00DC6213 /* CCParticleBatchNode.m */, - 0E0CB4991B3B1E1A00DC6213 /* CCParticleExamples.h */, - 0E0CB49A1B3B1E1A00DC6213 /* CCParticleExamples.m */, - 0E0CB49B1B3B1E1A00DC6213 /* CCParticleSystem.h */, - 0E0CB49C1B3B1E1A00DC6213 /* CCParticleSystem.m */, - 0E0CB49D1B3B1E1A00DC6213 /* CCParticleSystem_Private.h */, - 0E0CB49E1B3B1E1A00DC6213 /* CCParticleSystemBase.h */, - 0E0CB49F1B3B1E1A00DC6213 /* CCParticleSystemBase.m */, - 0E0CB4A01B3B1E1A00DC6213 /* CCParticleSystemBase_Private.h */, - 0E0CB4A11B3B1E1A00DC6213 /* CCPhysics+ObjectiveChipmunk.h */, - 0E0CB4A21B3B1E1A00DC6213 /* CCPhysicsBody.h */, - 0E0CB4A31B3B1E1A00DC6213 /* CCPhysicsBody.m */, - 0E0CB4A41B3B1E1A00DC6213 /* CCPhysicsJoint.h */, - 0E0CB4A51B3B1E1A00DC6213 /* CCPhysicsJoint.m */, - 0E0CB4A61B3B1E1A00DC6213 /* CCPhysicsNode.h */, - 0E0CB4A71B3B1E1A00DC6213 /* CCPhysicsNode.m */, - 0E0CB4A81B3B1E1A00DC6213 /* CCPhysicsShape.h */, - 0E0CB4A91B3B1E1A00DC6213 /* CCPhysicsShape.m */, - 0E0CB4AA1B3B1E1A00DC6213 /* CCProgressNode.h */, - 0E0CB4AB1B3B1E1A00DC6213 /* CCProgressNode.m */, - 0E0CB4AC1B3B1E1A00DC6213 /* CCProgressNode_Private.h */, - 0E0CB4AD1B3B1E1A00DC6213 /* CCProtocols.h */, - 0E0CB4AE1B3B1E1A00DC6213 /* CCRenderDispatch.h */, - 0E0CB4AF1B3B1E1A00DC6213 /* CCRenderDispatch.m */, - 0E0CB4B01B3B1E1A00DC6213 /* CCRenderer.h */, - 0E0CB4B11B3B1E1A00DC6213 /* CCRenderer.m */, - 0E0CB4B21B3B1E1A00DC6213 /* CCRenderer_Private.h */, - 0E0CB4B31B3B1E1B00DC6213 /* CCRendererBasicTypes.h */, - 0E0CB4B41B3B1E1B00DC6213 /* CCRendererBasicTypes.m */, - 0E0CB4B51B3B1E1B00DC6213 /* CCRendererBasicTypes_Private.h */, - 0E0CB4B61B3B1E1B00DC6213 /* CCRendererGLSupport.m */, - 0E0CB4B71B3B1E1B00DC6213 /* CCRendererSharedTypes.h */, - 0E0CB4B81B3B1E1B00DC6213 /* CCRenderTexture.h */, - 0E0CB4B91B3B1E1B00DC6213 /* CCRenderTexture.m */, - 0E0CB4BA1B3B1E1B00DC6213 /* CCRenderTexture_Private.h */, - 0E0CB4BB1B3B1E1B00DC6213 /* CCResponder.h */, - 0E0CB4BC1B3B1E1B00DC6213 /* CCResponder.m */, - 0E0CB4BD1B3B1E1B00DC6213 /* CCResponderManager.h */, - 0E0CB4BE1B3B1E1B00DC6213 /* CCResponderManager.m */, - 0E0CB4BF1B3B1E1B00DC6213 /* CCScene.h */, - 0E0CB4C01B3B1E1B00DC6213 /* CCScene.m */, - 0E0CB4C11B3B1E1B00DC6213 /* CCScheduler.h */, - 0E0CB4C21B3B1E1B00DC6213 /* CCScheduler.m */, - 0E0CB4C31B3B1E1B00DC6213 /* CCShader.h */, - 0E0CB4C41B3B1E1B00DC6213 /* CCShader.m */, - 0E0CB4C51B3B1E1B00DC6213 /* CCShader_Private.h */, - 0E0CB4C61B3B1E1B00DC6213 /* CCSprite.h */, - 0E0CB4C71B3B1E1B00DC6213 /* CCSprite.m */, - 0E0CB4C81B3B1E1B00DC6213 /* CCSprite9Slice.h */, - 0E0CB4C91B3B1E1B00DC6213 /* CCSprite9Slice.m */, - 0E0CB4CA1B3B1E1B00DC6213 /* CCSprite_Private.h */, - 0E0CB4CB1B3B1E1B00DC6213 /* CCSpriteBatchNode.h */, - 0E0CB4CC1B3B1E1B00DC6213 /* CCSpriteBatchNode.m */, - 0E0CB4CD1B3B1E1B00DC6213 /* CCSpriteFrame.h */, - 0E0CB4CE1B3B1E1B00DC6213 /* CCSpriteFrame.m */, - 0E0CB4CF1B3B1E1B00DC6213 /* CCSpriteFrameCache.h */, - 0E0CB4D01B3B1E1B00DC6213 /* CCSpriteFrameCache.m */, - 0E0CB4D11B3B1E1B00DC6213 /* CCTexture.h */, - 0E0CB4D21B3B1E1B00DC6213 /* CCTexture.m */, - 0E0CB4D31B3B1E1B00DC6213 /* CCTexture_Private.h */, - 0E0CB4D41B3B1E1B00DC6213 /* CCTextureCache.h */, - 0E0CB4D51B3B1E1B00DC6213 /* CCTextureCache.m */, - 0E0CB4D61B3B1E1B00DC6213 /* CCTexturePVR.h */, - 0E0CB4D71B3B1E1B00DC6213 /* CCTexturePVR.m */, - 0E0CB4D81B3B1E1B00DC6213 /* CCTiledMap.h */, - 0E0CB4D91B3B1E1B00DC6213 /* CCTiledMap.m */, - 0E0CB4DA1B3B1E1B00DC6213 /* CCTiledMapLayer.h */, - 0E0CB4DB1B3B1E1B00DC6213 /* CCTiledMapLayer.m */, - 0E0CB4DC1B3B1E1B00DC6213 /* CCTiledMapLayer_Private.h */, - 0E0CB4DD1B3B1E1B00DC6213 /* CCTiledMapObjectGroup.h */, - 0E0CB4DE1B3B1E1B00DC6213 /* CCTiledMapObjectGroup.m */, - 0E0CB4DF1B3B1E1B00DC6213 /* CCTMXXMLParser.h */, - 0E0CB4E01B3B1E1B00DC6213 /* CCTMXXMLParser.m */, - 0E0CB4E11B3B1E1B00DC6213 /* CCTouch.h */, - 0E0CB4E21B3B1E1B00DC6213 /* CCTouch.m */, - 0E0CB4E31B3B1E1B00DC6213 /* CCTouchEvent.h */, - 0E0CB4E41B3B1E1B00DC6213 /* CCTouchEvent.m */, - 0E0CB4E51B3B1E1B00DC6213 /* CCTransition.h */, - 0E0CB4E61B3B1E1B00DC6213 /* CCTransition.m */, - 0E0CB4E71B3B1E1B00DC6213 /* ccTypes.h */, - 0E0CB4E81B3B1E1B00DC6213 /* cocos2d.h */, - 0E0CB4E91B3B1E1B00DC6213 /* cocos2d.m */, - 0E0CB4EA1B3B1E1B00DC6213 /* NSValue+CCRenderer.h */, - 0E0CB4EB1B3B1E1B00DC6213 /* NSValue+CCRenderer.m */, - 0E0CB4EC1B3B1E1B00DC6213 /* Platforms */, - 0E0CB5251B3B1E1B00DC6213 /* Support */, - ); - path = cocos2d; - sourceTree = ""; - }; - 0E0CB4EC1B3B1E1B00DC6213 /* Platforms */ = { - isa = PBXGroup; - children = ( - 0E0CB5081B3B1E1B00DC6213 /* CCDirectorView.h */, - 0E0CB5091B3B1E1B00DC6213 /* CCGL.h */, - 0E0CB50A1B3B1E1B00DC6213 /* CCNS.h */, - 0E0CB50B1B3B1E1B00DC6213 /* CCRenderDispatch_Private.h */, - 0E0CB50C1B3B1E1B00DC6213 /* iOS */, - 0E0CB51C1B3B1E1B00DC6213 /* Mac */, - ); - path = Platforms; - sourceTree = ""; - }; - 0E0CB50C1B3B1E1B00DC6213 /* iOS */ = { - isa = PBXGroup; - children = ( - 0E0CB50D1B3B1E1B00DC6213 /* CCAppDelegate.h */, - 0E0CB50E1B3B1E1B00DC6213 /* CCAppDelegate.m */, - 0E0CB50F1B3B1E1B00DC6213 /* CCDirectorIOS.h */, - 0E0CB5101B3B1E1B00DC6213 /* CCDirectorIOS.m */, - 0E0CB5111B3B1E1B00DC6213 /* CCGLView.h */, - 0E0CB5121B3B1E1B00DC6213 /* CCGLView.m */, - 0E0CB5131B3B1E1B00DC6213 /* CCMetalSupport.m */, - 0E0CB5141B3B1E1B00DC6213 /* CCMetalSupport_Private.h */, - 0E0CB5151B3B1E1B00DC6213 /* CCMetalView.h */, - 0E0CB5161B3B1E1B00DC6213 /* CCMetalView.m */, - 0E0CB5171B3B1E1B00DC6213 /* CCShaders.metal */, - 0E0CB5181B3B1E1B00DC6213 /* CCTouchIOS.h */, - 0E0CB5191B3B1E1B00DC6213 /* CCTouchIOS.m */, - 0E0CB51A1B3B1E1B00DC6213 /* UITouch+CC.h */, - 0E0CB51B1B3B1E1B00DC6213 /* UITouch+CC.m */, - ); - path = iOS; - sourceTree = ""; - }; - 0E0CB51C1B3B1E1B00DC6213 /* Mac */ = { - isa = PBXGroup; - children = ( - 0E0CB51D1B3B1E1B00DC6213 /* CCDirectorMac.h */, - 0E0CB51E1B3B1E1B00DC6213 /* CCDirectorMac.m */, - 0E0CB51F1B3B1E1B00DC6213 /* CCGLView.h */, - 0E0CB5201B3B1E1B00DC6213 /* CCGLView.m */, - 0E0CB5211B3B1E1B00DC6213 /* CCWindow.h */, - 0E0CB5221B3B1E1B00DC6213 /* CCWindow.m */, - 0E0CB5231B3B1E1B00DC6213 /* NSEvent+CC.h */, - 0E0CB5241B3B1E1B00DC6213 /* NSEvent+CC.m */, - ); - path = Mac; - sourceTree = ""; - }; - 0E0CB5251B3B1E1B00DC6213 /* Support */ = { - isa = PBXGroup; - children = ( - 0E0CB5261B3B1E1B00DC6213 /* base64.c */, - 0E0CB5271B3B1E1B00DC6213 /* base64.h */, - 0E0CB5281B3B1E1B00DC6213 /* CCColor.h */, - 0E0CB5291B3B1E1B00DC6213 /* CCColor.m */, - 0E0CB52A1B3B1E1B00DC6213 /* CCFileUtils.h */, - 0E0CB52B1B3B1E1B00DC6213 /* CCFileUtils.m */, - 0E0CB52C1B3B1E1B00DC6213 /* CCProfiling.h */, - 0E0CB52D1B3B1E1B00DC6213 /* CCProfiling.m */, - 0E0CB52E1B3B1E1B00DC6213 /* ccUtils.c */, - 0E0CB52F1B3B1E1B00DC6213 /* ccUtils.h */, - 0E0CB5301B3B1E1B00DC6213 /* CCVertex.h */, - 0E0CB5311B3B1E1B00DC6213 /* CCVertex.m */, - 0E0CB5321B3B1E1B00DC6213 /* CGPointExtension.h */, - 0E0CB5331B3B1E1B00DC6213 /* CGPointExtension.m */, - 0E0CB5341B3B1E1B00DC6213 /* NSAttributedString+CCAdditions.h */, - 0E0CB5351B3B1E1B00DC6213 /* NSAttributedString+CCAdditions.m */, - 0E0CB5361B3B1E1B00DC6213 /* NSThread+performBlock.h */, - 0E0CB5371B3B1E1B00DC6213 /* NSThread+performBlock.m */, - 0E0CB5381B3B1E1B00DC6213 /* TGAlib.h */, - 0E0CB5391B3B1E1B00DC6213 /* TGAlib.m */, - 0E0CB53A1B3B1E1B00DC6213 /* uthash.h */, - 0E0CB53B1B3B1E1B00DC6213 /* utlist.h */, - 0E0CB53C1B3B1E1B00DC6213 /* ZipUtils.h */, - 0E0CB53D1B3B1E1B00DC6213 /* ZipUtils.m */, - ); - path = Support; - sourceTree = ""; - }; - 0E0CB5C11B3B1E2300DC6213 /* cocos2d-ui */ = { - isa = PBXGroup; - children = ( - 0E0CB5C21B3B1E2300DC6213 /* CCBReader */, - 0E0CB5D61B3B1E2300DC6213 /* CCButton.h */, - 0E0CB5D71B3B1E2300DC6213 /* CCButton.m */, - 0E0CB5D81B3B1E2300DC6213 /* CCControl.h */, - 0E0CB5D91B3B1E2300DC6213 /* CCControl.m */, - 0E0CB5DA1B3B1E2300DC6213 /* CCControlSubclass.h */, - 0E0CB5DB1B3B1E2300DC6213 /* CCControlTextureFactory.h */, - 0E0CB5DC1B3B1E2300DC6213 /* CCControlTextureFactory.m */, - 0E0CB5DD1B3B1E2300DC6213 /* CCScrollView.h */, - 0E0CB5DE1B3B1E2300DC6213 /* CCScrollView.m */, - 0E0CB5DF1B3B1E2300DC6213 /* CCSlider.h */, - 0E0CB5E01B3B1E2300DC6213 /* CCSlider.m */, - 0E0CB5E11B3B1E2300DC6213 /* CCTableView.h */, - 0E0CB5E21B3B1E2300DC6213 /* CCTableView.m */, - 0E0CB5E31B3B1E2300DC6213 /* CCTextField.h */, - 0E0CB5E41B3B1E2300DC6213 /* CCTextField.m */, - 0E0CB5E51B3B1E2300DC6213 /* cocos2d-ui.h */, - 0E0CB5E61B3B1E2300DC6213 /* Platform */, - ); - path = "cocos2d-ui"; - sourceTree = ""; - }; - 0E0CB5C21B3B1E2300DC6213 /* CCBReader */ = { - isa = PBXGroup; - children = ( - 0E0CB5C31B3B1E2300DC6213 /* CCAnimationManager+FrameAnimation.h */, - 0E0CB5C41B3B1E2300DC6213 /* CCAnimationManager+FrameAnimation.m */, - 0E0CB5C51B3B1E2300DC6213 /* CCAnimationManager.h */, - 0E0CB5C61B3B1E2300DC6213 /* CCAnimationManager.m */, - 0E0CB5C71B3B1E2300DC6213 /* CCAnimationManager_Private.h */, - 0E0CB5C81B3B1E2300DC6213 /* CCBAnimationManager.h */, - 0E0CB5C91B3B1E2300DC6213 /* CCBAnimationManager.m */, - 0E0CB5CA1B3B1E2300DC6213 /* CCBKeyframe.h */, - 0E0CB5CB1B3B1E2300DC6213 /* CCBKeyframe.m */, - 0E0CB5CC1B3B1E2300DC6213 /* CCBLocalizationManager.h */, - 0E0CB5CD1B3B1E2300DC6213 /* CCBLocalizationManager.m */, - 0E0CB5CE1B3B1E2300DC6213 /* CCBReader.h */, - 0E0CB5CF1B3B1E2300DC6213 /* CCBReader.m */, - 0E0CB5D01B3B1E2300DC6213 /* CCBReader_Private.h */, - 0E0CB5D11B3B1E2300DC6213 /* CCBSequence.h */, - 0E0CB5D21B3B1E2300DC6213 /* CCBsequence.m */, - 0E0CB5D31B3B1E2300DC6213 /* CCBSequenceProperty.h */, - 0E0CB5D41B3B1E2300DC6213 /* CCBSequenceProperty.m */, - 0E0CB5D51B3B1E2300DC6213 /* CCBuilderReader.h */, - ); - path = CCBReader; - sourceTree = ""; - }; - 0E0CB5E61B3B1E2300DC6213 /* Platform */ = { - isa = PBXGroup; - children = ( - 0E0CB5ED1B3B1E2300DC6213 /* CCPlatformTextField.h */, - 0E0CB5EE1B3B1E2300DC6213 /* CCPlatformTextField.m */, - 0E0CB5EF1B3B1E2300DC6213 /* iOS */, - 0E0CB5F21B3B1E2300DC6213 /* Mac */, - ); - path = Platform; - sourceTree = ""; - }; - 0E0CB5EF1B3B1E2300DC6213 /* iOS */ = { - isa = PBXGroup; - children = ( - 0E0CB5F01B3B1E2300DC6213 /* CCPlatformTextFieldIOS.h */, - 0E0CB5F11B3B1E2300DC6213 /* CCPlatformTextFieldIOS.m */, - ); - path = iOS; - sourceTree = ""; - }; - 0E0CB5F21B3B1E2300DC6213 /* Mac */ = { - isa = PBXGroup; - children = ( - 0E0CB5F31B3B1E2300DC6213 /* CCPlatformTextFieldMac.h */, - 0E0CB5F41B3B1E2300DC6213 /* CCPlatformTextFieldMac.m */, - ); - path = Mac; - sourceTree = ""; - }; - 0E0CB6091B3B1E3C00DC6213 /* Chipmunk */ = { - isa = PBXGroup; - children = ( - 0E0CB60A1B3B1E5700DC6213 /* include */, - 0E0CB6251B3B1E5700DC6213 /* objectivec */, - 0E0CB6351B3B1E5700DC6213 /* src */, - ); - name = Chipmunk; - sourceTree = ""; - }; - 0E0CB60A1B3B1E5700DC6213 /* include */ = { - isa = PBXGroup; - children = ( - 0E0CB60B1B3B1E5700DC6213 /* chipmunk */, - ); - name = include; - path = external/Chipmunk/include; - sourceTree = ""; - }; - 0E0CB60B1B3B1E5700DC6213 /* chipmunk */ = { - isa = PBXGroup; - children = ( - 0E0CB60C1B3B1E5700DC6213 /* chipmunk.h */, - 0E0CB60D1B3B1E5700DC6213 /* chipmunk_ffi.h */, - 0E0CB60E1B3B1E5700DC6213 /* chipmunk_private.h */, - 0E0CB60F1B3B1E5700DC6213 /* chipmunk_types.h */, - 0E0CB6101B3B1E5700DC6213 /* chipmunk_unsafe.h */, - 0E0CB6111B3B1E5700DC6213 /* cpArbiter.h */, - 0E0CB6121B3B1E5700DC6213 /* cpBB.h */, - 0E0CB6131B3B1E5700DC6213 /* cpBody.h */, - 0E0CB6141B3B1E5700DC6213 /* cpConstraint.h */, - 0E0CB6151B3B1E5700DC6213 /* cpDampedRotarySpring.h */, - 0E0CB6161B3B1E5700DC6213 /* cpDampedSpring.h */, - 0E0CB6171B3B1E5700DC6213 /* cpGearJoint.h */, - 0E0CB6181B3B1E5700DC6213 /* cpGrooveJoint.h */, - 0E0CB6191B3B1E5700DC6213 /* cpPinJoint.h */, - 0E0CB61A1B3B1E5700DC6213 /* cpPivotJoint.h */, - 0E0CB61B1B3B1E5700DC6213 /* cpPolyShape.h */, - 0E0CB61C1B3B1E5700DC6213 /* cpRatchetJoint.h */, - 0E0CB61D1B3B1E5700DC6213 /* cpRotaryLimitJoint.h */, - 0E0CB61E1B3B1E5700DC6213 /* cpShape.h */, - 0E0CB61F1B3B1E5700DC6213 /* cpSimpleMotor.h */, - 0E0CB6201B3B1E5700DC6213 /* cpSlideJoint.h */, - 0E0CB6211B3B1E5700DC6213 /* cpSpace.h */, - 0E0CB6221B3B1E5700DC6213 /* cpSpatialIndex.h */, - 0E0CB6231B3B1E5700DC6213 /* cpTransform.h */, - 0E0CB6241B3B1E5700DC6213 /* cpVect.h */, - ); - path = chipmunk; - sourceTree = ""; - }; - 0E0CB6251B3B1E5700DC6213 /* objectivec */ = { - isa = PBXGroup; - children = ( - 0E0CB6261B3B1E5700DC6213 /* include */, - 0E0CB62F1B3B1E5700DC6213 /* src */, - ); - name = objectivec; - path = external/Chipmunk/objectivec; - sourceTree = ""; - }; - 0E0CB6261B3B1E5700DC6213 /* include */ = { - isa = PBXGroup; - children = ( - 0E0CB6271B3B1E5700DC6213 /* ObjectiveChipmunk */, - ); - path = include; - sourceTree = ""; - }; - 0E0CB6271B3B1E5700DC6213 /* ObjectiveChipmunk */ = { - isa = PBXGroup; - children = ( - 0E0CB6281B3B1E5700DC6213 /* ChipmunkBody.h */, - 0E0CB6291B3B1E5700DC6213 /* ChipmunkConstraint.h */, - 0E0CB62A1B3B1E5700DC6213 /* ChipmunkExtras.h */, - 0E0CB62B1B3B1E5700DC6213 /* ChipmunkMultiGrab.h */, - 0E0CB62C1B3B1E5700DC6213 /* ChipmunkShape.h */, - 0E0CB62D1B3B1E5700DC6213 /* ChipmunkSpace.h */, - 0E0CB62E1B3B1E5700DC6213 /* ObjectiveChipmunk.h */, - ); - path = ObjectiveChipmunk; - sourceTree = ""; - }; - 0E0CB62F1B3B1E5700DC6213 /* src */ = { - isa = PBXGroup; - children = ( - 0E0CB6301B3B1E5700DC6213 /* ChipmunkBody.m */, - 0E0CB6311B3B1E5700DC6213 /* ChipmunkConstraint.m */, - 0E0CB6321B3B1E5700DC6213 /* ChipmunkMultiGrab.m */, - 0E0CB6331B3B1E5700DC6213 /* ChipmunkShape.m */, - 0E0CB6341B3B1E5700DC6213 /* ChipmunkSpace.m */, - ); - path = src; - sourceTree = ""; - }; - 0E0CB6351B3B1E5700DC6213 /* src */ = { - isa = PBXGroup; - children = ( - 0E0CB6361B3B1E5700DC6213 /* chipmunk.c */, - 0E0CB6371B3B1E5700DC6213 /* CMakeLists.txt */, - 0E0CB6381B3B1E5700DC6213 /* cpArbiter.c */, - 0E0CB6391B3B1E5700DC6213 /* cpArray.c */, - 0E0CB63A1B3B1E5700DC6213 /* cpBBTree.c */, - 0E0CB63B1B3B1E5700DC6213 /* cpBody.c */, - 0E0CB63C1B3B1E5700DC6213 /* cpCollision.c */, - 0E0CB63D1B3B1E5700DC6213 /* cpConstraint.c */, - 0E0CB63E1B3B1E5700DC6213 /* cpDampedRotarySpring.c */, - 0E0CB63F1B3B1E5700DC6213 /* cpDampedSpring.c */, - 0E0CB6401B3B1E5700DC6213 /* cpGearJoint.c */, - 0E0CB6411B3B1E5700DC6213 /* cpGrooveJoint.c */, - 0E0CB6421B3B1E5700DC6213 /* cpHashSet.c */, - 0E0CB6431B3B1E5700DC6213 /* cpPinJoint.c */, - 0E0CB6441B3B1E5700DC6213 /* cpPivotJoint.c */, - 0E0CB6451B3B1E5700DC6213 /* cpPolyShape.c */, - 0E0CB6461B3B1E5700DC6213 /* cpRatchetJoint.c */, - 0E0CB6471B3B1E5700DC6213 /* cpRotaryLimitJoint.c */, - 0E0CB6481B3B1E5700DC6213 /* cpShape.c */, - 0E0CB6491B3B1E5700DC6213 /* cpSimpleMotor.c */, - 0E0CB64A1B3B1E5700DC6213 /* cpSlideJoint.c */, - 0E0CB64B1B3B1E5700DC6213 /* cpSpace.c */, - 0E0CB64C1B3B1E5700DC6213 /* cpSpaceComponent.c */, - 0E0CB64D1B3B1E5700DC6213 /* cpSpaceDebug.c */, - 0E0CB64E1B3B1E5700DC6213 /* cpSpaceHash.c */, - 0E0CB64F1B3B1E5700DC6213 /* cpSpaceQuery.c */, - 0E0CB6501B3B1E5700DC6213 /* cpSpaceStep.c */, - 0E0CB6511B3B1E5700DC6213 /* cpSpatialIndex.c */, - 0E0CB6521B3B1E5700DC6213 /* cpSweep1D.c */, - 0E0CB6531B3B1E5700DC6213 /* prime.h */, - ); - name = src; - path = external/Chipmunk/src; - sourceTree = ""; - }; - 0E0CB6761B3B1E6C00DC6213 /* ObjectAL */ = { - isa = PBXGroup; - children = ( - 0E0CB6771B3B1E6C00DC6213 /* Actions */, - 0E0CB6811B3B1E6C00DC6213 /* AudioTrack */, - 0E0CB6881B3B1E6C00DC6213 /* OALSimpleAudio.h */, - 0E0CB6891B3B1E6C00DC6213 /* OALSimpleAudio.m */, - 0E0CB68A1B3B1E6C00DC6213 /* ObjectAL (iOS)-Prefix.pch */, - 0E0CB68B1B3B1E6C00DC6213 /* ObjectAL.h */, - 0E0CB68C1B3B1E6C00DC6213 /* ObjectALConfig.h */, - 0E0CB68D1B3B1E6C00DC6213 /* OpenAL */, - 0E0CB6A41B3B1E6C00DC6213 /* Session */, - 0E0CB6A91B3B1E6C00DC6213 /* Support */, - ); - name = ObjectAL; - path = "external/ObjectAL/ObjectAL/ObjectAL (iOS)"; - sourceTree = ""; - }; - 0E0CB6771B3B1E6C00DC6213 /* Actions */ = { - isa = PBXGroup; - children = ( - 0E0CB6781B3B1E6C00DC6213 /* OALAction+Private.h */, - 0E0CB6791B3B1E6C00DC6213 /* OALAction.h */, - 0E0CB67A1B3B1E6C00DC6213 /* OALAction.m */, - 0E0CB67B1B3B1E6C00DC6213 /* OALActionManager.h */, - 0E0CB67C1B3B1E6C00DC6213 /* OALActionManager.m */, - 0E0CB67D1B3B1E6C00DC6213 /* OALAudioActions.h */, - 0E0CB67E1B3B1E6C00DC6213 /* OALAudioActions.m */, - 0E0CB67F1B3B1E6C00DC6213 /* OALUtilityActions.h */, - 0E0CB6801B3B1E6C00DC6213 /* OALUtilityActions.m */, - ); - path = Actions; - sourceTree = ""; - }; - 0E0CB6811B3B1E6C00DC6213 /* AudioTrack */ = { - isa = PBXGroup; - children = ( - 0E0CB6821B3B1E6C00DC6213 /* OALAudioTrack.h */, - 0E0CB6831B3B1E6C00DC6213 /* OALAudioTrack.m */, - 0E0CB6841B3B1E6C00DC6213 /* OALAudioTrackNotifications.h */, - 0E0CB6851B3B1E6C00DC6213 /* OALAudioTrackNotifications.m */, - 0E0CB6861B3B1E6C00DC6213 /* OALAudioTracks.h */, - 0E0CB6871B3B1E6C00DC6213 /* OALAudioTracks.m */, - ); - path = AudioTrack; - sourceTree = ""; - }; - 0E0CB68D1B3B1E6C00DC6213 /* OpenAL */ = { - isa = PBXGroup; - children = ( - 0E0CB68E1B3B1E6C00DC6213 /* ALBuffer.h */, - 0E0CB68F1B3B1E6C00DC6213 /* ALBuffer.m */, - 0E0CB6901B3B1E6C00DC6213 /* ALCaptureDevice.h */, - 0E0CB6911B3B1E6C00DC6213 /* ALCaptureDevice.m */, - 0E0CB6921B3B1E6C00DC6213 /* ALChannelSource.h */, - 0E0CB6931B3B1E6C00DC6213 /* ALChannelSource.m */, - 0E0CB6941B3B1E6C00DC6213 /* ALContext.h */, - 0E0CB6951B3B1E6C00DC6213 /* ALContext.m */, - 0E0CB6961B3B1E6C00DC6213 /* ALDevice.h */, - 0E0CB6971B3B1E6C00DC6213 /* ALDevice.m */, - 0E0CB6981B3B1E6C00DC6213 /* ALListener.h */, - 0E0CB6991B3B1E6C00DC6213 /* ALListener.m */, - 0E0CB69A1B3B1E6C00DC6213 /* ALSoundSource.h */, - 0E0CB69B1B3B1E6C00DC6213 /* ALSoundSourcePool.h */, - 0E0CB69C1B3B1E6C00DC6213 /* ALSoundSourcePool.m */, - 0E0CB69D1B3B1E6C00DC6213 /* ALSource.h */, - 0E0CB69E1B3B1E6C00DC6213 /* ALSource.m */, - 0E0CB69F1B3B1E6C00DC6213 /* ALTypes.h */, - 0E0CB6A01B3B1E6C00DC6213 /* ALWrapper.h */, - 0E0CB6A11B3B1E6C00DC6213 /* ALWrapper.m */, - 0E0CB6A21B3B1E6C00DC6213 /* OpenALManager.h */, - 0E0CB6A31B3B1E6C00DC6213 /* OpenALManager.m */, - ); - path = OpenAL; - sourceTree = ""; - }; - 0E0CB6A41B3B1E6C00DC6213 /* Session */ = { - isa = PBXGroup; - children = ( - 0E0CB6A51B3B1E6C00DC6213 /* OALAudioSession.h */, - 0E0CB6A61B3B1E6C00DC6213 /* OALAudioSession.m */, - 0E0CB6A71B3B1E6C00DC6213 /* OALSuspendHandler.h */, - 0E0CB6A81B3B1E6C00DC6213 /* OALSuspendHandler.m */, - ); - path = Session; - sourceTree = ""; - }; - 0E0CB6A91B3B1E6C00DC6213 /* Support */ = { - isa = PBXGroup; - children = ( - 0E0CB6AA1B3B1E6C00DC6213 /* ARCSafe_MemMgmt.h */, - 0E0CB6AB1B3B1E6C00DC6213 /* IOSVersion.h */, - 0E0CB6AC1B3B1E6C00DC6213 /* IOSVersion.m */, - 0E0CB6AD1B3B1E6C00DC6213 /* mach_timing.c */, - 0E0CB6AE1B3B1E6C00DC6213 /* mach_timing.h */, - 0E0CB6AF1B3B1E6C00DC6213 /* NSMutableArray+WeakReferences.h */, - 0E0CB6B01B3B1E6C00DC6213 /* NSMutableArray+WeakReferences.m */, - 0E0CB6B11B3B1E6C00DC6213 /* NSMutableDictionary+WeakReferences.h */, - 0E0CB6B21B3B1E6C00DC6213 /* NSMutableDictionary+WeakReferences.m */, - 0E0CB6B31B3B1E6C00DC6213 /* OALAudioFile.h */, - 0E0CB6B41B3B1E6C00DC6213 /* OALAudioFile.m */, - 0E0CB6B51B3B1E6C00DC6213 /* OALNotifications.h */, - 0E0CB6B61B3B1E6C00DC6213 /* OALTools.h */, - 0E0CB6B71B3B1E6C00DC6213 /* OALTools.m */, - 0E0CB6B81B3B1E6C00DC6213 /* ObjectALMacros.h */, - 0E0CB6B91B3B1E6C00DC6213 /* SynthesizeSingleton.h */, - ); - path = Support; - sourceTree = ""; - }; - 0E26A6FE1B4ABADA00C3D15F /* Base Types */ = { - isa = PBXGroup; - children = ( - 0E0CB4231B3B1E1A00DC6213 /* ccConfig.h */, - ); - name = "Base Types"; - sourceTree = ""; - }; - 0E6B40611B3B1BF9006FB98A = { - isa = PBXGroup; - children = ( - 0E6B406F1B3B1BF9006FB98A /* Some System Stuff */, - 0E0CB4081B3B1E0700DC6213 /* Libraries */, - 0E0CB3FE1B3B1D3100DC6213 /* Resources */, - 0E6B43241B3B1BFB006FB98A /* Classes */, - ); - sourceTree = ""; - }; - 0E6B406B1B3B1BF9006FB98A /* Products */ = { - isa = PBXGroup; - children = ( - 0E6B406A1B3B1BF9006FB98A /* cocos2d-template.app */, - 0E6B406E1B3B1BF9006FB98A /* libObjectiveChipmunk.a */, - ); - name = Products; - path = ..; - sourceTree = ""; - }; - 0E6B406F1B3B1BF9006FB98A /* Some System Stuff */ = { - isa = PBXGroup; - children = ( - 0E7B6A0E1B53F56100A453BF /* OpenAL.framework */, - 0E6B406B1B3B1BF9006FB98A /* Products */, - 0EF3C36A1B590817001BC6C4 /* Resources */, - 0E0CB6D41B3B1F8C00DC6213 /* Prefix.pch */, - 0E0CB3FB1B3B1D0D00DC6213 /* main.m */, - 0E0CB3F91B3B1C8700DC6213 /* Info.plist */, - ); - name = "Some System Stuff"; - path = "cocos2d-template"; - sourceTree = ""; - }; - 0E6B43241B3B1BFB006FB98A /* Classes */ = { - isa = PBXGroup; - children = ( - 0E0CB3FF1B3B1DFB00DC6213 /* AppDelegate.h */, - 0E0CB4001B3B1DFB00DC6213 /* AppDelegate.m */, - 0E0CB4031B3B1DFB00DC6213 /* HelloWorldScene.h */, - 0E0CB4041B3B1DFB00DC6213 /* HelloWorldScene.m */, - ); - name = Classes; - path = "cocos2d-template"; - sourceTree = ""; - }; - 0E8287EB1B4A8C8B00E34977 /* Base Nodes */ = { - isa = PBXGroup; - children = ( - 0E0CB4771B3B1E1A00DC6213 /* CCNode.h */, - 0E0CB4781B3B1E1A00DC6213 /* CCNode.m */, - 0E0CB4791B3B1E1A00DC6213 /* CCNode_Private.h */, - 0E0CB4751B3B1E1A00DC6213 /* CCNode+Debug.h */, - 0E0CB4761B3B1E1A00DC6213 /* CCNode+Debug.m */, - ); - name = "Base Nodes"; - sourceTree = ""; - }; - 0ED5FCCA1B4AF017001874AD /* Unused */ = { - isa = PBXGroup; - children = ( - ); - name = Unused; - sourceTree = ""; - }; - 0EF3C36A1B590817001BC6C4 /* Resources */ = { - isa = PBXGroup; - children = ( - 0E26A6E71B4A946300C3D15F /* Default-568h@2x.png */, - 0E26A6E81B4A946300C3D15F /* Default-Landscape.png */, - 0E26A6E91B4A946300C3D15F /* Default.png */, - 0E26A6EA1B4A946300C3D15F /* Default@2x.png */, - 0E26A6EB1B4A946300C3D15F /* Icon-72.png */, - 0E26A6EC1B4A946300C3D15F /* Icon-Small-50.png */, - 0E26A6ED1B4A946300C3D15F /* Icon-Small.png */, - 0E26A6EE1B4A946300C3D15F /* Icon-Small@2x.png */, - 0E26A6EF1B4A946300C3D15F /* Icon.png */, - 0E26A6F01B4A946300C3D15F /* Icon@2x.png */, - ); - name = Resources; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 0E6B40691B3B1BF9006FB98A /* cocos2d-template */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0E6B43301B3B1BFC006FB98A /* Build configuration list for PBXNativeTarget "cocos2d-template" */; - buildPhases = ( - 0E6B40661B3B1BF9006FB98A /* Sources */, - 0E6B40671B3B1BF9006FB98A /* Frameworks */, - 0E6B40681B3B1BF9006FB98A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "cocos2d-template"; - productName = "cocos2d-template"; - productReference = 0E6B406A1B3B1BF9006FB98A /* cocos2d-template.app */; - productType = "com.apple.product-type.application"; - }; - 0E6B406D1B3B1BF9006FB98A /* ObjectiveChipmunk */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0E6B43331B3B1BFC006FB98A /* Build configuration list for PBXNativeTarget "ObjectiveChipmunk" */; - buildPhases = ( - 0E6B406C1B3B1BF9006FB98A /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ObjectiveChipmunk; - productName = ObjectiveChipmunk; - productReference = 0E6B406E1B3B1BF9006FB98A /* libObjectiveChipmunk.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0E6B40621B3B1BF9006FB98A /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0640; - ORGANIZATIONNAME = cocos2d.org; - TargetAttributes = { - 0E6B40691B3B1BF9006FB98A = { - CreatedOnToolsVersion = 6.3.2; - }; - 0E6B406D1B3B1BF9006FB98A = { - CreatedOnToolsVersion = 6.3.2; - }; - }; - }; - buildConfigurationList = 0E6B40651B3B1BF9006FB98A /* Build configuration list for PBXProject "cocos2d-template" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 0E6B40611B3B1BF9006FB98A; - productRefGroup = 0E6B406B1B3B1BF9006FB98A /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 0E6B40691B3B1BF9006FB98A /* cocos2d-template */, - 0E6B406D1B3B1BF9006FB98A /* ObjectiveChipmunk */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 0E6B40681B3B1BF9006FB98A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E26A6F41B4A946300C3D15F /* Default@2x.png in Resources */, - 0E26A6FA1B4A946300C3D15F /* Icon@2x.png in Resources */, - 0E26A6F21B4A946300C3D15F /* Default-Landscape.png in Resources */, - 0E26A6F81B4A946300C3D15F /* Icon-Small@2x.png in Resources */, - 0E26A6F11B4A946300C3D15F /* Default-568h@2x.png in Resources */, - 0E26A6F61B4A946300C3D15F /* Icon-Small-50.png in Resources */, - 0E26A6F51B4A946300C3D15F /* Icon-72.png in Resources */, - 0E1D34C01B56AB310014C76A /* white_square.png in Resources */, - 0E26A6F91B4A946300C3D15F /* Icon.png in Resources */, - 0E26A6F31B4A946300C3D15F /* Default.png in Resources */, - 0E26A6F71B4A946300C3D15F /* Icon-Small.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 0E6B40661B3B1BF9006FB98A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E0CB58C1B3B1E1B00DC6213 /* CCScene.m in Sources */, - 0E0CB6601B3B1E5700DC6213 /* cpConstraint.c in Sources */, - 0E0CB5B11B3B1E1B00DC6213 /* UITouch+CC.m in Sources */, - 0E0CB5801B3B1E1B00DC6213 /* CCPhysicsBody.m in Sources */, - 0E0CB5831B3B1E1B00DC6213 /* CCPhysicsShape.m in Sources */, - 0E0CB6551B3B1E5700DC6213 /* ChipmunkConstraint.m in Sources */, - 0E0CB5F51B3B1E2300DC6213 /* CCAnimationManager+FrameAnimation.m in Sources */, - 0E0CB6D01B3B1E6C00DC6213 /* NSMutableArray+WeakReferences.m in Sources */, - 0E0CB6CE1B3B1E6C00DC6213 /* IOSVersion.m in Sources */, - 0E0CB6011B3B1E2300DC6213 /* CCSlider.m in Sources */, - 0E0CB54D1B3B1E1B00DC6213 /* CCEffect.m in Sources */, - 0E0CB57C1B3B1E1B00DC6213 /* CCParticleBatchNode.m in Sources */, - 0E0CB56D1B3B1E1B00DC6213 /* CCMotionStreak.m in Sources */, - 0E0CB6541B3B1E5700DC6213 /* ChipmunkBody.m in Sources */, - 0E0CB55C1B3B1E1B00DC6213 /* CCEffectNode.m in Sources */, - 0E0CB5521B3B1E1B00DC6213 /* CCEffectContrast.m in Sources */, - 0E0CB5B61B3B1E1B00DC6213 /* base64.c in Sources */, - 0E0CB6C71B3B1E6C00DC6213 /* ALListener.m in Sources */, - 0E0CB59C1B3B1E1B00DC6213 /* CCTouchEvent.m in Sources */, - 0E0CB5511B3B1E1B00DC6213 /* CCEffectColorChannelOffset.m in Sources */, - 0E0CB6BC1B3B1E6C00DC6213 /* OALAudioActions.m in Sources */, - 0E0CB5F91B3B1E2300DC6213 /* CCBLocalizationManager.m in Sources */, - 0E0CB5641B3B1E1B00DC6213 /* CCEffectStereo.m in Sources */, - 0E0CB56F1B3B1E1B00DC6213 /* CCNode+Debug.m in Sources */, - 0E0CB5481B3B1E1B00DC6213 /* CCCache.m in Sources */, - 0E0CB6001B3B1E2300DC6213 /* CCScrollView.m in Sources */, - 0E0CB5551B3B1E1B00DC6213 /* CCEffectDistanceField.m in Sources */, - 0E0CB58F1B3B1E1B00DC6213 /* CCSprite.m in Sources */, - 0E0CB6D31B3B1E6C00DC6213 /* OALTools.m in Sources */, - 0E0CB54E1B3B1E1B00DC6213 /* CCEffectBloom.m in Sources */, - 0E0CB5951B3B1E1B00DC6213 /* CCTextureCache.m in Sources */, - 0E0CB5AE1B3B1E1B00DC6213 /* CCMetalView.m in Sources */, - 0E0CB5AA1B3B1E1B00DC6213 /* CCAppDelegate.m in Sources */, - 0E0CB6C61B3B1E6C00DC6213 /* ALDevice.m in Sources */, - 0E0CB5811B3B1E1B00DC6213 /* CCPhysicsJoint.m in Sources */, - 0E0CB54F1B3B1E1B00DC6213 /* CCEffectBlur.m in Sources */, - 0E0CB5871B3B1E1B00DC6213 /* CCRendererBasicTypes.m in Sources */, - 0E0CB6631B3B1E5700DC6213 /* cpGearJoint.c in Sources */, - 0E0CB5B21B3B1E1B00DC6213 /* CCDirectorMac.m in Sources */, - 0E0CB5981B3B1E1B00DC6213 /* CCTiledMapLayer.m in Sources */, - 0E0CB3FD1B3B1D0D00DC6213 /* main.m in Sources */, - 0E0CB6CC1B3B1E6C00DC6213 /* OALAudioSession.m in Sources */, - 0E0CB5961B3B1E1B00DC6213 /* CCTexturePVR.m in Sources */, - 0E0CB5661B3B1E1B00DC6213 /* ccFPSImages.m in Sources */, - 0E0CB5541B3B1E1B00DC6213 /* CCEffectDFOutline.m in Sources */, - 0E0CB5631B3B1E1B00DC6213 /* CCEffectStack.m in Sources */, - 0E0CB6CF1B3B1E6C00DC6213 /* mach_timing.c in Sources */, - 0E0CB5411B3B1E1B00DC6213 /* CCActionInstant.m in Sources */, - 0E0CB5B81B3B1E1B00DC6213 /* CCFileUtils.m in Sources */, - 0E0CB6CB1B3B1E6C00DC6213 /* OpenALManager.m in Sources */, - 0E0CB6661B3B1E5700DC6213 /* cpPinJoint.c in Sources */, - 0E0CB66B1B3B1E5700DC6213 /* cpShape.c in Sources */, - 0E0CB5881B3B1E1B00DC6213 /* CCRendererGLSupport.m in Sources */, - 0E0CB5581B3B1E1B00DC6213 /* CCEffectGlass.m in Sources */, - 0E0CB5FB1B3B1E2300DC6213 /* CCBsequence.m in Sources */, - 0E0CB6C41B3B1E6C00DC6213 /* ALChannelSource.m in Sources */, - 0E0CB6BB1B3B1E6C00DC6213 /* OALActionManager.m in Sources */, - 0E0CB5FE1B3B1E2300DC6213 /* CCControl.m in Sources */, - 0E0CB5681B3B1E1B00DC6213 /* CCLabelTTF.m in Sources */, - 0E0CB6561B3B1E5700DC6213 /* ChipmunkMultiGrab.m in Sources */, - 0E0CB6BE1B3B1E6C00DC6213 /* OALAudioTrack.m in Sources */, - 0E0CB54C1B3B1E1B00DC6213 /* CCDrawNode.m in Sources */, - 0E0CB57B1B3B1E1B00DC6213 /* CCParallaxNode.m in Sources */, - 0E0CB56B1B3B1E1B00DC6213 /* CCLightCollection.m in Sources */, - 0E0CB66E1B3B1E5700DC6213 /* cpSpace.c in Sources */, - 0E0CB6731B3B1E5700DC6213 /* cpSpaceStep.c in Sources */, - 0E0CB66A1B3B1E5700DC6213 /* cpRotaryLimitJoint.c in Sources */, - 0E0CB5C01B3B1E1B00DC6213 /* ZipUtils.m in Sources */, - 0E0CB53E1B3B1E1B00DC6213 /* CCAction.m in Sources */, - 0E0CB65D1B3B1E5700DC6213 /* cpBBTree.c in Sources */, - 0E0CB5421B3B1E1B00DC6213 /* CCActionInterval.m in Sources */, - 0E0CB6691B3B1E5700DC6213 /* cpRatchetJoint.c in Sources */, - 0E0CB55E1B3B1E1B00DC6213 /* CCEffectPixellate.m in Sources */, - 0E0CB5671B3B1E1B00DC6213 /* CCLabelBMFont.m in Sources */, - 0E0CB6571B3B1E5700DC6213 /* ChipmunkShape.m in Sources */, - 0E0CB57F1B3B1E1B00DC6213 /* CCParticleSystemBase.m in Sources */, - 0E0CB6621B3B1E5700DC6213 /* cpDampedSpring.c in Sources */, - 0E0CB6BD1B3B1E6C00DC6213 /* OALUtilityActions.m in Sources */, - 0E0CB65E1B3B1E5700DC6213 /* cpBody.c in Sources */, - 0E0CB66F1B3B1E5700DC6213 /* cpSpaceComponent.c in Sources */, - 0E0CB6BF1B3B1E6C00DC6213 /* OALAudioTrackNotifications.m in Sources */, - 0E0CB6CD1B3B1E6C00DC6213 /* OALSuspendHandler.m in Sources */, - 0E0CB5BF1B3B1E1B00DC6213 /* TGAlib.m in Sources */, - 0E0CB5AC1B3B1E1B00DC6213 /* CCGLView.m in Sources */, - 0E0CB5F71B3B1E2300DC6213 /* CCBAnimationManager.m in Sources */, - 0E0CB6671B3B1E5700DC6213 /* cpPivotJoint.c in Sources */, - 0E0CB5B71B3B1E1B00DC6213 /* CCColor.m in Sources */, - 0E0CB6721B3B1E5700DC6213 /* cpSpaceQuery.c in Sources */, - 0E0CB5F61B3B1E2300DC6213 /* CCAnimationManager.m in Sources */, - 0E0CB5991B3B1E1B00DC6213 /* CCTiledMapObjectGroup.m in Sources */, - 0E0CB5861B3B1E1B00DC6213 /* CCRenderer.m in Sources */, - 0E0CB5461B3B1E1B00DC6213 /* CCAnimation.m in Sources */, - 0E0CB5B01B3B1E1B00DC6213 /* CCTouchIOS.m in Sources */, - 0E0CB5621B3B1E1B00DC6213 /* CCEffectSaturation.m in Sources */, - 0E0CB5851B3B1E1B00DC6213 /* CCRenderDispatch.m in Sources */, - 0E0CB5441B3B1E1B00DC6213 /* CCActionProgressTimer.m in Sources */, - 0E0CB5691B3B1E1B00DC6213 /* CCLayout.m in Sources */, - 0E0CB5BB1B3B1E1B00DC6213 /* CCVertex.m in Sources */, - 0E0CB5971B3B1E1B00DC6213 /* CCTiledMap.m in Sources */, - 0E0CB54B1B3B1E1B00DC6213 /* CCDirector.m in Sources */, - 0E0CB6D21B3B1E6C00DC6213 /* OALAudioFile.m in Sources */, - 0E0CB6021B3B1E2300DC6213 /* CCTableView.m in Sources */, - 0E0CB5821B3B1E1B00DC6213 /* CCPhysicsNode.m in Sources */, - 0E0CB6751B3B1E5700DC6213 /* cpSweep1D.c in Sources */, - 0E0CB5B41B3B1E1B00DC6213 /* CCWindow.m in Sources */, - 0E0CB5AB1B3B1E1B00DC6213 /* CCDirectorIOS.m in Sources */, - 0E0CB5B51B3B1E1B00DC6213 /* NSEvent+CC.m in Sources */, - 0E0CB6711B3B1E5700DC6213 /* cpSpaceHash.c in Sources */, - 0E0CB65F1B3B1E5700DC6213 /* cpCollision.c in Sources */, - 0E0CB5FA1B3B1E2300DC6213 /* CCBReader.m in Sources */, - 0E0CB55A1B3B1E1B00DC6213 /* CCEffectInvert.m in Sources */, - 0E0CB5901B3B1E1B00DC6213 /* CCSprite9Slice.m in Sources */, - 0E0CB6651B3B1E5700DC6213 /* cpHashSet.c in Sources */, - 0E0CB5BA1B3B1E1B00DC6213 /* ccUtils.c in Sources */, - 0E0CB6591B3B1E5700DC6213 /* chipmunk.c in Sources */, - 0E0CB6C01B3B1E6C00DC6213 /* OALAudioTracks.m in Sources */, - 0E0CB56C1B3B1E1B00DC6213 /* CCLightNode.m in Sources */, - 0E0CB6C91B3B1E6C00DC6213 /* ALSource.m in Sources */, - 0E0CB5531B3B1E1B00DC6213 /* CCEffectDFInnerGlow.m in Sources */, - 0E0CB5401B3B1E1B00DC6213 /* CCActionEase.m in Sources */, - 0E0CB5651B3B1E1B00DC6213 /* CCEffectUtils.m in Sources */, - 0E0CB57D1B3B1E1B00DC6213 /* CCParticleExamples.m in Sources */, - 0E0CB6031B3B1E2300DC6213 /* CCTextField.m in Sources */, - 0E0CB59F1B3B1E1B00DC6213 /* NSValue+CCRenderer.m in Sources */, - 0E0CB6681B3B1E5700DC6213 /* cpPolyShape.c in Sources */, - 0E0CB6D11B3B1E6C00DC6213 /* NSMutableDictionary+WeakReferences.m in Sources */, - 0E0CB5B31B3B1E1B00DC6213 /* CCGLView.m in Sources */, - 0E0CB5711B3B1E1B00DC6213 /* CCNodeColor.m in Sources */, - 0E0CB5FF1B3B1E2300DC6213 /* CCControlTextureFactory.m in Sources */, - 0E0CB57E1B3B1E1B00DC6213 /* CCParticleSystem.m in Sources */, - 0E0CB5BD1B3B1E1B00DC6213 /* NSAttributedString+CCAdditions.m in Sources */, - 0E0CB5FC1B3B1E2300DC6213 /* CCBSequenceProperty.m in Sources */, - 0E0CB6741B3B1E5700DC6213 /* cpSpatialIndex.c in Sources */, - 0E0CB5B91B3B1E1B00DC6213 /* CCProfiling.m in Sources */, - 0E0CB5BE1B3B1E1B00DC6213 /* NSThread+performBlock.m in Sources */, - 0E0CB58D1B3B1E1B00DC6213 /* CCScheduler.m in Sources */, - 0E0CB5FD1B3B1E2300DC6213 /* CCButton.m in Sources */, - 0E0CB59D1B3B1E1B00DC6213 /* CCTransition.m in Sources */, - 0E0CB5501B3B1E1B00DC6213 /* CCEffectBrightness.m in Sources */, - 0E0CB54A1B3B1E1B00DC6213 /* CCConfiguration.m in Sources */, - 0E0CB5941B3B1E1B00DC6213 /* CCTexture.m in Sources */, - 0E0CB4071B3B1DFB00DC6213 /* HelloWorldScene.m in Sources */, - 0E0CB55B1B3B1E1B00DC6213 /* CCEffectLighting.m in Sources */, - 0E0CB53F1B3B1E1B00DC6213 /* CCActionCatmullRom.m in Sources */, - 0E0CB6C51B3B1E6C00DC6213 /* ALContext.m in Sources */, - 0E0CB6C11B3B1E6C00DC6213 /* OALSimpleAudio.m in Sources */, - 0E0CB6C21B3B1E6C00DC6213 /* ALBuffer.m in Sources */, - 0E0CB6BA1B3B1E6C00DC6213 /* OALAction.m in Sources */, - 0E0CB5431B3B1E1B00DC6213 /* CCActionManager.m in Sources */, - 0E0CB66D1B3B1E5700DC6213 /* cpSlideJoint.c in Sources */, - 0E0CB6641B3B1E5700DC6213 /* cpGrooveJoint.c in Sources */, - 0E0CB58E1B3B1E1B00DC6213 /* CCShader.m in Sources */, - 0E0CB6701B3B1E5700DC6213 /* cpSpaceDebug.c in Sources */, - 0E0CB55F1B3B1E1B00DC6213 /* CCEffectReflection.m in Sources */, - 0E0CB5451B3B1E1B00DC6213 /* CCActionTween.m in Sources */, - 0E0CB58A1B3B1E1B00DC6213 /* CCResponder.m in Sources */, - 0E0CB6CA1B3B1E6C00DC6213 /* ALWrapper.m in Sources */, - 0E0CB5921B3B1E1B00DC6213 /* CCSpriteFrame.m in Sources */, - 0E0CB5611B3B1E1B00DC6213 /* CCEffectRenderer.m in Sources */, - 0E0CB6081B3B1E2300DC6213 /* CCPlatformTextFieldMac.m in Sources */, - 0E0CB65B1B3B1E5700DC6213 /* cpArbiter.c in Sources */, - 0E0CB5701B3B1E1B00DC6213 /* CCNode.m in Sources */, - 0E0CB5BC1B3B1E1B00DC6213 /* CGPointExtension.m in Sources */, - 0E0CB5891B3B1E1B00DC6213 /* CCRenderTexture.m in Sources */, - 0E0CB56A1B3B1E1B00DC6213 /* CCLayoutBox.m in Sources */, - 0E0CB5911B3B1E1B00DC6213 /* CCSpriteBatchNode.m in Sources */, - 0E0CB5491B3B1E1B00DC6213 /* CCClippingNode.m in Sources */, - 0E0CB5931B3B1E1B00DC6213 /* CCSpriteFrameCache.m in Sources */, - 0E0CB4051B3B1DFB00DC6213 /* AppDelegate.m in Sources */, - 0E0CB59B1B3B1E1B00DC6213 /* CCTouch.m in Sources */, - 0E0CB66C1B3B1E5700DC6213 /* cpSimpleMotor.c in Sources */, - 0E0CB5591B3B1E1B00DC6213 /* CCEffectHue.m in Sources */, - 0E0CB5AD1B3B1E1B00DC6213 /* CCMetalSupport.m in Sources */, - 0E0CB5601B3B1E1B00DC6213 /* CCEffectRefraction.m in Sources */, - 0E0CB65C1B3B1E5700DC6213 /* cpArray.c in Sources */, - 0E0CB6C81B3B1E6C00DC6213 /* ALSoundSourcePool.m in Sources */, - 0E0CB59A1B3B1E1B00DC6213 /* CCTMXXMLParser.m in Sources */, - 0E0CB59E1B3B1E1B00DC6213 /* cocos2d.m in Sources */, - 0E0CB6581B3B1E5700DC6213 /* ChipmunkSpace.m in Sources */, - 0E0CB6071B3B1E2300DC6213 /* CCPlatformTextFieldIOS.m in Sources */, - 0E0CB5F81B3B1E2300DC6213 /* CCBKeyframe.m in Sources */, - 0E0CB5471B3B1E1B00DC6213 /* CCAnimationCache.m in Sources */, - 0E0CB5561B3B1E1B00DC6213 /* CCEffectDropShadow.m in Sources */, - 0E0CB6611B3B1E5700DC6213 /* cpDampedRotarySpring.c in Sources */, - 0E0CB6061B3B1E2300DC6213 /* CCPlatformTextField.m in Sources */, - 0E0CB55D1B3B1E1B00DC6213 /* CCEffectOutline.m in Sources */, - 0E0CB58B1B3B1E1B00DC6213 /* CCResponderManager.m in Sources */, - 0E0CB5841B3B1E1B00DC6213 /* CCProgressNode.m in Sources */, - 0E0CB56E1B3B1E1B00DC6213 /* CCNoARC.m in Sources */, - 0E0CB6C31B3B1E6C00DC6213 /* ALCaptureDevice.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0E6B406C1B3B1BF9006FB98A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 0E6B432E1B3B1BFC006FB98A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_ARC = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - DEBUG, - "COCOS2D_DEBUG=1", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = ""; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 0E6B432F1B3B1BFC006FB98A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_ARC = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = ( - NDEBUG, - "NS_BLOCK_ASSERTIONS=1", - ); - GCC_VERSION = ""; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 0E6B43311B3B1BFC006FB98A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - CLANG_ENABLE_MODULES = YES; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "cocos2d-template/Prefix.pch"; - GCC_VERSION = ""; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/\"/**"; - INFOPLIST_FILE = "cocos2d-template/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/cocos2d-template", - ); - OTHER_LDFLAGS = ( - "-lz", - "-ObjC", - "-lz", - "-ObjC", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 0E6B43321B3B1BFC006FB98A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - CLANG_ENABLE_MODULES = YES; - COPY_PHASE_STRIP = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "cocos2d-template/Prefix.pch"; - GCC_VERSION = ""; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/\"/**"; - INFOPLIST_FILE = "cocos2d-template/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/cocos2d-template", - ); - OTHER_LDFLAGS = ( - "-lz", - "-ObjC", - "-lz", - "-ObjC", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - VALIDATE_PRODUCT = YES; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - 0E6B43341B3B1BFC006FB98A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = NO; - EXECUTABLE_EXTENSION = a; - EXECUTABLE_PREFIX = lib; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/$(PROJECT_NAME)/Libraries/Chipmunk/chipmunk/include\"", - "\"$(SRCROOT)/$(PROJECT_NAME)/Libraries/Chipmunk/objectivec/include\"", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 0E6B43351B3B1BFC006FB98A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = NO; - EXECUTABLE_EXTENSION = a; - EXECUTABLE_PREFIX = lib; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/$(PROJECT_NAME)/Libraries/Chipmunk/chipmunk/include\"", - "\"$(SRCROOT)/$(PROJECT_NAME)/Libraries/Chipmunk/objectivec/include\"", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 0E6B40651B3B1BF9006FB98A /* Build configuration list for PBXProject "cocos2d-template" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0E6B432E1B3B1BFC006FB98A /* Debug */, - 0E6B432F1B3B1BFC006FB98A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0E6B43301B3B1BFC006FB98A /* Build configuration list for PBXNativeTarget "cocos2d-template" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0E6B43311B3B1BFC006FB98A /* Debug */, - 0E6B43321B3B1BFC006FB98A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0E6B43331B3B1BFC006FB98A /* Build configuration list for PBXNativeTarget "ObjectiveChipmunk" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0E6B43341B3B1BFC006FB98A /* Debug */, - 0E6B43351B3B1BFC006FB98A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0E6B40621B3B1BF9006FB98A /* Project object */; -} diff --git a/cocos2d-template.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/cocos2d-template.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index c7aaafa67ca..00000000000 --- a/cocos2d-template.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/cocos2d-template.xcodeproj/project.xcworkspace/xcshareddata/cocos2d-template.xcscmblueprint b/cocos2d-template.xcodeproj/project.xcworkspace/xcshareddata/cocos2d-template.xcscmblueprint deleted file mode 100644 index db81792aac6..00000000000 --- a/cocos2d-template.xcodeproj/project.xcworkspace/xcshareddata/cocos2d-template.xcscmblueprint +++ /dev/null @@ -1,37 +0,0 @@ -{ - "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "5D7004AFA0F8477414D2D2070527EE503A955943", - "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { - - }, - "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { - "5D7004AFA0F8477414D2D2070527EE503A955943" : 0, - "999D2B244F4BEADDDD09CD5EE2574031B24F399A" : 0, - "A21E964CF35F95307B1FB121F2B5F3025ACF2ED9" : 0 - }, - "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "EB4D58AD-A74A-4CF5-9D02-D7CC8221EE25", - "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { - "5D7004AFA0F8477414D2D2070527EE503A955943" : "cocos2d-objc", - "999D2B244F4BEADDDD09CD5EE2574031B24F399A" : "cocos2d-objcexternal\/Chipmunk", - "A21E964CF35F95307B1FB121F2B5F3025ACF2ED9" : "cocos2d-objcexternal\/ObjectAL" - }, - "DVTSourceControlWorkspaceBlueprintNameKey" : "cocos2d-template", - "DVTSourceControlWorkspaceBlueprintVersion" : 203, - "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "cocos2d-template.xcodeproj", - "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ - { - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/cocos2d\/cocos2d-objc.git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "5D7004AFA0F8477414D2D2070527EE503A955943" - }, - { - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/slembcke\/Chipmunk2D.git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "999D2B244F4BEADDDD09CD5EE2574031B24F399A" - }, - { - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/spritebuilder\/ObjectAL-for-Cocos2D.git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "A21E964CF35F95307B1FB121F2B5F3025ACF2ED9" - } - ] -} \ No newline at end of file diff --git a/cocos2d-template.xcodeproj/project.xcworkspace/xcuserdata/Birkemose.xcuserdatad/WorkspaceSettings.xcsettings b/cocos2d-template.xcodeproj/project.xcworkspace/xcuserdata/Birkemose.xcuserdatad/WorkspaceSettings.xcsettings deleted file mode 100644 index bfffcfe01a4..00000000000 --- a/cocos2d-template.xcodeproj/project.xcworkspace/xcuserdata/Birkemose.xcuserdatad/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,10 +0,0 @@ - - - - - HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges - - SnapshotAutomaticallyBeforeSignificantChanges - - - diff --git a/cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/ObjectiveChipmunk.xcscheme b/cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/ObjectiveChipmunk.xcscheme deleted file mode 100644 index 95733c00c40..00000000000 --- a/cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/ObjectiveChipmunk.xcscheme +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/cocos2d-template.xcscheme b/cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/cocos2d-template.xcscheme deleted file mode 100644 index 1758642b948..00000000000 --- a/cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/cocos2d-template.xcscheme +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/xcschememanagement.plist b/cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 138ac940bb1..00000000000 --- a/cocos2d-template.xcodeproj/xcuserdata/Birkemose.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - SchemeUserState - - ObjectiveChipmunk.xcscheme - - orderHint - 1 - - cocos2d-template.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 0E6B40691B3B1BF9006FB98A - - primary - - - 0E6B406D1B3B1BF9006FB98A - - primary - - - - - From 64eb71c80b1ec01c03f50fd5a75bbc7207caea49 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 24 Feb 2016 15:08:40 +0300 Subject: [PATCH 41/94] Fix duplicating system methods --- cocos2d/Support/CGPointExtension.h | 3 +++ cocos2d/Support/CGPointExtension.m | 2 ++ 2 files changed, 5 insertions(+) diff --git a/cocos2d/Support/CGPointExtension.h b/cocos2d/Support/CGPointExtension.h index 19b02cf6f07..03a67707163 100644 --- a/cocos2d/Support/CGPointExtension.h +++ b/cocos2d/Support/CGPointExtension.h @@ -330,6 +330,8 @@ BOOL ccpSegmentIntersect(CGPoint A, CGPoint B, CGPoint C, CGPoint D); */ CGPoint ccpIntersectPoint(CGPoint A, CGPoint B, CGPoint C, CGPoint D); + +#if !__CC_PLATFORM_IOS @interface NSValue (CCValue) + (NSValue *)valueWithCGPoint:(CGPoint)point; @@ -343,6 +345,7 @@ CGPoint ccpIntersectPoint(CGPoint A, CGPoint B, CGPoint C, CGPoint D); - (CGAffineTransform)CGAffineTransformValue; @end +#endif #ifdef __cplusplus } diff --git a/cocos2d/Support/CGPointExtension.m b/cocos2d/Support/CGPointExtension.m index 291459138a9..63f9a7350ae 100644 --- a/cocos2d/Support/CGPointExtension.m +++ b/cocos2d/Support/CGPointExtension.m @@ -160,6 +160,7 @@ float ccpAngle(CGPoint a, CGPoint b) return angle; } +#if !__CC_PLATFORM_IOS @implementation NSValue (CCValue) + (NSValue *)valueWithCGPoint:(CGPoint)point @@ -212,4 +213,5 @@ - (CGAffineTransform)CGAffineTransformValue @end +#endif From e4df9b3378fa77e154351102eb78da568293269a Mon Sep 17 00:00:00 2001 From: s1ddok Date: Fri, 26 Feb 2016 21:36:58 +0300 Subject: [PATCH 42/94] a fix for Siri Dictation --- cocos2d/Platforms/iOS/CCGLView.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cocos2d/Platforms/iOS/CCGLView.m b/cocos2d/Platforms/iOS/CCGLView.m index 317fb3250a0..10bca0d3ecd 100644 --- a/cocos2d/Platforms/iOS/CCGLView.m +++ b/cocos2d/Platforms/iOS/CCGLView.m @@ -402,7 +402,9 @@ -(void)addFrameCompletionHandler:(dispatch_block_t)handler [fence.handlers addObject:handler]; } --(void)beginFrame {} +-(void)beginFrame { + [EAGLContext setCurrentContext:self.context]; +} -(void)presentFrame { From 64da62517b0a986872ff765587bd3a6244a928df Mon Sep 17 00:00:00 2001 From: s1ddok Date: Fri, 26 Feb 2016 21:44:34 +0300 Subject: [PATCH 43/94] #1215 --- cocos2d/CCTexturePVR.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocos2d/CCTexturePVR.m b/cocos2d/CCTexturePVR.m index efa653a8745..713a10d2cbf 100644 --- a/cocos2d/CCTexturePVR.m +++ b/cocos2d/CCTexturePVR.m @@ -307,7 +307,7 @@ - (BOOL)unpackPVRv2Data:(unsigned char*)data PVRLen:(NSUInteger)len formatFlags = flags & PVR_TEXTURE_FLAG_TYPE_MASK; BOOL flipped = flags & kPVR2TextureFlagVerticalFlip; if( flipped ) - CCLOGWARN(@"cocos2d: WARNING: Image is flipped. Regenerate it using PVRTexTool"); + CCLOGWARN(@"cocos2d: WARNING: Image is not flipped. Regenerate it using PVRTexTool"); if( ! [configuration supportsNPOT] && ( header->width != CCNextPOT(header->width) || header->height != CCNextPOT(header->height ) ) ) { From 1ebd5540e9f1e090e26def288547637282170323 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 27 Feb 2016 07:55:49 +0300 Subject: [PATCH 44/94] update cocos2d version --- cocos2d/cocos2d.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocos2d/cocos2d.h b/cocos2d/cocos2d.h index 976820210ca..613c1adc997 100644 --- a/cocos2d/cocos2d.h +++ b/cocos2d/cocos2d.h @@ -41,7 +41,7 @@ // 0x00 HI ME LO // 00 03 xx xx -#define COCOS2D_VERSION 0x00030409 +#define COCOS2D_VERSION 0x00030500 #define COCOS2D_BUILD @"release" // // all cocos2d include files From 92dcc6e707e065cec61a7e64f9c9884ef94cc090 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 27 Feb 2016 09:05:56 +0300 Subject: [PATCH 45/94] fixes for extensions --- cocos2d-ext/CCBReader/CCAnimationManager.m | 6 +++++- cocos2d/cocos2d.m | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cocos2d-ext/CCBReader/CCAnimationManager.m b/cocos2d-ext/CCBReader/CCAnimationManager.m index 7b4130340e8..df097e4df61 100644 --- a/cocos2d-ext/CCBReader/CCAnimationManager.m +++ b/cocos2d-ext/CCBReader/CCAnimationManager.m @@ -230,7 +230,9 @@ - (CCActionInterval*)actionFromKeyframe0:(CCBKeyframe*)kf0 andKeyframe1:(CCBKeyf // TODO is this a mild bug? // What happens if an easing curve is applied to this? return (CCActionInterval *)[CCActionSpriteFrame actionWithSpriteFrame:kf1.value]; - } else if ([node isKindOfClass:[CCLightNode class]]) { + } +#if CC_LIGHTING + else if ([node isKindOfClass:[CCLightNode class]]) { if ([name isEqualToString:@"intensity"] || [name isEqualToString:@"specularIntensity"] || [name isEqualToString:@"ambientIntensity"] || @@ -244,6 +246,8 @@ - (CCActionInterval*)actionFromKeyframe0:(CCBKeyframe*)kf0 andKeyframe1:(CCBKeyf { return [CCBActionTweenColor actionWithDuration:duration key:name from:kf0.value to:kf1.value]; } + } +#endif } else { CCLOG(@"CCBReader: Failed to create animation for property: %@", name); } diff --git a/cocos2d/cocos2d.m b/cocos2d/cocos2d.m index 9731c6d7619..2efd26e6bc0 100644 --- a/cocos2d/cocos2d.m +++ b/cocos2d/cocos2d.m @@ -36,10 +36,10 @@ if ([COCOS2D_BUILD isEqualToString:@"release"]) { - return [NSString stringWithFormat:@"Cocos2D-Swift version %d.%d.%d", major, minor, rev]; + return [NSString stringWithFormat:@"Cocos2D-ObjC version %d.%d.%d", major, minor, rev]; } else { - return([[NSString stringWithFormat:@"Cocos2D-Swift version %d.%d.%d-", major, minor, rev] stringByAppendingString:COCOS2D_BUILD]); + return([[NSString stringWithFormat:@"Cocos2D-ObjC version %d.%d.%d-", major, minor, rev] stringByAppendingString:COCOS2D_BUILD]); } } From 0f62a1a128acd97207465bb017218943be3b98d0 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 27 Feb 2016 09:23:11 +0300 Subject: [PATCH 46/94] Update readme for 3.5 --- README.md | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 6c4b68e5476..c062e4cf9f6 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,5 @@ Cocos2D-ObjC ============ -Cocos2D is currently trying to raise funds for a Swift version. -If you think this would be interesting, please consider supporting it. -[KickStarter Cocos2D-PureSwift][6] - **PLEASE READ BEFORE POSTING AN ISSUE!** If in doubt, please post questions and comments in the forum @@ -25,17 +21,17 @@ Cocos2D-ObjC is: * Fast * Free + * Lightweight + * Modular * Easy to use * Community Supported Creating New Projects --------------------- -We are in the process of adding a stand alone installer to Cocos2D-Objc. A temporary template can be found [here][5] - -An alternative approach, is to use SpriteBuilder: +For creating new projects you should use an official [Cocos2D Installer][5]. -New Cocos2D projects can be created with SpriteBuilder. SpriteBuilder is, just like Cocos2D, free and open source. You can get SpriteBuilder from [spritebuilder.com](http://spritebuilder.com) or from the Mac App Store. Projects created using SpriteBuilder contains the complete Cocos2D source code, and after the project has been created using SpriteBuilder is optional. +There is a rich GUI editor for Cocos2D app named SpriteBuilder. SpriteBuilder is, just like Cocos2D, free and open source. You can get SpriteBuilder from [spritebuilder.com](http://spritebuilder.com) or from the Mac App Store. Projects created using SpriteBuilder contains the complete Cocos2D source code, and after the project has been created using SpriteBuilder is optional. SpriteBuilder also allows you to update the Cocos2D version in your project, to newest version, making it trivial to always keep you project updated to latest Cocos2D version. @@ -46,42 +42,46 @@ Features * Scene management (workflow) * Transitions between scenes * Sprites and Sprite Sheets - * Effects: Lens, Ripple, Waves, Liquid, etc. + * Effects: Lens, Ripple, Waves, Liquid, etc. *(Served as extension)* * Actions (behaviours): * Trasformation Actions: Move, Rotate, Scale, Fade, Tint, etc. * Composable actions: Sequence, Spawn, Repeat, Reverse * Ease Actions: Exp, Sin, Cubic, Elastic, etc. * Misc actions: CallFunc, OrbitCamera, Follow, Tween * Basic menus and buttons - * Integrated with [Chipmunk][4] physics engine - * Particle system + * Integrated with [Chipmunk][4] physics engine *(Served as extension)* + * Particle system *(Served as extension)* * Fonts: * Fast font rendering using Fixed and Variable width fonts * Support for .ttf fonts - * Tile Map support: Orthogonal, Isometric and Hexagonal - * Parallax scrolling - * Motion Streak - * Render To Texture + * Tile Map support: Orthogonal, Isometric and Hexagonal *(Served as extension)* + * Parallax scrolling *(Served as extension)* + * Motion Streak *(Served as extension)* + * Render To Texture *(Served as extension)* * Touch/Accelerometer on iOS * Touch/Mouse/Keyboard on Mac - * Sound Engine support (CocosDenshion library) based on OpenAL + * Sound Engine support based on OpenAL *(Served as extension)* * Integrated Slow motion/Fast forward * Fast textures: PVR compressed and uncompressed textures * Point based: RetinaDisplay mode compatible - * Language: Objective-C + * Language: Objective-C / Swift * Open Source Commercial Friendly: Compatible with open and closed source projects - * OpenGL ES 2.0 (iOS) / OpenGL 2.1 (Mac) based + * Image assets support + * TVOS support + * App thinning support + * 3D touch support + * OpenGL ES 2.0 or Metal (iOS) / OpenGL 2.1 (Mac) based Build Requirements ------------------ -Mac OS X 10.6 (or newer), Xcode 4.2 (or newer) +Mac OS X 10.9 (or newer), Xcode 7.0 (or newer) Runtime Requirements -------------------- - * iOS 6.0 or newer for iOS games + * iOS 6.0 (7.0 for Swift) or newer for iOS games * Snow Leopard (v10.6) or newer for Mac games @@ -108,5 +108,4 @@ Download from Github [2]: http://www.cocos2d.org "cocos2d" [3]: http://forum.cocos2d-objc.org "Cocos2D-ObjC Official Forum" [4]: http://www.chipmunk-physics.net -[5]: https://github.com/slembcke/UnofficialCocos2DTemplate -[6]: https://www.kickstarter.com/projects/1455832115/cocos2d-pureswift +[5]: https://github.com/s1ddok/CCProjectGenerator From d1a8d3ef0efcfcececdd26e352d75e3f2577bdc8 Mon Sep 17 00:00:00 2001 From: Andrey Volodin Date: Sat, 27 Feb 2016 09:54:48 +0300 Subject: [PATCH 47/94] Update README.md --- README.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README.md b/README.md index c062e4cf9f6..2fa09b86140 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,42 @@ SpriteBuilder also allows you to update the Cocos2D version in your project, to You can find the full Cocos2D documentation and user guide at our [documentation page](http://cocos2d-objc.org/docs/). +**Important:** +Since 3.5 Cocos2D changed ideology a bit. First of all, Android support is gone. It happened due to Apportable company bankraptcy, they were providing the UIKit implementation for Android, but it broken since XCode 7.2. Android support is unlikely to be back. Now Cocos2D is fully open-oriented with rich Metal support and other cool features that are available only on Apple platform. + +All releases will be incremental now. Even if backwards compatibility will broke it will be a matter of changing a few lines in code. Backwards compatibility are guaranteed for now. + +**Changelog for 3.5 (Sits in README for clearing things up):** + * Hacky templates are gone, official installer is introduced + * Cocos2D is now running on native resolutions on all devices. + * XIB Launch screen are used by default. + * All android-relative and caused-by-android code is gone. + * Image assets support (enables user to load images with native content scale and also makes your app really small in size due to App Thinning technology). + * 3D Touch support. + * App thinning support. + * CCTouch are gone, touch dispatching is gone too, so perfomance on this is much better. Native touches are now used instead. + * CCTransition are now meant to be overriden. Creating custom trunstions is easy as ever. Small refactoring required - Rename CCTransition to CCDefaultTransition everywhere. + * ObjectAL is not shipped in bundle with Cocos2D anymore, because it is marked as deprecated by Apple. You are free to choose now, which sound engine you prefer. + * Chipmunk physics is an option now. There are still a lot of love paid for Box2D. You are not forced to use particular physics engine anymore. Chipmunk is still available and integrated, but served as extension. + * CCLayoutBox takes transformations into account. + * Mac compilation out-of-the-box is back. + * TVOS support introduced. + * Metal rendering back and is now working. + * All tile map code is now an extension. There are a lot of better frameworks which can be used instead of cocos2d native tilemap code. + * CCScrollView sends delegate messages while animating too. + * A lot of nodes now moved to extension. Such as CCParallaxNode, CCPackages, CCParticles, CCClippingNode, CCMotionStreak etc. + * Cocos2D can be now used as a drop-in solution, no more husling with XCode subprojects etc. + * Start-up code is reconsidireted. Unfortunately, we still have to use CCAppDelegate, but it will be gone in next release. `startScene` method is gone. Why? Because now you can stack scenes in the start-up, this allowing you, for example, launch a level from 3D touch shortcut with a stack level of two, and put `MainScene` into stack level 1. This won't break your app in any way, allowing all of buttons like "Home", "Back" etc working without any new code. + * CCEffects are now served as extension. + * SSZipArchive dependency is gone in default bundle. + * SpriteBuilder is an option now. If you don't want to use it, there will be no related files. + * CCTableView is improved. + * New control is introduced in -ui: CCPotentioMeter. + * Repo is generally cleaned. + * Bug fixed for Siri dictation. + * CCWarnings are fixed. + * CCRenderTexture shader is now forwarded to sprite. + Features ------------- * Scene management (workflow) From 7251af98dfdd40a6274aef7f112f6ab1e38e6ed2 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 18:09:07 +0300 Subject: [PATCH 48/94] Merge CCNode private header into main --- UnitTests/CCMemoryTests.m | 1 - UnitTests/CCNodeTests.m | 1 - cocos2d-ext/CCClippingNode/CCClippingNode.m | 1 - cocos2d-ext/CCMotionStreak/CCMotionStreak.m | 1 - cocos2d-ext/CCParticles/CCParticleBatchNode.m | 1 - cocos2d-ext/CCParticles/CCParticleSystem.m | 1 - .../CCParticles/CCParticleSystemBase.m | 1 - cocos2d-ext/TileMaps/CCTiledMapLayer.m | 1 - .../tests/SpritePerformanceTest.m | 1 - cocos2d-ui-tests/tests/VertexZTest.m | 1 - cocos2d-ui/CCProgressNode.m | 1 - cocos2d.xcodeproj/project.pbxproj | 8 -- cocos2d/CCDirector.m | 1 - cocos2d/CCDrawNode.m | 1 - cocos2d/CCLabelTTF.m | 1 - cocos2d/CCLayout.m | 1 - cocos2d/CCLayoutBox.m | 1 - cocos2d/CCNoARC.m | 1 - cocos2d/CCNode+Debug.m | 1 - cocos2d/CCNode.h | 87 +++++++++++++- cocos2d/CCNode.m | 1 - cocos2d/CCNodeColor.m | 2 - cocos2d/CCNode_Private.h | 113 ------------------ cocos2d/CCRenderTexture.m | 1 - cocos2d/CCRenderTexture_Private.h | 2 - cocos2d/CCSprite.m | 1 - cocos2d/CCSprite9Slice.m | 1 - cocos2d/CCSpriteBatchNode.m | 1 - cocos2d/CCTransition.m | 1 - 29 files changed, 83 insertions(+), 153 deletions(-) delete mode 100644 cocos2d/CCNode_Private.h diff --git a/UnitTests/CCMemoryTests.m b/UnitTests/CCMemoryTests.m index 5d5d9d91f0a..e7924bd41d3 100644 --- a/UnitTests/CCMemoryTests.m +++ b/UnitTests/CCMemoryTests.m @@ -8,7 +8,6 @@ #import #import "cocos2d.h" -#import "CCNode_private.h" @interface CCMemoryNode : CCNode diff --git a/UnitTests/CCNodeTests.m b/UnitTests/CCNodeTests.m index 464c28ba9d1..249a5ac897a 100644 --- a/UnitTests/CCNodeTests.m +++ b/UnitTests/CCNodeTests.m @@ -8,7 +8,6 @@ #import #import "cocos2d.h" #import "CCDirector_Private.h" -#import "CCNode_Private.h" @interface CCNodeTests : XCTestCase diff --git a/cocos2d-ext/CCClippingNode/CCClippingNode.m b/cocos2d-ext/CCClippingNode/CCClippingNode.m index f681ce9770b..672734b0f7f 100644 --- a/cocos2d-ext/CCClippingNode/CCClippingNode.m +++ b/cocos2d-ext/CCClippingNode/CCClippingNode.m @@ -32,7 +32,6 @@ #import "CCDirector.h" #import "CGPointExtension.h" -#import "CCNode_Private.h" #import "CCRenderDispatch.h" #import "CCConfiguration.h" diff --git a/cocos2d-ext/CCMotionStreak/CCMotionStreak.m b/cocos2d-ext/CCMotionStreak/CCMotionStreak.m index eeda5983fc1..e1965d3a244 100644 --- a/cocos2d-ext/CCMotionStreak/CCMotionStreak.m +++ b/cocos2d-ext/CCMotionStreak/CCMotionStreak.m @@ -28,7 +28,6 @@ #import "CCTextureCache.h" #import "CCShader.h" #import "ccMacros.h" -#import "CCNode_Private.h" #import "CCTexture_Private.h" #import "CCRenderer_Private.h" diff --git a/cocos2d-ext/CCParticles/CCParticleBatchNode.m b/cocos2d-ext/CCParticles/CCParticleBatchNode.m index 9f836b4a31e..78557a3c044 100644 --- a/cocos2d-ext/CCParticles/CCParticleBatchNode.m +++ b/cocos2d-ext/CCParticles/CCParticleBatchNode.m @@ -39,7 +39,6 @@ #import "Support/ZipUtils.h" #import "Support/CCFileUtils.h" -#import "CCNode_Private.h" #import "CCParticleSystemBase_Private.h" #import "CCTexture_Private.h" diff --git a/cocos2d-ext/CCParticles/CCParticleSystem.m b/cocos2d-ext/CCParticles/CCParticleSystem.m index 0d91344c899..210dd0a95a3 100644 --- a/cocos2d-ext/CCParticles/CCParticleSystem.m +++ b/cocos2d-ext/CCParticles/CCParticleSystem.m @@ -45,7 +45,6 @@ #import "Support/CGPointExtension.h" #import "Support/NSThread+performBlock.h" -#import "CCNode_Private.h" #import "CCParticleSystemBase_Private.h" #import "CCParticleSystem_Private.h" #import "CCTexture_Private.h" diff --git a/cocos2d-ext/CCParticles/CCParticleSystemBase.m b/cocos2d-ext/CCParticles/CCParticleSystemBase.m index 046bb3a2108..6afa3545046 100644 --- a/cocos2d-ext/CCParticles/CCParticleSystemBase.m +++ b/cocos2d-ext/CCParticles/CCParticleSystemBase.m @@ -54,7 +54,6 @@ #import "CCTextureCache.h" #import "ccMacros.h" #import "Support/CCProfiling.h" -#import "CCNode_Private.h" // support #import "Support/CGPointExtension.h" diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer.m b/cocos2d-ext/TileMaps/CCTiledMapLayer.m index 3053256814f..3caadeda58f 100644 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer.m +++ b/cocos2d-ext/TileMaps/CCTiledMapLayer.m @@ -37,7 +37,6 @@ #import "CCTextureCache.h" #import "CCShader.h" #import "Support/CGPointExtension.h" -#import "CCNode_Private.h" #import "CCSprite_Private.h" #import "CCTiledMapLayer_Private.h" #import "CCTexture_Private.h" diff --git a/cocos2d-ui-tests/tests/SpritePerformanceTest.m b/cocos2d-ui-tests/tests/SpritePerformanceTest.m index 34748c13f57..53f567cbbe8 100644 --- a/cocos2d-ui-tests/tests/SpritePerformanceTest.m +++ b/cocos2d-ui-tests/tests/SpritePerformanceTest.m @@ -1,5 +1,4 @@ #import "TestBase.h" -#import "CCNode_Private.h" @interface SpritePerformanceTest : TestBase @end @implementation SpritePerformanceTest diff --git a/cocos2d-ui-tests/tests/VertexZTest.m b/cocos2d-ui-tests/tests/VertexZTest.m index 7cbd8bbf81f..4b698478050 100644 --- a/cocos2d-ui-tests/tests/VertexZTest.m +++ b/cocos2d-ui-tests/tests/VertexZTest.m @@ -8,7 +8,6 @@ #import "TestBase.h" #import "CCTextureCache.h" -#import "CCNode_Private.h" #import "CCSprite_Private.h" @interface GlobalSortSprite : CCSprite @end diff --git a/cocos2d-ui/CCProgressNode.m b/cocos2d-ui/CCProgressNode.m index 2f317d64be2..482b9b7a979 100644 --- a/cocos2d-ui/CCProgressNode.m +++ b/cocos2d-ui/CCProgressNode.m @@ -33,7 +33,6 @@ #import "Support/CGPointExtension.h" #import "CCSprite_Private.h" -#import "CCNode_Private.h" #import "CCProgressNode_Private.h" #import "CCTexture_Private.h" diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 4869b3fce66..3ff0d1929f8 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -130,7 +130,6 @@ 08F4AB0C1C6E98A1004DAAF7 /* CCPlatformTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD01E19649E03003D460C /* CCPlatformTextField.h */; }; 08F4AB0D1C6E98A1004DAAF7 /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; 08F4AB0E1C6E98A1004DAAF7 /* ccMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BAF3970F33CCD8003F654C /* ccMacros.h */; }; - 08F4AB0F1C6E98A1004DAAF7 /* CCNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D13C181F2E4500E7BFCD /* CCNode_Private.h */; }; 08F4AB101C6E98A1004DAAF7 /* CCSprite.h in Headers */ = {isa = PBXBuildFile; fileRef = 509A79950F6188420032F449 /* CCSprite.h */; }; 08F4AB111C6E98A1004DAAF7 /* CCFileUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C508C40F7C194400799124 /* CCFileUtils.h */; }; 08F4AB121C6E98A1004DAAF7 /* CGPointExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 503798C40F912C2000986724 /* CGPointExtension.h */; }; @@ -280,7 +279,6 @@ 7A4037C819E3712A007B6E8F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4037C719E3712A007B6E8F /* OpenGL.framework */; }; 7A59466E19E372EE00F65F90 /* CCNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2540DFDEAFF00C013A5 /* CCNode.h */; }; 7A59467019E372EE00F65F90 /* CCNode+Debug.h in Headers */ = {isa = PBXBuildFile; fileRef = A039EBFD155C686B0061EE37 /* CCNode+Debug.h */; }; - 7A59467219E372EF00F65F90 /* CCNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D13C181F2E4500E7BFCD /* CCNode_Private.h */; }; 7A59467319E372EF00F65F90 /* CCLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE69DC1819E75700B983FE /* CCLayout.h */; }; 7A59467519E372EF00F65F90 /* CCLayoutBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE69DE1819E75700B983FE /* CCLayoutBox.h */; }; 7A59467719E372EF00F65F90 /* CCDrawNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DA0BC115BCDCA200E80A92 /* CCDrawNode.h */; }; @@ -477,7 +475,6 @@ B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */; }; B78AE46D17E7AF6C0028BE0B /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */; }; B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; - B798D13D181F2E4500E7BFCD /* CCNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D13C181F2E4500E7BFCD /* CCNode_Private.h */; }; B798D143181F469100E7BFCD /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; B798D1451820305400E7BFCD /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = B79F905817FE2A2E00908504 /* CCTableView.h */; }; @@ -696,7 +693,6 @@ B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITouch+CC.h"; sourceTree = ""; }; B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITouch+CC.m"; sourceTree = ""; }; B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProgressNode_Private.h; sourceTree = ""; }; - B798D13C181F2E4500E7BFCD /* CCNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNode_Private.h; sourceTree = ""; }; B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLabelBMFont_Private.h; sourceTree = ""; }; B798D1441820305400E7BFCD /* CCSprite_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite_Private.h; sourceTree = ""; }; B79F905817FE2A2E00908504 /* CCTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTableView.h; path = "cocos2d-ui/CCTableView.h"; sourceTree = ""; }; @@ -1073,7 +1069,6 @@ 5018F2550DFDEAFF00C013A5 /* CCNode.m */, A039EBFD155C686B0061EE37 /* CCNode+Debug.h */, A039EBFE155C686B0061EE37 /* CCNode+Debug.m */, - B798D13C181F2E4500E7BFCD /* CCNode_Private.h */, ); name = "Base Nodes"; sourceTree = ""; @@ -1353,7 +1348,6 @@ 08F4AB0D1C6E98A1004DAAF7 /* CCSprite_Private.h in Headers */, 08F4AB0E1C6E98A1004DAAF7 /* ccMacros.h in Headers */, 08A4EB7F1C7A563900A08923 /* CCPotentiometer.h in Headers */, - 08F4AB0F1C6E98A1004DAAF7 /* CCNode_Private.h in Headers */, 08F4AB101C6E98A1004DAAF7 /* CCSprite.h in Headers */, 08F4AB111C6E98A1004DAAF7 /* CCFileUtils.h in Headers */, 08F4AB121C6E98A1004DAAF7 /* CGPointExtension.h in Headers */, @@ -1449,7 +1443,6 @@ B798D1451820305400E7BFCD /* CCSprite_Private.h in Headers */, 50BAF3990F33CCD8003F654C /* ccMacros.h in Headers */, 08A4EB7D1C7A563900A08923 /* CCPotentiometer.h in Headers */, - B798D13D181F2E4500E7BFCD /* CCNode_Private.h in Headers */, 509A79970F6188420032F449 /* CCSprite.h in Headers */, 50C508C60F7C194400799124 /* CCFileUtils.h in Headers */, 503798C60F912C2000986724 /* CGPointExtension.h in Headers */, @@ -1527,7 +1520,6 @@ files = ( 7A59466E19E372EE00F65F90 /* CCNode.h in Headers */, 7A59467019E372EE00F65F90 /* CCNode+Debug.h in Headers */, - 7A59467219E372EF00F65F90 /* CCNode_Private.h in Headers */, 7A59467319E372EF00F65F90 /* CCLayout.h in Headers */, 08A4EB701C7A553E00A08923 /* CCActionProgressTimer.h in Headers */, 7A59467519E372EF00F65F90 /* CCLayoutBox.h in Headers */, diff --git a/cocos2d/CCDirector.m b/cocos2d/CCDirector.m index 029ac590afb..4685a5e07b0 100644 --- a/cocos2d/CCDirector.m +++ b/cocos2d/CCDirector.m @@ -65,7 +65,6 @@ #endif #import "CCDirector_Private.h" -#import "CCNode_Private.h" #pragma mark - #pragma mark Director - global variables (optimization) diff --git a/cocos2d/CCDrawNode.m b/cocos2d/CCDrawNode.m index 0e11f7a68d7..3a702243ea9 100644 --- a/cocos2d/CCDrawNode.m +++ b/cocos2d/CCDrawNode.m @@ -30,7 +30,6 @@ #import "CCDrawNode.h" #import "CCShader.h" #import "Support/CGPointExtension.h" -#import "CCNode_Private.h" #import "CCColor.h" #import "CCConfiguration.h" #import "CCMetalSupport_Private.h" diff --git a/cocos2d/CCLabelTTF.m b/cocos2d/CCLabelTTF.m index 71933657984..9917cd6c15e 100644 --- a/cocos2d/CCLabelTTF.m +++ b/cocos2d/CCLabelTTF.m @@ -35,7 +35,6 @@ #import "ccUtils.h" #import "NSAttributedString+CCAdditions.h" #import "CCConfiguration.h" -#import "CCNode_Private.h" #import "CCDirector.h" #import "CCTexture_Private.h" #import diff --git a/cocos2d/CCLayout.m b/cocos2d/CCLayout.m index 9a798d481cb..5cc6b9926d5 100644 --- a/cocos2d/CCLayout.m +++ b/cocos2d/CCLayout.m @@ -24,7 +24,6 @@ */ #import "CCLayout.h" -#import "CCNode_Private.h" @implementation CCLayout diff --git a/cocos2d/CCLayoutBox.m b/cocos2d/CCLayoutBox.m index ec5ebccfdb0..f55e2b57fd7 100755 --- a/cocos2d/CCLayoutBox.m +++ b/cocos2d/CCLayoutBox.m @@ -26,7 +26,6 @@ #import "CCLayoutBox.h" #import "ccMacros.h" #import "CGPointExtension.h" -#import "CCNode_Private.h" @implementation CCLayoutBox diff --git a/cocos2d/CCNoARC.m b/cocos2d/CCNoARC.m index eede3136cc0..13a2e907d16 100644 --- a/cocos2d/CCNoARC.m +++ b/cocos2d/CCNoARC.m @@ -1,5 +1,4 @@ #import "CCTexture_Private.h" -#import "CCNode_Private.h" #import "CCSprite_Private.h" #import "CCRenderer_Private.h" #import "CCShader_Private.h" diff --git a/cocos2d/CCNode+Debug.m b/cocos2d/CCNode+Debug.m index ad3d09b167b..c5e7d99938f 100644 --- a/cocos2d/CCNode+Debug.m +++ b/cocos2d/CCNode+Debug.m @@ -24,7 +24,6 @@ */ #import "CCNode+Debug.h" -#import "CCNode_Private.h" #if DEBUG diff --git a/cocos2d/CCNode.h b/cocos2d/CCNode.h index c7fdbe3b592..6a2b2aa138a 100644 --- a/cocos2d/CCNode.h +++ b/cocos2d/CCNode.h @@ -145,12 +145,10 @@ is called. This offers an opportunity for the node to carry out any cleanup such as removing possible circular references that might cause a memory leak. - CCNode implements a base level of functionality for cleanup and if your subclass needs to implement it, you will need to import CCNode_Private.h. - @note that if you override cleanup, you must call [super cleanup] after any cleanup of your own. */ -@interface CCNode : CCResponder < CCSchedulerTarget > { +@interface CCNode : CCResponder < CCSchedulerTarget, CCShaderProtocol, CCBlendProtocol, CCTextureProtocol> { // Rotation angle. float _rotationalSkewX, _rotationalSkewY; @@ -234,6 +232,16 @@ // Number of paused parent or ancestor nodes. int _pausedAncestors; + +@protected + CCRenderState *_renderState; + + CCShader *_shader; + NSMutableDictionary *_shaderUniforms; + + CCBlendMode *_blendMode; + CCTexture *_texture; + } @@ -707,7 +715,7 @@ @note The animationManager property is nil during a node's init methods. @see CCAnimationManager */ -@property (nonatomic, readonly) CCAnimationManager * animationManager; +@property (nonatomic, readwrite) CCAnimationManager * animationManager; /// ----------------------------------------------------------------------- @@ -1127,8 +1135,79 @@ */ @property(nonatomic, strong) CCPhysicsBody *physicsBody; +/// Returns true if the node is not using custom uniforms. +-(BOOL)hasDefaultShaderUniforms; + +/// Cache and return the current render state. +/// Should be set to nil whenever changing a property that affects the renderstate. +@property(nonatomic, strong) CCRenderState *renderState; + +/* The real openGL Z vertex. + Differences between openGL Z vertex and cocos2d Z order: + - OpenGL Z modifies the Z vertex, and not the Z order in the relation between parent-children + - OpenGL Z might require to set 2D projection + - cocos2d Z order works OK if all the nodes uses the same openGL Z vertex. eg: vertexZ = 0 + @warning: Use it at your own risk since it might break the cocos2d parent-children z order + */ +@property (nonatomic,readwrite) float vertexZ; + +@property (nonatomic,readonly) BOOL isPhysicsNode; + +/* used internally for zOrder sorting, don't change this manually */ +@property(nonatomic,readwrite) NSUInteger orderOfArrival; + +/* CCActionManager used by all the actions. + IMPORTANT: If you set a new CCActionManager, then previously created actions are going to be removed. + */ +@property (nonatomic, readwrite, strong) CCActionManager *actionManager; + +/* CCScheduler used to schedule all "updates" and timers. + IMPORTANT: If you set a new CCScheduler, then previously created timers/update are going to be removed. + */ +@property (nonatomic, readwrite, strong) CCScheduler *scheduler; + +/* Compares two nodes in respect to zOrder and orderOfArrival (used for sorting sprites in display list) */ +- (NSComparisonResult) compareZOrderToNode:(CCNode*)node; + +/* Reorders a child according to a new z value. + * The child MUST be already added. + */ +-(void) reorderChild:(CCNode*)child z:(NSInteger)zOrder; + +/* performance improvement, Sort the children array once before drawing, instead of every time when a child is added or reordered + don't call this manually unless a child added needs to be removed in the same frame */ +- (void) sortAllChildren; + +/* Event that is called when the running node is no longer running (eg: its CCScene is being removed from the "stage" ). + On cleanup you should break any possible circular references. + CCNode's cleanup removes any possible scheduled timer and/or any possible action. + If you override cleanup, you must call [super cleanup] after any cleanup of your own. + */ +-(void) cleanup __attribute__((objc_requires_super)); + +///* performs OpenGL view-matrix transformation of its ancestors. +// Generally the ancestors are already transformed, but in certain cases (eg: attaching a FBO) it is necessary to transform the ancestors again. +// */ +//-(void) transformAncestors; + +/* final method called to actually remove a child node from the children. + * @param node The child node to remove + * @param cleanup Stops all scheduled events and actions + */ +-(void) detachChild:(CCNode *)child cleanup:(BOOL)doCleanup; + +- (void) contentSizeChanged; +- (void) parentsContentSizeChanged; + @end +CGPoint NodeToPhysicsScale(CCNode * node); +float NodeToPhysicsRotation(CCNode *node); +CGAffineTransform NodeToPhysicsTransform(CCNode *node); +CGAffineTransform RigidBodyToParentTransform(CCNode *node, CCPhysicsBody *body); +CGPoint GetPositionFromBody(CCNode *node, CCPhysicsBody *body); +CGPoint TransformPointAsVector(CGPoint p, CGAffineTransform t); +CGAffineTransform CGAffineTransformMakeRigid(CGPoint translate, CGFloat radians); @interface CCNode(NoARC) diff --git a/cocos2d/CCNode.m b/cocos2d/CCNode.m index 65238941973..db89eb472ad 100644 --- a/cocos2d/CCNode.m +++ b/cocos2d/CCNode.m @@ -26,7 +26,6 @@ */ #import "CCNode.h" -#import "CCNode_Private.h" #import "CCDirector.h" #import "CCActionManager.h" #if CC_CCBREADER diff --git a/cocos2d/CCNodeColor.m b/cocos2d/CCNodeColor.m index 909e9e6fed3..16ae0f424e6 100644 --- a/cocos2d/CCNodeColor.m +++ b/cocos2d/CCNodeColor.m @@ -33,8 +33,6 @@ #import "ccMacros.h" #import "CCShader.h" #import "Support/CGPointExtension.h" -#import "CCNode_Private.h" - #if __CC_PLATFORM_IOS #import "Platforms/iOS/CCDirectorIOS.h" diff --git a/cocos2d/CCNode_Private.h b/cocos2d/CCNode_Private.h deleted file mode 100644 index 8c7ca93c30c..00000000000 --- a/cocos2d/CCNode_Private.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import "CCNode.h" - -CGPoint NodeToPhysicsScale(CCNode * node); -float NodeToPhysicsRotation(CCNode *node); -CGAffineTransform NodeToPhysicsTransform(CCNode *node); -CGAffineTransform RigidBodyToParentTransform(CCNode *node, CCPhysicsBody *body); -CGPoint GetPositionFromBody(CCNode *node, CCPhysicsBody *body); -CGPoint TransformPointAsVector(CGPoint p, CGAffineTransform t); -CGAffineTransform CGAffineTransformMakeRigid(CGPoint translate, CGFloat radians); - -@interface CCNode() { - @protected - CCRenderState *_renderState; - - CCShader *_shader; - NSMutableDictionary *_shaderUniforms; - - CCBlendMode *_blendMode; - CCTexture *_texture; -} - -/// Returns true if the node is not using custom uniforms. --(BOOL)hasDefaultShaderUniforms; - -/// Cache and return the current render state. -/// Should be set to nil whenever changing a property that affects the renderstate. -@property(nonatomic, strong) CCRenderState *renderState; - -/* The real openGL Z vertex. - Differences between openGL Z vertex and cocos2d Z order: - - OpenGL Z modifies the Z vertex, and not the Z order in the relation between parent-children - - OpenGL Z might require to set 2D projection - - cocos2d Z order works OK if all the nodes uses the same openGL Z vertex. eg: vertexZ = 0 - @warning: Use it at your own risk since it might break the cocos2d parent-children z order - */ -@property (nonatomic,readwrite) float vertexZ; - -@property (nonatomic,readonly) BOOL isPhysicsNode; - -/* used internally for zOrder sorting, don't change this manually */ -@property(nonatomic,readwrite) NSUInteger orderOfArrival; - -/* CCActionManager used by all the actions. - IMPORTANT: If you set a new CCActionManager, then previously created actions are going to be removed. - */ -@property (nonatomic, readwrite, strong) CCActionManager *actionManager; - -/* CCScheduler used to schedule all "updates" and timers. - IMPORTANT: If you set a new CCScheduler, then previously created timers/update are going to be removed. - */ -@property (nonatomic, readwrite, strong) CCScheduler *scheduler; - -/* Reads and writes the animation manager for this node.*/ -@property (nonatomic, readwrite) CCAnimationManager * animationManager; - -/* Compares two nodes in respect to zOrder and orderOfArrival (used for sorting sprites in display list) */ -- (NSComparisonResult) compareZOrderToNode:(CCNode*)node; - -/* Reorders a child according to a new z value. - * The child MUST be already added. - */ --(void) reorderChild:(CCNode*)child z:(NSInteger)zOrder; - -/* performance improvement, Sort the children array once before drawing, instead of every time when a child is added or reordered - don't call this manually unless a child added needs to be removed in the same frame */ -- (void) sortAllChildren; - -/* Event that is called when the running node is no longer running (eg: its CCScene is being removed from the "stage" ). - On cleanup you should break any possible circular references. - CCNode's cleanup removes any possible scheduled timer and/or any possible action. - If you override cleanup, you must call [super cleanup] after any cleanup of your own. - */ --(void) cleanup __attribute__((objc_requires_super)); - -///* performs OpenGL view-matrix transformation of its ancestors. -// Generally the ancestors are already transformed, but in certain cases (eg: attaching a FBO) it is necessary to transform the ancestors again. -// */ -//-(void) transformAncestors; - -/* final method called to actually remove a child node from the children. - * @param node The child node to remove - * @param cleanup Stops all scheduled events and actions - */ --(void) detachChild:(CCNode *)child cleanup:(BOOL)doCleanup; - -- (void) contentSizeChanged; -- (void) parentsContentSizeChanged; - -@end diff --git a/cocos2d/CCRenderTexture.m b/cocos2d/CCRenderTexture.m index 0f528cdd5ef..1c231c9d641 100644 --- a/cocos2d/CCRenderTexture.m +++ b/cocos2d/CCRenderTexture.m @@ -35,7 +35,6 @@ #import "CCTexture_Private.h" #import "CCDirector_Private.h" -#import "CCNode_Private.h" #import "CCRenderer_Private.h" #import "CCRenderTexture_Private.h" #import "CCRenderDispatch.h" diff --git a/cocos2d/CCRenderTexture_Private.h b/cocos2d/CCRenderTexture_Private.h index a7d6c950173..b8e7394ae80 100644 --- a/cocos2d/CCRenderTexture_Private.h +++ b/cocos2d/CCRenderTexture_Private.h @@ -8,8 +8,6 @@ #import "CCRenderTexture.h" -#import "CCNode_Private.h" - @class CCFrameBufferObject; @interface CCRenderTexture() { diff --git a/cocos2d/CCSprite.m b/cocos2d/CCSprite.m index 26662328f85..9a2bd73cc37 100644 --- a/cocos2d/CCSprite.m +++ b/cocos2d/CCSprite.m @@ -37,7 +37,6 @@ #import "CCDirector.h" #import "Support/CGPointExtension.h" #import "Support/CCProfiling.h" -#import "CCNode_Private.h" #import "CCRenderer_Private.h" #import "CCSprite_Private.h" #import "CCTexture_Private.h" diff --git a/cocos2d/CCSprite9Slice.m b/cocos2d/CCSprite9Slice.m index 3b19acd0e5f..c03a9a75179 100644 --- a/cocos2d/CCSprite9Slice.m +++ b/cocos2d/CCSprite9Slice.m @@ -28,7 +28,6 @@ #import "CCSprite9Slice.h" #import "CCSprite_Private.h" #import "CCTexture_Private.h" -#import "CCNode_Private.h" // --------------------------------------------------------------------- diff --git a/cocos2d/CCSpriteBatchNode.m b/cocos2d/CCSpriteBatchNode.m index 7d69b6682db..4fca3f111b8 100644 --- a/cocos2d/CCSpriteBatchNode.m +++ b/cocos2d/CCSpriteBatchNode.m @@ -30,7 +30,6 @@ #import "CCSpriteBatchNode.h" #import "CCTexture.h" #import "CCTextureCache.h" -#import "CCNode_Private.h" @implementation CCSpriteBatchNode { } diff --git a/cocos2d/CCTransition.m b/cocos2d/CCTransition.m index 6305d8a7b43..8eb9836d4c3 100644 --- a/cocos2d/CCTransition.m +++ b/cocos2d/CCTransition.m @@ -29,7 +29,6 @@ #import "CCTransition.h" #import "CCDirector_Private.h" -#import "CCNode_Private.h" // ----------------------------------------------------------------- From 05bf8b4ba1efad8bb12971e0885c1aed1da1315b Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 18:14:14 +0300 Subject: [PATCH 49/94] Merge CCSprite private header --- cocos2d.xcodeproj/project.pbxproj | 8 ----- cocos2d/CCSprite.h | 29 +++++++++++++++- cocos2d/CCSprite_Private.h | 56 ------------------------------- 3 files changed, 28 insertions(+), 65 deletions(-) delete mode 100644 cocos2d/CCSprite_Private.h diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 3ff0d1929f8..1566277967c 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -128,7 +128,6 @@ 08F4AB0A1C6E98A1004DAAF7 /* TGAlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 501CCFAC0E99657C00B86F68 /* TGAlib.h */; }; 08F4AB0B1C6E98A1004DAAF7 /* CCActionEase.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F7B2760F28DE7C00057537 /* CCActionEase.h */; }; 08F4AB0C1C6E98A1004DAAF7 /* CCPlatformTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD01E19649E03003D460C /* CCPlatformTextField.h */; }; - 08F4AB0D1C6E98A1004DAAF7 /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; 08F4AB0E1C6E98A1004DAAF7 /* ccMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BAF3970F33CCD8003F654C /* ccMacros.h */; }; 08F4AB101C6E98A1004DAAF7 /* CCSprite.h in Headers */ = {isa = PBXBuildFile; fileRef = 509A79950F6188420032F449 /* CCSprite.h */; }; 08F4AB111C6E98A1004DAAF7 /* CCFileUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C508C40F7C194400799124 /* CCFileUtils.h */; }; @@ -292,7 +291,6 @@ 7A59468619E372EF00F65F90 /* CCSpriteBatchNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C3655911F0AE9B001C08F9 /* CCSpriteBatchNode.h */; }; 7A59468819E372F000F65F90 /* CCSpriteFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E2A14E10A45E7F00D894CE /* CCSpriteFrame.h */; }; 7A59468A19E372F000F65F90 /* CCSpriteFrameCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 502C8BDE10A661E200D137BA /* CCSpriteFrameCache.h */; }; - 7A59468C19E372F000F65F90 /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; 7A59468D19E372F000F65F90 /* CCResponder.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A0734817C78EF3004343C8 /* CCResponder.h */; }; 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2600DFDEAFF00C013A5 /* CCScene.h */; }; 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; @@ -476,7 +474,6 @@ B78AE46D17E7AF6C0028BE0B /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */; }; B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; B798D143181F469100E7BFCD /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; - B798D1451820305400E7BFCD /* CCSprite_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D1441820305400E7BFCD /* CCSprite_Private.h */; }; B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = B79F905817FE2A2E00908504 /* CCTableView.h */; }; B79F905B17FE2A2E00908504 /* CCTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B79F905917FE2A2E00908504 /* CCTableView.m */; }; B7E260D818171D2000A0E872 /* CCTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E260D618171D2000A0E872 /* CCTextField.h */; }; @@ -694,7 +691,6 @@ B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITouch+CC.m"; sourceTree = ""; }; B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProgressNode_Private.h; sourceTree = ""; }; B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLabelBMFont_Private.h; sourceTree = ""; }; - B798D1441820305400E7BFCD /* CCSprite_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite_Private.h; sourceTree = ""; }; B79F905817FE2A2E00908504 /* CCTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTableView.h; path = "cocos2d-ui/CCTableView.h"; sourceTree = ""; }; B79F905917FE2A2E00908504 /* CCTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTableView.m; path = "cocos2d-ui/CCTableView.m"; sourceTree = ""; }; B7C6237917EA7D8600928F91 /* cocos2d-ui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "cocos2d-ui.h"; path = "cocos2d-ui/cocos2d-ui.h"; sourceTree = ""; }; @@ -1023,7 +1019,6 @@ 50E2A14F10A45E7F00D894CE /* CCSpriteFrame.m */, 502C8BDE10A661E200D137BA /* CCSpriteFrameCache.h */, 502C8BDF10A661E200D137BA /* CCSpriteFrameCache.m */, - B798D1441820305400E7BFCD /* CCSprite_Private.h */, ); name = "Sprite & Animation Nodes"; sourceTree = ""; @@ -1345,7 +1340,6 @@ 08F4AB0A1C6E98A1004DAAF7 /* TGAlib.h in Headers */, 08F4AB0B1C6E98A1004DAAF7 /* CCActionEase.h in Headers */, 08F4AB0C1C6E98A1004DAAF7 /* CCPlatformTextField.h in Headers */, - 08F4AB0D1C6E98A1004DAAF7 /* CCSprite_Private.h in Headers */, 08F4AB0E1C6E98A1004DAAF7 /* ccMacros.h in Headers */, 08A4EB7F1C7A563900A08923 /* CCPotentiometer.h in Headers */, 08F4AB101C6E98A1004DAAF7 /* CCSprite.h in Headers */, @@ -1440,7 +1434,6 @@ 501CCFB50E99657C00B86F68 /* TGAlib.h in Headers */, 50F7B2780F28DE7C00057537 /* CCActionEase.h in Headers */, 571CD02819649E03003D460C /* CCPlatformTextField.h in Headers */, - B798D1451820305400E7BFCD /* CCSprite_Private.h in Headers */, 50BAF3990F33CCD8003F654C /* ccMacros.h in Headers */, 08A4EB7D1C7A563900A08923 /* CCPotentiometer.h in Headers */, 509A79970F6188420032F449 /* CCSprite.h in Headers */, @@ -1534,7 +1527,6 @@ 7A59468619E372EF00F65F90 /* CCSpriteBatchNode.h in Headers */, 7A59468819E372F000F65F90 /* CCSpriteFrame.h in Headers */, 7A59468A19E372F000F65F90 /* CCSpriteFrameCache.h in Headers */, - 7A59468C19E372F000F65F90 /* CCSprite_Private.h in Headers */, 7A59468D19E372F000F65F90 /* CCResponder.h in Headers */, 7A5946AA19E372F200F65F90 /* CCScene.h in Headers */, 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */, diff --git a/cocos2d/CCSprite.h b/cocos2d/CCSprite.h index 059fc7c2187..0bb5968d4c5 100644 --- a/cocos2d/CCSprite.h +++ b/cocos2d/CCSprite.h @@ -29,6 +29,11 @@ #import "CCNode.h" #import "CCProtocols.h" +#if CC_EFFECTS +#import "CCEffectRenderer.h" +#import "CCEffect_Private.h" +#endif + @class CCSpriteBatchNode; @class CCSpriteFrame; @class CCAnimation; @@ -59,7 +64,18 @@ typedef struct CCSpriteTexCoordSet { #if CC_EFFECTS , CCEffectProtocol #endif -> +> { +@private + // Vertex coords, texture coords and color info. + CCSpriteVertexes _verts; + + // Center of extents (half width/height) of the sprite for culling purposes. + GLKVector2 _vertexCenter, _vertexExtents; +#if CC_EFFECTS + CCEffect *_effect; + CCEffectRenderer *_effectRenderer; +#endif +} /// ----------------------------------------------------------------------- /// @name Creating a Sprite with an Image File or Sprite Frame Name @@ -284,6 +300,17 @@ typedef struct CCSpriteTexCoordSet { */ - (CGAffineTransform)nodeToTextureTransform; ++ (CCSpriteTexCoordSet)textureCoordsForTexture:(CCTexture *)texture withRect:(CGRect)rect rotated:(BOOL)rotated xFlipped:(BOOL)flipX yFlipped:(BOOL)flipY; + +#if CC_EFFECTS +- (void)updateShaderUniformsFromEffect; +#endif +@end +@interface CCSprite(NoARC) + +-(void)enqueueTriangles:(CCRenderer *)renderer transform:(const GLKMatrix4 *)transform; + @end + diff --git a/cocos2d/CCSprite_Private.h b/cocos2d/CCSprite_Private.h deleted file mode 100644 index e5cd0330192..00000000000 --- a/cocos2d/CCSprite_Private.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - -#import "CCSprite.h" -#if CC_EFFECTS -#import "CCEffectRenderer.h" -#import "CCEffect_Private.h" -#endif -@interface CCSprite () { - @private - - // Vertex coords, texture coords and color info. - CCSpriteVertexes _verts; - - // Center of extents (half width/height) of the sprite for culling purposes. - GLKVector2 _vertexCenter, _vertexExtents; -#if CC_EFFECTS - CCEffect *_effect; - CCEffectRenderer *_effectRenderer; -#endif -} - -+ (CCSpriteTexCoordSet)textureCoordsForTexture:(CCTexture *)texture withRect:(CGRect)rect rotated:(BOOL)rotated xFlipped:(BOOL)flipX yFlipped:(BOOL)flipY; -#if CC_EFFECTS -- (void)updateShaderUniformsFromEffect; -#endif -@end - - -@interface CCSprite(NoARC) - --(void)enqueueTriangles:(CCRenderer *)renderer transform:(const GLKMatrix4 *)transform; - -@end From 7b5e475007e6445734f73da80899bf4786d345b8 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 18:18:58 +0300 Subject: [PATCH 50/94] Get rid of CCProgressNode private header + general header clean-up --- cocos2d-ext/TileMaps/CCTiledMapLayer.m | 1 - cocos2d-ui-tests/tests/VertexZTest.m | 1 - cocos2d-ui/CCProgressNode.m | 3 --- cocos2d.xcodeproj/project.pbxproj | 8 ------- cocos2d/CCLabelBMFont.m | 1 - cocos2d/CCNoARC.m | 1 - cocos2d/CCProgressNode_Private.h | 30 -------------------------- cocos2d/CCSprite.m | 1 - cocos2d/CCSprite9Slice.m | 1 - 9 files changed, 47 deletions(-) delete mode 100644 cocos2d/CCProgressNode_Private.h diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer.m b/cocos2d-ext/TileMaps/CCTiledMapLayer.m index 3caadeda58f..02127561afd 100644 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer.m +++ b/cocos2d-ext/TileMaps/CCTiledMapLayer.m @@ -37,7 +37,6 @@ #import "CCTextureCache.h" #import "CCShader.h" #import "Support/CGPointExtension.h" -#import "CCSprite_Private.h" #import "CCTiledMapLayer_Private.h" #import "CCTexture_Private.h" // #import "CCMathTypesAndroid.h" diff --git a/cocos2d-ui-tests/tests/VertexZTest.m b/cocos2d-ui-tests/tests/VertexZTest.m index 4b698478050..2f971df3f2c 100644 --- a/cocos2d-ui-tests/tests/VertexZTest.m +++ b/cocos2d-ui-tests/tests/VertexZTest.m @@ -8,7 +8,6 @@ #import "TestBase.h" #import "CCTextureCache.h" -#import "CCSprite_Private.h" @interface GlobalSortSprite : CCSprite @end diff --git a/cocos2d-ui/CCProgressNode.m b/cocos2d-ui/CCProgressNode.m index 482b9b7a979..d062a674e35 100644 --- a/cocos2d-ui/CCProgressNode.m +++ b/cocos2d-ui/CCProgressNode.m @@ -31,9 +31,6 @@ #import "CCShader.h" #import "CCDirector.h" #import "Support/CGPointExtension.h" -#import "CCSprite_Private.h" - -#import "CCProgressNode_Private.h" #import "CCTexture_Private.h" diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 1566277967c..77ee4dc0a77 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -181,7 +181,6 @@ 08F4AB441C6E98A1004DAAF7 /* NSThread+performBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C87D1814F9A3A100C0E8B2 /* NSThread+performBlock.h */; }; 08F4AB451C6E98A1004DAAF7 /* CCMetalView.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B12199528B6003AA81A /* CCMetalView.h */; }; 08F4AB461C6E98A1004DAAF7 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; - 08F4AB471C6E98A1004DAAF7 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; 08F4AB491C6E98A1004DAAF7 /* CCActionCatmullRom.h in Headers */ = {isa = PBXBuildFile; fileRef = A0A7A53A1514F27D00C8BD16 /* CCActionCatmullRom.h */; }; 08F4AB4A1C6E98A1004DAAF7 /* CCNode+Debug.h in Headers */ = {isa = PBXBuildFile; fileRef = A039EBFD155C686B0061EE37 /* CCNode+Debug.h */; }; 08F4AB4B1C6E98A1004DAAF7 /* CCDrawNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DA0BC115BCDCA200E80A92 /* CCDrawNode.h */; }; @@ -296,7 +295,6 @@ 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; - 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D2B840C31909F447008063EA /* CCRenderTexture_Private.h */; }; 7A5946DD19E372F700F65F90 /* CCActionManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FF6C7318F33A2A005B7139 /* CCActionManager_Private.h */; }; 7A5946DE19E372F800F65F90 /* CCActionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */; }; @@ -472,7 +470,6 @@ B78AE46917E7AF1C0028BE0B /* CCScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46117E7AF1C0028BE0B /* CCScrollView.m */; }; B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */; }; B78AE46D17E7AF6C0028BE0B /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */; }; - B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */; }; B798D143181F469100E7BFCD /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = B79F905817FE2A2E00908504 /* CCTableView.h */; }; B79F905B17FE2A2E00908504 /* CCTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B79F905917FE2A2E00908504 /* CCTableView.m */; }; @@ -689,7 +686,6 @@ B78AE46117E7AF1C0028BE0B /* CCScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCScrollView.m; path = "cocos2d-ui/CCScrollView.m"; sourceTree = ""; }; B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITouch+CC.h"; sourceTree = ""; }; B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITouch+CC.m"; sourceTree = ""; }; - B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProgressNode_Private.h; sourceTree = ""; }; B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLabelBMFont_Private.h; sourceTree = ""; }; B79F905817FE2A2E00908504 /* CCTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTableView.h; path = "cocos2d-ui/CCTableView.h"; sourceTree = ""; }; B79F905917FE2A2E00908504 /* CCTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTableView.m; path = "cocos2d-ui/CCTableView.m"; sourceTree = ""; }; @@ -1098,7 +1094,6 @@ 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */, 50316AA410291280003ACFE7 /* CCRenderTexture.h */, 50316AA510291280003ACFE7 /* CCRenderTexture.m */, - B791E85A182074C500DAE1D7 /* CCProgressNode_Private.h */, D2B840C31909F447008063EA /* CCRenderTexture_Private.h */, ); name = "Misc Nodes"; @@ -1395,7 +1390,6 @@ 08F4AB441C6E98A1004DAAF7 /* NSThread+performBlock.h in Headers */, 08F4AB451C6E98A1004DAAF7 /* CCMetalView.h in Headers */, 08F4AB461C6E98A1004DAAF7 /* CCTransition.h in Headers */, - 08F4AB471C6E98A1004DAAF7 /* CCProgressNode_Private.h in Headers */, 08F4AB491C6E98A1004DAAF7 /* CCActionCatmullRom.h in Headers */, 08F4AB4A1C6E98A1004DAAF7 /* CCNode+Debug.h in Headers */, 08F4AB4B1C6E98A1004DAAF7 /* CCDrawNode.h in Headers */, @@ -1489,7 +1483,6 @@ A0C87D1A14F9A3A100C0E8B2 /* NSThread+performBlock.h in Headers */, D3903B14199528B6003AA81A /* CCMetalView.h in Headers */, A6DC4E0918055DCC00C280A6 /* CCTransition.h in Headers */, - B791E85D182074C500DAE1D7 /* CCProgressNode_Private.h in Headers */, A0A7A53C1514F27D00C8BD16 /* CCActionCatmullRom.h in Headers */, A039EBFF155C686B0061EE37 /* CCNode+Debug.h in Headers */, A0DA0BC315BCDCA200E80A92 /* CCDrawNode.h in Headers */, @@ -1532,7 +1525,6 @@ 7A5946AC19E372F200F65F90 /* CCTransition.h in Headers */, 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */, 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */, - 7A5946C319E372F400F65F90 /* CCProgressNode_Private.h in Headers */, 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */, 7A5946DD19E372F700F65F90 /* CCActionManager_Private.h in Headers */, 7A5946DE19E372F800F65F90 /* CCActionManager.h in Headers */, diff --git a/cocos2d/CCLabelBMFont.m b/cocos2d/CCLabelBMFont.m index 8e830e10179..6121eae0172 100644 --- a/cocos2d/CCLabelBMFont.m +++ b/cocos2d/CCLabelBMFont.m @@ -46,7 +46,6 @@ #import "Support/CGPointExtension.h" #import "Support/uthash.h" #import "CCLabelBMFont_Private.h" -#import "CCSprite_Private.h" #pragma mark - #pragma mark FNTConfig Cache - free functions diff --git a/cocos2d/CCNoARC.m b/cocos2d/CCNoARC.m index 13a2e907d16..6df6ae2ea8e 100644 --- a/cocos2d/CCNoARC.m +++ b/cocos2d/CCNoARC.m @@ -1,5 +1,4 @@ #import "CCTexture_Private.h" -#import "CCSprite_Private.h" #import "CCRenderer_Private.h" #import "CCShader_Private.h" diff --git a/cocos2d/CCProgressNode_Private.h b/cocos2d/CCProgressNode_Private.h deleted file mode 100644 index 10facd7723e..00000000000 --- a/cocos2d/CCProgressNode_Private.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import "CCProgressNode.h" - -// OS X -@interface CCProgressNode () - -@end diff --git a/cocos2d/CCSprite.m b/cocos2d/CCSprite.m index 9a2bd73cc37..b429db993ce 100644 --- a/cocos2d/CCSprite.m +++ b/cocos2d/CCSprite.m @@ -38,7 +38,6 @@ #import "Support/CGPointExtension.h" #import "Support/CCProfiling.h" #import "CCRenderer_Private.h" -#import "CCSprite_Private.h" #import "CCTexture_Private.h" #pragma mark - diff --git a/cocos2d/CCSprite9Slice.m b/cocos2d/CCSprite9Slice.m index c03a9a75179..59528ae3b1b 100644 --- a/cocos2d/CCSprite9Slice.m +++ b/cocos2d/CCSprite9Slice.m @@ -26,7 +26,6 @@ */ #import "CCSprite9Slice.h" -#import "CCSprite_Private.h" #import "CCTexture_Private.h" // --------------------------------------------------------------------- From f7104cc19d7fa1b3eb1e438d945db62d7b23f5ae Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 18:27:01 +0300 Subject: [PATCH 51/94] Get rid of CCShader_Private --- cocos2d.xcodeproj/project.pbxproj | 8 ------- cocos2d/CCNoARC.m | 1 - cocos2d/CCRenderer.m | 1 - cocos2d/CCShader.h | 21 +++++++++++++++-- cocos2d/CCShader.m | 2 -- cocos2d/CCShader_Private.h | 31 -------------------------- cocos2d/Platforms/iOS/CCMetalSupport.m | 1 - 7 files changed, 19 insertions(+), 46 deletions(-) delete mode 100644 cocos2d/CCShader_Private.h diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 77ee4dc0a77..852a412a8a4 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -172,7 +172,6 @@ 08F4AB3A1C6E98A1004DAAF7 /* CCRendererSharedTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D3E3752E19CC842A0076CDBB /* CCRendererSharedTypes.h */; }; 08F4AB3B1C6E98A1004DAAF7 /* CCAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E775CE18527EF0004221AA /* CCAppDelegate.h */; }; 08F4AB3C1C6E98A1004DAAF7 /* CCShader.h in Headers */ = {isa = PBXBuildFile; fileRef = E0BC7D9B1342CE7B001B4DCC /* CCShader.h */; }; - 08F4AB3D1C6E98A1004DAAF7 /* CCShader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D39FA9C718C1BC6B00441627 /* CCShader_Private.h */; }; 08F4AB3E1C6E98A1004DAAF7 /* CCDirectorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E28B14C1DB7D0005BBF2 /* CCDirectorMac.h */; }; 08F4AB3F1C6E98A1004DAAF7 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = A046E28F14C1DB7D0005BBF2 /* CCGLView.h */; }; 08F4AB401C6E98A1004DAAF7 /* NSValue+CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD5F19C3A0B5009BED7A /* NSValue+CCRenderer.h */; }; @@ -326,7 +325,6 @@ 7A59471019E372FF00F65F90 /* CCRendererBasicTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD6519C3A7A5009BED7A /* CCRendererBasicTypes.h */; }; 7A59471119E372FF00F65F90 /* CCRendererBasicTypes_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD6A19C3AA10009BED7A /* CCRendererBasicTypes_Private.h */; }; 7A59471319E3730000F65F90 /* CCShader.h in Headers */ = {isa = PBXBuildFile; fileRef = E0BC7D9B1342CE7B001B4DCC /* CCShader.h */; }; - 7A59471419E3730000F65F90 /* CCShader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D39FA9C718C1BC6B00441627 /* CCShader_Private.h */; }; 7A59471619E3730000F65F90 /* NSValue+CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D34CAD5F19C3A0B5009BED7A /* NSValue+CCRenderer.h */; }; 7A59471819E3730100F65F90 /* CCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D38058181889AD6000822437 /* CCRenderer.h */; }; 7A59471919E3730100F65F90 /* CCRenderer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D309054F18AC23110081BF11 /* CCRenderer_Private.h */; }; @@ -519,7 +517,6 @@ D3903B1A19952ABD003AA81A /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3903B1919952ABD003AA81A /* Metal.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; D395DB2B183D739E0024997E /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E3877010446C6E00150883 /* OpenAL.framework */; }; D395DB2C183D73A70024997E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E3876E10446C6E00150883 /* AudioToolbox.framework */; }; - D39FA9C818C1BC6B00441627 /* CCShader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D39FA9C718C1BC6B00441627 /* CCShader_Private.h */; }; D3E3752F19CC842A0076CDBB /* CCRendererSharedTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D3E3752E19CC842A0076CDBB /* CCRendererSharedTypes.h */; }; E01E6D8C121F130E001A484F /* CCLabelBMFont.h in Headers */ = {isa = PBXBuildFile; fileRef = E01E6D8A121F130E001A484F /* CCLabelBMFont.h */; }; E01E6D8D121F130E001A484F /* CCLabelBMFont.m in Sources */ = {isa = PBXBuildFile; fileRef = E01E6D8B121F130E001A484F /* CCLabelBMFont.m */; }; @@ -737,7 +734,6 @@ D3903B13199528B6003AA81A /* CCMetalView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMetalView.m; sourceTree = ""; }; D3903B1919952ABD003AA81A /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; }; D39A31BB17F227F500E94B3B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - D39FA9C718C1BC6B00441627 /* CCShader_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCShader_Private.h; sourceTree = ""; }; D3C12815199D40AC005D2119 /* CCShaders.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = CCShaders.metal; sourceTree = ""; }; D3E3752E19CC842A0076CDBB /* CCRendererSharedTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRendererSharedTypes.h; sourceTree = ""; }; E01E6D8A121F130E001A484F /* CCLabelBMFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CCLabelBMFont.h; sourceTree = ""; }; @@ -1245,7 +1241,6 @@ D34CAD6A19C3AA10009BED7A /* CCRendererBasicTypes_Private.h */, D34CAD6819C3A7B3009BED7A /* CCRendererBasicTypes.m */, E0BC7D9B1342CE7B001B4DCC /* CCShader.h */, - D39FA9C718C1BC6B00441627 /* CCShader_Private.h */, E0BC7D9C1342CE7B001B4DCC /* CCShader.m */, D34CAD5F19C3A0B5009BED7A /* NSValue+CCRenderer.h */, D34CAD6219C3A0FD009BED7A /* NSValue+CCRenderer.m */, @@ -1381,7 +1376,6 @@ 08F4AB3A1C6E98A1004DAAF7 /* CCRendererSharedTypes.h in Headers */, 08F4AB3B1C6E98A1004DAAF7 /* CCAppDelegate.h in Headers */, 08F4AB3C1C6E98A1004DAAF7 /* CCShader.h in Headers */, - 08F4AB3D1C6E98A1004DAAF7 /* CCShader_Private.h in Headers */, 08F4AB3E1C6E98A1004DAAF7 /* CCDirectorMac.h in Headers */, 08F4AB3F1C6E98A1004DAAF7 /* CCGLView.h in Headers */, 08F4AB401C6E98A1004DAAF7 /* NSValue+CCRenderer.h in Headers */, @@ -1474,7 +1468,6 @@ D3E3752F19CC842A0076CDBB /* CCRendererSharedTypes.h in Headers */, B7E775D018527EF0004221AA /* CCAppDelegate.h in Headers */, E0BC7D9F1342CE7B001B4DCC /* CCShader.h in Headers */, - D39FA9C818C1BC6B00441627 /* CCShader_Private.h in Headers */, A046E29314C1DB7D0005BBF2 /* CCDirectorMac.h in Headers */, A046E29714C1DB7D0005BBF2 /* CCGLView.h in Headers */, D34CAD6119C3A0B5009BED7A /* NSValue+CCRenderer.h in Headers */, @@ -1557,7 +1550,6 @@ 7A59471019E372FF00F65F90 /* CCRendererBasicTypes.h in Headers */, 7A59471119E372FF00F65F90 /* CCRendererBasicTypes_Private.h in Headers */, 7A59471319E3730000F65F90 /* CCShader.h in Headers */, - 7A59471419E3730000F65F90 /* CCShader_Private.h in Headers */, 7A59471619E3730000F65F90 /* NSValue+CCRenderer.h in Headers */, 7A59471819E3730100F65F90 /* CCRenderer.h in Headers */, 7A59471919E3730100F65F90 /* CCRenderer_Private.h in Headers */, diff --git a/cocos2d/CCNoARC.m b/cocos2d/CCNoARC.m index 6df6ae2ea8e..6a90099325b 100644 --- a/cocos2d/CCNoARC.m +++ b/cocos2d/CCNoARC.m @@ -1,6 +1,5 @@ #import "CCTexture_Private.h" #import "CCRenderer_Private.h" -#import "CCShader_Private.h" #if __CC_METAL_SUPPORTED_AND_ENABLED #import "CCMetalSupport_Private.h" diff --git a/cocos2d/CCRenderer.m b/cocos2d/CCRenderer.m index 93419f232e7..98f96f28a4a 100644 --- a/cocos2d/CCRenderer.m +++ b/cocos2d/CCRenderer.m @@ -28,7 +28,6 @@ #import "CCRenderer_Private.h" #import "CCCache.h" #import "CCTexture_Private.h" -#import "CCShader_private.h" #import "CCDirector_Private.h" #import "CCRenderDispatch.h" diff --git a/cocos2d/CCShader.h b/cocos2d/CCShader.h index 573d057aeb4..d4ae89b1fc9 100644 --- a/cocos2d/CCShader.h +++ b/cocos2d/CCShader.h @@ -37,13 +37,21 @@ /// Macro to embed Metal shading language source. #define CC_METAL(x) @#x + +#import +#import "CCMetalSupport_Private.h" #endif +@class CCRenderer; +typedef void (^CCUniformSetter)( + __unsafe_unretained CCRenderer *renderer, + __unsafe_unretained NSDictionary *shaderUniforms, + __unsafe_unretained NSDictionary *globalShaderUniforms + ); /// Macro to embed GLSL source. #define CC_GLSL(x) @#x - /// GL attribute locations for built-in Cocos2D vertex attributes. Used by CCShader. typedef NS_ENUM(NSUInteger, CCShaderAttribute){ /** Position */ @@ -72,7 +80,16 @@ extern NSString * const CCShaderUniformAlphaTestValue; /** A wrapper for OpenGL or Metal shader programs. Also gives you access to the built-in shaders used by Cocos2D. */ -@interface CCShader : NSObject +@interface CCShader : NSObject { +@public + GLuint _program; + NSDictionary *_uniformSetters; + + // TODO This should really be split into a separate subclass somehow. +#if __CC_METAL_SUPPORTED_AND_ENABLED + id _vertexFunction, _fragmentFunction; +#endif +} /** @name Creating a OpenGL Shader */ diff --git a/cocos2d/CCShader.m b/cocos2d/CCShader.m index 320cd7f792b..31950c14106 100644 --- a/cocos2d/CCShader.m +++ b/cocos2d/CCShader.m @@ -25,8 +25,6 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#import "CCShader_private.h" #import "ccMacros.h" #import "Support/CCFileUtils.h" #import "Support/uthash.h" diff --git a/cocos2d/CCShader_Private.h b/cocos2d/CCShader_Private.h deleted file mode 100644 index c38fcea9246..00000000000 --- a/cocos2d/CCShader_Private.h +++ /dev/null @@ -1,31 +0,0 @@ -#import "CCShader.h" - - -#if __CC_METAL_SUPPORTED_AND_ENABLED -#import -#import "CCMetalSupport_Private.h" -#endif - - -@class CCRenderer; - - -typedef void (^CCUniformSetter)( - __unsafe_unretained CCRenderer *renderer, - __unsafe_unretained NSDictionary *shaderUniforms, - __unsafe_unretained NSDictionary *globalShaderUniforms -); - - -@interface CCShader() { - @public - GLuint _program; - NSDictionary *_uniformSetters; - - // TODO This should really be split into a separate subclass somehow. -#if __CC_METAL_SUPPORTED_AND_ENABLED - id _vertexFunction, _fragmentFunction; -#endif -} - -@end diff --git a/cocos2d/Platforms/iOS/CCMetalSupport.m b/cocos2d/Platforms/iOS/CCMetalSupport.m index 28ffafa5a01..2c06a826933 100644 --- a/cocos2d/Platforms/iOS/CCMetalSupport.m +++ b/cocos2d/Platforms/iOS/CCMetalSupport.m @@ -28,7 +28,6 @@ #import "CCMetalView.h" #import "CCTexture_Private.h" -#import "CCShader_Private.h" @implementation CCMetalContext { id _destinationTexture; From fb3f66c6f11ab8060063f5b9f32f1eb5e56735d4 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 18:30:45 +0300 Subject: [PATCH 52/94] Get rid of CCActiomManager_Private --- cocos2d.xcodeproj/project.pbxproj | 4 ---- cocos2d/CCActionManager.h | 1 + cocos2d/CCActionManager.m | 1 - cocos2d/CCActionManager_Private.h | 28 ---------------------------- cocos2d/CCNode.m | 1 - 5 files changed, 1 insertion(+), 34 deletions(-) delete mode 100644 cocos2d/CCActionManager_Private.h diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 852a412a8a4..4ff55c322a3 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -295,7 +295,6 @@ 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */; }; 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50316AA410291280003ACFE7 /* CCRenderTexture.h */; }; 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D2B840C31909F447008063EA /* CCRenderTexture_Private.h */; }; - 7A5946DD19E372F700F65F90 /* CCActionManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FF6C7318F33A2A005B7139 /* CCActionManager_Private.h */; }; 7A5946DE19E372F800F65F90 /* CCActionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */; }; 7A5946E019E372F800F65F90 /* CCAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2520DFDEAFF00C013A5 /* CCAction.h */; }; 7A5946E219E372F800F65F90 /* CCActionInstant.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2580DFDEAFF00C013A5 /* CCActionInstant.h */; }; @@ -638,7 +637,6 @@ 7A4037C519E37126007B6E8F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; 7A4037C719E3712A007B6E8F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; 83E1A88D19C8C19D000A3BCA /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; - 92FF6C7318F33A2A005B7139 /* CCActionManager_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCActionManager_Private.h; sourceTree = ""; }; A003AC8B1657071100C7B792 /* ccFPSImages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccFPSImages.h; sourceTree = ""; }; A003AC8E16572D6000C7B792 /* ccFPSImages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ccFPSImages.m; sourceTree = ""; }; A039EBFD155C686B0061EE37 /* CCNode+Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CCNode+Debug.h"; sourceTree = ""; }; @@ -1030,7 +1028,6 @@ 50A24E770F3780A2007CAEB0 /* Actions */ = { isa = PBXGroup; children = ( - 92FF6C7318F33A2A005B7139 /* CCActionManager_Private.h */, 50CB3B0C100AC43A00B7A750 /* CCActionManager.h */, 50CB3B0D100AC43A00B7A750 /* CCActionManager.m */, 5018F2520DFDEAFF00C013A5 /* CCAction.h */, @@ -1519,7 +1516,6 @@ 7A5946B919E372F300F65F90 /* CCNodeColor.h in Headers */, 7A5946C119E372F400F65F90 /* CCRenderTexture.h in Headers */, 7A5946C419E372F400F65F90 /* CCRenderTexture_Private.h in Headers */, - 7A5946DD19E372F700F65F90 /* CCActionManager_Private.h in Headers */, 7A5946DE19E372F800F65F90 /* CCActionManager.h in Headers */, 7A5946E019E372F800F65F90 /* CCAction.h in Headers */, 7A5946E219E372F800F65F90 /* CCActionInstant.h in Headers */, diff --git a/cocos2d/CCActionManager.h b/cocos2d/CCActionManager.h index 2e4ef5c4d90..6f337924967 100644 --- a/cocos2d/CCActionManager.h +++ b/cocos2d/CCActionManager.h @@ -147,6 +147,7 @@ typedef struct _hashElement { */ -(void)resumeTargets:(NSSet *)targetsToResume; +-(void)migrateActions:(id)target from:(CCActionManager*)oldManager; @end diff --git a/cocos2d/CCActionManager.m b/cocos2d/CCActionManager.m index f16df43a3a2..e6f353aa51d 100644 --- a/cocos2d/CCActionManager.m +++ b/cocos2d/CCActionManager.m @@ -28,7 +28,6 @@ #import "CCActionManager.h" -#import "CCActionManager_Private.h" #import "ccMacros.h" @interface CCActionManager (Private) diff --git a/cocos2d/CCActionManager_Private.h b/cocos2d/CCActionManager_Private.h deleted file mode 100644 index 12913912c64..00000000000 --- a/cocos2d/CCActionManager_Private.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#import "CCActionManager.h" - -@interface CCActionManager () --(void)migrateActions:(id)target from:(CCActionManager*)oldManager; -@end diff --git a/cocos2d/CCNode.m b/cocos2d/CCNode.m index db89eb472ad..41f4d611557 100644 --- a/cocos2d/CCNode.m +++ b/cocos2d/CCNode.m @@ -43,7 +43,6 @@ #import "CCDirector_Private.h" #import "CCRenderer_Private.h" #import "CCTexture_Private.h" -#import "CCActionManager_Private.h" #if CC_NODE_RENDER_SUBPIXEL #define RENDER_IN_SUBPIXEL From 2df6e96efd67c85bfcff8225c98da152307f2b1c Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 19:29:54 +0300 Subject: [PATCH 53/94] Get rid of private CCTexture header --- cocos2d-ext/CCMotionStreak/CCMotionStreak.m | 1 - cocos2d-ext/CCParticles/CCParticleBatchNode.m | 2 - cocos2d-ext/CCParticles/CCParticleSystem.m | 2 +- cocos2d-ext/TileMaps/CCTiledMapLayer.m | 2 +- cocos2d-ui-tests/tests/TextureTest.m | 1 - cocos2d-ui/CCProgressNode.m | 2 - cocos2d.xcodeproj/project.pbxproj | 14 +- cocos2d/CCLabelTTF.m | 1 - cocos2d/CCNoARC.m | 1 - cocos2d/CCNode.h | 2 +- cocos2d/CCNode.m | 1 - cocos2d/CCRenderTexture.m | 1 - cocos2d/CCRenderer.m | 1 - cocos2d/CCRendererBasicTypes.m | 1 - cocos2d/CCRendererGLSupport.m | 1 - cocos2d/CCShader.m | 1 - cocos2d/CCSprite.m | 1 - cocos2d/CCSprite9Slice.m | 1 - cocos2d/CCSpriteFrame.m | 1 - cocos2d/CCSpriteFrameCache.m | 2 +- cocos2d/CCTexture.h | 107 +++++++++++++- cocos2d/CCTexture.m | 1 - cocos2d/CCTextureCache.m | 1 - cocos2d/CCTexture_Private.h | 138 ------------------ cocos2d/Platforms/iOS/CCMetalSupport.m | 2 +- 25 files changed, 114 insertions(+), 174 deletions(-) delete mode 100644 cocos2d/CCTexture_Private.h diff --git a/cocos2d-ext/CCMotionStreak/CCMotionStreak.m b/cocos2d-ext/CCMotionStreak/CCMotionStreak.m index e1965d3a244..9b24e6f4115 100644 --- a/cocos2d-ext/CCMotionStreak/CCMotionStreak.m +++ b/cocos2d-ext/CCMotionStreak/CCMotionStreak.m @@ -28,7 +28,6 @@ #import "CCTextureCache.h" #import "CCShader.h" #import "ccMacros.h" -#import "CCTexture_Private.h" #import "CCRenderer_Private.h" #import "Support/CGPointExtension.h" diff --git a/cocos2d-ext/CCParticles/CCParticleBatchNode.m b/cocos2d-ext/CCParticles/CCParticleBatchNode.m index 78557a3c044..51d20268e2c 100644 --- a/cocos2d-ext/CCParticles/CCParticleBatchNode.m +++ b/cocos2d-ext/CCParticles/CCParticleBatchNode.m @@ -41,8 +41,6 @@ #import "CCParticleSystemBase_Private.h" -#import "CCTexture_Private.h" - #define kCCParticleDefaultCapacity 500 @interface CCNode() diff --git a/cocos2d-ext/CCParticles/CCParticleSystem.m b/cocos2d-ext/CCParticles/CCParticleSystem.m index 210dd0a95a3..b143e704e52 100644 --- a/cocos2d-ext/CCParticles/CCParticleSystem.m +++ b/cocos2d-ext/CCParticles/CCParticleSystem.m @@ -47,7 +47,7 @@ #import "CCParticleSystemBase_Private.h" #import "CCParticleSystem_Private.h" -#import "CCTexture_Private.h" +#import "CCTexture.h" @implementation CCParticleSystem { GLKVector2 _texCoord1[4]; diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer.m b/cocos2d-ext/TileMaps/CCTiledMapLayer.m index 02127561afd..ac63c439354 100644 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer.m +++ b/cocos2d-ext/TileMaps/CCTiledMapLayer.m @@ -38,7 +38,7 @@ #import "CCShader.h" #import "Support/CGPointExtension.h" #import "CCTiledMapLayer_Private.h" -#import "CCTexture_Private.h" +#import "CCTexture.h" // #import "CCMathTypesAndroid.h" #pragma mark - diff --git a/cocos2d-ui-tests/tests/TextureTest.m b/cocos2d-ui-tests/tests/TextureTest.m index 9a388a8fa84..ab18c400253 100644 --- a/cocos2d-ui-tests/tests/TextureTest.m +++ b/cocos2d-ui-tests/tests/TextureTest.m @@ -9,7 +9,6 @@ #import "TestBase.h" #import "CCTextureCache.h" -#import "CCTexture_Private.h" @interface TextureTest : TestBase @end diff --git a/cocos2d-ui/CCProgressNode.m b/cocos2d-ui/CCProgressNode.m index d062a674e35..a938b6ebd74 100644 --- a/cocos2d-ui/CCProgressNode.m +++ b/cocos2d-ui/CCProgressNode.m @@ -32,8 +32,6 @@ #import "CCDirector.h" #import "Support/CGPointExtension.h" -#import "CCTexture_Private.h" - @implementation CCProgressNode { CCProgressNodeType _type; float _percentage; diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 4ff55c322a3..50abe0ba5ef 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -133,7 +133,6 @@ 08F4AB111C6E98A1004DAAF7 /* CCFileUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C508C40F7C194400799124 /* CCFileUtils.h */; }; 08F4AB121C6E98A1004DAAF7 /* CGPointExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 503798C40F912C2000986724 /* CGPointExtension.h */; }; 08F4AB131C6E98A1004DAAF7 /* CCPlatformTextFieldIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD02119649E03003D460C /* CCPlatformTextFieldIOS.h */; }; - 08F4AB141C6E98A1004DAAF7 /* CCTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B706B19718209A8300B27A2C /* CCTexture_Private.h */; }; 08F4AB151C6E98A1004DAAF7 /* CCLayoutBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B7EE69DE1819E75700B983FE /* CCLayoutBox.h */; }; 08F4AB171C6E98A1004DAAF7 /* CCRenderDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = D3903B0E199528A0003AA81A /* CCRenderDispatch.h */; }; 08F4AB181C6E98A1004DAAF7 /* CCTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E260D618171D2000A0E872 /* CCTextField.h */; }; @@ -304,7 +303,6 @@ 7A5946EC19E372FA00F65F90 /* CCActionTween.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FBB2D8117613F500150761 /* CCActionTween.h */; }; 7A5946EE19E372FA00F65F90 /* CCTexturePVR.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F9246F1224140400EF2362 /* CCTexturePVR.h */; }; 7A5946F019E372FA00F65F90 /* CCTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E1357110ADEB1B00C9E7FA /* CCTexture.h */; }; - 7A5946F219E372FA00F65F90 /* CCTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B706B19718209A8300B27A2C /* CCTexture_Private.h */; }; 7A5946F319E372FB00F65F90 /* CCTextureCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2670DFDEAFF00C013A5 /* CCTextureCache.h */; }; 7A5946F519E372FB00F65F90 /* uthash.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D898EF1192CB7500458C29 /* uthash.h */; }; 7A5946F619E372FB00F65F90 /* utlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 508EAC2F1193F8B0007F058D /* utlist.h */; }; @@ -452,7 +450,6 @@ A6A0734B17C78EF3004343C8 /* CCResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A0734917C78EF3004343C8 /* CCResponder.m */; }; A6DC4E0918055DCC00C280A6 /* CCTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DC4E0718055DCC00C280A6 /* CCTransition.h */; }; A6DC4E0A18055DCC00C280A6 /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A6DC4E0818055DCC00C280A6 /* CCTransition.m */; }; - B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B706B19718209A8300B27A2C /* CCTexture_Private.h */; }; B74C2B9B17BDA63A00A829C0 /* CCSprite9Slice.h in Headers */ = {isa = PBXBuildFile; fileRef = B74C2B9917BDA63A00A829C0 /* CCSprite9Slice.h */; }; B74C2B9C17BDA63A00A829C0 /* CCSprite9Slice.m in Sources */ = {isa = PBXBuildFile; fileRef = B74C2B9A17BDA63A00A829C0 /* CCSprite9Slice.m */; }; B75C2E7C17C5908B002B0E0D /* NSAttributedString+CCAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B75C2E7A17C5908B002B0E0D /* NSAttributedString+CCAdditions.h */; }; @@ -663,7 +660,6 @@ A6A0734917C78EF3004343C8 /* CCResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCResponder.m; sourceTree = ""; }; A6DC4E0718055DCC00C280A6 /* CCTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTransition.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; A6DC4E0818055DCC00C280A6 /* CCTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTransition.m; sourceTree = ""; }; - B706B19718209A8300B27A2C /* CCTexture_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTexture_Private.h; sourceTree = ""; }; B706B19918209FA000B27A2C /* CCDirector_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCDirector_Private.h; sourceTree = ""; }; B74C2B9917BDA63A00A829C0 /* CCSprite9Slice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite9Slice.h; sourceTree = ""; }; B74C2B9A17BDA63A00A829C0 /* CCSprite9Slice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSprite9Slice.m; sourceTree = ""; }; @@ -1073,7 +1069,6 @@ E0F924701224140400EF2362 /* CCTexturePVR.m */, 50E1357110ADEB1B00C9E7FA /* CCTexture.h */, 50E1357210ADEB1B00C9E7FA /* CCTexture.m */, - B706B19718209A8300B27A2C /* CCTexture_Private.h */, 5018F2670DFDEAFF00C013A5 /* CCTextureCache.h */, 5018F2680DFDEAFF00C013A5 /* CCTextureCache.m */, ); @@ -1085,9 +1080,6 @@ children = ( 5018F25E0DFDEAFF00C013A5 /* CCNodeColor.h */, 5018F25F0DFDEAFF00C013A5 /* CCNodeColor.m */, - 50316AA410291280003ACFE7 /* CCRenderTexture.h */, - 50316AA510291280003ACFE7 /* CCRenderTexture.m */, - D2B840C31909F447008063EA /* CCRenderTexture_Private.h */, ); name = "Misc Nodes"; sourceTree = ""; @@ -1230,6 +1222,9 @@ D34CAD5E19C3A070009BED7A /* Rendering */ = { isa = PBXGroup; children = ( + 50316AA410291280003ACFE7 /* CCRenderTexture.h */, + 50316AA510291280003ACFE7 /* CCRenderTexture.m */, + D2B840C31909F447008063EA /* CCRenderTexture_Private.h */, 0EFC792C1B3B0E14008926DD /* CCRendererGLSupport.m */, D3903B0E199528A0003AA81A /* CCRenderDispatch.h */, D3903B0F199528A0003AA81A /* CCRenderDispatch.m */, @@ -1333,7 +1328,6 @@ 08F4AB111C6E98A1004DAAF7 /* CCFileUtils.h in Headers */, 08F4AB121C6E98A1004DAAF7 /* CGPointExtension.h in Headers */, 08F4AB131C6E98A1004DAAF7 /* CCPlatformTextFieldIOS.h in Headers */, - 08F4AB141C6E98A1004DAAF7 /* CCTexture_Private.h in Headers */, 08F4AB151C6E98A1004DAAF7 /* CCLayoutBox.h in Headers */, 08F4AB171C6E98A1004DAAF7 /* CCRenderDispatch.h in Headers */, 08F4AB181C6E98A1004DAAF7 /* CCTextField.h in Headers */, @@ -1425,7 +1419,6 @@ 50C508C60F7C194400799124 /* CCFileUtils.h in Headers */, 503798C60F912C2000986724 /* CGPointExtension.h in Headers */, 571CD02A19649E03003D460C /* CCPlatformTextFieldIOS.h in Headers */, - B706B19818209A8300B27A2C /* CCTexture_Private.h in Headers */, B7EE69E21819E75700B983FE /* CCLayoutBox.h in Headers */, D3903B10199528A0003AA81A /* CCRenderDispatch.h in Headers */, B7E260D818171D2000A0E872 /* CCTextField.h in Headers */, @@ -1525,7 +1518,6 @@ 7A5946EC19E372FA00F65F90 /* CCActionTween.h in Headers */, 7A5946EE19E372FA00F65F90 /* CCTexturePVR.h in Headers */, 7A5946F019E372FA00F65F90 /* CCTexture.h in Headers */, - 7A5946F219E372FA00F65F90 /* CCTexture_Private.h in Headers */, 7A5946F319E372FB00F65F90 /* CCTextureCache.h in Headers */, 7A5946F519E372FB00F65F90 /* uthash.h in Headers */, 7A5946F619E372FB00F65F90 /* utlist.h in Headers */, diff --git a/cocos2d/CCLabelTTF.m b/cocos2d/CCLabelTTF.m index 9917cd6c15e..e9b87112cf9 100644 --- a/cocos2d/CCLabelTTF.m +++ b/cocos2d/CCLabelTTF.m @@ -36,7 +36,6 @@ #import "NSAttributedString+CCAdditions.h" #import "CCConfiguration.h" #import "CCDirector.h" -#import "CCTexture_Private.h" #import #if __CC_PLATFORM_IOS diff --git a/cocos2d/CCNoARC.m b/cocos2d/CCNoARC.m index 6a90099325b..9ba99808811 100644 --- a/cocos2d/CCNoARC.m +++ b/cocos2d/CCNoARC.m @@ -1,4 +1,3 @@ -#import "CCTexture_Private.h" #import "CCRenderer_Private.h" #if __CC_METAL_SUPPORTED_AND_ENABLED diff --git a/cocos2d/CCNode.h b/cocos2d/CCNode.h index 6a2b2aa138a..04396efb8d0 100644 --- a/cocos2d/CCNode.h +++ b/cocos2d/CCNode.h @@ -715,7 +715,7 @@ @note The animationManager property is nil during a node's init methods. @see CCAnimationManager */ -@property (nonatomic, readwrite) CCAnimationManager * animationManager; +@property (nonatomic, assign, readwrite) CCAnimationManager * animationManager; /// ----------------------------------------------------------------------- diff --git a/cocos2d/CCNode.m b/cocos2d/CCNode.m index 41f4d611557..f9253504445 100644 --- a/cocos2d/CCNode.m +++ b/cocos2d/CCNode.m @@ -42,7 +42,6 @@ #endif #import "CCDirector_Private.h" #import "CCRenderer_Private.h" -#import "CCTexture_Private.h" #if CC_NODE_RENDER_SUBPIXEL #define RENDER_IN_SUBPIXEL diff --git a/cocos2d/CCRenderTexture.m b/cocos2d/CCRenderTexture.m index 1c231c9d641..f99ff02305a 100644 --- a/cocos2d/CCRenderTexture.m +++ b/cocos2d/CCRenderTexture.m @@ -33,7 +33,6 @@ #import "Support/CCFileUtils.h" #import "Support/CGPointExtension.h" -#import "CCTexture_Private.h" #import "CCDirector_Private.h" #import "CCRenderer_Private.h" #import "CCRenderTexture_Private.h" diff --git a/cocos2d/CCRenderer.m b/cocos2d/CCRenderer.m index 98f96f28a4a..3d3b58d6c82 100644 --- a/cocos2d/CCRenderer.m +++ b/cocos2d/CCRenderer.m @@ -27,7 +27,6 @@ #import "cocos2d.h" #import "CCRenderer_Private.h" #import "CCCache.h" -#import "CCTexture_Private.h" #import "CCDirector_Private.h" #import "CCRenderDispatch.h" diff --git a/cocos2d/CCRendererBasicTypes.m b/cocos2d/CCRendererBasicTypes.m index 466568fb34d..1db75a2a83e 100644 --- a/cocos2d/CCRendererBasicTypes.m +++ b/cocos2d/CCRendererBasicTypes.m @@ -24,7 +24,6 @@ #import "CCRendererBasicTypes.h" #import "CCRenderer_Private.h" -#import "CCTexture_Private.h" #import "CCCache.h" //MARK: Blend Option Keys. diff --git a/cocos2d/CCRendererGLSupport.m b/cocos2d/CCRendererGLSupport.m index 50cfca69bd4..f3c8f6edf6d 100644 --- a/cocos2d/CCRendererGLSupport.m +++ b/cocos2d/CCRendererGLSupport.m @@ -23,7 +23,6 @@ */ #import "CCRenderer_Private.h" -#import "CCTexture_Private.h" #import "CCRenderDispatch.h" diff --git a/cocos2d/CCShader.m b/cocos2d/CCShader.m index 31950c14106..de8df8000b9 100644 --- a/cocos2d/CCShader.m +++ b/cocos2d/CCShader.m @@ -29,7 +29,6 @@ #import "Support/CCFileUtils.h" #import "Support/uthash.h" #import "CCRenderer_Private.h" -#import "CCTexture_private.h" #import "CCDirector.h" #import "CCCache.h" #import "CCGL.h" diff --git a/cocos2d/CCSprite.m b/cocos2d/CCSprite.m index b429db993ce..098627db35e 100644 --- a/cocos2d/CCSprite.m +++ b/cocos2d/CCSprite.m @@ -38,7 +38,6 @@ #import "Support/CGPointExtension.h" #import "Support/CCProfiling.h" #import "CCRenderer_Private.h" -#import "CCTexture_Private.h" #pragma mark - #pragma mark CCSprite diff --git a/cocos2d/CCSprite9Slice.m b/cocos2d/CCSprite9Slice.m index 59528ae3b1b..c6b53c05308 100644 --- a/cocos2d/CCSprite9Slice.m +++ b/cocos2d/CCSprite9Slice.m @@ -26,7 +26,6 @@ */ #import "CCSprite9Slice.h" -#import "CCTexture_Private.h" // --------------------------------------------------------------------- diff --git a/cocos2d/CCSpriteFrame.m b/cocos2d/CCSpriteFrame.m index 16eef5f2362..8e3fd8a3538 100644 --- a/cocos2d/CCSpriteFrame.m +++ b/cocos2d/CCSpriteFrame.m @@ -31,7 +31,6 @@ #import "CCTexture.h" #import "ccMacros.h" #import "CCSpriteFrameCache.h" -#import "CCTexture_Private.h" @implementation CCSpriteFrame { diff --git a/cocos2d/CCSpriteFrameCache.m b/cocos2d/CCSpriteFrameCache.m index e2e9d91fc0c..5c21504ba6e 100644 --- a/cocos2d/CCSpriteFrameCache.m +++ b/cocos2d/CCSpriteFrameCache.m @@ -41,7 +41,7 @@ #import "CCSpriteFrame.h" #import "CCSprite.h" #import "Support/CCFileUtils.h" -#import "CCTexture_Private.h" +#import "CCTexture.h" @interface CCSpriteFrame(Proxy) diff --git a/cocos2d/CCTexture.h b/cocos2d/CCTexture.h index 351b59daa04..810d9019c4e 100644 --- a/cocos2d/CCTexture.h +++ b/cocos2d/CCTexture.h @@ -65,6 +65,11 @@ Copyright (C) 2008 Apple Inc. All Rights Reserved. #import "ccTypes.h" #import "ccMacros.h" + +#if __CC_METAL_SUPPORTED_AND_ENABLED +#import +#endif + #import "Platforms/CCGL.h" // OpenGL stuff #import "Platforms/CCNS.h" // Next-Step stuff @@ -112,8 +117,28 @@ typedef NS_ENUM(NSUInteger, CCTexturePixelFormat) { CCTexturePixelFormat_Default = CCTexturePixelFormat_RGBA8888, }; +/* + Extension to set the Min / Mag filter + */ +typedef struct _ccTexParams { + GLuint minFilter; + GLuint magFilter; + GLuint wrapS; + GLuint wrapT; +} ccTexParams; + + @class CCShader; +// Proxy object returned in place of a CCTexture or CCSpriteFrame by the texture cache. +// Weakly retained by the original object, so it can be know if the object is referenced when a memory warning arrives. +// This is used as a temporary fix for the texture cache until asset loading can be refactored better. +@interface CCProxy : NSObject + +- (id)initWithTarget:(id)target; + +@end + /** Represents a texture, an in-memory representation of an image in a compatible format the graphics processor can process. @@ -202,11 +227,36 @@ typedef NS_ENUM(NSUInteger, CCTexturePixelFormat) { /// ------------------------------------------------------- /** Whether or not the texture has their Alpha premultiplied. */ -@property(nonatomic,readonly,getter=hasPremultipliedAlpha) BOOL premultipliedAlpha; +@property(nonatomic,readwrite) BOOL premultipliedAlpha; /** True if antialised. */ @property(nonatomic,assign,getter=isAntialiased) BOOL antialiased; +/* texture name */ +@property(nonatomic,readonly) GLuint name; + +// TODO This should really be split into a separate subclass somehow. +#if __CC_METAL_SUPPORTED_AND_ENABLED +@property(nonatomic,readonly) id metalTexture; +@property(nonatomic,readonly) id metalSampler; +#endif + +/* texture max S */ +@property(nonatomic,readwrite) GLfloat maxS; +/* texture max T */ +@property(nonatomic,readwrite) GLfloat maxT; + +// Check if the texture's weakly retained proxy still exists. +@property(atomic, readonly) BOOL hasProxy; + +// Retrieve the proxy for this texture. +@property(atomic, readonly, weak) CCProxy *proxy; + + +/* These functions are needed to create mutable textures */ +- (void) releaseData:(void*)data; +- (void*) keepData:(void*)data length:(NSUInteger)length; + @end #pragma mark - Image @@ -274,6 +324,61 @@ typedef NS_ENUM(NSUInteger, CCTexturePixelFormat) { @end +/* + Extensions to make it easy to create a CCTexture2D object from a PVRTC file + Note that the generated textures don't have their alpha premultiplied - use the blending mode (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA). + */ +@interface CCTexture (PVRSupport) +/* Initializes a texture from a PVR file. + + Supported PVR formats: + - BGRA 8888 + - RGBA 8888 + - RGBA 4444 + - RGBA 5551 + - RBG 565 + - A 8 + - I 8 + - AI 8 + - PVRTC 2BPP + - PVRTC 4BPP + + By default PVR images are treated as if they alpha channel is NOT premultiplied. You can override this behavior with this class method: + - PVRImagesHavePremultipliedAlpha:(BOOL)haveAlphaPremultiplied; + + IMPORTANT: This method is only defined on iOS. It is not supported on the Mac version. + + */ +-(id) initWithPVRFile: (NSString*) file; + +/* treats (or not) PVR files as if they have alpha premultiplied. + Since it is impossible to know at runtime if the PVR images have the alpha channel premultiplied, it is + possible load them as if they have (or not) the alpha channel premultiplied. + + By default it is disabled. + + */ ++(void) PVRImagesHavePremultipliedAlpha:(BOOL)haveAlphaPremultiplied; + +@end + +@interface CCTexture (GLFilter) +/* sets the min filter, mag filter, wrap s and wrap t texture parameters. + If the texture size is NPOT (non power of 2), then in can only use GL_CLAMP_TO_EDGE in GL_TEXTURE_WRAP_{S,T}. + + @warning Calling this method could allocate additional texture memory. + + */ +-(void) setTexParameters: (ccTexParams*) texParams; + +/* Generates mipmap images for the texture. + It only works if the texture size is POT (power of 2). + */ +-(void) generateMipmap; + +@end + + diff --git a/cocos2d/CCTexture.m b/cocos2d/CCTexture.m index a982fba086c..8427e9c17f3 100644 --- a/cocos2d/CCTexture.m +++ b/cocos2d/CCTexture.m @@ -84,7 +84,6 @@ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE #import "Support/ccUtils.h" #import "Support/CCFileUtils.h" -#import "CCTexture_Private.h" #import "CCTextureCache.h" #import "CCSpriteFrame.h" diff --git a/cocos2d/CCTextureCache.m b/cocos2d/CCTextureCache.m index 73d6186fa60..ac15a119439 100644 --- a/cocos2d/CCTextureCache.m +++ b/cocos2d/CCTextureCache.m @@ -45,7 +45,6 @@ #import "Platforms/Mac/CCDirectorMac.h" #endif -#import "CCTexture_Private.h" #import "CCRenderer_Private.h" // needed for CCCallFuncO in Mac-display_link version diff --git a/cocos2d/CCTexture_Private.h b/cocos2d/CCTexture_Private.h deleted file mode 100644 index 93cd0b895b5..00000000000 --- a/cocos2d/CCTexture_Private.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - -#import "CCTexture.h" - -#if __CC_METAL_SUPPORTED_AND_ENABLED -#import -#endif - - -// ------------------------------------------------------------- - -// Proxy object returned in place of a CCTexture or CCSpriteFrame by the texture cache. -// Weakly retained by the original object, so it can be know if the object is referenced when a memory warning arrives. -// This is used as a temporary fix for the texture cache until asset loading can be refactored better. -@interface CCProxy : NSObject - -- (id)initWithTarget:(id)target; - -@end - -// ------------------------------------------------------------- - -@interface CCTexture () - -/* These functions are needed to create mutable textures */ -- (void) releaseData:(void*)data; -- (void*) keepData:(void*)data length:(NSUInteger)length; - -/* texture name */ -@property(nonatomic,readonly) GLuint name; - -// TODO This should really be split into a separate subclass somehow. -#if __CC_METAL_SUPPORTED_AND_ENABLED -@property(nonatomic,readonly) id metalTexture; -@property(nonatomic,readonly) id metalSampler; -#endif - -/* texture max S */ -@property(nonatomic,readwrite) GLfloat maxS; -/* texture max T */ -@property(nonatomic,readwrite) GLfloat maxT; - -@property(nonatomic,readwrite) BOOL premultipliedAlpha; - -// Check if the texture's weakly retained proxy still exists. -@property(atomic, readonly) BOOL hasProxy; - -// Retrieve the proxy for this texture. -@property(atomic, readonly, weak) CCProxy *proxy; - -@end - -/* - Extensions to make it easy to create a CCTexture2D object from a PVRTC file - Note that the generated textures don't have their alpha premultiplied - use the blending mode (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA). - */ -@interface CCTexture (PVRSupport) -/* Initializes a texture from a PVR file. - - Supported PVR formats: - - BGRA 8888 - - RGBA 8888 - - RGBA 4444 - - RGBA 5551 - - RBG 565 - - A 8 - - I 8 - - AI 8 - - PVRTC 2BPP - - PVRTC 4BPP - - By default PVR images are treated as if they alpha channel is NOT premultiplied. You can override this behavior with this class method: - - PVRImagesHavePremultipliedAlpha:(BOOL)haveAlphaPremultiplied; - - IMPORTANT: This method is only defined on iOS. It is not supported on the Mac version. - - */ --(id) initWithPVRFile: (NSString*) file; - -/* treats (or not) PVR files as if they have alpha premultiplied. - Since it is impossible to know at runtime if the PVR images have the alpha channel premultiplied, it is - possible load them as if they have (or not) the alpha channel premultiplied. - - By default it is disabled. - - */ -+(void) PVRImagesHavePremultipliedAlpha:(BOOL)haveAlphaPremultiplied; - -@end - -/* - Extension to set the Min / Mag filter - */ -typedef struct _ccTexParams { - GLuint minFilter; - GLuint magFilter; - GLuint wrapS; - GLuint wrapT; -} ccTexParams; - -@interface CCTexture (GLFilter) -/* sets the min filter, mag filter, wrap s and wrap t texture parameters. - If the texture size is NPOT (non power of 2), then in can only use GL_CLAMP_TO_EDGE in GL_TEXTURE_WRAP_{S,T}. - - @warning Calling this method could allocate additional texture memory. - - */ --(void) setTexParameters: (ccTexParams*) texParams; - -/* Generates mipmap images for the texture. - It only works if the texture size is POT (power of 2). - */ --(void) generateMipmap; - -@end diff --git a/cocos2d/Platforms/iOS/CCMetalSupport.m b/cocos2d/Platforms/iOS/CCMetalSupport.m index 2c06a826933..2fbaf44695e 100644 --- a/cocos2d/Platforms/iOS/CCMetalSupport.m +++ b/cocos2d/Platforms/iOS/CCMetalSupport.m @@ -27,7 +27,7 @@ #if __CC_METAL_SUPPORTED_AND_ENABLED #import "CCMetalView.h" -#import "CCTexture_Private.h" +#import "CCTexture.h" @implementation CCMetalContext { id _destinationTexture; From c46b3ca335ab7e0c3ebf0174de2bad40db7e9152 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 19:34:27 +0300 Subject: [PATCH 54/94] Simply move CCLabelBMF private header into the bottom of main one --- cocos2d.xcodeproj/project.pbxproj | 8 -- cocos2d/CCLabelBMFont.h | 126 ++++++++++++++++++++++++ cocos2d/CCLabelBMFont.m | 1 - cocos2d/CCLabelBMFont_Private.h | 158 ------------------------------ 4 files changed, 126 insertions(+), 167 deletions(-) delete mode 100644 cocos2d/CCLabelBMFont_Private.h diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index 50abe0ba5ef..de7e0330ab5 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -161,7 +161,6 @@ 08F4AB301C6E98A1004DAAF7 /* CCLabelBMFont.h in Headers */ = {isa = PBXBuildFile; fileRef = E01E6D8A121F130E001A484F /* CCLabelBMFont.h */; }; 08F4AB311C6E98A1004DAAF7 /* CCDirectorIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD0EA121F4B4600B0C81C /* CCDirectorIOS.h */; }; 08F4AB321C6E98A1004DAAF7 /* CCGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD0F3121F4B4600B0C81C /* CCGLView.h */; }; - 08F4AB331C6E98A1004DAAF7 /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; 08F4AB341C6E98A1004DAAF7 /* CCGL.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD19C121F4D7300B0C81C /* CCGL.h */; }; 08F4AB351C6E98A1004DAAF7 /* CCConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD1F0121F522A00B0C81C /* CCConfiguration.h */; }; 08F4AB361C6E98A1004DAAF7 /* CCTexturePVR.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F9246F1224140400EF2362 /* CCTexturePVR.h */; }; @@ -280,7 +279,6 @@ 7A59467719E372EF00F65F90 /* CCDrawNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DA0BC115BCDCA200E80A92 /* CCDrawNode.h */; }; 7A59467919E372EF00F65F90 /* CCLabelBMFont.h in Headers */ = {isa = PBXBuildFile; fileRef = E01E6D8A121F130E001A484F /* CCLabelBMFont.h */; }; 7A59467B19E372EF00F65F90 /* CCLabelTTF.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F25C0DFDEAFF00C013A5 /* CCLabelTTF.h */; }; - 7A59467D19E372EF00F65F90 /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; 7A59467E19E372EF00F65F90 /* CCAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = E02BB702126CADEA006E46A2 /* CCAnimation.h */; }; 7A59468019E372EF00F65F90 /* CCAnimationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E02BB6D4126CA93A006E46A2 /* CCAnimationCache.h */; }; 7A59468219E372EF00F65F90 /* CCSprite.h in Headers */ = {isa = PBXBuildFile; fileRef = 509A79950F6188420032F449 /* CCSprite.h */; }; @@ -464,7 +462,6 @@ B78AE46917E7AF1C0028BE0B /* CCScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46117E7AF1C0028BE0B /* CCScrollView.m */; }; B78AE46C17E7AF6C0028BE0B /* UITouch+CC.h in Headers */ = {isa = PBXBuildFile; fileRef = B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */; }; B78AE46D17E7AF6C0028BE0B /* UITouch+CC.m in Sources */ = {isa = PBXBuildFile; fileRef = B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */; }; - B798D143181F469100E7BFCD /* CCLabelBMFont_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */; }; B79F905A17FE2A2E00908504 /* CCTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = B79F905817FE2A2E00908504 /* CCTableView.h */; }; B79F905B17FE2A2E00908504 /* CCTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B79F905917FE2A2E00908504 /* CCTableView.m */; }; B7E260D818171D2000A0E872 /* CCTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E260D618171D2000A0E872 /* CCTextField.h */; }; @@ -677,7 +674,6 @@ B78AE46117E7AF1C0028BE0B /* CCScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCScrollView.m; path = "cocos2d-ui/CCScrollView.m"; sourceTree = ""; }; B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITouch+CC.h"; sourceTree = ""; }; B78AE46B17E7AF6C0028BE0B /* UITouch+CC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITouch+CC.m"; sourceTree = ""; }; - B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLabelBMFont_Private.h; sourceTree = ""; }; B79F905817FE2A2E00908504 /* CCTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCTableView.h; path = "cocos2d-ui/CCTableView.h"; sourceTree = ""; }; B79F905917FE2A2E00908504 /* CCTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCTableView.m; path = "cocos2d-ui/CCTableView.m"; sourceTree = ""; }; B7C6237917EA7D8600928F91 /* cocos2d-ui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "cocos2d-ui.h"; path = "cocos2d-ui/cocos2d-ui.h"; sourceTree = ""; }; @@ -1016,7 +1012,6 @@ E01E6D8B121F130E001A484F /* CCLabelBMFont.m */, 5018F25C0DFDEAFF00C013A5 /* CCLabelTTF.h */, 5018F25D0DFDEAFF00C013A5 /* CCLabelTTF.m */, - B798D142181F469100E7BFCD /* CCLabelBMFont_Private.h */, ); name = "Label Nodes"; sourceTree = ""; @@ -1357,7 +1352,6 @@ 08F4AB301C6E98A1004DAAF7 /* CCLabelBMFont.h in Headers */, 08F4AB311C6E98A1004DAAF7 /* CCDirectorIOS.h in Headers */, 08F4AB321C6E98A1004DAAF7 /* CCGLView.h in Headers */, - 08F4AB331C6E98A1004DAAF7 /* CCLabelBMFont_Private.h in Headers */, 08F4AB341C6E98A1004DAAF7 /* CCGL.h in Headers */, 08F4AB351C6E98A1004DAAF7 /* CCConfiguration.h in Headers */, 08F4AB361C6E98A1004DAAF7 /* CCTexturePVR.h in Headers */, @@ -1448,7 +1442,6 @@ E01E6D8C121F130E001A484F /* CCLabelBMFont.h in Headers */, E0EAD0FF121F4B4600B0C81C /* CCDirectorIOS.h in Headers */, E0EAD108121F4B4600B0C81C /* CCGLView.h in Headers */, - B798D143181F469100E7BFCD /* CCLabelBMFont_Private.h in Headers */, E0EAD19D121F4D7300B0C81C /* CCGL.h in Headers */, E0EAD1F1121F522A00B0C81C /* CCConfiguration.h in Headers */, E0F924711224140400EF2362 /* CCTexturePVR.h in Headers */, @@ -1495,7 +1488,6 @@ 7A59467719E372EF00F65F90 /* CCDrawNode.h in Headers */, 7A59467919E372EF00F65F90 /* CCLabelBMFont.h in Headers */, 7A59467B19E372EF00F65F90 /* CCLabelTTF.h in Headers */, - 7A59467D19E372EF00F65F90 /* CCLabelBMFont_Private.h in Headers */, 7A59467E19E372EF00F65F90 /* CCAnimation.h in Headers */, 7A59468019E372EF00F65F90 /* CCAnimationCache.h in Headers */, 7A59468219E372EF00F65F90 /* CCSprite.h in Headers */, diff --git a/cocos2d/CCLabelBMFont.h b/cocos2d/CCLabelBMFont.h index 36fa5bde402..0258e785001 100644 --- a/cocos2d/CCLabelBMFont.h +++ b/cocos2d/CCLabelBMFont.h @@ -183,5 +183,131 @@ @end +enum { + kCCLabelAutomaticWidth = -1, +}; +// ccBMFontDef BMFont definition. +typedef struct _BMFontDef { + + // ID of the character. + unichar charID; + + // Origin and size of the font + CGRect rect; + + // The X amount the image should be offset when drawing the image (in pixels) + short xOffset; + + // The Y amount the image should be offset when drawing the image (in pixels) + short yOffset; + + // The amount to move the current position after drawing the character (in pixels) + short xAdvance; + +} ccBMFontDef; + +// cBMFontPadding BMFont padding. +typedef struct _BMFontPadding { + + // Padding left. + int left; + + // Padding top. + + int top; + // Padding right. + + int right; + + // Padding bottom. + int bottom; + +} ccBMFontPadding; + +#pragma mark - Hash Element +// tCCFontDefHashElement. +typedef struct _FontDefHashElement { + + // Key. Font Unicode value. + NSUInteger key; + + // Font definition. + ccBMFontDef fontDef; + + UT_hash_handle hh; + +} tCCFontDefHashElement; + +// tCCKerningHashElement. +typedef struct _KerningHashElement { + + // Key for the hash. 16-bit for 1st element, 16-bit for 2nd element. + int key; + + // Kerning value. + int amount; + + // Had Handle. + UT_hash_handle hh; + +} tCCKerningHashElement; + +// CCBMFontConfiguration stores the parsed configuration of the specified .fnt file. +@interface CCBMFontConfiguration : NSObject { + + // The character set defines the letters that actually exist in the font. + NSCharacterSet *_characterSet; + + // The atlas name. + NSString *_atlasName; + +@public + + // BMFont definitions. + tCCFontDefHashElement *_fontDefDictionary; + + // FNTConfig: Common Height. + NSInteger _commonHeight; + + // Padding. + ccBMFontPadding _padding; + + // Values for kerning. + tCCKerningHashElement *_kerningDictionary; +} + +/// ----------------------------------------------------------------------- +/// @name Accessing the Configuration Attributes +/// ----------------------------------------------------------------------- + +// The character set defines the letters that actually exist in the font. +@property (nonatomic, strong, readonly) NSCharacterSet *characterSet; + +// The atlas name. +@property (nonatomic, readwrite, strong) NSString *atlasName; + +// Creates and returns a CCBMFontConfiguration object from a specified font file value. ++(instancetype) configurationWithFNTFile:(NSString*)FNTfile; + + +/// ----------------------------------------------------------------------- +/// @name Initializing a CCLabelBMFont Object +/// ----------------------------------------------------------------------- + +// Initializes and returns a CCBMFontConfiguration object from a specified font file value. +-(id) initWithFNTfile:(NSString*)FNTfile; + +@end + + +/// ----------------------------------------------------------------------- +/// @name Free Functions +/// ----------------------------------------------------------------------- + +// Load/Cache font configuration file and return object. +CCBMFontConfiguration* FNTConfigLoadFile(NSString *file); + +// Clear font configuration cache. +void FNTConfigRemoveCache(void); diff --git a/cocos2d/CCLabelBMFont.m b/cocos2d/CCLabelBMFont.m index 6121eae0172..c60393a23b9 100644 --- a/cocos2d/CCLabelBMFont.m +++ b/cocos2d/CCLabelBMFont.m @@ -45,7 +45,6 @@ #import "Support/CCFileUtils.h" #import "Support/CGPointExtension.h" #import "Support/uthash.h" -#import "CCLabelBMFont_Private.h" #pragma mark - #pragma mark FNTConfig Cache - free functions diff --git a/cocos2d/CCLabelBMFont_Private.h b/cocos2d/CCLabelBMFont_Private.h deleted file mode 100644 index 1eeb1633b0f..00000000000 --- a/cocos2d/CCLabelBMFont_Private.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import "CCLabelBMFont.h" - -enum { - kCCLabelAutomaticWidth = -1, -}; - -// ccBMFontDef BMFont definition. -typedef struct _BMFontDef { - - // ID of the character. - unichar charID; - - // Origin and size of the font - CGRect rect; - - // The X amount the image should be offset when drawing the image (in pixels) - short xOffset; - - // The Y amount the image should be offset when drawing the image (in pixels) - short yOffset; - - // The amount to move the current position after drawing the character (in pixels) - short xAdvance; - -} ccBMFontDef; - -// cBMFontPadding BMFont padding. -typedef struct _BMFontPadding { - - // Padding left. - int left; - - // Padding top. - - int top; - // Padding right. - - int right; - - // Padding bottom. - int bottom; - -} ccBMFontPadding; - -#pragma mark - Hash Element -// tCCFontDefHashElement. -typedef struct _FontDefHashElement { - - // Key. Font Unicode value. - NSUInteger key; - - // Font definition. - ccBMFontDef fontDef; - - UT_hash_handle hh; - -} tCCFontDefHashElement; - -// tCCKerningHashElement. -typedef struct _KerningHashElement { - - // Key for the hash. 16-bit for 1st element, 16-bit for 2nd element. - int key; - - // Kerning value. - int amount; - - // Had Handle. - UT_hash_handle hh; - -} tCCKerningHashElement; - -// CCBMFontConfiguration stores the parsed configuration of the specified .fnt file. -@interface CCBMFontConfiguration : NSObject { - - // The character set defines the letters that actually exist in the font. - NSCharacterSet *_characterSet; - - // The atlas name. - NSString *_atlasName; - -@public - - // BMFont definitions. - tCCFontDefHashElement *_fontDefDictionary; - - // FNTConfig: Common Height. - NSInteger _commonHeight; - - // Padding. - ccBMFontPadding _padding; - - // Values for kerning. - tCCKerningHashElement *_kerningDictionary; -} - -/// ----------------------------------------------------------------------- -/// @name Accessing the Configuration Attributes -/// ----------------------------------------------------------------------- - -// The character set defines the letters that actually exist in the font. -@property (nonatomic, strong, readonly) NSCharacterSet *characterSet; - -// The atlas name. -@property (nonatomic, readwrite, strong) NSString *atlasName; - - -/// ----------------------------------------------------------------------- -/// @name Creating a CCParticleSystem Object -/// ----------------------------------------------------------------------- - -// Creates and returns a CCBMFontConfiguration object from a specified font file value. -+(instancetype) configurationWithFNTFile:(NSString*)FNTfile; - - -/// ----------------------------------------------------------------------- -/// @name Initializing a CCLabelBMFont Object -/// ----------------------------------------------------------------------- - -// Initializes and returns a CCBMFontConfiguration object from a specified font file value. --(id) initWithFNTfile:(NSString*)FNTfile; - -@end - - -/// ----------------------------------------------------------------------- -/// @name Free Functions -/// ----------------------------------------------------------------------- - -// Load/Cache font configuration file and return object. -CCBMFontConfiguration* FNTConfigLoadFile(NSString *file); - -// Clear font configuration cache. -void FNTConfigRemoveCache(void); From 9ca335e4ff3d4dbe1f491e4413a9765a5a2cb11c Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 20:42:38 +0300 Subject: [PATCH 55/94] Merged CCDirector headers --- UnitTests/CCNodeTests.m | 1 - UnitTests/CCPhysicsTests.m | 1 - cocos2d-ui/CCTextField.m | 2 +- cocos2d.xcodeproj/project.pbxproj | 4 - cocos2d/CCDirector.h | 71 ++++++++++++++++ cocos2d/CCDirector.m | 2 - cocos2d/CCDirector_Private.h | 111 -------------------------- cocos2d/CCNode.m | 1 - cocos2d/CCRenderTexture.m | 1 - cocos2d/CCRenderer.m | 2 +- cocos2d/CCResponder.m | 5 -- cocos2d/CCScene.m | 1 - cocos2d/CCTransition.m | 2 +- cocos2d/Platforms/Mac/CCDirectorMac.m | 2 - cocos2d/Platforms/Mac/CCGLView.m | 3 - cocos2d/Platforms/iOS/CCAppDelegate.m | 2 +- cocos2d/Platforms/iOS/CCDirectorIOS.m | 2 - cocos2d/Platforms/iOS/CCGLView.m | 1 - cocos2d/Platforms/iOS/CCMetalView.m | 1 - 19 files changed, 75 insertions(+), 140 deletions(-) delete mode 100644 cocos2d/CCDirector_Private.h diff --git a/UnitTests/CCNodeTests.m b/UnitTests/CCNodeTests.m index 249a5ac897a..ca3c7698d3d 100644 --- a/UnitTests/CCNodeTests.m +++ b/UnitTests/CCNodeTests.m @@ -7,7 +7,6 @@ #import #import "cocos2d.h" -#import "CCDirector_Private.h" @interface CCNodeTests : XCTestCase diff --git a/UnitTests/CCPhysicsTests.m b/UnitTests/CCPhysicsTests.m index 800f1d908f4..a38005c10b8 100644 --- a/UnitTests/CCPhysicsTests.m +++ b/UnitTests/CCPhysicsTests.m @@ -10,7 +10,6 @@ #import "cocos2d.h" #import "CCPhysics+ObjectiveChipmunk.h" -#import "CCDirector_Private.h" #import "AppDelegate.h" @interface CCScheduler(Test) diff --git a/cocos2d-ui/CCTextField.m b/cocos2d-ui/CCTextField.m index 9c2ae6c20d5..473ce612542 100644 --- a/cocos2d-ui/CCTextField.m +++ b/cocos2d-ui/CCTextField.m @@ -24,7 +24,7 @@ #import "CCTextField.h" #import "CCControlSubclass.h" -#import "CCDirector_Private.h" +#import "CCDirector.h" #import "CCPlatformTextField.h" #if __CC_PLATFORM_IOS #import "CCPlatformTextFieldIOS.h" diff --git a/cocos2d.xcodeproj/project.pbxproj b/cocos2d.xcodeproj/project.pbxproj index de7e0330ab5..3f3ec7cdebd 100644 --- a/cocos2d.xcodeproj/project.pbxproj +++ b/cocos2d.xcodeproj/project.pbxproj @@ -343,7 +343,6 @@ 7A59475419E3731000F65F90 /* CCConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EAD1F0121F522A00B0C81C /* CCConfiguration.h */; }; 7A59475619E3731100F65F90 /* CCProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E2A25110A46CC600D894CE /* CCProtocols.h */; }; 7A59475719E3731100F65F90 /* CCScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5066020F0E38A70D000B500E /* CCScheduler.h */; }; - 7A59475919E3731100F65F90 /* CCDirector_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B706B19918209FA000B27A2C /* CCDirector_Private.h */; }; 7A59476019E3731400F65F90 /* CCPlatformTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD01E19649E03003D460C /* CCPlatformTextField.h */; }; 7A59476219E3731400F65F90 /* CCPlatformTextFieldIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD02119649E03003D460C /* CCPlatformTextFieldIOS.h */; }; 7A59476419E3731500F65F90 /* CCPlatformTextFieldMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 571CD02419649E03003D460C /* CCPlatformTextFieldMac.h */; }; @@ -657,7 +656,6 @@ A6A0734917C78EF3004343C8 /* CCResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCResponder.m; sourceTree = ""; }; A6DC4E0718055DCC00C280A6 /* CCTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTransition.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; A6DC4E0818055DCC00C280A6 /* CCTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTransition.m; sourceTree = ""; }; - B706B19918209FA000B27A2C /* CCDirector_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCDirector_Private.h; sourceTree = ""; }; B74C2B9917BDA63A00A829C0 /* CCSprite9Slice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite9Slice.h; sourceTree = ""; }; B74C2B9A17BDA63A00A829C0 /* CCSprite9Slice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSprite9Slice.m; sourceTree = ""; }; B750162218124B6000708A2F /* CCControlSubclass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCControlSubclass.h; path = "cocos2d-ui/CCControlSubclass.h"; sourceTree = ""; }; @@ -923,7 +921,6 @@ 50E2A25110A46CC600D894CE /* CCProtocols.h */, 5066020F0E38A70D000B500E /* CCScheduler.h */, 506602100E38A70D000B500E /* CCScheduler.m */, - B706B19918209FA000B27A2C /* CCDirector_Private.h */, D3903B0C1995288D003AA81A /* CCNoARC.m */, ); path = cocos2d; @@ -1554,7 +1551,6 @@ 7A59475419E3731000F65F90 /* CCConfiguration.h in Headers */, 7A59475619E3731100F65F90 /* CCProtocols.h in Headers */, 7A59475719E3731100F65F90 /* CCScheduler.h in Headers */, - 7A59475919E3731100F65F90 /* CCDirector_Private.h in Headers */, 7A59476019E3731400F65F90 /* CCPlatformTextField.h in Headers */, 7A59476219E3731400F65F90 /* CCPlatformTextFieldIOS.h in Headers */, 7A59476419E3731500F65F90 /* CCPlatformTextFieldMac.h in Headers */, diff --git a/cocos2d/CCDirector.h b/cocos2d/CCDirector.h index df4fb177788..9cf36e0bd02 100644 --- a/cocos2d/CCDirector.h +++ b/cocos2d/CCDirector.h @@ -162,6 +162,11 @@ typedef NS_ENUM(NSUInteger, CCDirectorProjection) { CCActionManager *_actionManagerFixed; NSMutableArray *_rendererPool; + +@protected + GLKMatrix4 _projectionMatrix; + __weak id _delegate; + __weak NSThread *_runningThread; } // Undocumented members (considered private) @@ -217,6 +222,12 @@ typedef NS_ENUM(NSUInteger, CCDirectorProjection) { /// @see projection @property(nonatomic, readonly) GLKMatrix4 projectionMatrix; +/// Rect of the visible screen area in GL coordinates. +@property(nonatomic, readonly) CGRect viewportRect; + +/* Sets the glViewport*/ +-(void) setViewport; + /// The current global shader values values. @property(nonatomic, readonly) NSMutableDictionary *globalShaderUniforms; /** Whether or not to display statistics in the view's lower left corner. From top to bottom the numbers are: @@ -343,6 +354,13 @@ typedef NS_ENUM(NSUInteger, CCDirectorProjection) { */ -(void) popToRootSceneWithTransition:(CCTransition *)transition; +/* Pops out all scenes from the queue until it reaches `level`. + If level is 0, it will end the director. + If level is 1, it will pop all scenes until it reaches to root scene. + If level is <= than the current stack level, it won't do anything. + */ +-(void) popToSceneStackLevel:(NSUInteger)level; + // purposefully undocumented: is the same as calling presentScene: -(void) replaceScene: (CCScene*) scene; @@ -366,6 +384,13 @@ typedef NS_ENUM(NSUInteger, CCDirectorProjection) { */ - (void)popSceneWithTransition:(CCTransition *)transition; +- (void)startTransition:(CCTransition *)transition; + +/* Draw the scene. + This method is called every frame. Don't call it manually. + */ +-(void) drawScene; + /** @name Animating the Active Scene */ /** The animation interval is the time per frame. Typically specified as `1.0 / 60.0` where the latter number defines @@ -436,7 +461,53 @@ typedef NS_ENUM(NSUInteger, CCDirectorProjection) { /** Removes all the cocos2d resources that have been previously loaded and automatically cached, textures for instance. */ -(void) purgeCachedData; +#pragma mark Internal stuff + +/* Whether or not the replaced scene will receive the cleanup message. + If the new scene is pushed, then the old scene won't receive the "cleanup" message. + If the new scene replaces the old one, the it will receive the "cleanup" message. + */ +@property (nonatomic, readonly) BOOL sendCleanupToScene; + +/* This object will be visited after the main scene is visited. + This object MUST implement the "visit" selector. + Useful to hook a notification object, like CCNotifications (http://github.com/manucorporat/CCNotifications) + */ +@property (nonatomic, readwrite, strong) id notificationNode; + +/* CCScheduler associated with this director + */ +@property (nonatomic,readwrite,strong) CCScheduler *scheduler; + +/* CCActionManager associated with this director + */ +@property (nonatomic,readwrite,strong) CCActionManager *actionManager; + +/* CCFixedActionManager associated with this director + */ +@property (nonatomic,readwrite,strong) CCActionManager *actionManagerFixed; + +/// XXX: missing description +-(float) getZEye; + +/// Get a renderer object to use for rendering. +/// This method is thread safe. +-(CCRenderer *)rendererFromPool; + +/// Return a renderer to a pool after rendering. +/// This method is thread safe. +-(void)poolRenderer:(CCRenderer *)renderer; + +/// Add a block to be called when the GPU finishes rendering a frame. +/// This is used to pool rendering resources (renderers, buffers, textures, etc) without stalling the GPU pipeline. +-(void)addFrameCompletionHandler:(dispatch_block_t)handler; + +-(void) createStatsLabel; + @end +// optimization. Should only be used to read it. Never to write it. +extern NSUInteger __ccNumberOfDraws; + // optimization. Should only be used to read it. Never to write it. extern CGFloat __ccContentScaleFactor; diff --git a/cocos2d/CCDirector.m b/cocos2d/CCDirector.m index 4685a5e07b0..890f6fa5a86 100644 --- a/cocos2d/CCDirector.m +++ b/cocos2d/CCDirector.m @@ -64,8 +64,6 @@ #define CC_DIRECTOR_DEFAULT CCDirectorDisplayLink #endif -#import "CCDirector_Private.h" - #pragma mark - #pragma mark Director - global variables (optimization) diff --git a/cocos2d/CCDirector_Private.h b/cocos2d/CCDirector_Private.h deleted file mode 100644 index 425d0264a1a..00000000000 --- a/cocos2d/CCDirector_Private.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import "CCDirector.h" -#import "CCTransition.h" - -@interface CCDirector () { - @protected - GLKMatrix4 _projectionMatrix; - __weak id _delegate; - __weak NSThread *_runningThread; -} - -/* Whether or not the replaced scene will receive the cleanup message. - If the new scene is pushed, then the old scene won't receive the "cleanup" message. - If the new scene replaces the old one, the it will receive the "cleanup" message. - */ -@property (nonatomic, readonly) BOOL sendCleanupToScene; - -/* This object will be visited after the main scene is visited. - This object MUST implement the "visit" selector. - Useful to hook a notification object, like CCNotifications (http://github.com/manucorporat/CCNotifications) - */ -@property (nonatomic, readwrite, strong) id notificationNode; - -/* CCScheduler associated with this director - */ -@property (nonatomic,readwrite,strong) CCScheduler *scheduler; - -/* CCActionManager associated with this director - */ -@property (nonatomic,readwrite,strong) CCActionManager *actionManager; - -/* CCFixedActionManager associated with this director - */ -@property (nonatomic,readwrite,strong) CCActionManager *actionManagerFixed; - - -/// Rect of the visible screen area in GL coordinates. -@property(nonatomic, readonly) CGRect viewportRect; - -/* Sets the glViewport*/ --(void) setViewport; - -/// XXX: missing description --(float) getZEye; - -/* Pops out all scenes from the queue until it reaches `level`. - If level is 0, it will end the director. - If level is 1, it will pop all scenes until it reaches to root scene. - If level is <= than the current stack level, it won't do anything. - */ --(void) popToSceneStackLevel:(NSUInteger)level; - -/* Draw the scene. - This method is called every frame. Don't call it manually. - */ --(void) drawScene; - -- (void)startTransition:(CCTransition *)transition; - -/// Get a renderer object to use for rendering. -/// This method is thread safe. --(CCRenderer *)rendererFromPool; - -/// Return a renderer to a pool after rendering. -/// This method is thread safe. --(void)poolRenderer:(CCRenderer *)renderer; - -/// Add a block to be called when the GPU finishes rendering a frame. -/// This is used to pool rendering resources (renderers, buffers, textures, etc) without stalling the GPU pipeline. --(void)addFrameCompletionHandler:(dispatch_block_t)handler; - -@end - - -@interface CCDirector(Stats) - --(void) createStatsLabel; - -@end - -@interface CCTransition (Private) - -- (void)prepareTransition:(CCScene *)scene; - -@end - -// optimization. Should only be used to read it. Never to write it. -extern NSUInteger __ccNumberOfDraws; diff --git a/cocos2d/CCNode.m b/cocos2d/CCNode.m index f9253504445..36d31f90ed9 100644 --- a/cocos2d/CCNode.m +++ b/cocos2d/CCNode.m @@ -40,7 +40,6 @@ #if CC_PHYSICS #import "CCPhysics+ObjectiveChipmunk.h" #endif -#import "CCDirector_Private.h" #import "CCRenderer_Private.h" #if CC_NODE_RENDER_SUBPIXEL diff --git a/cocos2d/CCRenderTexture.m b/cocos2d/CCRenderTexture.m index f99ff02305a..7b19968176d 100644 --- a/cocos2d/CCRenderTexture.m +++ b/cocos2d/CCRenderTexture.m @@ -33,7 +33,6 @@ #import "Support/CCFileUtils.h" #import "Support/CGPointExtension.h" -#import "CCDirector_Private.h" #import "CCRenderer_Private.h" #import "CCRenderTexture_Private.h" #import "CCRenderDispatch.h" diff --git a/cocos2d/CCRenderer.m b/cocos2d/CCRenderer.m index 3d3b58d6c82..9b6e98c88a6 100644 --- a/cocos2d/CCRenderer.m +++ b/cocos2d/CCRenderer.m @@ -27,7 +27,7 @@ #import "cocos2d.h" #import "CCRenderer_Private.h" #import "CCCache.h" -#import "CCDirector_Private.h" +#import "CCDirector.h" #import "CCRenderDispatch.h" #if __CC_METAL_SUPPORTED_AND_ENABLED diff --git a/cocos2d/CCResponder.m b/cocos2d/CCResponder.m index aa535d32ad1..397edf83f93 100644 --- a/cocos2d/CCResponder.m +++ b/cocos2d/CCResponder.m @@ -29,17 +29,12 @@ #import "CCResponder.h" #import "CCDirector.h" -#import "CCDirector_Private.h" - -// ----------------------------------------------------------------- @implementation CCResponder { } -// ----------------------------------------------------------------- - - (id)init { self = [super init]; diff --git a/cocos2d/CCScene.m b/cocos2d/CCScene.m index 6753c98dd42..d654188308f 100644 --- a/cocos2d/CCScene.m +++ b/cocos2d/CCScene.m @@ -30,7 +30,6 @@ #import "CCScene.h" #import "Support/CGPointExtension.h" #import "CCDirector.h" -#import "CCDirector_Private.h" #if CC_LIGHTING #import "CCLightCollection.h" #endif diff --git a/cocos2d/CCTransition.m b/cocos2d/CCTransition.m index 8eb9836d4c3..dd22a7e2e9a 100644 --- a/cocos2d/CCTransition.m +++ b/cocos2d/CCTransition.m @@ -28,7 +28,7 @@ #import "objc/message.h" #import "CCTransition.h" -#import "CCDirector_Private.h" +#import "CCDirector.h" // ----------------------------------------------------------------- diff --git a/cocos2d/Platforms/Mac/CCDirectorMac.m b/cocos2d/Platforms/Mac/CCDirectorMac.m index 22b6ec3dc67..448257d558e 100644 --- a/cocos2d/Platforms/Mac/CCDirectorMac.m +++ b/cocos2d/Platforms/Mac/CCDirectorMac.m @@ -41,8 +41,6 @@ #import "../../CCShader.h" #import "../../ccFPSImages.h" - -#import "CCDirector_Private.h" #import "CCRenderer_Private.h" #import "CCRenderDispatch.h" diff --git a/cocos2d/Platforms/Mac/CCGLView.m b/cocos2d/Platforms/Mac/CCGLView.m index 9bb6d3dff25..10776aa9295 100644 --- a/cocos2d/Platforms/Mac/CCGLView.m +++ b/cocos2d/Platforms/Mac/CCGLView.m @@ -39,9 +39,6 @@ #import "../../ccConfig.h" #import "../../ccMacros.h" -#import "CCDirector_Private.h" - - @interface CCGLViewFence : NSObject /// Is the fence ready to be inserted? diff --git a/cocos2d/Platforms/iOS/CCAppDelegate.m b/cocos2d/Platforms/iOS/CCAppDelegate.m index b82831d33c9..f7f322b70ad 100644 --- a/cocos2d/Platforms/iOS/CCAppDelegate.m +++ b/cocos2d/Platforms/iOS/CCAppDelegate.m @@ -29,7 +29,7 @@ #import "CCAppDelegate.h" #import "CCTexture.h" #import "CCFileUtils.h" -#import "CCDirector_Private.h" +#import "CCDirector.h" #import "CCScheduler.h" #import "CCGLView.h" diff --git a/cocos2d/Platforms/iOS/CCDirectorIOS.m b/cocos2d/Platforms/iOS/CCDirectorIOS.m index db75ad8945a..2d06ae3b20c 100644 --- a/cocos2d/Platforms/iOS/CCDirectorIOS.m +++ b/cocos2d/Platforms/iOS/CCDirectorIOS.m @@ -53,8 +53,6 @@ #import "../../Support/CCProfiling.h" #endif -#import "CCDirector_Private.h" - #pragma mark - #pragma mark Director diff --git a/cocos2d/Platforms/iOS/CCGLView.m b/cocos2d/Platforms/iOS/CCGLView.m index 10bca0d3ecd..997b3349a95 100644 --- a/cocos2d/Platforms/iOS/CCGLView.m +++ b/cocos2d/Platforms/iOS/CCGLView.m @@ -78,7 +78,6 @@ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE #import "../../CCConfiguration.h" #import "CCScene.h" -#import "CCDirector_Private.h" #import "CCRenderDispatch.h" diff --git a/cocos2d/Platforms/iOS/CCMetalView.m b/cocos2d/Platforms/iOS/CCMetalView.m index 53a5e5f06a5..44c82ac827e 100644 --- a/cocos2d/Platforms/iOS/CCMetalView.m +++ b/cocos2d/Platforms/iOS/CCMetalView.m @@ -11,7 +11,6 @@ #import "../../CCConfiguration.h" #import "CCScene.h" -#import "CCDirector_Private.h" #import "CCMetalSupport_Private.h" From 1ca28a1316d095c686ccc93a72f5beb3d66a91bb Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 20:49:36 +0300 Subject: [PATCH 56/94] Update read-me with grammer fixes and headers --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2fa09b86140..2b5fe8c58ae 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ SpriteBuilder also allows you to update the Cocos2D version in your project, to You can find the full Cocos2D documentation and user guide at our [documentation page](http://cocos2d-objc.org/docs/). **Important:** -Since 3.5 Cocos2D changed ideology a bit. First of all, Android support is gone. It happened due to Apportable company bankraptcy, they were providing the UIKit implementation for Android, but it broken since XCode 7.2. Android support is unlikely to be back. Now Cocos2D is fully open-oriented with rich Metal support and other cool features that are available only on Apple platform. +Since 3.5 Cocos2D changed ideology a bit. First of all, Android support is gone. It happened due to Apportable company bankraptcy, they were providing the UIKit implementation for Android, but it broken since XCode 7.2. Android support is unlikely to be back. Now Cocos2D is fully Apple-oriented with rich Metal support and other cool features that are available only on Apple platform. All releases will be incremental now. Even if backwards compatibility will broke it will be a matter of changing a few lines in code. Backwards compatibility are guaranteed for now. @@ -72,6 +72,7 @@ All releases will be incremental now. Even if backwards compatibility will broke * Bug fixed for Siri dictation. * CCWarnings are fixed. * CCRenderTexture shader is now forwarded to sprite. + * Most of the private heads in core cocos2d are now merged with public ones. It is done due to maintaing cocos2d reputation as a very customizable engine. Features ------------- From f4fa0a256f6f2c875e3d4fb23426d4873e74c2f7 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 21:12:58 +0300 Subject: [PATCH 57/94] reorgonize CCDirector methods --- cocos2d/CCDirector.m | 284 +++++++++++++++++++++---------------------- 1 file changed, 140 insertions(+), 144 deletions(-) diff --git a/cocos2d/CCDirector.m b/cocos2d/CCDirector.m index 890f6fa5a86..166e71ae505 100644 --- a/cocos2d/CCDirector.m +++ b/cocos2d/CCDirector.m @@ -76,6 +76,71 @@ extern NSString * cocos2dVersion(void); + + +@interface CCFPSLabel : CCNode +@property(nonatomic, strong) NSString *string; +@end + +static const int CCFPSLabelChars = 12; +static const float CCFPSLabelItemWidth = 12; +static const float CCFPSLabelItemHeight = 32; + +@implementation CCFPSLabel { + CCSpriteVertexes _charVertexes[CCFPSLabelChars]; +} + +-(instancetype)initWithString:(NSString *)string texture:(CCTexture *)texture +{ + if((self = [super init])){ + _string = string; + + self.texture = texture; + self.shader = [CCShader positionTextureColorShader]; + + float w = CCFPSLabelItemWidth; + float h = CCFPSLabelItemHeight; + + float tx = CCFPSLabelItemWidth/texture.contentSize.width; + float ty = CCFPSLabelItemHeight/texture.contentSize.height; + + for(int i=0; i -@property(nonatomic, strong) NSString *string; -@end - -static const int CCFPSLabelChars = 12; -static const float CCFPSLabelItemWidth = 12; -static const float CCFPSLabelItemHeight = 32; - -@implementation CCFPSLabel { - CCSpriteVertexes _charVertexes[CCFPSLabelChars]; -} - --(instancetype)initWithString:(NSString *)string texture:(CCTexture *)texture -{ - if((self = [super init])){ - _string = string; - - self.texture = texture; - self.shader = [CCShader positionTextureColorShader]; - - float w = CCFPSLabelItemWidth; - float h = CCFPSLabelItemHeight; - - float tx = CCFPSLabelItemWidth/texture.contentSize.width; - float ty = CCFPSLabelItemHeight/texture.contentSize.height; - - for(int i=0; i CC_DIRECTOR_STATS_INTERVAL) - { - NSString *spfstr = [[NSString alloc] initWithFormat:@"%.3f", _secondsPerFrame]; - [_SPFLabel setString:spfstr]; - - _frameRate = _frames/_accumDt; - _frames = 0; - _accumDt = 0; - -// sprintf(format,"%.1f",frameRate); -// [FPSLabel setCString:format]; - - NSString *fpsstr = [[NSString alloc] initWithFormat:@"%.1f", _frameRate]; - [_FPSLabel setString:fpsstr]; - - // Subtract one for the stat label's own batch. This caused a lot of confusion on the forums... - NSString *draws = [[NSString alloc] initWithFormat:@"%4lu", (unsigned long)__ccNumberOfDraws - 1]; - [_drawsLabel setString:draws]; - } - - // TODO should pass as a parameter instead? Requires changing method signatures... - CCRenderer *renderer = [CCRenderer currentRenderer]; - [_drawsLabel visit:renderer parentTransform:&_projectionMatrix]; - [_FPSLabel visit:renderer parentTransform:&_projectionMatrix]; - [_SPFLabel visit:renderer parentTransform:&_projectionMatrix]; - } - - __ccNumberOfDraws = 0; + _frames++; + _accumDt += _dt; + + if( _displayStats ) { + // Ms per Frame + + if( _accumDt > CC_DIRECTOR_STATS_INTERVAL) + { + NSString *spfstr = [[NSString alloc] initWithFormat:@"%.3f", _secondsPerFrame]; + [_SPFLabel setString:spfstr]; + + _frameRate = _frames/_accumDt; + _frames = 0; + _accumDt = 0; + + // sprintf(format,"%.1f",frameRate); + // [FPSLabel setCString:format]; + + NSString *fpsstr = [[NSString alloc] initWithFormat:@"%.1f", _frameRate]; + [_FPSLabel setString:fpsstr]; + + // Subtract one for the stat label's own batch. This caused a lot of confusion on the forums... + NSString *draws = [[NSString alloc] initWithFormat:@"%4lu", (unsigned long)__ccNumberOfDraws - 1]; + [_drawsLabel setString:draws]; + } + + // TODO should pass as a parameter instead? Requires changing method signatures... + CCRenderer *renderer = [CCRenderer currentRenderer]; + [_drawsLabel visit:renderer parentTransform:&_projectionMatrix]; + [_FPSLabel visit:renderer parentTransform:&_projectionMatrix]; + [_SPFLabel visit:renderer parentTransform:&_projectionMatrix]; + } + + __ccNumberOfDraws = 0; } -(void) calculateMPF { - struct timeval now; - gettimeofday( &now, NULL); - - _secondsPerFrame = (now.tv_sec - _lastUpdate.tv_sec) + (now.tv_usec - _lastUpdate.tv_usec) / 1000000.0f; + struct timeval now; + gettimeofday( &now, NULL); + + _secondsPerFrame = (now.tv_sec - _lastUpdate.tv_sec) + (now.tv_usec - _lastUpdate.tv_usec) / 1000000.0f; } -(void)getFPSImageData:(unsigned char**)datapointer length:(NSUInteger*)len contentScale:(CGFloat *)scale { - *datapointer = cc_fps_images_png; - *len = cc_fps_images_len(); - *scale = 1.0; + *datapointer = cc_fps_images_png; + *len = cc_fps_images_len(); + *scale = 1.0; } -(void) createStatsLabel { - if( _FPSLabel && _SPFLabel ) { - _FPSLabel = nil; - _SPFLabel = nil; - _drawsLabel = nil; - - [[CCFileUtils sharedFileUtils] purgeCachedEntries]; - } - - CCTexturePixelFormat currentFormat = [CCTexture defaultAlphaPixelFormat]; - [CCTexture setDefaultAlphaPixelFormat:CCTexturePixelFormat_RGBA4444]; - - unsigned char *data; - NSUInteger data_len; - CGFloat contentScale = 0; - [self getFPSImageData:&data length:&data_len contentScale:&contentScale]; - - NSData *nsdata = [NSData dataWithBytes:data length:data_len]; - CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData( (__bridge CFDataRef) nsdata); - CGImageRef imageRef = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault); - CCTexture *texture = [[CCTexture alloc] initWithCGImage:imageRef contentScale:contentScale]; - CGDataProviderRelease(imgDataProvider); - CGImageRelease(imageRef); - - _FPSLabel = [[CCFPSLabel alloc] initWithString:@"00.0" texture:texture]; - _SPFLabel = [[CCFPSLabel alloc] initWithString:@"0.000" texture:texture]; - _drawsLabel = [[CCFPSLabel alloc] initWithString:@"000" texture:texture]; - - [CCTexture setDefaultAlphaPixelFormat:currentFormat]; - - CGPoint offset = [self convertToGL:ccp(0, (self.flipY == 1.0) ? 0 : self.view.bounds.size.height)]; - CGPoint pos = ccpAdd(CC_DIRECTOR_STATS_POSITION, offset); - [_drawsLabel setPosition: ccpAdd( ccp(0,34), pos ) ]; - [_SPFLabel setPosition: ccpAdd( ccp(0,17), pos ) ]; - [_FPSLabel setPosition: pos ]; + if( _FPSLabel && _SPFLabel ) { + _FPSLabel = nil; + _SPFLabel = nil; + _drawsLabel = nil; + + [[CCFileUtils sharedFileUtils] purgeCachedEntries]; + } + + CCTexturePixelFormat currentFormat = [CCTexture defaultAlphaPixelFormat]; + [CCTexture setDefaultAlphaPixelFormat:CCTexturePixelFormat_RGBA4444]; + + unsigned char *data; + NSUInteger data_len; + CGFloat contentScale = 0; + [self getFPSImageData:&data length:&data_len contentScale:&contentScale]; + + NSData *nsdata = [NSData dataWithBytes:data length:data_len]; + CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData( (__bridge CFDataRef) nsdata); + CGImageRef imageRef = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault); + CCTexture *texture = [[CCTexture alloc] initWithCGImage:imageRef contentScale:contentScale]; + CGDataProviderRelease(imgDataProvider); + CGImageRelease(imageRef); + + _FPSLabel = [[CCFPSLabel alloc] initWithString:@"00.0" texture:texture]; + _SPFLabel = [[CCFPSLabel alloc] initWithString:@"0.000" texture:texture]; + _drawsLabel = [[CCFPSLabel alloc] initWithString:@"000" texture:texture]; + + [CCTexture setDefaultAlphaPixelFormat:currentFormat]; + + CGPoint offset = [self convertToGL:ccp(0, (self.flipY == 1.0) ? 0 : self.view.bounds.size.height)]; + CGPoint pos = ccpAdd(CC_DIRECTOR_STATS_POSITION, offset); + [_drawsLabel setPosition: ccpAdd( ccp(0,34), pos ) ]; + [_SPFLabel setPosition: ccpAdd( ccp(0,17), pos ) ]; + [_FPSLabel setPosition: pos ]; } @end From d3ff3b71fb4625678922eecf375b5491706c1597 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 21:13:55 +0300 Subject: [PATCH 58/94] Remove relative header --- cocos2d-ui/CCProgressNode.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocos2d-ui/CCProgressNode.m b/cocos2d-ui/CCProgressNode.m index a938b6ebd74..ced8b071101 100644 --- a/cocos2d-ui/CCProgressNode.m +++ b/cocos2d-ui/CCProgressNode.m @@ -30,7 +30,7 @@ #import "CCTextureCache.h" #import "CCShader.h" #import "CCDirector.h" -#import "Support/CGPointExtension.h" +#import "CGPointExtension.h" @implementation CCProgressNode { CCProgressNodeType _type; From 7a41874e80777227c0cd07881cf3bfc5168ea345 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Mon, 29 Feb 2016 21:23:01 +0300 Subject: [PATCH 59/94] update -ext --- cocos2d-ext/CCBReader/CCAnimationManager.m | 4 ++-- cocos2d-ext/CCBReader/CCBReader.m | 17 +++++++++++------ cocos2d-ext/CCChipmunkPhysics/CCPhysicsBody.m | 2 +- cocos2d-ext/CCChipmunkPhysics/CCPhysicsJoint.m | 2 +- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/cocos2d-ext/CCBReader/CCAnimationManager.m b/cocos2d-ext/CCBReader/CCAnimationManager.m index df097e4df61..eb352ff5243 100644 --- a/cocos2d-ext/CCBReader/CCAnimationManager.m +++ b/cocos2d-ext/CCBReader/CCAnimationManager.m @@ -31,7 +31,7 @@ #import "CCBKeyframe.h" #import -#import "CCDirector_Private.h" +#import "CCDirector.h" #import "CCBReader_Private.h" #import "CCActionManager.h" @@ -248,7 +248,7 @@ - (CCActionInterval*)actionFromKeyframe0:(CCBKeyframe*)kf0 andKeyframe1:(CCBKeyf } } #endif - } else { + else { CCLOG(@"CCBReader: Failed to create animation for property: %@", name); } diff --git a/cocos2d-ext/CCBReader/CCBReader.m b/cocos2d-ext/CCBReader/CCBReader.m index f36e6187750..c63df3df5ef 100644 --- a/cocos2d-ext/CCBReader/CCBReader.m +++ b/cocos2d-ext/CCBReader/CCBReader.m @@ -33,9 +33,11 @@ #import "CCBKeyframe.h" #import "CCBLocalizationManager.h" #import "CCBReader_Private.h" -#import "CCNode_Private.h" -#import "CCDirector_Private.h" +#import "CCNode.h" +#import "CCDirector.h" +#if CC_PHYSICS #import "CCPhysics+ObjectiveChipmunk.h" +#endif #import "CCAnimationManager_Private.h" #if CC_EFFECTS #import "CCEffectStack.h" @@ -1165,6 +1167,7 @@ -(void)postDeserialization } } +#if CC_PHYSICS -(void)readJoints { int numJoints = readIntWithSign(self, NO); @@ -1175,10 +1178,8 @@ -(void)readJoints } } - -(void)readJoint { - CCPhysicsJoint * joint = nil; NSString* className = [self readCachedString]; @@ -1320,7 +1321,7 @@ -(void)readJoint [joint resetScale:NodeToPhysicsScale(nodeBodyA).x]; } - +#endif -(CCNode*) nodeFromClassName:(NSString*)nodeClassName { Class nodeClass = NSClassFromString(nodeClassName); @@ -1521,6 +1522,7 @@ - (CCNode*) readNodeGraphParent:(CCNode*)parent animatedProps = NULL; +#if CC_PHYSICS // Read physics BOOL hasPhysicsBody = readBool(self); if (hasPhysicsBody) @@ -1645,7 +1647,7 @@ - (CCNode*) readNodeGraphParent:(CCNode*)parent //#endif } - +#endif // Read and add children int numChildren = readIntWithSign(self, NO); for (int i = 0; i < numChildren; i++) @@ -1809,7 +1811,10 @@ - (CCNode*) readFileWithCleanUp:(BOOL)cleanUp actionManagers:(NSMutableDictionar actionManagers = am; CCNode* node = [self readNodeGraphParent:NULL]; + +#if CC_PHYSICS [self readJoints]; +#endif [self postDeserialization]; [actionManagers setObject:self.animationManager forKey:[NSValue valueWithPointer:(__bridge const void *)(node)]]; diff --git a/cocos2d-ext/CCChipmunkPhysics/CCPhysicsBody.m b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsBody.m index d5ddfe1f272..e7f3189e89a 100644 --- a/cocos2d-ext/CCChipmunkPhysics/CCPhysicsBody.m +++ b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsBody.m @@ -27,7 +27,7 @@ #import "CCPhysicsBody.h" #import "CCPhysics+ObjectiveChipmunk.h" -#import "CCNode_Private.h" +#import "CCNode.h" @interface CCNode(Private) diff --git a/cocos2d-ext/CCChipmunkPhysics/CCPhysicsJoint.m b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsJoint.m index e2e32df2b18..bf70468ca9f 100644 --- a/cocos2d-ext/CCChipmunkPhysics/CCPhysicsJoint.m +++ b/cocos2d-ext/CCChipmunkPhysics/CCPhysicsJoint.m @@ -24,7 +24,7 @@ #import "CCPhysicsJoint.h" #import "CCPhysics+ObjectiveChipmunk.h" -#import "CCNode_Private.h" +#import "CCNode.h" @interface CCNode(Private) -(CGAffineTransform)nonRigidTransform; From b61f989dbcb3182a787ecf182f6d81ff62c168f1 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 3 Mar 2016 20:57:26 -0800 Subject: [PATCH 60/94] Fixed contentScale logic while parsing the tile map file --- cocos2d-ext/TileMaps/CCTMXXMLParser.m | 27 ++++++++++++++------------ cocos2d-ext/TileMaps/CCTiledMapLayer.m | 5 ++--- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/cocos2d-ext/TileMaps/CCTMXXMLParser.m b/cocos2d-ext/TileMaps/CCTMXXMLParser.m index b267793889f..661a1161629 100644 --- a/cocos2d-ext/TileMaps/CCTMXXMLParser.m +++ b/cocos2d-ext/TileMaps/CCTMXXMLParser.m @@ -268,11 +268,11 @@ -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName name tileset.firstGid = _currentFirstGID; _currentFirstGID = 0; } - tileset.spacing = [[attributeDict objectForKey:@"spacing"] intValue]/_contentScale; - tileset.margin = [[attributeDict objectForKey:@"margin"] intValue]/_contentScale; + tileset.spacing = [[attributeDict objectForKey:@"spacing"] intValue] / _contentScale; + tileset.margin = [[attributeDict objectForKey:@"margin"] intValue] / _contentScale; CGSize s; - s.width = [[attributeDict objectForKey:@"tilewidth"] intValue]/_contentScale; - s.height = [[attributeDict objectForKey:@"tileheight"] intValue]/_contentScale; + s.width = [[attributeDict objectForKey:@"tilewidth"] intValue] / _contentScale; + s.height = [[attributeDict objectForKey:@"tileheight"] intValue] / _contentScale; tileset.tileSize = s; tileset.tileOffset = CGPointZero; //default offset (0,0) tileset.contentScale = _contentScale; @@ -303,6 +303,8 @@ -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName name CGSize s; s.width = [[attributeDict objectForKey:@"width"] intValue]; s.height = [[attributeDict objectForKey:@"height"] intValue]; + + // The layer size is the row * column layer.layerSize = s; layer.visible = ![[attributeDict objectForKey:@"visible"] isEqualToString:@"0"]; @@ -313,9 +315,10 @@ -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName name layer.opacity = 1.0; } - int x = [[attributeDict objectForKey:@"x"] intValue]; - int y = [[attributeDict objectForKey:@"y"] intValue]; - layer.offset = ccp(x,y); + CGPoint offset; + offset.x = [[attributeDict objectForKey:@"offsetx"] floatValue]; + offset.y = [[attributeDict objectForKey:@"offsety"] floatValue]; + layer.offset = ccpMult(offset , 1 / _contentScale); [_layers addObject:layer]; @@ -327,9 +330,9 @@ -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName name CCTiledMapObjectGroup *objectGroup = [[CCTiledMapObjectGroup alloc] init]; objectGroup.groupName = [attributeDict objectForKey:@"name"]; CGPoint positionOffset; - positionOffset.x = [[attributeDict objectForKey:@"x"] intValue] * _tileSize.width; - positionOffset.y = [[attributeDict objectForKey:@"y"] intValue] * _tileSize.height; - objectGroup.positionOffset = positionOffset; + positionOffset.x = [[attributeDict objectForKey:@"offsetx"] floatValue]; + positionOffset.y = [[attributeDict objectForKey:@"offsety"] floatValue]; + objectGroup.positionOffset = ccpMult(positionOffset, 1 / _contentScale); [_objectGroups addObject:objectGroup]; @@ -386,14 +389,14 @@ -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName name // X NSString *value = [attributeDict objectForKey:@"x"]; if( value ) { - int x = [value intValue] + objectGroup.positionOffset.x; + int x = [value intValue] / _contentScale + objectGroup.positionOffset.x; [dict setObject:[NSNumber numberWithInt:x] forKey:@"x"]; } // Y value = [attributeDict objectForKey:@"y"]; if( value ) { - int y = [value intValue] + objectGroup.positionOffset.y; + int y = [value intValue] / _contentScale + objectGroup.positionOffset.y; // Correct y position. (Tiled uses Flipped, cocos2d uses Standard) y = (_mapSize.height * _tileSize.height) - y - [[attributeDict objectForKey:@"height"] intValue]; diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer.m b/cocos2d-ext/TileMaps/CCTiledMapLayer.m index ac63c439354..499f0e782a6 100644 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer.m +++ b/cocos2d-ext/TileMaps/CCTiledMapLayer.m @@ -97,14 +97,13 @@ -(id) initWithTilesetInfo:(CCTiledMapTilesetInfo*)tilesetInfo layerInfo:(CCTiled _tileWidth = mapInfo.tileSize.width; _tileHeight = mapInfo.tileSize.height; _layerOrientation = mapInfo.orientation; - - CGFloat pixelsToPoints = tex ? 1.0/tex.contentScale : 1.0; + // offset (after layer orientation is set); CGPoint offset = [self calculateLayerOffset:layerInfo.offset]; [self setPosition:ccpMult(offset, pixelsToPoints)]; - [self setContentSize:CGSizeMake( _mapColumns * _tileWidth * pixelsToPoints, _mapRows * _tileHeight * pixelsToPoints )]; + [self setContentSize:CGSizeMake( _mapColumns * _tileWidth, _mapRows * _tileHeight)]; _useAutomaticVertexZ= NO; _vertexZvalue = 0; From 8d36ae4089d14f60abe005ce44f297f0f577b3cb Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 3 Mar 2016 21:27:12 -0800 Subject: [PATCH 61/94] FIX the position setting of CCTMXLayer --- cocos2d-ext/TileMaps/CCTiledMapLayer.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer.m b/cocos2d-ext/TileMaps/CCTiledMapLayer.m index 499f0e782a6..c78bf91b9cb 100644 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer.m +++ b/cocos2d-ext/TileMaps/CCTiledMapLayer.m @@ -101,7 +101,7 @@ -(id) initWithTilesetInfo:(CCTiledMapTilesetInfo*)tilesetInfo layerInfo:(CCTiled // offset (after layer orientation is set); CGPoint offset = [self calculateLayerOffset:layerInfo.offset]; - [self setPosition:ccpMult(offset, pixelsToPoints)]; + [self setPosition:offset]; [self setContentSize:CGSizeMake( _mapColumns * _tileWidth, _mapRows * _tileHeight)]; From 9768a5c9b482599f542ea45338be039dbf049b9e Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 5 Mar 2016 18:53:17 +0300 Subject: [PATCH 62/94] Fix for headers --- cocos2d/Platforms/iOS/CCAppDelegate.m | 1 + 1 file changed, 1 insertion(+) diff --git a/cocos2d/Platforms/iOS/CCAppDelegate.m b/cocos2d/Platforms/iOS/CCAppDelegate.m index f7f322b70ad..fe5ae3e4718 100644 --- a/cocos2d/Platforms/iOS/CCAppDelegate.m +++ b/cocos2d/Platforms/iOS/CCAppDelegate.m @@ -30,6 +30,7 @@ #import "CCTexture.h" #import "CCFileUtils.h" #import "CCDirector.h" +#import "CCConfiguration.h" #import "CCScheduler.h" #import "CCGLView.h" From d88bd932ee75d9cb1b324614adbdca9adae0362a Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sat, 5 Mar 2016 19:27:28 +0300 Subject: [PATCH 63/94] Update wiki and readme --- README.md | 41 +++++------------------------------------ 1 file changed, 5 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 2b5fe8c58ae..785e3d3dee5 100644 --- a/README.md +++ b/README.md @@ -37,42 +37,11 @@ SpriteBuilder also allows you to update the Cocos2D version in your project, to You can find the full Cocos2D documentation and user guide at our [documentation page](http://cocos2d-objc.org/docs/). -**Important:** -Since 3.5 Cocos2D changed ideology a bit. First of all, Android support is gone. It happened due to Apportable company bankraptcy, they were providing the UIKit implementation for Android, but it broken since XCode 7.2. Android support is unlikely to be back. Now Cocos2D is fully Apple-oriented with rich Metal support and other cool features that are available only on Apple platform. - -All releases will be incremental now. Even if backwards compatibility will broke it will be a matter of changing a few lines in code. Backwards compatibility are guaranteed for now. - -**Changelog for 3.5 (Sits in README for clearing things up):** - * Hacky templates are gone, official installer is introduced - * Cocos2D is now running on native resolutions on all devices. - * XIB Launch screen are used by default. - * All android-relative and caused-by-android code is gone. - * Image assets support (enables user to load images with native content scale and also makes your app really small in size due to App Thinning technology). - * 3D Touch support. - * App thinning support. - * CCTouch are gone, touch dispatching is gone too, so perfomance on this is much better. Native touches are now used instead. - * CCTransition are now meant to be overriden. Creating custom trunstions is easy as ever. Small refactoring required - Rename CCTransition to CCDefaultTransition everywhere. - * ObjectAL is not shipped in bundle with Cocos2D anymore, because it is marked as deprecated by Apple. You are free to choose now, which sound engine you prefer. - * Chipmunk physics is an option now. There are still a lot of love paid for Box2D. You are not forced to use particular physics engine anymore. Chipmunk is still available and integrated, but served as extension. - * CCLayoutBox takes transformations into account. - * Mac compilation out-of-the-box is back. - * TVOS support introduced. - * Metal rendering back and is now working. - * All tile map code is now an extension. There are a lot of better frameworks which can be used instead of cocos2d native tilemap code. - * CCScrollView sends delegate messages while animating too. - * A lot of nodes now moved to extension. Such as CCParallaxNode, CCPackages, CCParticles, CCClippingNode, CCMotionStreak etc. - * Cocos2D can be now used as a drop-in solution, no more husling with XCode subprojects etc. - * Start-up code is reconsidireted. Unfortunately, we still have to use CCAppDelegate, but it will be gone in next release. `startScene` method is gone. Why? Because now you can stack scenes in the start-up, this allowing you, for example, launch a level from 3D touch shortcut with a stack level of two, and put `MainScene` into stack level 1. This won't break your app in any way, allowing all of buttons like "Home", "Back" etc working without any new code. - * CCEffects are now served as extension. - * SSZipArchive dependency is gone in default bundle. - * SpriteBuilder is an option now. If you don't want to use it, there will be no related files. - * CCTableView is improved. - * New control is introduced in -ui: CCPotentioMeter. - * Repo is generally cleaned. - * Bug fixed for Siri dictation. - * CCWarnings are fixed. - * CCRenderTexture shader is now forwarded to sprite. - * Most of the private heads in core cocos2d are now merged with public ones. It is done due to maintaing cocos2d reputation as a very customizable engine. +Important: +--------------------- +Version 3.5 is introduced. +[See release notes](https://github.com/cocos2d/cocos2d-objc/wiki/Cocos2D-3.5-Release-notes) + Features ------------- From b081ed9a47750093eb71bdc2d10cedefba8c7aa4 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 6 Mar 2016 12:51:46 +0300 Subject: [PATCH 64/94] #1351 --- cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m b/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m index 9fa1ca0cd02..49472eee35e 100644 --- a/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m +++ b/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m @@ -177,6 +177,10 @@ - (void)keyboardWasShown:(NSNotification*)notification - (void) keyboardWillBeHidden:(NSNotification*) notification { _keyboardIsShown = NO; + BOOL focusOnTextField = _textField.isEditing; + + if (focusOnTextField) + [self endFocusingOnTextField]; } From e33b972ca338e8b9f0aa2204323e00d0c2bbd063 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 6 Mar 2016 20:02:51 +0300 Subject: [PATCH 65/94] Clean up the rest of android stuff --- cocos2d-ext/CCClippingNode/CCClippingNode.m | 36 +------------------ cocos2d-ext/CCPackages/CCPackage.h | 2 +- cocos2d-ext/CCPackages/CCPackageHelper.h | 2 +- cocos2d-ext/CCPackages/CCPackageHelper.m | 4 +-- cocos2d-ext/CCPackages/CCPackageManager.h | 2 +- .../CCParticles/CCParticleSystemBase.m | 2 +- cocos2d-ext/TileMaps/CCTiledMapLayer.h | 4 --- cocos2d-ext/TileMaps/CCTiledMapLayer.m | 1 - cocos2d-ui-tests/MainMenu.m | 4 --- cocos2d-ui/CCButton.m | 2 +- cocos2d-ui/CCControl.m | 2 +- cocos2d-ui/CCSlider.m | 2 +- cocos2d-ui/CCTextField.h | 14 ++------ cocos2d-ui/CCTextField.m | 16 --------- .../Platform/iOS/CCPlatformTextFieldIOS.m | 28 --------------- 15 files changed, 11 insertions(+), 110 deletions(-) diff --git a/cocos2d-ext/CCClippingNode/CCClippingNode.m b/cocos2d-ext/CCClippingNode/CCClippingNode.m index 672734b0f7f..8671d10f7d8 100644 --- a/cocos2d-ext/CCClippingNode/CCClippingNode.m +++ b/cocos2d-ext/CCClippingNode/CCClippingNode.m @@ -83,7 +83,7 @@ - (id)initWithStencil:(CCNode *)stencil }); // warn if the stencil buffer is not enabled if (_stencilBits <= 0) { -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS CCLOGWARN(@"Stencil buffer is not enabled; enable it by passing GL_DEPTH24_STENCIL8_OES into the depthFormat parrameter when initializing CCGLView. Until then, everything will be drawn without stencil."); #elif __CC_PLATFORM_MAC CCLOGWARN(@"Stencil buffer is not enabled; enable it by setting the Stencil attribue to 8 bit in the Attributes inspector of the CCGLView view object in MainMenu.xib, or programmatically by adding NSOpenGLPFAStencilSize and 8 in the NSOpenGLPixelFormatAttribute array of the NSOpenGLPixelFormat used when initializing CCGLView. Until then, everything will be drawn without stencil."); @@ -120,44 +120,10 @@ - (void)onExit - (void)visit:(CCRenderer *)renderer parentTransform:(const GLKMatrix4 *)parentTransform { - // if stencil buffer disabled -#if !__CC_PLATFORM_ANDROID && __CC_PLATFORM_ANDROID_FIXME - if (_stencilBits < 1) { - // draw everything, as if there where no stencil - [super visit:renderer parentTransform:parentTransform]; - return; - } - - // return fast (draw nothing, or draw everything if in inverted mode) if: - // - nil stencil node - // - or stencil node invisible: - if (!_stencil || !_stencil.visible) { - if (_inverted) { - // draw everything - [super visit:renderer parentTransform:parentTransform]; - } - return; - } -#endif - // store the current stencil layer (position in the stencil buffer), // this will allow nesting up to n CCClippingNode, // where n is the number of bits of the stencil buffer. static GLint layer = -1; -#if !__CC_PLATFORM_ANDROID && __CC_PLATFORM_ANDROID_FIXME - // all the _stencilBits are in use? - if (layer + 1 == _stencilBits) { - // warn once - static dispatch_once_t once; - dispatch_once(&once, ^{ - CCLOGWARN(@"Nesting more than %d stencils is not supported. Everything will be drawn without stencil for this node and its childs.", _stencilBits); - }); - // draw everything, as if there where no stencil - [super visit:renderer parentTransform:parentTransform]; - return; - } -#endif - /////////////////////////////////// // INIT diff --git a/cocos2d-ext/CCPackages/CCPackage.h b/cocos2d-ext/CCPackages/CCPackage.h index 73296857832..aadaa91f843 100644 --- a/cocos2d-ext/CCPackages/CCPackage.h +++ b/cocos2d-ext/CCPackages/CCPackage.h @@ -51,7 +51,7 @@ @property (nonatomic, copy, readonly) NSString *resolution; /** - * OS of the package e.g. iOS, Android, Mac + * OS of the package e.g. iOS, Mac * @since v3.3 and later * @see standardIdentifier */ diff --git a/cocos2d-ext/CCPackages/CCPackageHelper.h b/cocos2d-ext/CCPackages/CCPackageHelper.h index 486fb6c7be9..dd48a5fe3fa 100644 --- a/cocos2d-ext/CCPackages/CCPackageHelper.h +++ b/cocos2d-ext/CCPackages/CCPackageHelper.h @@ -6,7 +6,7 @@ @interface CCPackageHelper : NSObject /** - * Returns the current OS, possible values: `iOS` or `Android`. + * Returns the current OS, possible values: `iOS`. * @note On OS X this will also return `iOS`. * @since v3.3 and later */ diff --git a/cocos2d-ext/CCPackages/CCPackageHelper.m b/cocos2d-ext/CCPackages/CCPackageHelper.m index 756a51f5d35..41496ea64a7 100644 --- a/cocos2d-ext/CCPackages/CCPackageHelper.m +++ b/cocos2d-ext/CCPackages/CCPackageHelper.m @@ -8,9 +8,7 @@ @implementation CCPackageHelper + (NSString *)currentOS { -#if __CC_PLATFORM_ANDROID - return @"Android"; -#elif __CC_PLATFORM_MAC || __CC_PLATFORM_IOS +#if __CC_PLATFORM_MAC || __CC_PLATFORM_IOS return @"iOS"; #endif return nil; diff --git a/cocos2d-ext/CCPackages/CCPackageManager.h b/cocos2d-ext/CCPackages/CCPackageManager.h index 2bac44ccc8c..c5c805f7618 100644 --- a/cocos2d-ext/CCPackages/CCPackageManager.h +++ b/cocos2d-ext/CCPackages/CCPackageManager.h @@ -82,7 +82,7 @@ * * @param name Name of the package * @param resolution SpriteBuilder resolution string (ie `phonehd`) - * @param os operating system string (ie iOS, Android, Mac) + * @param os operating system string (ie iOS, Mac) * @since v3.3 and later * @see CCPackage */ diff --git a/cocos2d-ext/CCParticles/CCParticleSystemBase.m b/cocos2d-ext/CCParticles/CCParticleSystemBase.m index 6afa3545046..4cef2230552 100644 --- a/cocos2d-ext/CCParticles/CCParticleSystemBase.m +++ b/cocos2d-ext/CCParticles/CCParticleSystemBase.m @@ -264,7 +264,7 @@ -(id) initWithDictionary:(NSDictionary *)dictionary path:(NSString*)dirname NSAssert( deflated != NULL, @"CCParticleSystem: error ungzipping textureImageData"); NSData *data = [[NSData alloc] initWithBytes:deflated length:deflatedLen]; -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS BOOL png = [[[dictionary valueForKey:@"textureFileName"] lowercaseString] hasSuffix:@".png"]; CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); CGImageRef image = (png) ? CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault) : CGImageCreateWithJPEGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault) ; diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer.h b/cocos2d-ext/TileMaps/CCTiledMapLayer.h index 0feb1e0e039..bc8526fec67 100644 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer.h +++ b/cocos2d-ext/TileMaps/CCTiledMapLayer.h @@ -29,10 +29,6 @@ #import "CCTMXXMLParser.h" #import "CCTiledMap.h" -#if __CC_PLATFORM_ANDROID -#import "CCMathTypesAndroid.h" -#endif - @class CCTiledMapInfo; @class CCTiledMapLayerInfo; @class CCTiledMapTilesetInfo; diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer.m b/cocos2d-ext/TileMaps/CCTiledMapLayer.m index c78bf91b9cb..48ba5d2334d 100644 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer.m +++ b/cocos2d-ext/TileMaps/CCTiledMapLayer.m @@ -39,7 +39,6 @@ #import "Support/CGPointExtension.h" #import "CCTiledMapLayer_Private.h" #import "CCTexture.h" -// #import "CCMathTypesAndroid.h" #pragma mark - #pragma mark CCTMXLayer diff --git a/cocos2d-ui-tests/MainMenu.m b/cocos2d-ui-tests/MainMenu.m index cb746098c81..cf4549f669f 100644 --- a/cocos2d-ui-tests/MainMenu.m +++ b/cocos2d-ui-tests/MainMenu.m @@ -28,11 +28,7 @@ #import "../cocos2d/CCMacros.h" #import -#if __CC_PLATFORM_ANDROID -#define kCCTestMenuItemHeight 88 -#else #define kCCTestMenuItemHeight 44 -#endif static CGPoint scrollPosition; diff --git a/cocos2d-ui/CCButton.m b/cocos2d-ui/CCButton.m index 88e9e3fdb80..0ab1f12171d 100644 --- a/cocos2d-ui/CCButton.m +++ b/cocos2d-ui/CCButton.m @@ -195,7 +195,7 @@ - (void) layout [super layout]; } -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS - (void) touchEntered:(CCTouch *)touch withEvent:(CCTouchEvent *)event { diff --git a/cocos2d-ui/CCControl.m b/cocos2d-ui/CCControl.m index aa5a49655b9..cbb812f080d 100644 --- a/cocos2d-ui/CCControl.m +++ b/cocos2d-ui/CCControl.m @@ -78,7 +78,7 @@ - (void) triggerAction #pragma mark Touch handling -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS - (void) touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event { diff --git a/cocos2d-ui/CCSlider.m b/cocos2d-ui/CCSlider.m index 74a1f26f63a..5e69a8c563a 100644 --- a/cocos2d-ui/CCSlider.m +++ b/cocos2d-ui/CCSlider.m @@ -73,7 +73,7 @@ - (void) updateSliderPositionFromValue _handle.position = ccp(_endStop + ((size.width - (2 * _endStop)) * _sliderValue), size.height * 0.5); } -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS #pragma mark Handle touches diff --git a/cocos2d-ui/CCTextField.h b/cocos2d-ui/CCTextField.h index 936fb0e5cbb..be4237892f9 100644 --- a/cocos2d-ui/CCTextField.h +++ b/cocos2d-ui/CCTextField.h @@ -27,18 +27,11 @@ #import "CCPlatformTextField.h" -#if __CC_PLATFORM_ANDROID -#import -#endif - - @class CCPlatformTextField; /** A text field is used for editing text. It is implemented by encapsulating the platform's native text field ([NSTextField](https://developer.apple.com/library/mac/Documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextField_Class/index.html#//apple_ref/doc/uid/20000128-SW2) - on Mac and [UITextField](https://developer.apple.com/library/ios/documentation/Uikit/reference/UITextField_Class/index.html) on iOS and - [EditText](http://developer.android.com/reference/android/widget/EditText.html) on Android). - + on Mac and [UITextField](https://developer.apple.com/library/ios/documentation/Uikit/reference/UITextField_Class/index.html) on iOS. An action callback will be sent when the user is done editing the text (clicks/taps outside) or when the return key is pressed. A CCSprite9Slice is used a the text field's background image. @@ -77,17 +70,14 @@ /** @name Accessing the Platform-Specific Text Field */ -/** The platform-native text field object. On iOS it's a UITextField, on OS X it's a NSTextField, on Android it's a EditText. +/** The platform-native text field object. On iOS it's a UITextField, on OS X it's a NSTextField. @see [UITextField](https://developer.apple.com/library/ios/documentation/Uikit/reference/UITextField_Class/index.html) @see [NSTextField](https://developer.apple.com/library/mac/Documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextField_Class/index.html#//apple_ref/doc/uid/20000128-SW2) - @see [EditText](http://developer.android.com/reference/android/widget/EditText.html) */ #if __CC_PLATFORM_IOS @property (nonatomic,readonly) UITextField* textField; #elif __CC_PLATFORM_MAC @property (nonatomic,readonly) NSTextField* textField; -#elif __CC_PLATFORM_ANDROID -@property (nonatomic,readonly) AndroidEditText* textField; #endif // purposefully undocumented: internal property diff --git a/cocos2d-ui/CCTextField.m b/cocos2d-ui/CCTextField.m index 473ce612542..2409701a9aa 100644 --- a/cocos2d-ui/CCTextField.m +++ b/cocos2d-ui/CCTextField.m @@ -30,8 +30,6 @@ #import "CCPlatformTextFieldIOS.h" #elif __CC_PLATFORM_MAC #import "CCPlatformTextFieldMac.h" -#elif __CC_PLATFORM_ANDROID -#import "CCPlatformTextFieldAndroid.h" #endif @implementation CCTextField { @@ -66,8 +64,6 @@ - (id) initWithSpriteFrame:(CCSpriteFrame*)frame #if __CC_PLATFORM_IOS _platformTextField = [[CCPlatformTextFieldIOS alloc] init]; -#elif __CC_PLATFORM_ANDROID - _platformTextField = [[CCPlatformTextFieldAndroid alloc] init]; #elif __CC_PLATFORM_MAC _platformTextField = [[CCPlatformTextFieldMac alloc] init]; #endif @@ -155,20 +151,8 @@ - (void) layout [super layout]; } -- (void) setEnabled:(BOOL)enabled { -//#if !__CC_PLATFORM_ANDROID -// _textField.enabled = enabled; -//#endif - [super setEnabled:enabled]; -} - - - - #pragma mark Properties - - - (void) setBackgroundSpriteFrame:(CCSpriteFrame*)spriteFrame { _background.spriteFrame = spriteFrame; diff --git a/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m b/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m index 49472eee35e..768ee84b8e2 100644 --- a/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m +++ b/cocos2d-ui/Platform/iOS/CCPlatformTextFieldIOS.m @@ -164,10 +164,6 @@ - (void)keyboardWasShown:(NSNotification*)notification BOOL focusOnTextField = _textField.isEditing; -#if __CC_PLATFORM_ANDROID - focusOnTextField = _textFieldIsEditing; -#endif - if (focusOnTextField) { [self focusOnTextField]; @@ -189,13 +185,6 @@ - (void) keyboardWillBeHidden:(NSNotification*) notification - (void) focusOnTextField { -#if __CC_PLATFORM_ANDROID - // Ensure that all textfields have actually been positioned before checkings textField.frame property, - // it's possible for the apportable keyboard notification to be fired before the mainloop has had a chance to kick of a scheduler update - CCDirector *director = [CCDirector sharedDirector]; - [director.scheduler update:0.0]; -#endif - CGSize windowSize = [[CCDirector sharedDirector] viewSize]; // Find the location of the textField @@ -214,13 +203,6 @@ - (void) focusOnTextField if (offset < -_keyboardHeight) offset = -_keyboardHeight; -#if __CC_PLATFORM_ANDROID - // Apportable does not support changing the openglview position, so we will just change the current scenes position instead - CCScene *runningScene = [[CCDirector sharedDirector] runningScene]; - CGPoint newPosition = runningScene.position; - newPosition.y = (offset * -1); - runningScene.position = newPosition; -#else // Calcualte target frame UIView* view = [[CCDirector sharedDirector] view]; CGRect frame = view.frame; @@ -233,7 +215,6 @@ - (void) focusOnTextField view.frame = frame; [UIView commitAnimations]; -#endif } } @@ -241,13 +222,6 @@ - (void) endFocusingOnTextField { // Slide the main view back down -#if __CC_PLATFORM_ANDROID - // Apportable does not support changing the openglview position, so we will just change the current scenes position instead - CCScene *runningScene = [[CCDirector sharedDirector] runningScene]; - CGPoint newPosition = CGPointZero; - newPosition.y = 0.0f; - runningScene.position = newPosition; -#else UIView* view = [[CCDirector sharedDirector] view]; [UIView beginAnimations: @"textFieldAnim" context: nil]; [UIView setAnimationBeginsFromCurrentState: YES]; @@ -258,8 +232,6 @@ - (void) endFocusingOnTextField view.frame = frame; [UIView commitAnimations]; -#endif - } From 96a85edd510496dfe0e9fe74d0c43b8c7ddc1493 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 6 Mar 2016 20:37:44 +0300 Subject: [PATCH 66/94] Delete deprecated files --- File Changes.txt | 23 ----------------------- RELEASE TODO.txt | 31 ------------------------------- 2 files changed, 54 deletions(-) delete mode 100644 File Changes.txt delete mode 100644 RELEASE TODO.txt diff --git a/File Changes.txt b/File Changes.txt deleted file mode 100644 index 9d8e938304a..00000000000 --- a/File Changes.txt +++ /dev/null @@ -1,23 +0,0 @@ -Doxygen -http://ftp.stack.nl/pub/users/dimitri/Doxygen-1.8.10.dmg - - - -Files added or removed ----------------------- - -Objective-C/CCNode_objc - - - - - - - - - -Changes to the API ------------------- -Help comments will be moved to CCClass_doc.h -Base classes will be matched with -x functionality. Remaining functionality will be moved to CCClass_objc - diff --git a/RELEASE TODO.txt b/RELEASE TODO.txt deleted file mode 100644 index 639dc9e902e..00000000000 --- a/RELEASE TODO.txt +++ /dev/null @@ -1,31 +0,0 @@ -To release a new version, please check the following steps. - -1) -Update the file VERSION with latest version number. -Add no CR/LF or any other formatting to the file. - -2) -Update install.sh -Edit the line -COCOS2D_VER="Cocos2D-v3.x.x” -with the correct version number - -3) -Update cocos2d.m, with the correct version number - -4) -Add any new authors to the AUTHORS file - -5) -Add major changes and additions to the file RELEASE_NOTES - -6) -Tag the release, with the according version number - -7) -Currently two set of files are made available to the users, upon release -a) A DMG, automating the install process -b) a ZIP, allowing for manual install - -Note: -The file change log should be updated when git is merged. \ No newline at end of file From c7a8c5e0f86e096ea44bf14ca012bf751e6fae82 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Sun, 6 Mar 2016 20:41:49 +0300 Subject: [PATCH 67/94] delete useless assets --- Resources-iPad/Images/background1-ipad.jpg | Bin 96394 -> 0 bytes Resources-iPad/Images/background2-ipad.jpg | Bin 309406 -> 0 bytes Resources-iPad/Images/background3-ipad.png | Bin 229163 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Resources-iPad/Images/background1-ipad.jpg delete mode 100644 Resources-iPad/Images/background2-ipad.jpg delete mode 100644 Resources-iPad/Images/background3-ipad.png diff --git a/Resources-iPad/Images/background1-ipad.jpg b/Resources-iPad/Images/background1-ipad.jpg deleted file mode 100644 index 1396f22d5257a29d7d441f0a5fe92129b512825e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96394 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 z 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 diff --git a/Resources-iPad/Images/background2-ipad.jpg b/Resources-iPad/Images/background2-ipad.jpg deleted file mode 100644 index 5d1e8b944622dea79e36b34d97273657741bfa60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309406 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%0AysfK{ZmIHTtj}{9teUQ^FN^27oFeE5j*j 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�HoJKo4-CLcKi1!WDz4btKVBMP7uPVi%O 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 diff --git a/Resources-iPad/Images/background3-ipad.png b/Resources-iPad/Images/background3-ipad.png deleted file mode 100644 index 2907362387c030cd7e52fff98ddd92152ae3b487..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229163 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

nODQ% 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 z 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 BW?29L From 7c3833a57fe811571b505c84854828953f740cc3 Mon Sep 17 00:00:00 2001 From: Richard Groves Date: Mon, 7 Mar 2016 10:55:49 +0000 Subject: [PATCH 68/94] Simplifying font color setup Repeat of PR in https://github.com/cocos2d/cocos2d-objc/pull/1320 that got lost due branch changes and GitHub limitations. --- cocos2d/CCLabelTTF.m | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/cocos2d/CCLabelTTF.m b/cocos2d/CCLabelTTF.m index e9b87112cf9..c7d3d19f1b1 100644 --- a/cocos2d/CCLabelTTF.m +++ b/cocos2d/CCLabelTTF.m @@ -886,15 +886,9 @@ - (CCTexture*) createTextureWithString:(NSString*) string useFullColor:(BOOL)use } // Handle font color - - CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); - const CGFloat components[] = {_fontColor.red, _fontColor.green, _fontColor.blue, _fontColor.alpha}; - CGColorRef color = CGColorCreate(colorspace, components); - CGColorSpaceRelease(colorspace); - + CGColorRef color = _fontColor.CGColor; CGContextSetFillColorWithColor(context, color); CGContextSetStrokeColorWithColor(context, color); - CGColorRelease(color); [self drawString:string withFont:font inContext:context inRect:drawArea]; From a7a41517646579da712d4d05ac6901a5d91078e1 Mon Sep 17 00:00:00 2001 From: s1ddok Date: Wed, 9 Mar 2016 21:19:36 +0300 Subject: [PATCH 69/94] Remove circular import for Metal --- cocos2d/CCShader.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/cocos2d/CCShader.h b/cocos2d/CCShader.h index d4ae89b1fc9..dfda1e534d9 100644 --- a/cocos2d/CCShader.h +++ b/cocos2d/CCShader.h @@ -37,9 +37,6 @@ /// Macro to embed Metal shading language source. #define CC_METAL(x) @#x - -#import -#import "CCMetalSupport_Private.h" #endif @class CCRenderer; From 57c9bd6e2519bd5288b7ee83e269cabc4ab56080 Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Thu, 10 Mar 2016 20:52:27 +0100 Subject: [PATCH 70/94] Adding explanations for -ext in ccConfig --- cocos2d/ccConfig.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cocos2d/ccConfig.h b/cocos2d/ccConfig.h index cff318d4a25..12d191bd464 100644 --- a/cocos2d/ccConfig.h +++ b/cocos2d/ccConfig.h @@ -166,6 +166,10 @@ #define CC_SHADER_DEFAULT_FRAGMENT_PRECISION mediump #endif +/** + If you disable one of this -ext you must remove corresponding files from your Xcode project + or your may get errors when building project + */ #ifndef CC_LIGHTING #define CC_LIGHTING 0 #endif @@ -178,6 +182,9 @@ #define CC_CCBREADER 0 #endif +/** + For CCEffectLighting you need to enable both CC_EFFECTS and CC_LIGHTING + */ #ifndef CC_EFFECTS #define CC_EFFECTS 0 #endif From 116f8e897c942445cc4110ced00a48885d48a057 Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Thu, 10 Mar 2016 20:53:54 +0100 Subject: [PATCH 71/94] Mostly header refactoring for using -ext --- cocos2d-ext/CCBReader/CCAnimationManager.h | 1 - cocos2d-ext/CCBReader/CCAnimationManager.m | 8 ++++++++ cocos2d-ext/CCEffects/CCEffectGlass.m | 2 +- cocos2d-ext/CCEffects/CCEffectLighting.m | 9 +++++---- cocos2d-ext/CCEffects/CCEffectNode.m | 6 +++--- cocos2d-ext/CCEffects/CCEffectReflection.m | 2 +- cocos2d-ext/CCEffects/CCEffectRefraction.m | 2 +- cocos2d-ext/CCEffects/CCEffectRenderer.m | 4 ++-- cocos2d-ext/CCEffects/CCEffect_Private.h | 2 +- cocos2d-ext/CCLighting/CCLightNode.m | 9 +++++++-- cocos2d/CCNoARC.m | 3 +++ cocos2d/CCSprite.h | 5 +++-- cocos2d/CCSprite.m | 2 ++ 13 files changed, 37 insertions(+), 18 deletions(-) diff --git a/cocos2d-ext/CCBReader/CCAnimationManager.h b/cocos2d-ext/CCBReader/CCAnimationManager.h index 83eacfae7f2..cb5fd5b0ba5 100644 --- a/cocos2d-ext/CCBReader/CCAnimationManager.h +++ b/cocos2d-ext/CCBReader/CCAnimationManager.h @@ -23,7 +23,6 @@ */ #import -#import "cocos2d.h" #import "CCBSequenceProperty.h" @class CCBSequence; diff --git a/cocos2d-ext/CCBReader/CCAnimationManager.m b/cocos2d-ext/CCBReader/CCAnimationManager.m index eb352ff5243..f906f816368 100644 --- a/cocos2d-ext/CCBReader/CCAnimationManager.m +++ b/cocos2d-ext/CCBReader/CCAnimationManager.m @@ -35,6 +35,14 @@ #import "CCBReader_Private.h" #import "CCActionManager.h" +#if CC_LIGHTING +#import "CCLightNode.h" +#endif + +#if CC_OBJECT_AL +#import "CCActionAudio.h" +#endif + // Unique Manager ID static NSInteger ccbAnimationManagerID = 0; diff --git a/cocos2d-ext/CCEffects/CCEffectGlass.m b/cocos2d-ext/CCEffects/CCEffectGlass.m index 28dc8ffcd9a..6d15a661e4c 100644 --- a/cocos2d-ext/CCEffects/CCEffectGlass.m +++ b/cocos2d-ext/CCEffects/CCEffectGlass.m @@ -15,7 +15,7 @@ #import "CCTexture.h" #import "CCEffect_Private.h" -#import "CCSprite_Private.h" +#import "CCSprite.h" static const float CCEffectGlassDefaultFresnelBias = 0.1f; diff --git a/cocos2d-ext/CCEffects/CCEffectLighting.m b/cocos2d-ext/CCEffects/CCEffectLighting.m index ec7136d9667..656195b1803 100644 --- a/cocos2d-ext/CCEffects/CCEffectLighting.m +++ b/cocos2d-ext/CCEffects/CCEffectLighting.m @@ -19,7 +19,7 @@ #import "CCTexture.h" #import "CCEffect_Private.h" -#import "CCSprite_Private.h" +#import "CCSprite.h" typedef struct _CCLightKey @@ -328,10 +328,10 @@ +(NSArray *)buildRenderPassesWithInterface:(CCEffectLighting *)interface passInputs.shaderUniforms[passInputs.uniformTranslationTable[lightSpecularColorLabel]] = [NSValue valueWithGLKVector4:lightSpecularColor]; } } - + #if CC_LIGHTING CCColor *ambientColor = [CCEffectUtilsGetNodeScene(passInputs.sprite).lights findAmbientSumForLightsWithMask:weakInterface.groupMask]; passInputs.shaderUniforms[passInputs.uniformTranslationTable[@"u_globalAmbientColor"]] = [NSValue valueWithGLKVector4:ambientColor.glkVector4]; - + #endif if (weakInterface.needsSpecular) { passInputs.shaderUniforms[passInputs.uniformTranslationTable[@"u_specularExponent"]] = weakInterface.conditionedShininess; @@ -382,7 +382,7 @@ - (CCEffectPrepareResult)prepareForRenderingWithSprite:(CCSprite *)sprite _needsNormalMap = (sprite.normalMapSpriteFrame != nil); CGPoint spritePosition = CGPointApplyAffineTransform(sprite.anchorPointInPoints, sprite.nodeToWorldTransform); - + #if CC_LIGHTING CCLightCollection *lightCollection = CCEffectUtilsGetNodeScene(sprite).lights; if (self.groupMaskDirty) { @@ -406,6 +406,7 @@ - (CCEffectPrepareResult)prepareForRenderingWithSprite:(CCSprite *)sprite result.status = CCEffectPrepareSuccess; result.changes = CCEffectPrepareShaderChanged | CCEffectPrepareUniformsChanged; } + #endif return result; } diff --git a/cocos2d-ext/CCEffects/CCEffectNode.m b/cocos2d-ext/CCEffects/CCEffectNode.m index a520b362cf4..c3713b81de9 100644 --- a/cocos2d-ext/CCEffects/CCEffectNode.m +++ b/cocos2d-ext/CCEffects/CCEffectNode.m @@ -17,9 +17,9 @@ #import "Support/CCFileUtils.h" #import "Support/CGPointExtension.h" -#import "CCTexture_Private.h" -#import "CCDirector_Private.h" -#import "CCNode_Private.h" +#import "CCTexture.h" +#import "CCDirector.h" +#import "CCNode.h" #import "CCRenderer_Private.h" #import "CCRenderTexture_Private.h" #import "CCEffect_Private.h" diff --git a/cocos2d-ext/CCEffects/CCEffectReflection.m b/cocos2d-ext/CCEffects/CCEffectReflection.m index 297dda9b44f..73b32efb4c0 100644 --- a/cocos2d-ext/CCEffects/CCEffectReflection.m +++ b/cocos2d-ext/CCEffects/CCEffectReflection.m @@ -15,7 +15,7 @@ #import "CCTexture.h" #import "CCEffect_Private.h" -#import "CCSprite_Private.h" +#import "CCSprite.h" diff --git a/cocos2d-ext/CCEffects/CCEffectRefraction.m b/cocos2d-ext/CCEffects/CCEffectRefraction.m index 68f5445edf4..1dd54935186 100644 --- a/cocos2d-ext/CCEffects/CCEffectRefraction.m +++ b/cocos2d-ext/CCEffects/CCEffectRefraction.m @@ -15,7 +15,7 @@ #import "CCTexture.h" #import "CCEffect_Private.h" -#import "CCSprite_Private.h" +#import "CCSprite.h" @interface CCEffectRefraction () diff --git a/cocos2d-ext/CCEffects/CCEffectRenderer.m b/cocos2d-ext/CCEffects/CCEffectRenderer.m index 46c7c6c71e0..956571d0df5 100644 --- a/cocos2d-ext/CCEffects/CCEffectRenderer.m +++ b/cocos2d-ext/CCEffects/CCEffectRenderer.m @@ -16,8 +16,8 @@ #import "CCEffect_Private.h" #import "CCRenderer_Private.h" -#import "CCSprite_Private.h" -#import "CCTexture_Private.h" +#import "CCSprite.h" +#import "CCTexture.h" typedef NS_ENUM(NSUInteger, CCEffectTexCoordSource) diff --git a/cocos2d-ext/CCEffects/CCEffect_Private.h b/cocos2d-ext/CCEffects/CCEffect_Private.h index 1ffd3d35fd6..3402384d562 100644 --- a/cocos2d-ext/CCEffects/CCEffect_Private.h +++ b/cocos2d-ext/CCEffects/CCEffect_Private.h @@ -7,7 +7,7 @@ // #import "CCEffect.h" -#import "CCEffectStackProtocol.h" +#import "CCSprite.h" extern NSString * const CCShaderUniformPreviousPassTexture; diff --git a/cocos2d-ext/CCLighting/CCLightNode.m b/cocos2d-ext/CCLighting/CCLightNode.m index f91ab32c90f..1f53aa99453 100644 --- a/cocos2d-ext/CCLighting/CCLightNode.m +++ b/cocos2d-ext/CCLighting/CCLightNode.m @@ -66,27 +66,32 @@ +(instancetype)lightWithType:(CCLightType)type groups:(NSArray*)groups color:(CC - (void)onEnter { [super onEnter]; + #if CC_LIGHTING [self.scene.lights addLight:self]; CCLightCollection *lightCollection = self.scene.lights; NSAssert(lightCollection, @"The light node is in a scene but there's no light collection."); _groupMask = [lightCollection maskForGroups:_groups]; + #endif } - (void)onExit { _groupMask = 0; - + #if CC_LIGHTING [self.scene.lights removeLight:self]; + #endif [super onExit]; } -(void)setGroups:(NSArray *)groups { _groups = [groups copy]; - + #if CC_LIGHTING CCLightCollection *lightCollection = self.scene.lights; + _groupMask = [lightCollection maskForGroups:_groups]; + #endif } -(void)setIntensity:(float)intensity diff --git a/cocos2d/CCNoARC.m b/cocos2d/CCNoARC.m index 9ba99808811..60a9e7e81bd 100644 --- a/cocos2d/CCNoARC.m +++ b/cocos2d/CCNoARC.m @@ -1,4 +1,7 @@ #import "CCRenderer_Private.h" +#import "CCEffect.h" +#import "CCEffectRenderer.h" +#import "CCEffect_Private.h" #if __CC_METAL_SUPPORTED_AND_ENABLED #import "CCMetalSupport_Private.h" diff --git a/cocos2d/CCSprite.h b/cocos2d/CCSprite.h index 0bb5968d4c5..aa2c03ea0df 100644 --- a/cocos2d/CCSprite.h +++ b/cocos2d/CCSprite.h @@ -30,8 +30,9 @@ #import "CCProtocols.h" #if CC_EFFECTS -#import "CCEffectRenderer.h" -#import "CCEffect_Private.h" +//#import "CCEffectRenderer.h" +//#import "CCEffect_Private.h" +@class CCEffectRenderer; #endif @class CCSpriteBatchNode; diff --git a/cocos2d/CCSprite.m b/cocos2d/CCSprite.m index 098627db35e..c4cb17e2073 100644 --- a/cocos2d/CCSprite.m +++ b/cocos2d/CCSprite.m @@ -38,6 +38,8 @@ #import "Support/CGPointExtension.h" #import "Support/CCProfiling.h" #import "CCRenderer_Private.h" +#import "CCEffect_Private.h" +#import "CCEffectRenderer.h" #pragma mark - #pragma mark CCSprite From 40adc52134049073b848b84080d43a91c086e4db Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Thu, 10 Mar 2016 20:54:15 +0100 Subject: [PATCH 72/94] Remove old CCEffectDropShadow_dist --- .../CCEffects/CCEffectDropShadow_dist.h | 71 ---------- .../CCEffects/CCEffectDropShadow_dist.m | 132 ------------------ 2 files changed, 203 deletions(-) delete mode 100644 cocos2d-ext/CCEffects/CCEffectDropShadow_dist.h delete mode 100644 cocos2d-ext/CCEffects/CCEffectDropShadow_dist.m diff --git a/cocos2d-ext/CCEffects/CCEffectDropShadow_dist.h b/cocos2d-ext/CCEffects/CCEffectDropShadow_dist.h deleted file mode 100644 index b34b11ede04..00000000000 --- a/cocos2d-ext/CCEffects/CCEffectDropShadow_dist.h +++ /dev/null @@ -1,71 +0,0 @@ -// -// CCEffectDropShadow.h -// cocos2d-ios -// -// Created by Oleg Osin on 8/7/14. -// -// - -#import "CCEffect.h" - -/** - * CCEffectDropShadow create a drop shadow. - * - */ - -@interface CCEffectDropShadow : CCEffect - -/// ----------------------------------------------------------------------- -/// @name Accessing Effect Attributes -/// ----------------------------------------------------------------------- - -/** Adjust which direction the shadow should point. A value of (5.0, -5,0) will - * place the drop shadow at the bottom right. - */ -@property (nonatomic) GLKVector2 shadowOffset; - -/** Color of the shadow, - * [CCColor blackColor] will result in an opaque black drop shadow. - */ -@property (nonatomic) CCColor* shadowColor; - -/// ----------------------------------------------------------------------- -/// @name Initializing a CCEffectDropShadow object -/// ----------------------------------------------------------------------- - -/** - * Initializes a CCEffectDropShadow object with a (5, -5) black drop shadow offset . - * - * @return The CCEffectDropShadow object. - */ --(id)init; - -/** - * Initializes a CCEffectDropShadow object with the supplied parameters. - * - * @param shadowOffset A value of (5.0, -5,0) will place the drop shadow at the bottom right. - * @param shadowColor Color of the shadow, a [CCColor blackColor] will result in an opaque black drop shadow. - * - * @return The CCEffectDropShadow object. - */ --(id)initWithShadowOffset:(GLKVector2)shadowOffset shadowColor:(CCColor*)shadowColor; - - -/// ----------------------------------------------------------------------- -/// @name Creating a CCEffectDropShadow object -/// ----------------------------------------------------------------------- - -/** - * Initializes a CCEffectDropShadow object with the supplied parameters. - * - * @param shadowOffset A value of (5.0, -5,0) will place the drop shadow at the bottom right. - * @param shadowColor Color of the shadow, a [CCColor blackColor] will result in an opaque black drop shadow. - * - * @return The CCEffectDropShadow object. - */ -+(id)effectWithShadowOffset:(GLKVector2)shadowOffset shadowColor:(CCColor*)shadowColor; - - -@end - - diff --git a/cocos2d-ext/CCEffects/CCEffectDropShadow_dist.m b/cocos2d-ext/CCEffects/CCEffectDropShadow_dist.m deleted file mode 100644 index 08a9400e45d..00000000000 --- a/cocos2d-ext/CCEffects/CCEffectDropShadow_dist.m +++ /dev/null @@ -1,132 +0,0 @@ -// -// CCEffectDropShadow.m -// cocos2d-ios -// -// Created by Oleg Osin on 8/7/14. -// -// - -#import "CCEffectDropShadow.h" -#import "CCEffect_Private.h" -#import "CCRenderer.h" -#import "CCTexture.h" - -@implementation CCEffectDropShadow - --(id)init -{ - return [self initWithShadowOffset:GLKVector2Make(5, -5) shadowColor:[CCColor blackColor]]; -} - --(id)initWithShadowOffset:(GLKVector2)shadowOffset shadowColor:(CCColor*)shadowColor -{ - NSArray *uniforms = @[ - [CCEffectUniform uniform:@"vec2" name:@"u_shadowOffset" value:[NSValue valueWithGLKVector2:shadowOffset]], - [CCEffectUniform uniform:@"vec4" name:@"u_shadowColor" value: [NSValue valueWithGLKVector4:shadowColor.glkVector4]], - ]; - - if((self = [super initWithFragmentUniforms:uniforms vertexUniforms:nil varyings:nil])) - { - _shadowColor = shadowColor; - _shadowOffset = shadowOffset; - self.debugName = @"CCEffectDropShadow"; - } - return self; -} - -+(id)effectWithShadowOffset:(GLKVector2)shadowOffset shadowColor:(CCColor*)shadowColor -{ - return [[self alloc] initWithShadowOffset:shadowOffset shadowColor:shadowColor]; -} - --(void)buildFragmentFunctions -{ - self.fragmentFunctions = [[NSMutableArray alloc] init]; - - NSString* effectBody = CC_GLSL( - - vec4 outputColor = texture2D(cc_MainTexture, cc_FragTexCoord1); - - // Grab the alpha at the shadowOffset, we will use this to determine the shadow alpha and if a - // shadowColor should be added at all. - float shadowOffsetAlpha = texture2D(cc_MainTexture, cc_FragTexCoord1 - u_shadowOffset).a; - - vec4 shadowColor = u_shadowColor*shadowOffsetAlpha; - outputColor = outputColor + (1.0 - outputColor.a) * shadowColor; - -// vec4 shadowColor = vec4(u_shadowColor.rgb, shadowOffsetAlpha * u_shadowColor.a); - -// // Since we use premultiplied alpha, we need to be careful and avoid changing the -// // output color of every fragment. If we add a non-zero shadowColor to the output, then -// // we will end up tinting the whole quad with a shadowColor. -// const float alphaThreshold = 0.2; // Maybe make this a uniform? it's kind of hacky.. -// if(shadowOffsetAlpha < alphaThreshold) -// return outputColor; //shadowColor = vec4(0.0); -// -// // Ensures that the cc_MainTexture color does not get over written by the shadowcolor -// outputColor = outputColor + (1.0 - outputColor.a) * shadowColor; - - - const float sampleDist = 1.0; - const float sampleStrength = 2.2; - - float samples[10]; - samples[0] = -0.08; - samples[1] = -0.05; - samples[2] = -0.03; - samples[3] = -0.02; - samples[4] = -0.01; - samples[5] = 0.01; - samples[6] = 0.02; - samples[7] = 0.03; - samples[8] = 0.05; - samples[9] = 0.08; - - vec2 dir = 0.5 - cc_FragTexCoord1; - float dist = sqrt(dir.x*dir.x + dir.y*dir.y); - dir = dir/dist; - - vec4 sum = outputColor; - - for (int i = 0; i < 10; i++) - sum += texture2D( cc_MainTexture, cc_FragTexCoord1 + dir * samples[i] * sampleDist ); - - sum *= 1.0/11.0; - float t = dist * sampleStrength; - t = clamp( t ,0.0,1.0); - - outputColor = mix( outputColor, sum, t ); - - return outputColor; - ); - - CCEffectFunction* fragmentFunction = [[CCEffectFunction alloc] initWithName:@"dropShadowEffect" - body:effectBody inputs:nil returnType:@"vec4"]; - [self.fragmentFunctions addObject:fragmentFunction]; -} - --(void)buildRenderPasses -{ - __weak CCEffectDropShadow *weakSelf = self; - - CCEffectRenderPass *pass0 = [[CCEffectRenderPass alloc] init]; - pass0.debugLabel = @"CCEffectDropShadow pass 0"; - pass0.shader = self.shader; - pass0.blendMode = [CCBlendMode premultipliedAlphaMode]; - pass0.beginBlocks = @[[^(CCEffectRenderPass *pass, CCTexture *previousPassTexture){ - - pass.shaderUniforms[CCShaderUniformMainTexture] = previousPassTexture; - pass.shaderUniforms[CCShaderUniformPreviousPassTexture] = previousPassTexture; - - GLKVector2 offset = GLKVector2Make(weakSelf.shadowOffset.x / previousPassTexture.contentSize.width, weakSelf.shadowOffset.y / previousPassTexture.contentSize.height); - - pass.shaderUniforms[weakSelf.uniformTranslationTable[@"u_shadowOffset"]] = [NSValue valueWithGLKVector2:offset]; - pass.shaderUniforms[weakSelf.uniformTranslationTable[@"u_shadowColor"]] = [NSValue valueWithGLKVector4:weakSelf.shadowColor.glkVector4]; - - } copy]]; - - self.renderPasses = @[pass0]; -} - -@end - From 3465149a51cdc3b4ee68058f50ef8ffc6f12d6ec Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Thu, 10 Mar 2016 19:47:42 +0100 Subject: [PATCH 73/94] Adding conditions in CCNoArc and CCSprite --- cocos2d/CCNoARC.m | 3 +++ cocos2d/CCSprite.h | 2 -- cocos2d/CCSprite.m | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cocos2d/CCNoARC.m b/cocos2d/CCNoARC.m index 60a9e7e81bd..1c23da79dba 100644 --- a/cocos2d/CCNoARC.m +++ b/cocos2d/CCNoARC.m @@ -1,7 +1,10 @@ #import "CCRenderer_Private.h" + +#if CC_EFFECTS #import "CCEffect.h" #import "CCEffectRenderer.h" #import "CCEffect_Private.h" +#endif #if __CC_METAL_SUPPORTED_AND_ENABLED #import "CCMetalSupport_Private.h" diff --git a/cocos2d/CCSprite.h b/cocos2d/CCSprite.h index aa2c03ea0df..0ffc9bdda65 100644 --- a/cocos2d/CCSprite.h +++ b/cocos2d/CCSprite.h @@ -30,8 +30,6 @@ #import "CCProtocols.h" #if CC_EFFECTS -//#import "CCEffectRenderer.h" -//#import "CCEffect_Private.h" @class CCEffectRenderer; #endif diff --git a/cocos2d/CCSprite.m b/cocos2d/CCSprite.m index c4cb17e2073..de2037d853f 100644 --- a/cocos2d/CCSprite.m +++ b/cocos2d/CCSprite.m @@ -38,8 +38,11 @@ #import "Support/CGPointExtension.h" #import "Support/CCProfiling.h" #import "CCRenderer_Private.h" + +#if CC_EFFECTS #import "CCEffect_Private.h" #import "CCEffectRenderer.h" +#endif #pragma mark - #pragma mark CCSprite From 99b5af681edd2cec39299415baff600069169b87 Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Thu, 10 Mar 2016 21:58:29 +0100 Subject: [PATCH 74/94] Getting rid oc CCBReader_Private.h --- cocos2d-ext/CCBReader/CCAnimationManager.m | 2 +- cocos2d-ext/CCBReader/CCBReader.h | 83 ++++++++++++++++++ cocos2d-ext/CCBReader/CCBReader.m | 2 +- cocos2d-ext/CCBReader/CCBReader_Private.h | 95 --------------------- cocos2d-ext/CCBReader/CCBSequenceProperty.h | 2 +- 5 files changed, 86 insertions(+), 98 deletions(-) delete mode 100644 cocos2d-ext/CCBReader/CCBReader_Private.h diff --git a/cocos2d-ext/CCBReader/CCAnimationManager.m b/cocos2d-ext/CCBReader/CCAnimationManager.m index f906f816368..0876ef2f262 100644 --- a/cocos2d-ext/CCBReader/CCAnimationManager.m +++ b/cocos2d-ext/CCBReader/CCAnimationManager.m @@ -32,7 +32,7 @@ #import #import "CCDirector.h" -#import "CCBReader_Private.h" +#import "CCBReader.h" #import "CCActionManager.h" #if CC_LIGHTING diff --git a/cocos2d-ext/CCBReader/CCBReader.h b/cocos2d-ext/CCBReader/CCBReader.h index 04bb4a5e44a..b56fd2a8902 100644 --- a/cocos2d-ext/CCBReader/CCBReader.h +++ b/cocos2d-ext/CCBReader/CCBReader.h @@ -60,6 +60,89 @@ Nodes created from a SpriteBuilder document will also have a valid CCAnimationManager instance assigned to their [CCNode animationManager] property. */ + +#define kCCBVersion 10 + +enum { + kCCBPropTypePosition = 0, + kCCBPropTypeSize, + kCCBPropTypePoint, + kCCBPropTypePointLock, + kCCBPropTypeScaleLock, + kCCBPropTypeDegrees, + kCCBPropTypeInteger, + kCCBPropTypeFloat, + kCCBPropTypeFloatVar, + kCCBPropTypeCheck, + kCCBPropTypeSpriteFrame, + kCCBPropTypeTexture, + kCCBPropTypeByte, + kCCBPropTypeColor3, + kCCBPropTypeColor4FVar, + kCCBPropTypeFlip, + kCCBPropTypeBlendmode, + kCCBPropTypeFntFile, + kCCBPropTypeText, + kCCBPropTypeFontTTF, + kCCBPropTypeIntegerLabeled, + kCCBPropTypeBlock, + kCCBPropTypeAnimation, + kCCBPropTypeCCBFile, + kCCBPropTypeString, + kCCBPropTypeBlockCCControl, + kCCBPropTypeFloatScale, + kCCBPropTypeFloatXY, + kCCBPropTypeColor4, + kCCBPropTypeNodeReference, + kCCBPropTypeFloatCheck, + kCCBPropTypeEffects, + kCCBPropTypeTokenArray +}; + +enum { + kCCBFloat0 = 0, + kCCBFloat1, + kCCBFloatMinus1, + kCCBFloat05, + kCCBFloatInteger, + kCCBFloatFull +}; + +enum { + kCCBPlatformAll = 0, + kCCBPlatformIOS, + kCCBPlatformMac +}; + +enum { + kCCBTargetTypeNone = 0, + kCCBTargetTypeDocumentRoot = 1, + kCCBTargetTypeOwner = 2, +}; + +enum +{ + kCCBKeyframeEasingInstant, + + kCCBKeyframeEasingLinear, + + kCCBKeyframeEasingCubicIn, + kCCBKeyframeEasingCubicOut, + kCCBKeyframeEasingCubicInOut, + + kCCBKeyframeEasingElasticIn, + kCCBKeyframeEasingElasticOut, + kCCBKeyframeEasingElasticInOut, + + kCCBKeyframeEasingBounceIn, + kCCBKeyframeEasingBounceOut, + kCCBKeyframeEasingBounceInOut, + + kCCBKeyframeEasingBackIn, + kCCBKeyframeEasingBackOut, + kCCBKeyframeEasingBackInOut, +}; + @interface CCBReader : NSObject { NSData* data; diff --git a/cocos2d-ext/CCBReader/CCBReader.m b/cocos2d-ext/CCBReader/CCBReader.m index c63df3df5ef..ab6bebd0384 100644 --- a/cocos2d-ext/CCBReader/CCBReader.m +++ b/cocos2d-ext/CCBReader/CCBReader.m @@ -32,7 +32,7 @@ #import "CCBSequenceProperty.h" #import "CCBKeyframe.h" #import "CCBLocalizationManager.h" -#import "CCBReader_Private.h" +#import "CCBReader.h" #import "CCNode.h" #import "CCDirector.h" #if CC_PHYSICS diff --git a/cocos2d-ext/CCBReader/CCBReader_Private.h b/cocos2d-ext/CCBReader/CCBReader_Private.h deleted file mode 100644 index e4b2f36f901..00000000000 --- a/cocos2d-ext/CCBReader/CCBReader_Private.h +++ /dev/null @@ -1,95 +0,0 @@ -// -// CCBReader_Private.h -// cocos2d-ios -// -// Created by Viktor on 11/13/13. -// -// - -#import "CCBReader.h" - -#define kCCBVersion 10 - -enum { - kCCBPropTypePosition = 0, - kCCBPropTypeSize, - kCCBPropTypePoint, - kCCBPropTypePointLock, - kCCBPropTypeScaleLock, - kCCBPropTypeDegrees, - kCCBPropTypeInteger, - kCCBPropTypeFloat, - kCCBPropTypeFloatVar, - kCCBPropTypeCheck, - kCCBPropTypeSpriteFrame, - kCCBPropTypeTexture, - kCCBPropTypeByte, - kCCBPropTypeColor3, - kCCBPropTypeColor4FVar, - kCCBPropTypeFlip, - kCCBPropTypeBlendmode, - kCCBPropTypeFntFile, - kCCBPropTypeText, - kCCBPropTypeFontTTF, - kCCBPropTypeIntegerLabeled, - kCCBPropTypeBlock, - kCCBPropTypeAnimation, - kCCBPropTypeCCBFile, - kCCBPropTypeString, - kCCBPropTypeBlockCCControl, - kCCBPropTypeFloatScale, - kCCBPropTypeFloatXY, - kCCBPropTypeColor4, - kCCBPropTypeNodeReference, - kCCBPropTypeFloatCheck, - kCCBPropTypeEffects, - kCCBPropTypeTokenArray -}; - -enum { - kCCBFloat0 = 0, - kCCBFloat1, - kCCBFloatMinus1, - kCCBFloat05, - kCCBFloatInteger, - kCCBFloatFull -}; - -enum { - kCCBPlatformAll = 0, - kCCBPlatformIOS, - kCCBPlatformMac -}; - -enum { - kCCBTargetTypeNone = 0, - kCCBTargetTypeDocumentRoot = 1, - kCCBTargetTypeOwner = 2, -}; - -enum -{ - kCCBKeyframeEasingInstant, - - kCCBKeyframeEasingLinear, - - kCCBKeyframeEasingCubicIn, - kCCBKeyframeEasingCubicOut, - kCCBKeyframeEasingCubicInOut, - - kCCBKeyframeEasingElasticIn, - kCCBKeyframeEasingElasticOut, - kCCBKeyframeEasingElasticInOut, - - kCCBKeyframeEasingBounceIn, - kCCBKeyframeEasingBounceOut, - kCCBKeyframeEasingBounceInOut, - - kCCBKeyframeEasingBackIn, - kCCBKeyframeEasingBackOut, - kCCBKeyframeEasingBackInOut, -}; - -@interface CCBReader () - -@end diff --git a/cocos2d-ext/CCBReader/CCBSequenceProperty.h b/cocos2d-ext/CCBReader/CCBSequenceProperty.h index bbf06da4637..1c39ffd7c2e 100644 --- a/cocos2d-ext/CCBReader/CCBSequenceProperty.h +++ b/cocos2d-ext/CCBReader/CCBSequenceProperty.h @@ -24,7 +24,7 @@ */ #import -#import "CCBReader_Private.h" +#import "CCBReader.h" typedef NS_ENUM(NSInteger, CCBSequencePropertyType) { CCBSequencePropertyTypeSpriteFrame = kCCBPropTypeSpriteFrame From b415a463b5bebb4efcc70a2544a4a606bfb0376f Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Thu, 10 Mar 2016 22:09:49 +0100 Subject: [PATCH 75/94] Getting rid of CCEffect_Private.h --- cocos2d-ext/CCEffects/CCEffect.h | 204 ++++++++++++++++ cocos2d-ext/CCEffects/CCEffect.m | 1 - cocos2d-ext/CCEffects/CCEffectBloom.m | 2 +- cocos2d-ext/CCEffects/CCEffectBlur.m | 2 +- cocos2d-ext/CCEffects/CCEffectBrightness.m | 2 +- .../CCEffects/CCEffectColorChannelOffset.m | 2 +- cocos2d-ext/CCEffects/CCEffectContrast.m | 2 +- cocos2d-ext/CCEffects/CCEffectDFInnerGlow.m | 2 +- cocos2d-ext/CCEffects/CCEffectDFOutline.m | 2 +- cocos2d-ext/CCEffects/CCEffectDistanceField.m | 2 +- cocos2d-ext/CCEffects/CCEffectDropShadow.m | 2 +- cocos2d-ext/CCEffects/CCEffectGlass.m | 2 +- cocos2d-ext/CCEffects/CCEffectHue.m | 2 +- cocos2d-ext/CCEffects/CCEffectInvert.m | 2 +- cocos2d-ext/CCEffects/CCEffectLighting.m | 2 +- cocos2d-ext/CCEffects/CCEffectNode.m | 2 +- cocos2d-ext/CCEffects/CCEffectOutline.m | 5 +- cocos2d-ext/CCEffects/CCEffectPixellate.m | 2 +- cocos2d-ext/CCEffects/CCEffectReflection.m | 2 +- cocos2d-ext/CCEffects/CCEffectRefraction.m | 2 +- cocos2d-ext/CCEffects/CCEffectRenderer.m | 3 +- cocos2d-ext/CCEffects/CCEffectSaturation.m | 2 +- cocos2d-ext/CCEffects/CCEffectStack.m | 2 +- cocos2d-ext/CCEffects/CCEffectStereo.m | 2 +- cocos2d-ext/CCEffects/CCEffect_Private.h | 223 ------------------ cocos2d/CCNoARC.m | 1 - cocos2d/CCSprite.m | 2 +- 27 files changed, 228 insertions(+), 251 deletions(-) delete mode 100644 cocos2d-ext/CCEffects/CCEffect_Private.h diff --git a/cocos2d-ext/CCEffects/CCEffect.h b/cocos2d-ext/CCEffects/CCEffect.h index 6f32cb05528..0bb824a40c1 100644 --- a/cocos2d-ext/CCEffects/CCEffect.h +++ b/cocos2d-ext/CCEffects/CCEffect.h @@ -28,6 +28,203 @@ - CCEffectStack - Experimental as of v3.4: CCEffectDistanceField, CCEffectDFInnerGlow, CCEffectDFOutline */ + +extern NSString * const CCShaderUniformPreviousPassTexture; +extern NSString * const CCShaderUniformTexCoord1Center; +extern NSString * const CCShaderUniformTexCoord1Extents; +extern NSString * const CCShaderUniformTexCoord2Center; +extern NSString * const CCShaderUniformTexCoord2Extents; +extern NSString * const CCEffectDefaultInitialInputSnippet; +extern NSString * const CCEffectDefaultInputSnippet; + + +typedef NS_ENUM(NSUInteger, CCEffectPrepareStatus) +{ + CCEffectPrepareFailure = 0, + CCEffectPrepareSuccess = 1, +}; + +typedef NS_OPTIONS(NSUInteger, CCEffectPrepareWhatChanged) +{ + CCEffectPrepareNothingChanged = 0, + CCEffectPreparePassesChanged = (1 << 0), + CCEffectPrepareShaderChanged = (1 << 1), + CCEffectPrepareUniformsChanged = (1 << 2) +}; + +typedef struct CCEffectPrepareResult +{ + CCEffectPrepareStatus status; + CCEffectPrepareWhatChanged changes; +} CCEffectPrepareResult; + +extern const CCEffectPrepareResult CCEffectPrepareNoop; + +typedef NS_ENUM(NSUInteger, CCEffectFunctionStitchFlags) +{ + CCEffectFunctionStitchBefore = 1 << 0, + CCEffectFunctionStitchAfter = 1 << 1, + CCEffectFunctionStitchBoth = (CCEffectFunctionStitchBefore | CCEffectFunctionStitchAfter), +}; + +typedef NS_ENUM(NSUInteger, CCEffectTexCoordMapping) +{ + CCEffectTexCoordMapMainTex = 0, + CCEffectTexCoordMapPreviousPassTex = 1, + CCEffectTexCoordMapCustomTex = 2, + CCEffectTexCoordMapCustomTexNoTransform = 3 +}; + +@interface CCEffectFunction : NSObject + +@property (nonatomic, readonly) NSString* body; +@property (nonatomic, readonly) NSString* name; +@property (nonatomic, readonly) NSArray* inputs; +@property (nonatomic, readonly) NSString* inputString; +@property (nonatomic, readonly) NSString* returnType; +@property (nonatomic, readonly) NSString* function; + +-(id)initWithName:(NSString*)name body:(NSString*)body inputs:(NSArray*)inputs returnType:(NSString*)returnType; ++(instancetype)functionWithName:(NSString*)name body:(NSString*)body inputs:(NSArray*)inputs returnType:(NSString*)returnType; + +-(NSString*)callStringWithInputs:(NSArray*)inputs; + +@end + +@interface CCEffectFunctionInput : NSObject + +@property (nonatomic, readonly) NSString* type; +@property (nonatomic, readonly) NSString* name; +@property (nonatomic, readonly) NSString* initialSnippet; +@property (nonatomic, readonly) NSString* snippet; + +-(id)initWithType:(NSString*)type name:(NSString*)name initialSnippet:(NSString*)initialSnippet snippet:(NSString*)snippet; ++(instancetype)inputWithType:(NSString*)type name:(NSString*)name initialSnippet:(NSString*)initialSnippet snippet:(NSString*)snippet; + +@end + +@interface CCEffectUniform : NSObject + +@property (nonatomic, readonly) NSString* name; +@property (nonatomic, readonly) NSString* type; +@property (nonatomic, readonly) NSString* declaration; +@property (nonatomic, readonly) NSValue* value; + +-(id)initWithType:(NSString*)type name:(NSString*)name value:(NSValue*)value; ++(instancetype)uniform:(NSString*)type name:(NSString*)name value:(NSValue*)value; + +@end + +@interface CCEffectVarying : NSObject + +@property (nonatomic, readonly) NSString* name; +@property (nonatomic, readonly) NSString* type; +@property (nonatomic, readonly) NSString* declaration; +@property (nonatomic, readonly) NSInteger count; + +-(id)initWithType:(NSString*)type name:(NSString*)name; +-(id)initWithType:(NSString*)type name:(NSString*)name count:(NSInteger)count; ++(instancetype)varying:(NSString*)type name:(NSString*)name; ++(instancetype)varying:(NSString*)type name:(NSString*)name count:(NSInteger)count; + +@end + + + +@interface CCEffectRenderPassInputs : NSObject + +@property (nonatomic, assign) NSInteger renderPassId; +@property (nonatomic, strong) CCRenderer* renderer; +@property (nonatomic, strong) CCSprite *sprite; +@property (nonatomic, assign) CCSpriteVertexes verts; +@property (nonatomic, strong) CCTexture *previousPassTexture; +@property (nonatomic, assign) GLKMatrix4 transform; +@property (nonatomic, assign) GLKMatrix4 ndcToNodeLocal; +@property (nonatomic, assign) GLKVector2 texCoord1Center; +@property (nonatomic, assign) GLKVector2 texCoord1Extents; +@property (nonatomic, assign) GLKVector2 texCoord2Center; +@property (nonatomic, assign) GLKVector2 texCoord2Extents; +@property (nonatomic, strong) NSMutableDictionary* shaderUniforms; +@property (nonatomic, strong) NSDictionary* uniformTranslationTable; +@property (nonatomic, assign) BOOL needsClear; + +-(void)setVertsWorkAround:(CCSpriteVertexes*)verts; + +@end + + +@class CCEffectRenderPass; + +typedef void (^CCEffectRenderPassBeginBlock)(CCEffectRenderPass *pass, CCEffectRenderPassInputs *passInputs); +typedef void (^CCEffectRenderPassUpdateBlock)(CCEffectRenderPass *pass, CCEffectRenderPassInputs *passInputs); + + +@interface CCEffectRenderPassBeginBlockContext : NSObject + +@property (nonatomic, copy) CCEffectRenderPassBeginBlock block; +@property (nonatomic, strong) NSDictionary *uniformTranslationTable; + +-(id)initWithBlock:(CCEffectRenderPassBeginBlock)block; + +@end + + +@interface CCEffectRenderPass : NSObject + +@property (nonatomic, readonly) NSUInteger indexInEffect; +@property (nonatomic, assign) CCEffectTexCoordMapping texCoord1Mapping; +@property (nonatomic, assign) CCEffectTexCoordMapping texCoord2Mapping; +@property (nonatomic, strong) CCBlendMode* blendMode; +@property (nonatomic, strong) CCShader* shader; +@property (nonatomic, copy) NSArray* beginBlocks; +@property (nonatomic, copy) NSArray* updateBlocks; +@property (nonatomic, copy) NSString *debugLabel; + +-(id)initWithIndex:(NSUInteger)indexInEffect; + +-(void)begin:(CCEffectRenderPassInputs *)passInputs; +-(void)update:(CCEffectRenderPassInputs *)passInputs; +-(void)enqueueTriangles:(CCEffectRenderPassInputs *)passInputs; + +@end + + +@interface CCEffectImpl : NSObject + +@property (nonatomic, copy) NSString *debugName; + +@property (nonatomic, readonly) BOOL supportsDirectRendering; + +@property (nonatomic, readonly) CCShader* shader; +@property (nonatomic, readonly) NSMutableDictionary* shaderUniforms; +@property (nonatomic, readonly) NSArray* vertexFunctions; +@property (nonatomic, readonly) NSArray* fragmentFunctions; +@property (nonatomic, readonly) NSArray* fragmentUniforms; +@property (nonatomic, readonly) NSArray* vertexUniforms; +@property (nonatomic, readonly) NSArray* varyingVars; + +@property (nonatomic, readonly) NSArray* renderPasses; +@property (nonatomic, assign) CCEffectFunctionStitchFlags stitchFlags; + +@property (nonatomic, readonly) BOOL firstInStack; + + +-(id)initWithRenderPasses:(NSArray *)renderPasses fragmentFunctions:(NSArray*)fragmentFunctions vertexFunctions:(NSArray*)vertexFunctions fragmentUniforms:(NSArray*)fragmentUniforms vertexUniforms:(NSArray*)vertexUniforms varyings:(NSArray*)varyings firstInStack:(BOOL)firstInStack; +-(id)initWithRenderPasses:(NSArray *)renderPasses fragmentFunctions:(NSArray*)fragmentFunctions vertexFunctions:(NSArray*)vertexFunctions fragmentUniforms:(NSArray*)fragmentUniforms vertexUniforms:(NSArray*)vertexUniforms varyings:(NSArray*)varyings; + +-(id)initWithRenderPasses:(NSArray *)renderPasses shaderUniforms:(NSMutableDictionary *)uniforms; + +-(CCEffectPrepareResult)prepareForRenderingWithSprite:(CCSprite *)sprite; +-(CCEffectRenderPass *)renderPassAtIndex:(NSUInteger)passIndex; + +-(BOOL)stitchSupported:(CCEffectFunctionStitchFlags)stitch; + ++ (NSSet *)defaultEffectFragmentUniformNames; ++ (NSSet *)defaultEffectVertexUniformNames; + +@end + + @interface CCEffect : NSObject /// ----------------------------------------------------------------------- @@ -47,4 +244,11 @@ */ @property (nonatomic, assign) CGSize padding; +@property (nonatomic, strong) CCEffectImpl *effectImpl; + +@property (nonatomic, readonly) BOOL supportsDirectRendering; +@property (nonatomic, readonly) NSUInteger renderPassCount; + +-(CCEffectPrepareResult)prepareForRenderingWithSprite:(CCSprite *)sprite;; +-(CCEffectRenderPass *)renderPassAtIndex:(NSUInteger)passIndex; @end diff --git a/cocos2d-ext/CCEffects/CCEffect.m b/cocos2d-ext/CCEffects/CCEffect.m index 485aebb3044..b23f3fc78af 100644 --- a/cocos2d-ext/CCEffects/CCEffect.m +++ b/cocos2d-ext/CCEffects/CCEffect.m @@ -7,7 +7,6 @@ // #import "CCEffect.h" -#import "CCEffect_Private.h" #import "CCTexture.h" NSString * const CCShaderUniformPreviousPassTexture = @"cc_PreviousPassTexture"; diff --git a/cocos2d-ext/CCEffects/CCEffectBloom.m b/cocos2d-ext/CCEffects/CCEffectBloom.m index df1e742eac7..75de7799a83 100644 --- a/cocos2d-ext/CCEffects/CCEffectBloom.m +++ b/cocos2d-ext/CCEffects/CCEffectBloom.m @@ -42,7 +42,7 @@ #import "CCEffectBloom.h" #import "CCEFfectUtils.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectBlur.m b/cocos2d-ext/CCEffects/CCEffectBlur.m index a526bb27720..6f10fc18cf9 100644 --- a/cocos2d-ext/CCEffects/CCEffectBlur.m +++ b/cocos2d-ext/CCEffects/CCEffectBlur.m @@ -41,7 +41,7 @@ #import "CCEffectBlur.h" #import "CCEffectUtils.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectBrightness.m b/cocos2d-ext/CCEffects/CCEffectBrightness.m index a3d05e42067..dc0703218ce 100644 --- a/cocos2d-ext/CCEffects/CCEffectBrightness.m +++ b/cocos2d-ext/CCEffects/CCEffectBrightness.m @@ -7,7 +7,7 @@ // #import "CCEffectBrightness.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectColorChannelOffset.m b/cocos2d-ext/CCEffects/CCEffectColorChannelOffset.m index 7c78e81d891..d95aa4f9109 100644 --- a/cocos2d-ext/CCEffects/CCEffectColorChannelOffset.m +++ b/cocos2d-ext/CCEffects/CCEffectColorChannelOffset.m @@ -7,7 +7,7 @@ // #import "CCEffectColorChannelOffset.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectContrast.m b/cocos2d-ext/CCEffects/CCEffectContrast.m index 08d62c7d941..8e5c7da044b 100644 --- a/cocos2d-ext/CCEffects/CCEffectContrast.m +++ b/cocos2d-ext/CCEffects/CCEffectContrast.m @@ -7,7 +7,7 @@ // #import "CCEffectContrast.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectDFInnerGlow.m b/cocos2d-ext/CCEffects/CCEffectDFInnerGlow.m index 14b33e1497b..817dfbba85d 100644 --- a/cocos2d-ext/CCEffects/CCEffectDFInnerGlow.m +++ b/cocos2d-ext/CCEffects/CCEffectDFInnerGlow.m @@ -10,7 +10,7 @@ #if CC_EFFECTS_EXPERIMENTAL -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectDFOutline.m b/cocos2d-ext/CCEffects/CCEffectDFOutline.m index 25214bf77e2..6f64aa7c0ae 100644 --- a/cocos2d-ext/CCEffects/CCEffectDFOutline.m +++ b/cocos2d-ext/CCEffects/CCEffectDFOutline.m @@ -10,7 +10,7 @@ #if CC_EFFECTS_EXPERIMENTAL -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectDistanceField.m b/cocos2d-ext/CCEffects/CCEffectDistanceField.m index ddaa496beed..a8406d8f8db 100644 --- a/cocos2d-ext/CCEffects/CCEffectDistanceField.m +++ b/cocos2d-ext/CCEffects/CCEffectDistanceField.m @@ -10,7 +10,7 @@ #if CC_EFFECTS_EXPERIMENTAL -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectDropShadow.m b/cocos2d-ext/CCEffects/CCEffectDropShadow.m index 4f33859f470..2f9e12aedd2 100644 --- a/cocos2d-ext/CCEffects/CCEffectDropShadow.m +++ b/cocos2d-ext/CCEffects/CCEffectDropShadow.m @@ -41,7 +41,7 @@ #import "CCEffectDropShadow.h" #import "CCEffectUtils.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectGlass.m b/cocos2d-ext/CCEffects/CCEffectGlass.m index 6d15a661e4c..6157c493761 100644 --- a/cocos2d-ext/CCEffects/CCEffectGlass.m +++ b/cocos2d-ext/CCEffects/CCEffectGlass.m @@ -14,7 +14,7 @@ #import "CCSpriteFrame.h" #import "CCTexture.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCSprite.h" diff --git a/cocos2d-ext/CCEffects/CCEffectHue.m b/cocos2d-ext/CCEffects/CCEffectHue.m index 21d152f713a..0368c907ad0 100644 --- a/cocos2d-ext/CCEffects/CCEffectHue.m +++ b/cocos2d-ext/CCEffects/CCEffectHue.m @@ -7,7 +7,7 @@ #import "CCEffectHue.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectInvert.m b/cocos2d-ext/CCEffects/CCEffectInvert.m index 3f2dae7a9ad..7cca3543af8 100644 --- a/cocos2d-ext/CCEffects/CCEffectInvert.m +++ b/cocos2d-ext/CCEffects/CCEffectInvert.m @@ -7,7 +7,7 @@ // #import "CCEffectInvert.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" @interface CCEffectInvertImpl : CCEffectImpl diff --git a/cocos2d-ext/CCEffects/CCEffectLighting.m b/cocos2d-ext/CCEffects/CCEffectLighting.m index 656195b1803..789e725ae92 100644 --- a/cocos2d-ext/CCEffects/CCEffectLighting.m +++ b/cocos2d-ext/CCEffects/CCEffectLighting.m @@ -18,7 +18,7 @@ #import "CCSpriteFrame.h" #import "CCTexture.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCSprite.h" diff --git a/cocos2d-ext/CCEffects/CCEffectNode.m b/cocos2d-ext/CCEffects/CCEffectNode.m index c3713b81de9..6c94d221e14 100644 --- a/cocos2d-ext/CCEffects/CCEffectNode.m +++ b/cocos2d-ext/CCEffects/CCEffectNode.m @@ -22,7 +22,7 @@ #import "CCNode.h" #import "CCRenderer_Private.h" #import "CCRenderTexture_Private.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #if __CC_PLATFORM_MAC #import diff --git a/cocos2d-ext/CCEffects/CCEffectOutline.m b/cocos2d-ext/CCEffects/CCEffectOutline.m index acb5bb557ec..eb21d4b05d3 100644 --- a/cocos2d-ext/CCEffects/CCEffectOutline.m +++ b/cocos2d-ext/CCEffects/CCEffectOutline.m @@ -7,11 +7,10 @@ // #import "CCEffectOutline.h" - #if CC_EFFECTS_EXPERIMENTAL -#import "CCEffect_Private.h" -#import "CCSprite_Private.h" +#import "CCEffect.h" +#import "CCSprite.h" #import "CCTexture.h" #import "CCSpriteFrame.h" diff --git a/cocos2d-ext/CCEffects/CCEffectPixellate.m b/cocos2d-ext/CCEffects/CCEffectPixellate.m index fad59858b41..0c7d0de86f8 100644 --- a/cocos2d-ext/CCEffects/CCEffectPixellate.m +++ b/cocos2d-ext/CCEffects/CCEffectPixellate.m @@ -41,7 +41,7 @@ #import "CCEffectPixellate.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectReflection.m b/cocos2d-ext/CCEffects/CCEffectReflection.m index 73b32efb4c0..6b7d74d1a00 100644 --- a/cocos2d-ext/CCEffects/CCEffectReflection.m +++ b/cocos2d-ext/CCEffects/CCEffectReflection.m @@ -14,7 +14,7 @@ #import "CCSpriteFrame.h" #import "CCTexture.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCSprite.h" diff --git a/cocos2d-ext/CCEffects/CCEffectRefraction.m b/cocos2d-ext/CCEffects/CCEffectRefraction.m index 1dd54935186..0126fafec9c 100644 --- a/cocos2d-ext/CCEffects/CCEffectRefraction.m +++ b/cocos2d-ext/CCEffects/CCEffectRefraction.m @@ -14,7 +14,7 @@ #import "CCSpriteFrame.h" #import "CCTexture.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCSprite.h" diff --git a/cocos2d-ext/CCEffects/CCEffectRenderer.m b/cocos2d-ext/CCEffects/CCEffectRenderer.m index 956571d0df5..1d304b2d486 100644 --- a/cocos2d-ext/CCEffects/CCEffectRenderer.m +++ b/cocos2d-ext/CCEffects/CCEffectRenderer.m @@ -13,8 +13,7 @@ #import "CCEffectStack.h" #import "CCEffectUtils.h" #import "CCTexture.h" - -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer_Private.h" #import "CCSprite.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectSaturation.m b/cocos2d-ext/CCEffects/CCEffectSaturation.m index 63feab36491..af30ec8bab6 100644 --- a/cocos2d-ext/CCEffects/CCEffectSaturation.m +++ b/cocos2d-ext/CCEffects/CCEffectSaturation.m @@ -41,7 +41,7 @@ #import "CCEffectSaturation.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffectStack.m b/cocos2d-ext/CCEffects/CCEffectStack.m index 3cd3e776cc0..7a134cf860c 100644 --- a/cocos2d-ext/CCEffects/CCEffectStack.m +++ b/cocos2d-ext/CCEffects/CCEffectStack.m @@ -8,7 +8,7 @@ #import "CCEffectStack.h" #import "CCEffectStack_Private.h" -#import "CCEffect_Private.h" +#import "CCEffect.h" @implementation CCEffectStack diff --git a/cocos2d-ext/CCEffects/CCEffectStereo.m b/cocos2d-ext/CCEffects/CCEffectStereo.m index 05346262e70..19d2af8c5c3 100644 --- a/cocos2d-ext/CCEffects/CCEffectStereo.m +++ b/cocos2d-ext/CCEffects/CCEffectStereo.m @@ -10,7 +10,7 @@ #if CC_EFFECTS_EXPERIMENTAL -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCRenderer.h" #import "CCTexture.h" diff --git a/cocos2d-ext/CCEffects/CCEffect_Private.h b/cocos2d-ext/CCEffects/CCEffect_Private.h deleted file mode 100644 index 3402384d562..00000000000 --- a/cocos2d-ext/CCEffects/CCEffect_Private.h +++ /dev/null @@ -1,223 +0,0 @@ -// -// CCEffect_Private.h -// cocos2d-ios -// -// Created by Oleg Osin on 4/10/14. -// -// - -#import "CCEffect.h" -#import "CCSprite.h" - - -extern NSString * const CCShaderUniformPreviousPassTexture; -extern NSString * const CCShaderUniformTexCoord1Center; -extern NSString * const CCShaderUniformTexCoord1Extents; -extern NSString * const CCShaderUniformTexCoord2Center; -extern NSString * const CCShaderUniformTexCoord2Extents; -extern NSString * const CCEffectDefaultInitialInputSnippet; -extern NSString * const CCEffectDefaultInputSnippet; - - -typedef NS_ENUM(NSUInteger, CCEffectPrepareStatus) -{ - CCEffectPrepareFailure = 0, - CCEffectPrepareSuccess = 1, -}; - -typedef NS_OPTIONS(NSUInteger, CCEffectPrepareWhatChanged) -{ - CCEffectPrepareNothingChanged = 0, - CCEffectPreparePassesChanged = (1 << 0), - CCEffectPrepareShaderChanged = (1 << 1), - CCEffectPrepareUniformsChanged = (1 << 2) -}; - -typedef struct CCEffectPrepareResult -{ - CCEffectPrepareStatus status; - CCEffectPrepareWhatChanged changes; -} CCEffectPrepareResult; - -extern const CCEffectPrepareResult CCEffectPrepareNoop; - -typedef NS_ENUM(NSUInteger, CCEffectFunctionStitchFlags) -{ - CCEffectFunctionStitchBefore = 1 << 0, - CCEffectFunctionStitchAfter = 1 << 1, - CCEffectFunctionStitchBoth = (CCEffectFunctionStitchBefore | CCEffectFunctionStitchAfter), -}; - -typedef NS_ENUM(NSUInteger, CCEffectTexCoordMapping) -{ - CCEffectTexCoordMapMainTex = 0, - CCEffectTexCoordMapPreviousPassTex = 1, - CCEffectTexCoordMapCustomTex = 2, - CCEffectTexCoordMapCustomTexNoTransform = 3 -}; - -@interface CCEffectFunction : NSObject - -@property (nonatomic, readonly) NSString* body; -@property (nonatomic, readonly) NSString* name; -@property (nonatomic, readonly) NSArray* inputs; -@property (nonatomic, readonly) NSString* inputString; -@property (nonatomic, readonly) NSString* returnType; -@property (nonatomic, readonly) NSString* function; - --(id)initWithName:(NSString*)name body:(NSString*)body inputs:(NSArray*)inputs returnType:(NSString*)returnType; -+(instancetype)functionWithName:(NSString*)name body:(NSString*)body inputs:(NSArray*)inputs returnType:(NSString*)returnType; - --(NSString*)callStringWithInputs:(NSArray*)inputs; - -@end - -@interface CCEffectFunctionInput : NSObject - -@property (nonatomic, readonly) NSString* type; -@property (nonatomic, readonly) NSString* name; -@property (nonatomic, readonly) NSString* initialSnippet; -@property (nonatomic, readonly) NSString* snippet; - --(id)initWithType:(NSString*)type name:(NSString*)name initialSnippet:(NSString*)initialSnippet snippet:(NSString*)snippet; -+(instancetype)inputWithType:(NSString*)type name:(NSString*)name initialSnippet:(NSString*)initialSnippet snippet:(NSString*)snippet; - -@end - -@interface CCEffectUniform : NSObject - -@property (nonatomic, readonly) NSString* name; -@property (nonatomic, readonly) NSString* type; -@property (nonatomic, readonly) NSString* declaration; -@property (nonatomic, readonly) NSValue* value; - --(id)initWithType:(NSString*)type name:(NSString*)name value:(NSValue*)value; -+(instancetype)uniform:(NSString*)type name:(NSString*)name value:(NSValue*)value; - -@end - -@interface CCEffectVarying : NSObject - -@property (nonatomic, readonly) NSString* name; -@property (nonatomic, readonly) NSString* type; -@property (nonatomic, readonly) NSString* declaration; -@property (nonatomic, readonly) NSInteger count; - --(id)initWithType:(NSString*)type name:(NSString*)name; --(id)initWithType:(NSString*)type name:(NSString*)name count:(NSInteger)count; -+(instancetype)varying:(NSString*)type name:(NSString*)name; -+(instancetype)varying:(NSString*)type name:(NSString*)name count:(NSInteger)count; - -@end - - - -@interface CCEffectRenderPassInputs : NSObject - -@property (nonatomic, assign) NSInteger renderPassId; -@property (nonatomic, strong) CCRenderer* renderer; -@property (nonatomic, strong) CCSprite *sprite; -@property (nonatomic, assign) CCSpriteVertexes verts; -@property (nonatomic, strong) CCTexture *previousPassTexture; -@property (nonatomic, assign) GLKMatrix4 transform; -@property (nonatomic, assign) GLKMatrix4 ndcToNodeLocal; -@property (nonatomic, assign) GLKVector2 texCoord1Center; -@property (nonatomic, assign) GLKVector2 texCoord1Extents; -@property (nonatomic, assign) GLKVector2 texCoord2Center; -@property (nonatomic, assign) GLKVector2 texCoord2Extents; -@property (nonatomic, strong) NSMutableDictionary* shaderUniforms; -@property (nonatomic, strong) NSDictionary* uniformTranslationTable; -@property (nonatomic, assign) BOOL needsClear; - --(void)setVertsWorkAround:(CCSpriteVertexes*)verts; - -@end - - -@class CCEffectRenderPass; - -typedef void (^CCEffectRenderPassBeginBlock)(CCEffectRenderPass *pass, CCEffectRenderPassInputs *passInputs); -typedef void (^CCEffectRenderPassUpdateBlock)(CCEffectRenderPass *pass, CCEffectRenderPassInputs *passInputs); - - -@interface CCEffectRenderPassBeginBlockContext : NSObject - -@property (nonatomic, copy) CCEffectRenderPassBeginBlock block; -@property (nonatomic, strong) NSDictionary *uniformTranslationTable; - --(id)initWithBlock:(CCEffectRenderPassBeginBlock)block; - -@end - - -@interface CCEffectRenderPass : NSObject - -@property (nonatomic, readonly) NSUInteger indexInEffect; -@property (nonatomic, assign) CCEffectTexCoordMapping texCoord1Mapping; -@property (nonatomic, assign) CCEffectTexCoordMapping texCoord2Mapping; -@property (nonatomic, strong) CCBlendMode* blendMode; -@property (nonatomic, strong) CCShader* shader; -@property (nonatomic, copy) NSArray* beginBlocks; -@property (nonatomic, copy) NSArray* updateBlocks; -@property (nonatomic, copy) NSString *debugLabel; - --(id)initWithIndex:(NSUInteger)indexInEffect; - --(void)begin:(CCEffectRenderPassInputs *)passInputs; --(void)update:(CCEffectRenderPassInputs *)passInputs; --(void)enqueueTriangles:(CCEffectRenderPassInputs *)passInputs; - -@end - - -@class CCEffectImpl; - - -@interface CCEffect () - -@property (nonatomic, strong) CCEffectImpl *effectImpl; - -@property (nonatomic, readonly) BOOL supportsDirectRendering; -@property (nonatomic, readonly) NSUInteger renderPassCount; - --(CCEffectPrepareResult)prepareForRenderingWithSprite:(CCSprite *)sprite;; --(CCEffectRenderPass *)renderPassAtIndex:(NSUInteger)passIndex; - -@end - - -@interface CCEffectImpl : NSObject - -@property (nonatomic, copy) NSString *debugName; - -@property (nonatomic, readonly) BOOL supportsDirectRendering; - -@property (nonatomic, readonly) CCShader* shader; -@property (nonatomic, readonly) NSMutableDictionary* shaderUniforms; -@property (nonatomic, readonly) NSArray* vertexFunctions; -@property (nonatomic, readonly) NSArray* fragmentFunctions; -@property (nonatomic, readonly) NSArray* fragmentUniforms; -@property (nonatomic, readonly) NSArray* vertexUniforms; -@property (nonatomic, readonly) NSArray* varyingVars; - -@property (nonatomic, readonly) NSArray* renderPasses; -@property (nonatomic, assign) CCEffectFunctionStitchFlags stitchFlags; - -@property (nonatomic, readonly) BOOL firstInStack; - - --(id)initWithRenderPasses:(NSArray *)renderPasses fragmentFunctions:(NSArray*)fragmentFunctions vertexFunctions:(NSArray*)vertexFunctions fragmentUniforms:(NSArray*)fragmentUniforms vertexUniforms:(NSArray*)vertexUniforms varyings:(NSArray*)varyings firstInStack:(BOOL)firstInStack; --(id)initWithRenderPasses:(NSArray *)renderPasses fragmentFunctions:(NSArray*)fragmentFunctions vertexFunctions:(NSArray*)vertexFunctions fragmentUniforms:(NSArray*)fragmentUniforms vertexUniforms:(NSArray*)vertexUniforms varyings:(NSArray*)varyings; - --(id)initWithRenderPasses:(NSArray *)renderPasses shaderUniforms:(NSMutableDictionary *)uniforms; - --(CCEffectPrepareResult)prepareForRenderingWithSprite:(CCSprite *)sprite; --(CCEffectRenderPass *)renderPassAtIndex:(NSUInteger)passIndex; - --(BOOL)stitchSupported:(CCEffectFunctionStitchFlags)stitch; - -+ (NSSet *)defaultEffectFragmentUniformNames; -+ (NSSet *)defaultEffectVertexUniformNames; - -@end - diff --git a/cocos2d/CCNoARC.m b/cocos2d/CCNoARC.m index 1c23da79dba..3e882d6a6df 100644 --- a/cocos2d/CCNoARC.m +++ b/cocos2d/CCNoARC.m @@ -3,7 +3,6 @@ #if CC_EFFECTS #import "CCEffect.h" #import "CCEffectRenderer.h" -#import "CCEffect_Private.h" #endif #if __CC_METAL_SUPPORTED_AND_ENABLED diff --git a/cocos2d/CCSprite.m b/cocos2d/CCSprite.m index de2037d853f..c95cd627141 100644 --- a/cocos2d/CCSprite.m +++ b/cocos2d/CCSprite.m @@ -40,7 +40,7 @@ #import "CCRenderer_Private.h" #if CC_EFFECTS -#import "CCEffect_Private.h" +#import "CCEffect.h" #import "CCEffectRenderer.h" #endif From 6d1b6df230046e088fe1da93df63a193e8ac7f2e Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Thu, 10 Mar 2016 22:12:27 +0100 Subject: [PATCH 76/94] Getting rid of CCEffectStack_Private.h --- cocos2d-ext/CCEffects/CCEffectStack.h | 6 ++++++ cocos2d-ext/CCEffects/CCEffectStack.m | 1 - cocos2d-ext/CCEffects/CCEffectStack_Private.h | 19 ------------------- 3 files changed, 6 insertions(+), 20 deletions(-) delete mode 100644 cocos2d-ext/CCEffects/CCEffectStack_Private.h diff --git a/cocos2d-ext/CCEffects/CCEffectStack.h b/cocos2d-ext/CCEffects/CCEffectStack.h index 074f4c6925c..44569fe8a27 100644 --- a/cocos2d-ext/CCEffects/CCEffectStack.h +++ b/cocos2d-ext/CCEffects/CCEffectStack.h @@ -93,4 +93,10 @@ */ @property (nonatomic, readonly) NSUInteger effectCount; +@property (nonatomic, assign) BOOL stitchingEnabled; + +@property (nonatomic, readonly) NSArray *effects; + +@property (nonatomic, readonly) NSArray *flattenedEffects; + @end diff --git a/cocos2d-ext/CCEffects/CCEffectStack.m b/cocos2d-ext/CCEffects/CCEffectStack.m index 7a134cf860c..e2da103659e 100644 --- a/cocos2d-ext/CCEffects/CCEffectStack.m +++ b/cocos2d-ext/CCEffects/CCEffectStack.m @@ -7,7 +7,6 @@ // #import "CCEffectStack.h" -#import "CCEffectStack_Private.h" #import "CCEffect.h" diff --git a/cocos2d-ext/CCEffects/CCEffectStack_Private.h b/cocos2d-ext/CCEffects/CCEffectStack_Private.h deleted file mode 100644 index d73f5bcf58a..00000000000 --- a/cocos2d-ext/CCEffects/CCEffectStack_Private.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// CCEffectStack_Private.h -// cocos2d-ios -// -// Created by Thayer J Andrews on 5/7/14. -// -// - -#import "CCEffectStack.h" -#import "CCEffectStackProtocol.h" - - -@interface CCEffectStack () - -@property (nonatomic, assign) BOOL stitchingEnabled; -@property (nonatomic, readonly) NSArray *effects; -@property (nonatomic, readonly) NSArray *flattenedEffects; - -@end From 5e2ab92f0730e5f2bdd41fb9b2460826bf3ec719 Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Thu, 10 Mar 2016 22:16:46 +0100 Subject: [PATCH 77/94] Getting rid of CCRenderTexture_Private.h --- cocos2d-ext/CCEffects/CCEffectNode.m | 3 +- cocos2d-ext/CCEffects/CCEffectUtils.m | 2 +- cocos2d/CCRenderTexture.h | 41 +++++++++++++++++++++ cocos2d/CCRenderTexture.m | 3 +- cocos2d/CCRenderTexture_Private.h | 53 --------------------------- 5 files changed, 44 insertions(+), 58 deletions(-) delete mode 100644 cocos2d/CCRenderTexture_Private.h diff --git a/cocos2d-ext/CCEffects/CCEffectNode.m b/cocos2d-ext/CCEffects/CCEffectNode.m index 6c94d221e14..9723366ee2b 100644 --- a/cocos2d-ext/CCEffects/CCEffectNode.m +++ b/cocos2d-ext/CCEffects/CCEffectNode.m @@ -16,12 +16,11 @@ #import "Support/ccUtils.h" #import "Support/CCFileUtils.h" #import "Support/CGPointExtension.h" - #import "CCTexture.h" #import "CCDirector.h" #import "CCNode.h" #import "CCRenderer_Private.h" -#import "CCRenderTexture_Private.h" +#import "CCRenderTexture.h" #import "CCEffect.h" #if __CC_PLATFORM_MAC diff --git a/cocos2d-ext/CCEffects/CCEffectUtils.m b/cocos2d-ext/CCEffects/CCEffectUtils.m index 156f1664e84..c8517f793a7 100644 --- a/cocos2d-ext/CCEffects/CCEffectUtils.m +++ b/cocos2d-ext/CCEffects/CCEffectUtils.m @@ -7,7 +7,7 @@ // #import "CCEffectUtils.h" -#import "CCRenderTexture_Private.h" +#import "CCRenderTexture.h" #ifndef BLUR_OPTIMIZED_RADIUS_MAX #define BLUR_OPTIMIZED_RADIUS_MAX 4UL diff --git a/cocos2d/CCRenderTexture.h b/cocos2d/CCRenderTexture.h index 6472e29ea4f..8690d6f0cb5 100644 --- a/cocos2d/CCRenderTexture.h +++ b/cocos2d/CCRenderTexture.h @@ -35,6 +35,8 @@ #import #endif // iPHone +@class CCFrameBufferObject; + /** * Image format when saving render textures. Used by CCRenderTexture. */ @@ -57,6 +59,29 @@ typedef NS_ENUM(NSInteger, CCRenderTextureImageFormat) There are also functions for saving the render texture to disk in PNG or JPG format. */ @interface CCRenderTexture : CCNode +{ + +@protected + GLenum _pixelFormat; + GLuint _depthStencilFormat; + + // Reference to the previous render to be restored by end. + CCRenderer *_previousRenderer; + + GLKVector4 _clearColor; + + float _contentScale; + + // Raw projection matrix used for rendering. + // For metal will be flipped on the y-axis compared to the .projection property. + GLKMatrix4 _projection; + + CCSprite* _sprite; + + CCFrameBufferObject *_framebuffer; + + BOOL _contentSizeChanged; +} /** * @name Creating a Render Texture @@ -316,5 +341,21 @@ typedef NS_ENUM(NSInteger, CCRenderTextureImageFormat) #endif // __CC_PLATFORM_IOS +-(void)createTextureAndFboWithPixelSize:(CGSize)pixelSize; + +-(void)destroy; + +-(void)assignSpriteTexture; + +@end + + + +@interface CCRenderTextureSprite : CCSprite + +@property (nonatomic, weak) CCRenderTexture *renderTexture; + +- (CGAffineTransform)nodeToWorldTransform; + @end diff --git a/cocos2d/CCRenderTexture.m b/cocos2d/CCRenderTexture.m index 7b19968176d..3885fda6252 100644 --- a/cocos2d/CCRenderTexture.m +++ b/cocos2d/CCRenderTexture.m @@ -32,9 +32,8 @@ #import "Support/ccUtils.h" #import "Support/CCFileUtils.h" #import "Support/CGPointExtension.h" - #import "CCRenderer_Private.h" -#import "CCRenderTexture_Private.h" +#import "CCRenderTexture.h" #import "CCRenderDispatch.h" #import "CCMetalSupport_Private.h" diff --git a/cocos2d/CCRenderTexture_Private.h b/cocos2d/CCRenderTexture_Private.h deleted file mode 100644 index b8e7394ae80..00000000000 --- a/cocos2d/CCRenderTexture_Private.h +++ /dev/null @@ -1,53 +0,0 @@ -// -// CCRenderTexture_Private.h -// cocos2d-ios -// -// Created by Oleg Osin on 4/24/14. -// -// - -#import "CCRenderTexture.h" - -@class CCFrameBufferObject; - -@interface CCRenderTexture() { - -@protected - GLenum _pixelFormat; - GLuint _depthStencilFormat; - - // Reference to the previous render to be restored by end. - CCRenderer *_previousRenderer; - - GLKVector4 _clearColor; - - float _contentScale; - - // Raw projection matrix used for rendering. - // For metal will be flipped on the y-axis compared to the .projection property. - GLKMatrix4 _projection; - - CCSprite* _sprite; - - CCFrameBufferObject *_framebuffer; - - BOOL _contentSizeChanged; -} - --(void)createTextureAndFboWithPixelSize:(CGSize)pixelSize; --(void)destroy; - --(void)assignSpriteTexture; - -@end - - - -@interface CCRenderTextureSprite : CCSprite - -@property (nonatomic, weak) CCRenderTexture *renderTexture; - -- (CGAffineTransform)nodeToWorldTransform; - -@end - From 548f24abaea910b4dc87451e92264cf87cd7c47d Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Fri, 11 Mar 2016 06:46:07 +0100 Subject: [PATCH 78/94] Getting rid of CCParticleSystem_Private.h and CCParticleSystemBase_Private.h --- cocos2d-ext/CCParticles/CCParticleBatchNode.m | 2 -- cocos2d-ext/CCParticles/CCParticleSystem.h | 8 +++++ cocos2d-ext/CCParticles/CCParticleSystem.m | 2 -- .../CCParticles/CCParticleSystemBase.h | 5 +++ .../CCParticles/CCParticleSystemBase.m | 2 -- .../CCParticleSystemBase_Private.h | 35 ------------------- .../CCParticles/CCParticleSystem_Private.h | 35 ------------------- 7 files changed, 13 insertions(+), 76 deletions(-) delete mode 100644 cocos2d-ext/CCParticles/CCParticleSystemBase_Private.h delete mode 100644 cocos2d-ext/CCParticles/CCParticleSystem_Private.h diff --git a/cocos2d-ext/CCParticles/CCParticleBatchNode.m b/cocos2d-ext/CCParticles/CCParticleBatchNode.m index 51d20268e2c..0f93f2f5a05 100644 --- a/cocos2d-ext/CCParticles/CCParticleBatchNode.m +++ b/cocos2d-ext/CCParticles/CCParticleBatchNode.m @@ -39,8 +39,6 @@ #import "Support/ZipUtils.h" #import "Support/CCFileUtils.h" -#import "CCParticleSystemBase_Private.h" - #define kCCParticleDefaultCapacity 500 @interface CCNode() diff --git a/cocos2d-ext/CCParticles/CCParticleSystem.h b/cocos2d-ext/CCParticles/CCParticleSystem.h index 0c471f98553..16dbfc0609e 100644 --- a/cocos2d-ext/CCParticles/CCParticleSystem.h +++ b/cocos2d-ext/CCParticles/CCParticleSystem.h @@ -50,5 +50,13 @@ */ -(void) setTexture:(CCTexture *)texture withRect:(CGRect)rect; +// OS X +// Initilizes the texture with a rectangle measured in points. +-(void) initTexCoordsWithRect:(CGRect)rect; + +// OS X +// Set sprite frame for system. +-(void)setSpriteFrame:(CCSpriteFrame*)spriteFrame; + @end diff --git a/cocos2d-ext/CCParticles/CCParticleSystem.m b/cocos2d-ext/CCParticles/CCParticleSystem.m index b143e704e52..56aba64a726 100644 --- a/cocos2d-ext/CCParticles/CCParticleSystem.m +++ b/cocos2d-ext/CCParticles/CCParticleSystem.m @@ -45,8 +45,6 @@ #import "Support/CGPointExtension.h" #import "Support/NSThread+performBlock.h" -#import "CCParticleSystemBase_Private.h" -#import "CCParticleSystem_Private.h" #import "CCTexture.h" @implementation CCParticleSystem { diff --git a/cocos2d-ext/CCParticles/CCParticleSystemBase.h b/cocos2d-ext/CCParticles/CCParticleSystemBase.h index 5c1cfb6c862..41b62328b07 100644 --- a/cocos2d-ext/CCParticles/CCParticleSystemBase.h +++ b/cocos2d-ext/CCParticles/CCParticleSystemBase.h @@ -614,5 +614,10 @@ typedef void (*_CC_UPDATE_PARTICLE_IMP)(id, SEL, _CCParticle*, CGPoint); @see rotatePerSecond */ @property (nonatomic,readwrite,assign) float rotatePerSecondVar; +// Update. +-(void) update: (CCTime) dt; + +// System full status. +-(BOOL) isFull; @end diff --git a/cocos2d-ext/CCParticles/CCParticleSystemBase.m b/cocos2d-ext/CCParticles/CCParticleSystemBase.m index 4cef2230552..460a6fde2ed 100644 --- a/cocos2d-ext/CCParticles/CCParticleSystemBase.m +++ b/cocos2d-ext/CCParticles/CCParticleSystemBase.m @@ -61,8 +61,6 @@ #import "Support/ZipUtils.h" #import "Support/CCFileUtils.h" -#import "CCParticleSystemBase_Private.h" - @implementation CCParticleSystemBase @synthesize active = _active, duration = _duration; @synthesize sourcePosition = _sourcePosition, posVar = _posVar; diff --git a/cocos2d-ext/CCParticles/CCParticleSystemBase_Private.h b/cocos2d-ext/CCParticles/CCParticleSystemBase_Private.h deleted file mode 100644 index f1e6945d198..00000000000 --- a/cocos2d-ext/CCParticles/CCParticleSystemBase_Private.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import "CCParticleSystemBase.h" - -@interface CCParticleSystemBase () - -// Update. --(void) update: (CCTime) dt; - -// System full status. --(BOOL) isFull; - -@end diff --git a/cocos2d-ext/CCParticles/CCParticleSystem_Private.h b/cocos2d-ext/CCParticles/CCParticleSystem_Private.h deleted file mode 100644 index 91e63a0f776..00000000000 --- a/cocos2d-ext/CCParticles/CCParticleSystem_Private.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import "CCParticleSystem.h" - -// OS X -@interface CCParticleSystem () -// Initilizes the texture with a rectangle measured in points. --(void) initTexCoordsWithRect:(CGRect)rect; - -// Set sprite frame for system. --(void)setSpriteFrame:(CCSpriteFrame*)spriteFrame; - -@end From 2d50d32141048e7c2fd4228e6517df65e076d73d Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Fri, 11 Mar 2016 06:48:27 +0100 Subject: [PATCH 79/94] Getting rid of CCTiledMapLayer_Private.h --- cocos2d-ext/TileMaps/CCTiledMap.m | 2 - cocos2d-ext/TileMaps/CCTiledMapLayer.h | 7 ++++ cocos2d-ext/TileMaps/CCTiledMapLayer.m | 1 - .../TileMaps/CCTiledMapLayer_Private.h | 38 ------------------- 4 files changed, 7 insertions(+), 41 deletions(-) delete mode 100644 cocos2d-ext/TileMaps/CCTiledMapLayer_Private.h diff --git a/cocos2d-ext/TileMaps/CCTiledMap.m b/cocos2d-ext/TileMaps/CCTiledMap.m index 3a1a1c50816..dceb5131264 100644 --- a/cocos2d-ext/TileMaps/CCTiledMap.m +++ b/cocos2d-ext/TileMaps/CCTiledMap.m @@ -37,8 +37,6 @@ #import "CCTextureCache.h" #import "Support/CGPointExtension.h" -#import "CCTiledMapLayer_Private.h" - #pragma mark - #pragma mark CCTMXTiledMap diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer.h b/cocos2d-ext/TileMaps/CCTiledMapLayer.h index bc8526fec67..47d554a2319 100644 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer.h +++ b/cocos2d-ext/TileMaps/CCTiledMapLayer.h @@ -40,6 +40,8 @@ will turn them all into sprites, possibly adding a significant memory overhead. */ +typedef void (^CCTiledMapLayerAnimationBlock)(NSUInteger tileX, NSUInteger tileY, uint32_t *gid, uint32_t *flags, GLKVector4 *color); + @interface CCTiledMapLayer : CCNode /// ----------------------------------------------------------------------- @@ -201,4 +203,9 @@ */ -(void) addChild:(CCNode*)node z:(NSInteger)z tag:(NSInteger)tag; +@property(nonatomic, copy) CCTiledMapLayerAnimationBlock animationBlock; + +// Setup the tiles. +-(void) setupTiles; + @end diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer.m b/cocos2d-ext/TileMaps/CCTiledMapLayer.m index 48ba5d2334d..eb1bbc380c7 100644 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer.m +++ b/cocos2d-ext/TileMaps/CCTiledMapLayer.m @@ -37,7 +37,6 @@ #import "CCTextureCache.h" #import "CCShader.h" #import "Support/CGPointExtension.h" -#import "CCTiledMapLayer_Private.h" #import "CCTexture.h" #pragma mark - diff --git a/cocos2d-ext/TileMaps/CCTiledMapLayer_Private.h b/cocos2d-ext/TileMaps/CCTiledMapLayer_Private.h deleted file mode 100644 index bae09e4c5ac..00000000000 --- a/cocos2d-ext/TileMaps/CCTiledMapLayer_Private.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2009-2010 Ricardo Quesada - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - -#import "CCTiledMapLayer.h" - -typedef void (^CCTiledMapLayerAnimationBlock)(NSUInteger tileX, NSUInteger tileY, uint32_t *gid, uint32_t *flags, GLKVector4 *color); - -@interface CCTiledMapLayer () - -@property(nonatomic, copy) CCTiledMapLayerAnimationBlock animationBlock; - -// Setup the tiles. --(void) setupTiles; - -@end From 073890ee8c504bfbe089e892d3e4349459687ec2 Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Fri, 11 Mar 2016 06:50:58 +0100 Subject: [PATCH 80/94] Getting rid of CCAnimationManager_Private.h --- .../CCAnimationManager+FrameAnimation.m | 2 +- cocos2d-ext/CCBReader/CCAnimationManager.h | 31 ++++++++++ cocos2d-ext/CCBReader/CCAnimationManager.m | 1 - .../CCBReader/CCAnimationManager_Private.h | 59 ------------------- cocos2d-ext/CCBReader/CCBReader.m | 1 - 5 files changed, 32 insertions(+), 62 deletions(-) delete mode 100644 cocos2d-ext/CCBReader/CCAnimationManager_Private.h diff --git a/cocos2d-ext/CCBReader/CCAnimationManager+FrameAnimation.m b/cocos2d-ext/CCBReader/CCAnimationManager+FrameAnimation.m index 713e93871bb..b6db629a7df 100644 --- a/cocos2d-ext/CCBReader/CCAnimationManager+FrameAnimation.m +++ b/cocos2d-ext/CCBReader/CCAnimationManager+FrameAnimation.m @@ -7,7 +7,7 @@ // #import "CCAnimationManager+FrameAnimation.h" -#import "CCAnimationManager_Private.h" +#import "CCAnimationManager.h" @implementation CCAnimationManager (FrameAnimation) diff --git a/cocos2d-ext/CCBReader/CCAnimationManager.h b/cocos2d-ext/CCBReader/CCAnimationManager.h index cb5fd5b0ba5..2a1ab0e1ccb 100644 --- a/cocos2d-ext/CCBReader/CCAnimationManager.h +++ b/cocos2d-ext/CCBReader/CCAnimationManager.h @@ -129,4 +129,35 @@ /// @see CCBAnimationManagerDelegate @property (nonatomic,weak) NSObject* delegate; +// Sequence Array +@property (nonatomic,readonly) NSMutableArray* sequences; + + +// Auto play sequence id. +@property (nonatomic,assign) int autoPlaySequenceId; + +// Base node. +@property (nonatomic,unsafe_unretained) CCNode* rootNode; + +// (CCB) Optional owner +@property (nonatomic,unsafe_unretained) id owner; + +// (CCB) Resolution and default container size. +@property (nonatomic,assign) CGSize rootContainerSize; + +// (CCB) Node Management +- (CGSize) containerSize:(CCNode*)node; +- (void) addNode:(CCNode*)node andSequences:(NSDictionary*)seq; +- (void) moveAnimationsFromNode:(CCNode*)fromNode toNode:(CCNode*)toNode; + +// Reset node state. +- (void) setBaseValue:(id)value forNode:(CCNode*)node propertyName:(NSString*)propName; + +- (void) runAnimationsForSequenceId:(int)seqId tweenDuration:(float) tweenDuration; + +- (void)timeSeekForSequenceId:(int)seqId time:(float)time; + +#pragma mark Simple Sequence Builder +- (void)addKeyFramesForSequenceNamed:(NSString*)name propertyType:(CCBSequencePropertyType)propertyType frameArray:(NSArray*)frameArray node:(CCNode *)node loop:(BOOL)loop; + @end diff --git a/cocos2d-ext/CCBReader/CCAnimationManager.m b/cocos2d-ext/CCBReader/CCAnimationManager.m index 0876ef2f262..c0c5983d5d1 100644 --- a/cocos2d-ext/CCBReader/CCAnimationManager.m +++ b/cocos2d-ext/CCBReader/CCAnimationManager.m @@ -23,7 +23,6 @@ */ #import "CCAnimationManager.h" -#import "CCAnimationManager_Private.h" #import "CCBKeyframe.h" #import "CCBSequence.h" #import "CCBSequenceProperty.h" diff --git a/cocos2d-ext/CCBReader/CCAnimationManager_Private.h b/cocos2d-ext/CCBReader/CCAnimationManager_Private.h deleted file mode 100644 index a87fc298f23..00000000000 --- a/cocos2d-ext/CCBReader/CCAnimationManager_Private.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013 Apportable Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -@interface CCAnimationManager () - -// Sequence Array -@property (nonatomic,readonly) NSMutableArray* sequences; - - -// Auto play sequence id. -@property (nonatomic,assign) int autoPlaySequenceId; - -// Base node. -@property (nonatomic,unsafe_unretained) CCNode* rootNode; - -// (CCB) Optional owner -@property (nonatomic,unsafe_unretained) id owner; - -// (CCB) Resolution and default container size. -@property (nonatomic,assign) CGSize rootContainerSize; - -// (CCB) Node Management -- (CGSize) containerSize:(CCNode*)node; -- (void) addNode:(CCNode*)node andSequences:(NSDictionary*)seq; -- (void) moveAnimationsFromNode:(CCNode*)fromNode toNode:(CCNode*)toNode; - -// Reset node state. -- (void) setBaseValue:(id)value forNode:(CCNode*)node propertyName:(NSString*)propName; - -- (void) runAnimationsForSequenceId:(int)seqId tweenDuration:(float) tweenDuration; - -- (void)timeSeekForSequenceId:(int)seqId time:(float)time; - -#pragma mark Simple Sequence Builder -- (void)addKeyFramesForSequenceNamed:(NSString*)name propertyType:(CCBSequencePropertyType)propertyType frameArray:(NSArray*)frameArray node:(CCNode *)node loop:(BOOL)loop; - -@end - diff --git a/cocos2d-ext/CCBReader/CCBReader.m b/cocos2d-ext/CCBReader/CCBReader.m index ab6bebd0384..e99d296b1a6 100644 --- a/cocos2d-ext/CCBReader/CCBReader.m +++ b/cocos2d-ext/CCBReader/CCBReader.m @@ -38,7 +38,6 @@ #if CC_PHYSICS #import "CCPhysics+ObjectiveChipmunk.h" #endif -#import "CCAnimationManager_Private.h" #if CC_EFFECTS #import "CCEffectStack.h" #endif From d47ee4f1fb22ed7d2a8f1fed82a188532ab3c234 Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Fri, 11 Mar 2016 06:55:44 +0100 Subject: [PATCH 81/94] Getting rid of CCLightNode_Private.h --- cocos2d-ext/CCLighting/CCLightCollection.m | 2 -- cocos2d-ext/CCLighting/CCLightNode.h | 3 ++ cocos2d-ext/CCLighting/CCLightNode.m | 2 -- cocos2d-ext/CCLighting/CCLightNode_Private.h | 33 -------------------- 4 files changed, 3 insertions(+), 37 deletions(-) delete mode 100644 cocos2d-ext/CCLighting/CCLightNode_Private.h diff --git a/cocos2d-ext/CCLighting/CCLightCollection.m b/cocos2d-ext/CCLighting/CCLightCollection.m index 98e3203fa9f..4b16e2d7089 100644 --- a/cocos2d-ext/CCLighting/CCLightCollection.m +++ b/cocos2d-ext/CCLighting/CCLightCollection.m @@ -26,8 +26,6 @@ #import "CCLightGroups.h" #import "CCLightNode.h" -#import "CCLightNode_Private.h" - const CCLightGroupMask CCLightCollectionAllGroups = ~((CCLightGroupMask)0); static const NSUInteger CCLightCollectionMaxGroupCount = sizeof(NSUInteger) * 8; diff --git a/cocos2d-ext/CCLighting/CCLightNode.h b/cocos2d-ext/CCLighting/CCLightNode.h index c8d2042876c..95dbea1b35a 100644 --- a/cocos2d-ext/CCLighting/CCLightNode.h +++ b/cocos2d-ext/CCLighting/CCLightNode.h @@ -7,6 +7,7 @@ // #import "CCNode.h" +#import "CCLightGroups.h" /** Light Types used by CCLightNode. */ typedef NS_ENUM(NSUInteger, CCLightType) @@ -224,4 +225,6 @@ specularIntensity:(float)specularIntensity */ @property (nonatomic, assign) float ambientIntensity; +@property (nonatomic, assign) CCLightGroupMask groupMask; + @end diff --git a/cocos2d-ext/CCLighting/CCLightNode.m b/cocos2d-ext/CCLighting/CCLightNode.m index 1f53aa99453..91722e54d68 100644 --- a/cocos2d-ext/CCLighting/CCLightNode.m +++ b/cocos2d-ext/CCLighting/CCLightNode.m @@ -10,8 +10,6 @@ #import "CCLightCollection.h" #import "CCScene.h" -#import "CCLightNode_Private.h" - @implementation CCLightNode diff --git a/cocos2d-ext/CCLighting/CCLightNode_Private.h b/cocos2d-ext/CCLighting/CCLightNode_Private.h deleted file mode 100644 index 53eda5cd2a6..00000000000 --- a/cocos2d-ext/CCLighting/CCLightNode_Private.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2013-2014 Cocos2D Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import "CCLightNode.h" -#import "CCLightGroups.h" - - -@interface CCLightNode () - -@property (nonatomic, assign) CCLightGroupMask groupMask; - -@end From 197697a43d2ebfc9f17d566080debcbb7d0f77fe Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Fri, 11 Mar 2016 07:05:42 +0100 Subject: [PATCH 82/94] Getting rid of CCPackage_private.h (+1 squashed commit) Squashed commits: [bc26607] Getting rid of CCPackageManager_private.h This one was easy code was already in CCPackageManager.m --- cocos2d-ext/CCPackages/CCPackage.h | 20 +++++++++---------- cocos2d-ext/CCPackages/CCPackage.m | 1 - .../CCPackages/CCPackageCocos2dEnabler.m | 1 - cocos2d-ext/CCPackages/CCPackageDownload.m | 1 - .../CCPackages/CCPackageDownloadManager.m | 1 - cocos2d-ext/CCPackages/CCPackageInstaller.m | 1 - cocos2d-ext/CCPackages/CCPackageManager.m | 1 - .../CCPackages/CCPackageManager_private.h | 10 ---------- cocos2d-ext/CCPackages/CCPackage_private.h | 18 ----------------- 9 files changed, 10 insertions(+), 44 deletions(-) delete mode 100644 cocos2d-ext/CCPackages/CCPackageManager_private.h delete mode 100644 cocos2d-ext/CCPackages/CCPackage_private.h diff --git a/cocos2d-ext/CCPackages/CCPackage.h b/cocos2d-ext/CCPackages/CCPackage.h index aadaa91f843..c1c1dc26277 100644 --- a/cocos2d-ext/CCPackages/CCPackage.h +++ b/cocos2d-ext/CCPackages/CCPackage.h @@ -41,21 +41,21 @@ * @since v3.3 and later * @see standardIdentifier */ -@property (nonatomic, copy, readonly) NSString *name; +@property (nonatomic, copy, readwrite) NSString *name; /** * Resolution of the package, e.g. tablethd, phonehd, etc. * @since v3.3 and later * @see standardIdentifier */ -@property (nonatomic, copy, readonly) NSString *resolution; +@property (nonatomic, copy, readwrite) NSString *resolution; /** * OS of the package e.g. iOS, Mac * @since v3.3 and later * @see standardIdentifier */ -@property (nonatomic, copy, readonly) NSString *os; +@property (nonatomic, copy, readwrite) NSString *os; /** * Returns an identifier of the package: The pattern is `--`. Example: `DLC_Bundle-iOS-phonehd`. @@ -72,7 +72,7 @@ * The remote URL of the package * @since v3.3 and later */ -@property (nonatomic, copy, readonly) NSURL *remoteURL; +@property (nonatomic, copy, readwrite) NSURL *remoteURL; /** * The relative local URL where the package is installed. The URL is relative to the caches folder. @@ -80,7 +80,7 @@ * @since v3.3 and later * @see installFullURL */ -@property (nonatomic, copy, readonly) NSURL *installRelURL; +@property (nonatomic, copy, readwrite) NSURL *installRelURL; /** * Full local URL where the package is installed. @@ -95,13 +95,13 @@ * is used which won't be accessible. * @since v3.3 and later */ -@property (nonatomic, copy, readonly) NSURL *localDownloadURL; +@property (nonatomic, copy, readwrite) NSURL *localDownloadURL; /** * Local URL of the folder the package is unzipped to * @since v3.3 and later */ -@property (nonatomic, copy, readonly) NSURL *unzipURL; +@property (nonatomic, copy, readwrite) NSURL *unzipURL; /** * Name of the folder inside the unzip folder. A zipped package is supposed to contain a folder named @@ -110,7 +110,7 @@ * during installation. * @since v3.3 and later */ -@property (nonatomic, copy, readonly) NSString *folderName; +@property (nonatomic, copy, readwrite) NSString *folderName; /** @name Accessing Package Status */ @@ -118,14 +118,14 @@ * Whether or not the the package should be enabled in cocos2d after installation. * @since v3.3 and later */ -@property (nonatomic, readonly) BOOL enableOnDownload; +@property (nonatomic, readwrite) BOOL enableOnDownload; /** * The current status of the package * @since v3.3 and later * @see statusToString */ -@property (nonatomic, readonly) CCPackageStatus status; +@property (nonatomic, readwrite) CCPackageStatus status; /** * Returns the status as a string. diff --git a/cocos2d-ext/CCPackages/CCPackage.m b/cocos2d-ext/CCPackages/CCPackage.m index 5480f35b863..adebb09193b 100644 --- a/cocos2d-ext/CCPackages/CCPackage.m +++ b/cocos2d-ext/CCPackages/CCPackage.m @@ -1,7 +1,6 @@ #import #import "CCPackage.h" #import "CCPackageHelper.h" -#import "CCPackage_private.h" static NSUInteger PACKAGE_SERIALIZATION_VERSION = 1; static NSString *const PACKAGE_SERIALIZATION_KEY_NAME = @"name"; diff --git a/cocos2d-ext/CCPackages/CCPackageCocos2dEnabler.m b/cocos2d-ext/CCPackages/CCPackageCocos2dEnabler.m index fa71b88e44e..9b2594ce07e 100644 --- a/cocos2d-ext/CCPackages/CCPackageCocos2dEnabler.m +++ b/cocos2d-ext/CCPackages/CCPackageCocos2dEnabler.m @@ -3,7 +3,6 @@ #import "CCPackage.h" #import "CCFileUtils.h" #import "CCSpriteFrameCache.h" -#import "CCPackage_private.h" #import "CCPackageHelper.h" diff --git a/cocos2d-ext/CCPackages/CCPackageDownload.m b/cocos2d-ext/CCPackages/CCPackageDownload.m index 62fcbf3c950..5602546c50b 100644 --- a/cocos2d-ext/CCPackages/CCPackageDownload.m +++ b/cocos2d-ext/CCPackages/CCPackageDownload.m @@ -5,7 +5,6 @@ #import "CCPackage.h" #import "CCPackageConstants.h" #import "ccMacros.h" -#import "CCPackage_private.h" #import "CCFileUtils.h" @interface CCPackageDownload() diff --git a/cocos2d-ext/CCPackages/CCPackageDownloadManager.m b/cocos2d-ext/CCPackages/CCPackageDownloadManager.m index db9571445e3..f3d450c61ba 100644 --- a/cocos2d-ext/CCPackages/CCPackageDownloadManager.m +++ b/cocos2d-ext/CCPackages/CCPackageDownloadManager.m @@ -4,7 +4,6 @@ #import "CCPackageDownloadManagerDelegate.h" #import "CCPackageConstants.h" #import "ccMacros.h" -#import "CCPackage_private.h" @interface CCPackageDownloadManager() diff --git a/cocos2d-ext/CCPackages/CCPackageInstaller.m b/cocos2d-ext/CCPackages/CCPackageInstaller.m index 46f56743e2f..8c57c6a58e8 100644 --- a/cocos2d-ext/CCPackages/CCPackageInstaller.m +++ b/cocos2d-ext/CCPackages/CCPackageInstaller.m @@ -2,7 +2,6 @@ #import "CCPackageConstants.h" #import "CCPackage.h" #import "ccMacros.h" -#import "CCPackage_private.h" #import "CCPackageHelper.h" diff --git a/cocos2d-ext/CCPackages/CCPackageManager.m b/cocos2d-ext/CCPackages/CCPackageManager.m index 14d8b25c46b..0cbc8aeec45 100644 --- a/cocos2d-ext/CCPackages/CCPackageManager.m +++ b/cocos2d-ext/CCPackages/CCPackageManager.m @@ -8,7 +8,6 @@ #import "CCPackageCocos2dEnabler.h" #import "ccMacros.h" #import "CCPackageHelper.h" -#import "CCPackage_private.h" #import "CCDirector.h" diff --git a/cocos2d-ext/CCPackages/CCPackageManager_private.h b/cocos2d-ext/CCPackages/CCPackageManager_private.h deleted file mode 100644 index 8209d4b4ea4..00000000000 --- a/cocos2d-ext/CCPackages/CCPackageManager_private.h +++ /dev/null @@ -1,10 +0,0 @@ -#import "CCPackageManager.h" - -@class CCPackageDownloadManager; - -@interface CCPackageManager() - -@property (nonatomic, strong, readwrite) NSMutableArray *packages; -@property (nonatomic, strong) CCPackageDownloadManager *downloadManager; - -@end \ No newline at end of file diff --git a/cocos2d-ext/CCPackages/CCPackage_private.h b/cocos2d-ext/CCPackages/CCPackage_private.h deleted file mode 100644 index 9645514d6a4..00000000000 --- a/cocos2d-ext/CCPackages/CCPackage_private.h +++ /dev/null @@ -1,18 +0,0 @@ -#import -#import "CCPackageTypes.h" -#import "CCPackage.h" - -@interface CCPackage() - -@property (nonatomic, copy, readwrite) NSString *name; -@property (nonatomic, copy, readwrite) NSString *resolution; -@property (nonatomic, copy, readwrite) NSString *os; -@property (nonatomic, copy, readwrite) NSURL *remoteURL; -@property (nonatomic, copy, readwrite) NSString *folderName; -@property (nonatomic, copy, readwrite) NSURL *installRelURL; -@property (nonatomic, copy, readwrite) NSURL *localDownloadURL; -@property (nonatomic, copy, readwrite) NSURL *unzipURL; -@property (nonatomic, readwrite) BOOL enableOnDownload; -@property (nonatomic, readwrite) CCPackageStatus status; - -@end From 81ad356f018160f84da22ccea40503da810594a7 Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Fri, 11 Mar 2016 22:29:00 +0100 Subject: [PATCH 83/94] Remove ANDROID from README and CCBReader --- README.md | 2 +- cocos2d-ext/CCBReader/CCBReader.m | 16 ++++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 785e3d3dee5..5efe09a9333 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Please note, that the official site has moved. Please update your bookmarks [The Official Forum][3] [Cocos2D-ObjC][1] is a framework for building 2D games, demos, and other -graphical/interactive applications for iOS, Mac and Android. +graphical/interactive applications for iOS, Mac and tvOS. It is based on the [Cocos2D][2] design, but instead of using Python it uses Swift and / or Objective-C. Cocos2D-ObjC is: diff --git a/cocos2d-ext/CCBReader/CCBReader.m b/cocos2d-ext/CCBReader/CCBReader.m index e99d296b1a6..97957daa4ea 100644 --- a/cocos2d-ext/CCBReader/CCBReader.m +++ b/cocos2d-ext/CCBReader/CCBReader.m @@ -94,20 +94,12 @@ + (void) configureCCFileUtils @"resources-phonehd", CCFileUtilsSuffixMacHD, @"", CCFileUtilsSuffixDefault, nil]; - -#if __CC_PLATFORM_ANDROID - sharedFileUtils.searchPath = - [NSArray arrayWithObjects: - [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Published-Android"], - [[NSBundle mainBundle] resourcePath], - nil]; -#else + sharedFileUtils.searchPath = [NSArray arrayWithObjects: [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Published-iOS"], [[NSBundle mainBundle] resourcePath], nil]; -#endif sharedFileUtils.enableiPhoneResourcesOniPad = YES; sharedFileUtils.searchMode = CCFileUtilsSearchModeDirectory; @@ -419,7 +411,7 @@ - (void) readPropertyForNode:(CCNode*) node parent:(CCNode*)parent isExtraProp:( if (setProp) { -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS [node setValue:[NSValue valueWithCGPoint:ccp(x,y)] forKey:name]; #elif __CC_PLATFORM_MAC [node setValue:[NSValue valueWithPoint:ccp(x,y)] forKey:name]; @@ -454,7 +446,7 @@ - (void) readPropertyForNode:(CCNode*) node parent:(CCNode*)parent isExtraProp:( if (setProp) { CGPoint pt = ccp(x,y); -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS [node setValue:[NSValue valueWithCGPoint:pt] forKey:name]; #else [node setValue:[NSValue valueWithPoint:NSPointFromCGPoint(pt)] forKey:name]; @@ -475,7 +467,7 @@ - (void) readPropertyForNode:(CCNode*) node parent:(CCNode*)parent isExtraProp:( if (setProp) { CGSize size = CGSizeMake(w, h); -#if __CC_PLATFORM_IOS || __CC_PLATFORM_ANDROID +#if __CC_PLATFORM_IOS [node setValue:[NSValue valueWithCGSize:size] forKey:name]; #elif __CC_PLATFORM_MAC [node setValue:[NSValue valueWithSize:size] forKey:name]; From 73e45001f31481a8e45d6a1bc2f6809a2fea63bb Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Tue, 15 Mar 2016 21:03:39 +0100 Subject: [PATCH 84/94] Adding CCNodeTag to -ext --- cocos2d-ext/CCNodeTag/CCNodeTag.h | 50 ++++++++++++ cocos2d-ext/CCNodeTag/CCNodeTag.m | 131 ++++++++++++++++++++++++++++++ cocos2d-ext/CCNodeTag/README.md | 17 ++++ 3 files changed, 198 insertions(+) create mode 100755 cocos2d-ext/CCNodeTag/CCNodeTag.h create mode 100755 cocos2d-ext/CCNodeTag/CCNodeTag.m create mode 100755 cocos2d-ext/CCNodeTag/README.md diff --git a/cocos2d-ext/CCNodeTag/CCNodeTag.h b/cocos2d-ext/CCNodeTag/CCNodeTag.h new file mode 100755 index 00000000000..2a238f13a74 --- /dev/null +++ b/cocos2d-ext/CCNodeTag/CCNodeTag.h @@ -0,0 +1,50 @@ +/* + * cocos2d for iPhone: http://www.cocos2d-iphone.org + * + * Copyright (c) 2008-2010 Ricardo Quesada + * Copyright (c) 2011 Zynga Inc. + * Copyright (c) 2013-2014 Cocos2D Authors + * Copyright (c) 2013-2014 Cocos2D Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#import +#import "cocos2d.h" + +//---------------------------------------------------------------------- + +@interface CCNode (CCNodeTag) + +//---------------------------------------------------------------------- + +@property (nonatomic, assign) NSInteger tag; + +//---------------------------------------------------------------------- + +- (void)addChild:(CCNode *)node z:(NSInteger)z tag:(NSInteger)tag; +- (void)removeChildByTag:(NSInteger)tag; +- (void)removeChildByTag:(NSInteger)tag cleanup:(BOOL)cleanup; +- (CCNode *)getChildByTag:(NSInteger)tag; +- (CCNode *)getChildByTag:(NSInteger)tag recursively:(bool)isRecursive; + +//---------------------------------------------------------------------- + +@end + diff --git a/cocos2d-ext/CCNodeTag/CCNodeTag.m b/cocos2d-ext/CCNodeTag/CCNodeTag.m new file mode 100755 index 00000000000..fee63370279 --- /dev/null +++ b/cocos2d-ext/CCNodeTag/CCNodeTag.m @@ -0,0 +1,131 @@ +/* + * cocos2d for iPhone: http://www.cocos2d-iphone.org + * + * Copyright (c) 2008-2010 Ricardo Quesada + * Copyright (c) 2011 Zynga Inc. + * Copyright (c) 2013-2014 Cocos2D Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#import "CCNodeTag.h" +#import + +//---------------------------------------------------------------------- + +static void *nodeTagKey = &nodeTagKey; + +//---------------------------------------------------------------------- + +@implementation CCNode (CCNodeTag) + +//---------------------------------------------------------------------- + +- (void)addChild:(CCNode *)node z:(NSInteger)z tag:(NSInteger)tag +{ + node.tag = tag; + [self addChild:node z:z]; +} + +//---------------------------------------------------------------------- + +- (void)removeChildByTag:(NSInteger)tag +{ + CCNode *node = [self getChildByTag:tag]; + if (!node) + ; + else + [self removeChild:node]; +} + +//---------------------------------------------------------------------- + +- (void)removeChildByTag:(NSInteger)tag cleanup:(BOOL)cleanup +{ + CCNode *node = [self getChildByTag:tag]; + if (!node) + ; + else + [self removeChild:node cleanup:cleanup]; +} + +//---------------------------------------------------------------------- + +- (CCNode *)getChildByTag:(NSInteger)tag +{ + /* + for (CCNode *node in self.children) + { + if (node.tag == tag) return(node); + } + return(nil); + */ + return [self getChildByTag:tag recursively:NO]; +} + +// Recursively get a child by tag, but don't return the root of the search. +-(CCNode*) getChildByTagRecursive:(NSInteger)tag root:(CCNode *)root +{ + if(self != root && self.tag == tag) return self; + + for (CCNode* node in _children) { + CCNode *n = [node getChildByTagRecursive:tag root:root]; + if(n) return n; + } + // not found + return nil; +} + +- (CCNode *)getChildByTag:(NSInteger)tag recursively:(bool)isRecursive { + NSAssert(tag, @"tag is nil."); + + if(isRecursive){ + return [self getChildByTagRecursive:tag root:self]; + } else { + for (CCNode* node in _children) { + if(node.tag == tag){ + return node; + } + } + } + // not found + return nil; +} + + +//---------------------------------------------------------------------- +// tag property implementation + +// OBS! +// As long as tag hasn't been set, the associated object will be nil, and intergetValue will return 0 (zero), which is well defined behaviour + +- (NSInteger)tag +{ + NSNumber *number = objc_getAssociatedObject(self, nodeTagKey); + return([number integerValue]); +} + +- (void)setTag:(NSInteger)tag +{ + objc_setAssociatedObject(self, nodeTagKey, [NSNumber numberWithInteger:tag], OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +//---------------------------------------------------------------------- + +@end diff --git a/cocos2d-ext/CCNodeTag/README.md b/cocos2d-ext/CCNodeTag/README.md new file mode 100755 index 00000000000..97a122c6352 --- /dev/null +++ b/cocos2d-ext/CCNodeTag/README.md @@ -0,0 +1,17 @@ +CCNodeTag +========= + +Type of class : Category to CCNode +Uses extension : [None] + +Adds tags to CCNode. + +While the official replacement for tag in CCNode, is NSString *name, there are rare cases, where tag is useful. To use tags for CCNode, simply include this category into your project. + +Usage: + +- Add #include "CCNodeTag.h" in your .h or .m file +- Create a CCNode and add a tag property : + +CCNode *node = [[CCNode alloc] init]; +node.tag = 1000; \ No newline at end of file From 3c2f9d3e70f3e58115cb68d075279ca5530774c8 Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Sat, 19 Mar 2016 08:05:57 +0100 Subject: [PATCH 85/94] SpriteBuilderTranslations renamed to CocosBuidlerTranslations --- cocos2d-ext/CCBReader/CCBLocalizationManager.m | 2 +- cocos2d-ui-tests/Resources-shared/Strings.ccbLang | 2 +- .../TestGraphics.spritebuilder/Resources/Strings.ccbLang | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cocos2d-ext/CCBReader/CCBLocalizationManager.m b/cocos2d-ext/CCBReader/CCBLocalizationManager.m index 8ece3ed672a..5c47c949d08 100644 --- a/cocos2d-ext/CCBReader/CCBLocalizationManager.m +++ b/cocos2d-ext/CCBReader/CCBLocalizationManager.m @@ -58,7 +58,7 @@ - (void) loadStringsFile:(NSString*) file NSDictionary* ser = [NSDictionary dictionaryWithContentsOfFile:path]; // Check that format of file is correct - NSAssert([[ser objectForKey:@"fileType"] isEqualToString:@"SpriteBuilderTranslations"], @"Invalid file format for SpriteBuilder localizations"); + NSAssert([[ser objectForKey:@"fileType"] isEqualToString:@"CocosBuilderTranslations"], @"Invalid file format for CocosBuilder localizations"); // Check that file version is correct NSAssert([[ser objectForKey:@"fileVersion"] intValue] == 1, @"Translation file version is incompatible with this reader"); diff --git a/cocos2d-ui-tests/Resources-shared/Strings.ccbLang b/cocos2d-ui-tests/Resources-shared/Strings.ccbLang index 12dc760b678..bccffc93e9a 100644 --- a/cocos2d-ui-tests/Resources-shared/Strings.ccbLang +++ b/cocos2d-ui-tests/Resources-shared/Strings.ccbLang @@ -5,7 +5,7 @@ activeLanguages fileType - SpriteBuilderTranslations + CocosBuilderTranslations fileVersion 1 translations diff --git a/cocos2d-ui-tests/TestGraphics.spritebuilder/Resources/Strings.ccbLang b/cocos2d-ui-tests/TestGraphics.spritebuilder/Resources/Strings.ccbLang index 12dc760b678..bccffc93e9a 100644 --- a/cocos2d-ui-tests/TestGraphics.spritebuilder/Resources/Strings.ccbLang +++ b/cocos2d-ui-tests/TestGraphics.spritebuilder/Resources/Strings.ccbLang @@ -5,7 +5,7 @@ activeLanguages fileType - SpriteBuilderTranslations + CocosBuilderTranslations fileVersion 1 translations From 759b78d6bb5cc64d09f11ebe08fa707ce7883481 Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Mon, 21 Mar 2016 07:06:27 +0100 Subject: [PATCH 86/94] SpriteBuilder renamed to CocosBuilder --- cocos2d-ext/CCBReader/CCAnimationManager.h | 2 +- cocos2d-ext/CCBReader/CCBAnimationManager.h | 1 - cocos2d-ext/CCBReader/CCBAnimationManager.m | 1 - cocos2d-ext/CCBReader/CCBKeyframe.h | 1 - cocos2d-ext/CCBReader/CCBKeyframe.m | 1 - cocos2d-ext/CCBReader/CCBLocalizationManager.h | 1 - cocos2d-ext/CCBReader/CCBLocalizationManager.m | 3 +-- cocos2d-ext/CCBReader/CCBReader.h | 15 +++++++-------- cocos2d-ext/CCBReader/CCBReader.m | 3 +-- cocos2d-ext/CCBReader/CCBSequence.h | 1 - cocos2d-ext/CCBReader/CCBSequenceProperty.h | 1 - cocos2d-ext/CCBReader/CCBSequenceProperty.m | 1 - cocos2d-ext/CCBReader/CCBsequence.m | 1 - cocos2d-ext/CCBReader/CCBuilderReader.h | 1 - cocos2d-ext/CCPackages/CCPackage.h | 2 +- cocos2d-ext/CCPackages/CCPackageHelper.h | 6 +++--- cocos2d-ext/CCPackages/CCPackageManager.h | 4 ++-- cocos2d-ext/CCParticles/CCParticleSystemBase.h | 2 +- cocos2d-ui/CCControlSubclass.h | 2 +- cocos2d/CCActionEase.h | 2 +- cocos2d/CCActionInterval.m | 2 +- cocos2d/CCNode.h | 4 ++-- cocos2d/CCNode.m | 2 +- cocos2d/Platforms/iOS/CCAppDelegate.h | 2 +- 24 files changed, 24 insertions(+), 37 deletions(-) diff --git a/cocos2d-ext/CCBReader/CCAnimationManager.h b/cocos2d-ext/CCBReader/CCAnimationManager.h index 2a1ab0e1ccb..68edc1dc1b3 100644 --- a/cocos2d-ext/CCBReader/CCAnimationManager.h +++ b/cocos2d-ext/CCBReader/CCAnimationManager.h @@ -46,7 +46,7 @@ #pragma mark Animation Manager /** - The animation manager plays back animations, usually created by a tool such as SpriteBuilder. + The animation manager plays back animations, usually created by a tool such as CocosBuilder. Any animation can have an arbitrary number of sequences (timelines) which each have keyframes for different properties. @note Animation names are case sensitive. diff --git a/cocos2d-ext/CCBReader/CCBAnimationManager.h b/cocos2d-ext/CCBReader/CCBAnimationManager.h index ad1480a01d6..085552acc68 100644 --- a/cocos2d-ext/CCBReader/CCBAnimationManager.h +++ b/cocos2d-ext/CCBReader/CCBAnimationManager.h @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. diff --git a/cocos2d-ext/CCBReader/CCBAnimationManager.m b/cocos2d-ext/CCBReader/CCBAnimationManager.m index 96b16b62a79..d165d9bc821 100644 --- a/cocos2d-ext/CCBReader/CCBAnimationManager.m +++ b/cocos2d-ext/CCBReader/CCBAnimationManager.m @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. diff --git a/cocos2d-ext/CCBReader/CCBKeyframe.h b/cocos2d-ext/CCBReader/CCBKeyframe.h index b4f38fe913b..c267ef1453f 100644 --- a/cocos2d-ext/CCBReader/CCBKeyframe.h +++ b/cocos2d-ext/CCBReader/CCBKeyframe.h @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. diff --git a/cocos2d-ext/CCBReader/CCBKeyframe.m b/cocos2d-ext/CCBReader/CCBKeyframe.m index 522ea290628..8206c69991e 100644 --- a/cocos2d-ext/CCBReader/CCBKeyframe.m +++ b/cocos2d-ext/CCBReader/CCBKeyframe.m @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. diff --git a/cocos2d-ext/CCBReader/CCBLocalizationManager.h b/cocos2d-ext/CCBReader/CCBLocalizationManager.h index 1ac8feae586..1f81467e1e0 100644 --- a/cocos2d-ext/CCBReader/CCBLocalizationManager.h +++ b/cocos2d-ext/CCBReader/CCBLocalizationManager.h @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2013 Apportable Inc. * diff --git a/cocos2d-ext/CCBReader/CCBLocalizationManager.m b/cocos2d-ext/CCBReader/CCBLocalizationManager.m index 5c47c949d08..00acd1222af 100644 --- a/cocos2d-ext/CCBReader/CCBLocalizationManager.m +++ b/cocos2d-ext/CCBReader/CCBLocalizationManager.m @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2013 Apportable Inc. * @@ -72,7 +71,7 @@ - (void) loadStringsFile:(NSString*) file NSArray* preferredLangs = [NSLocale preferredLanguages]; for (NSString* preferredLang in preferredLangs) { - // now loop thru languages from our spritebuilder + // now loop thru languages from our cocosbuilder for (NSString *localizedLanguage in languages) { // doing range of string as we might have en-GB set in our phone and that will match our en from the activeLanguages diff --git a/cocos2d-ext/CCBReader/CCBReader.h b/cocos2d-ext/CCBReader/CCBReader.h index b56fd2a8902..85eb0593a46 100644 --- a/cocos2d-ext/CCBReader/CCBReader.h +++ b/cocos2d-ext/CCBReader/CCBReader.h @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. @@ -28,7 +27,7 @@ #import "cocos2d.h" /** - The CCBReader loads SpriteBuilder (CCB) documents. + The CCBReader loads CocosBuilder (CCB) documents. For the most part you'll just use one of these two methods: @@ -41,10 +40,10 @@ // load a CCB document wrapped in a CCScene instance CCScene* scene = [CCBReader loadAsScene:@"MyNode"]; - You can optionally pass an owner object to the CCBReader load methods. This owner object then gets assigned all of the SpriteBuilder document's member variables that are marked to be set to the "Owner". + You can optionally pass an owner object to the CCBReader load methods. This owner object then gets assigned all of the CocosBuilder document's member variables that are marked to be set to the "Owner". In all other cases owner is nil and assigning variables to Owner discards their assignment. - When a SpriteBuilder document was loaded, all nodes created from the document will receive the didLoadFromCCB message, if implemented as follows: + When a CocosBuilder document was loaded, all nodes created from the document will receive the didLoadFromCCB message, if implemented as follows: **Objective-C:** @@ -58,7 +57,7 @@ NSLog("%@ did load", self) } - Nodes created from a SpriteBuilder document will also have a valid CCAnimationManager instance assigned to their [CCNode animationManager] property. + Nodes created from a CocosBuilder document will also have a valid CCAnimationManager instance assigned to their [CCNode animationManager] property. */ #define kCCBVersion 10 @@ -167,7 +166,7 @@ enum /// ----------------------------------------------------------------------- /** - * Call this method to configure the CCFileUtils to work correctly with SpriteBuilder. It will setup search paths for the resources to use with the current device and resolution. It assumes that the SpriteBuilder resources has been published to a directory named Published-iOS that has been added as a blue folder in Xcode. + * Call this method to configure the CCFileUtils to work correctly with CocosBuilder. It will setup search paths for the resources to use with the current device and resolution. It assumes that the CocosBuilder resources has been published to a directory named Published-iOS that has been added as a blue folder in Xcode. */ + (void) configureCCFileUtils; @@ -183,7 +182,7 @@ enum + (CCBReader*) reader; /// ----------------------------------------------------------------------- -/// @name Loading SpriteBuilder documents +/// @name Loading CocosBuilder documents /// ----------------------------------------------------------------------- /** @@ -214,7 +213,7 @@ enum + (CCScene*) loadAsScene:(NSString*) file; /// ----------------------------------------------------------------------- -/// @name Loading SpriteBuilder documents with custom owner +/// @name Loading CocosBuilder documents with custom owner /// ----------------------------------------------------------------------- /** diff --git a/cocos2d-ext/CCBReader/CCBReader.m b/cocos2d-ext/CCBReader/CCBReader.m index 97957daa4ea..caac6e61f5b 100644 --- a/cocos2d-ext/CCBReader/CCBReader.m +++ b/cocos2d-ext/CCBReader/CCBReader.m @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. @@ -79,7 +78,7 @@ + (void) configureCCFileUtils { CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils]; - // Setup file utils for use with SpriteBuilder + // Setup file utils for use with CocosBuilder [sharedFileUtils setEnableiPhoneResourcesOniPad:NO]; sharedFileUtils.directoriesDict = diff --git a/cocos2d-ext/CCBReader/CCBSequence.h b/cocos2d-ext/CCBReader/CCBSequence.h index 69f00163e79..d4ef816406e 100644 --- a/cocos2d-ext/CCBReader/CCBSequence.h +++ b/cocos2d-ext/CCBReader/CCBSequence.h @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. diff --git a/cocos2d-ext/CCBReader/CCBSequenceProperty.h b/cocos2d-ext/CCBReader/CCBSequenceProperty.h index 1c39ffd7c2e..a78a0807b77 100644 --- a/cocos2d-ext/CCBReader/CCBSequenceProperty.h +++ b/cocos2d-ext/CCBReader/CCBSequenceProperty.h @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. diff --git a/cocos2d-ext/CCBReader/CCBSequenceProperty.m b/cocos2d-ext/CCBReader/CCBSequenceProperty.m index c339916cd21..802b6967215 100644 --- a/cocos2d-ext/CCBReader/CCBSequenceProperty.m +++ b/cocos2d-ext/CCBReader/CCBSequenceProperty.m @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. diff --git a/cocos2d-ext/CCBReader/CCBsequence.m b/cocos2d-ext/CCBReader/CCBsequence.m index e762b82a005..95982caa92a 100644 --- a/cocos2d-ext/CCBReader/CCBsequence.m +++ b/cocos2d-ext/CCBReader/CCBsequence.m @@ -1,5 +1,4 @@ /* - * SpriteBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. diff --git a/cocos2d-ext/CCBReader/CCBuilderReader.h b/cocos2d-ext/CCBReader/CCBuilderReader.h index a3690dce53a..8ec531dc5ce 100644 --- a/cocos2d-ext/CCBReader/CCBuilderReader.h +++ b/cocos2d-ext/CCBReader/CCBuilderReader.h @@ -1,5 +1,4 @@ /* - * CocosBuilder: http://www.spritebuilder.org * * Copyright (c) 2012 Zynga Inc. * Copyright (c) 2013 Apportable Inc. diff --git a/cocos2d-ext/CCPackages/CCPackage.h b/cocos2d-ext/CCPackages/CCPackage.h index c1c1dc26277..7664ad8ba2b 100644 --- a/cocos2d-ext/CCPackages/CCPackage.h +++ b/cocos2d-ext/CCPackages/CCPackage.h @@ -3,7 +3,7 @@ @class CCPackageManager; -/** CCPackage represents a Spritebuilder package. It's a data object managed by CCPackageManager describing the details of a package. +/** CCPackage represents a CocosBuilder package. It's a data object managed by CCPackageManager describing the details of a package. A package is a bundle containing resource files. Most of the properties are readonly and are not meant to be set by a developer. They are set by the CCPackageManager. diff --git a/cocos2d-ext/CCPackages/CCPackageHelper.h b/cocos2d-ext/CCPackages/CCPackageHelper.h index dd48a5fe3fa..7a966767987 100644 --- a/cocos2d-ext/CCPackages/CCPackageHelper.h +++ b/cocos2d-ext/CCPackages/CCPackageHelper.h @@ -19,16 +19,16 @@ + (NSString *)cachesFolder; /** - * Maps a CCFileUtil's device/resolution suffix string, for instance `CCFileUtilsSuffixiPadHD`, to a SpriteBuilder resolution string, for instance `tablethd`. + * Maps a CCFileUtil's device/resolution suffix string, for instance `CCFileUtilsSuffixiPadHD`, to a CocosBuilder resolution string, for instance `tablethd`. * * @param suffix A CCFileUtils resolution suffix, as defined by the CCFileUtilsSuffix* constants. - * @returns A SpriteBuilder resolution string, one of: `phone`, `phonehd`, `tablet`, `tablethd`. Returns `nil` if there is no matching SpriteBuilder suffix for the given input suffix. + * @returns A CocosBuilder resolution string, one of: `phone`, `phonehd`, `tablet`, `tablethd`. Returns `nil` if there is no matching CocosBuilder suffix for the given input suffix. * @since v3.3 and later */ + (NSString *)ccFileUtilsSuffixToResolution:(NSString *)suffix; /** - * Returns the preferred SpriteBuilder resolution string (`phone`, `phonehd`, `tablet`, `tablethd`) for the current Cocos2D setup by looking at the entries + * Returns the preferred CocosBuilder resolution string (`phone`, `phonehd`, `tablet`, `tablethd`) for the current Cocos2D setup by looking at the entries * in [CCFileUtils searchResolutionsOrder] array. If none can be found or mapped `phonehd` will be returned as default. * @since v3.3 and later */ diff --git a/cocos2d-ext/CCPackages/CCPackageManager.h b/cocos2d-ext/CCPackages/CCPackageManager.h index c5c805f7618..795c868bdcb 100644 --- a/cocos2d-ext/CCPackages/CCPackageManager.h +++ b/cocos2d-ext/CCPackages/CCPackageManager.h @@ -70,7 +70,7 @@ * Helpful if you are using packages of a different resolution. * * @param name Name of the package - * @param resolution SpriteBuilder resolution string (ie `phonehd`) + * @param resolution CocosBuilder resolution string (ie `phonehd`) * @since v3.3 and later * @see CCPackage */ @@ -81,7 +81,7 @@ * Helpful if you are using packages of a different resolution and os * * @param name Name of the package - * @param resolution SpriteBuilder resolution string (ie `phonehd`) + * @param resolution CocosBuilder resolution string (ie `phonehd`) * @param os operating system string (ie iOS, Mac) * @since v3.3 and later * @see CCPackage diff --git a/cocos2d-ext/CCParticles/CCParticleSystemBase.h b/cocos2d-ext/CCParticles/CCParticleSystemBase.h index 41b62328b07..c70ef65195d 100644 --- a/cocos2d-ext/CCParticles/CCParticleSystemBase.h +++ b/cocos2d-ext/CCParticles/CCParticleSystemBase.h @@ -138,7 +138,7 @@ typedef void (*_CC_UPDATE_PARTICLE_IMP)(id, SEL, _CCParticle*, CGPoint); ### Supported editors - A particle system can be edited visually within SpriteBuilder or compatible 3rd party tools such as + A particle system can be edited visually within CocosBuilder or compatible 3rd party tools such as [Particle Designer](http://particledesigner.71squared.com/) and several others. @warning It is strongly recommended to use a visual design tool to create particle effects. Creating and tweaking particle diff --git a/cocos2d-ui/CCControlSubclass.h b/cocos2d-ui/CCControlSubclass.h index 7d16acb0a4c..b05db97ef87 100644 --- a/cocos2d-ui/CCControlSubclass.h +++ b/cocos2d-ui/CCControlSubclass.h @@ -55,7 +55,7 @@ /** Can be implemented by sub-classes. Override this method if you are using custom properties and need to set them by name using the setValue:forKey method. - This is needed for integration with editors such as SpriteBuilder. When overriding this method, make sure to call its super method if you cannot handle the key. + This is needed for integration with editors such as CocosBuilder. When overriding this method, make sure to call its super method if you cannot handle the key. @param value The value to set. @param key The key to set the value for. diff --git a/cocos2d/CCActionEase.h b/cocos2d/CCActionEase.h index 03a3b95030d..6b94dcc9487 100644 --- a/cocos2d/CCActionEase.h +++ b/cocos2d/CCActionEase.h @@ -300,7 +300,7 @@ @end -// SpriteBuilder Support Ease +// CocosBuilder Support Ease @interface CCActionEaseInstant : CCActionEase @end diff --git a/cocos2d/CCActionInterval.m b/cocos2d/CCActionInterval.m index 15a9e12840b..fdfac145e17 100644 --- a/cocos2d/CCActionInterval.m +++ b/cocos2d/CCActionInterval.m @@ -595,7 +595,7 @@ -(void) startWithTarget:(CCNode *)aTarget { [super startWithTarget:aTarget]; - // Simple Rotation (Support SpriteBuilder) + // Simple Rotation (Support CocosBuilder) if(_simple) { _startAngleX = _startAngleY = [(CCNode*)_target rotation]; _diffAngleX = _dstAngleX - _startAngleX; diff --git a/cocos2d/CCNode.h b/cocos2d/CCNode.h index 04396efb8d0..686cbad133c 100644 --- a/cocos2d/CCNode.h +++ b/cocos2d/CCNode.h @@ -110,7 +110,7 @@ - CCSizeUnitInset - The content size will be the size of it's parent container, but inset by a number of points. - CCSizeUnitInsetScaled - The content size will be the size of it's parent container, but inset by a number of points multiplied by the UIScaleFactor. - Even if the positions and content sizes are not set in points you can use actions to animate the nodes. See the examples and tests for more information on how to set positions and content sizes, or use SpriteBuilder to easily play around with the settings. There are also more positioning options available by using CCLayout and CCLayoutBox. + Even if the positions and content sizes are not set in points you can use actions to animate the nodes. See the examples and tests for more information on how to set positions and content sizes, or use CocosBuilder to easily play around with the settings. There are also more positioning options available by using CCLayout and CCLayoutBox. #### Prefer to use ..InPoints @@ -706,7 +706,7 @@ -(NSUInteger) numberOfRunningActions; /// ----------------------------------------------------------------------- -/// @name SpriteBuilder Animation Manager +/// @name CocosBuilder Animation Manager /// ----------------------------------------------------------------------- /** diff --git a/cocos2d/CCNode.m b/cocos2d/CCNode.m index 36d31f90ed9..21b21e5b777 100644 --- a/cocos2d/CCNode.m +++ b/cocos2d/CCNode.m @@ -202,7 +202,7 @@ - (void)cleanup // timers [_children makeObjectsPerformSelector:@selector(cleanup)]; #if CC_CCBREADER - // CCAnimationManager Cleanup (Set by SpriteBuilder) + // CCAnimationManager Cleanup (Set by CocosBuilder) [_animationManager performSelector:@selector(cleanup)]; #endif } diff --git a/cocos2d/Platforms/iOS/CCAppDelegate.h b/cocos2d/Platforms/iOS/CCAppDelegate.h index 79dab1b7fb8..a0cc24cf13f 100644 --- a/cocos2d/Platforms/iOS/CCAppDelegate.h +++ b/cocos2d/Platforms/iOS/CCAppDelegate.h @@ -90,7 +90,7 @@ * - `CCSetupFixedUpdateInterval`: NSNumber with double. Specifies the desired interval between fixed updates. Should be smaller than `CCSetupAnimationInterval`. Defaults to `1.0/60.0` (60 Hz). * - `CCSetupShowDebugStats`: NSNumber with bool. Specifies if the stats (FPS, frame time and draw call count) should be rendered. Defaults to NO. * - `CCSetupTabletScale2X`: NSNumber with bool. If true, the iPad will be setup to act like it has a 512x384 points "logical" screen size with a "Retina" pixel resolution of 1024x768. - * This makes it much easier to make universal iOS games. This is the default mode for SpriteBuilder projects. This value is ignored when using the fixed screen mode. + * This makes it much easier to make universal iOS games. This is the default mode for CocosBuilder projects. This value is ignored when using the fixed screen mode. * * - `CCSetupDepthFormat`: NSNumber with integer. Specifies the desired depth buffer format. Values are 0 (no depth buffering), `GL_DEPTH24_STENCIL8_OES` (8-Bit depth buffer) and `GL_DEPTH_COMPONENT24_OES` (24-bit depth buffer). * Depth buffering is only needed in rare cases and comes at the expense of performance and additional memory usage. From ea4251f30b38c6663d2d64138b2aa0f24fa0494d Mon Sep 17 00:00:00 2001 From: Olivier PIERRE Date: Mon, 21 Mar 2016 07:07:02 +0100 Subject: [PATCH 87/94] Strings.ccbLang files renamed to Strings.ccblang --- cocos2d-ext/CCBReader/CCBLocalizationManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocos2d-ext/CCBReader/CCBLocalizationManager.m b/cocos2d-ext/CCBReader/CCBLocalizationManager.m index 00acd1222af..66a52da8b4f 100644 --- a/cocos2d-ext/CCBReader/CCBLocalizationManager.m +++ b/cocos2d-ext/CCBReader/CCBLocalizationManager.m @@ -43,7 +43,7 @@ - (id) init self = [super init]; if (!self) return NULL; - [self loadStringsFile:@"Strings.ccbLang"]; + [self loadStringsFile:@"Strings.ccblang"]; return self; } From 242abaab2c31550d8832bca2bb745215318339eb Mon Sep 17 00:00:00 2001 From: Thomas Maw Date: Mon, 21 Mar 2016 20:08:45 +1100 Subject: [PATCH 88/94] Fixed CCTextField textField property always being nil on mac. --- cocos2d-ui/Platform/Mac/CCPlatformTextFieldMac.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cocos2d-ui/Platform/Mac/CCPlatformTextFieldMac.m b/cocos2d-ui/Platform/Mac/CCPlatformTextFieldMac.m index fae2be306ef..146cc65257b 100644 --- a/cocos2d-ui/Platform/Mac/CCPlatformTextFieldMac.m +++ b/cocos2d-ui/Platform/Mac/CCPlatformTextFieldMac.m @@ -58,6 +58,11 @@ - (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor return YES; } +- (id)nativeTextField +{ + return _textField; +} + - (void)setFontSize:(float)fontSize { NSFont* font = _textField.font; _textField.font = [NSFont fontWithName:font.fontName size:fontSize]; From 2ebdae1a03e5c97037f0c4f9c854aeeebf8cfe49 Mon Sep 17 00:00:00 2001 From: Andrey Volodin Date: Sun, 3 Apr 2016 18:57:39 +0400 Subject: [PATCH 89/94] Update README.md --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5efe09a9333..f06c5978631 100644 --- a/README.md +++ b/README.md @@ -31,10 +31,8 @@ Creating New Projects --------------------- For creating new projects you should use an official [Cocos2D Installer][5]. -There is a rich GUI editor for Cocos2D app named SpriteBuilder. SpriteBuilder is, just like Cocos2D, free and open source. You can get SpriteBuilder from [spritebuilder.com](http://spritebuilder.com) or from the Mac App Store. Projects created using SpriteBuilder contains the complete Cocos2D source code, and after the project has been created using SpriteBuilder is optional. - -SpriteBuilder also allows you to update the Cocos2D version in your project, to newest version, making it trivial to always keep you project updated to latest Cocos2D version. - +Documentation +--------------------- You can find the full Cocos2D documentation and user guide at our [documentation page](http://cocos2d-objc.org/docs/). Important: @@ -42,7 +40,6 @@ Important: Version 3.5 is introduced. [See release notes](https://github.com/cocos2d/cocos2d-objc/wiki/Cocos2D-3.5-Release-notes) - Features ------------- * Scene management (workflow) From ca689111fe45a6dcc2e6a9809f20795e9d50b12f Mon Sep 17 00:00:00 2001 From: Marco Fabian Date: Wed, 27 Apr 2016 15:21:14 +0200 Subject: [PATCH 90/94] Added new ccz header support from TexturePacker On behalf from latest TexturePacker added his code changes from website, for details on contentprotection see: https://www.codeandweb.com/texturepacker/contentprotection Original ZipUtils could not handle pvr.ccz version 2 correctly (wrong byte header), currently version 3 (pvr.ccz = pvr+zlib) works fine. --- cocos2d/Support/ZipUtils.h | 32 +++++- cocos2d/Support/ZipUtils.m | 201 ++++++++++++++++++++++++++++++++----- 2 files changed, 204 insertions(+), 29 deletions(-) diff --git a/cocos2d/Support/ZipUtils.h b/cocos2d/Support/ZipUtils.h index 2bcdfa3c953..6a9b17813a7 100644 --- a/cocos2d/Support/ZipUtils.h +++ b/cocos2d/Support/ZipUtils.h @@ -20,6 +20,26 @@ #ifdef __cplusplus extern "C" { #endif + + /** + * Set the TexturePacker encryption key + * + * If your key used to encrypt the pvr.ccz file is + * aaaaaaaabbbbbbbbccccccccdddddddd + * you have to call this function 4 times: + * caw_setkey_part(0, 0xaaaaaaaa); + * caw_setkey_part(1, 0xbbbbbbbb); + * caw_setkey_part(2, 0xcccccccc); + * caw_setkey_part(3, 0xdddddddd); + * + * Distribute the call accross some files but make sure + * to call all of the parts *before* loading the first + * spritesheet. + * + * @param index part of the key [0..3] + * @param value value of the key part + */ + void caw_setkey_part(int index, uint32_t value); /* XXX: pragma pack ??? */ /** @struct CCZHeader @@ -28,7 +48,7 @@ extern "C" { uint8_t sig[4]; // signature. Should be 'CCZ!' 4 bytes uint16_t compression_type; // should 0 uint16_t version; // should be 2 (although version type==1 is also supported) - uint32_t reserved; // Reserved for users. + uint32_t reserved; // Reserverd for users. uint32_t len; // size of the uncompressed file }; @@ -47,9 +67,10 @@ extern "C" { * Inflates either zlib or gzip deflated memory. The inflated memory is * expected to be freed by the caller. * - * It will allocate 256k for the destination buffer. If it is not enough it will multiply the previous buffer size per 2, until there is enough memory. + * It will allocate 256k for the destination buffer. If it is not enought it will multiply the previous buffer size per 2, until there is enough memory. * @returns the length of the deflated buffer * + @since v0.8.1 */ int ccInflateMemory(unsigned char *in, unsigned int inLength, unsigned char **out); @@ -57,18 +78,20 @@ int ccInflateMemory(unsigned char *in, unsigned int inLength, unsigned char **ou * Inflates either zlib or gzip deflated memory. The inflated memory is * expected to be freed by the caller. * - * outlengthHint is assumed to be the needed room to allocate the inflated buffer. + * outLenghtHint is assumed to be the needed room to allocate the inflated buffer. * * @returns the length of the deflated buffer * + @since v1.0.0 */ -int ccInflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int outlengthHint ); +int ccInflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int outLengthHint ); /** inflates a GZip file into memory * * @returns the length of the deflated buffer * + * @since v0.99.5 */ int ccInflateGZipFile(const char *filename, unsigned char **out); @@ -76,6 +99,7 @@ int ccInflateGZipFile(const char *filename, unsigned char **out); * * @returns the length of the deflated buffer * + * @since v0.99.5 */ int ccInflateCCZFile(const char *filename, unsigned char **out); diff --git a/cocos2d/Support/ZipUtils.m b/cocos2d/Support/ZipUtils.m index f481f8e6f79..86b841f4f1c 100644 --- a/cocos2d/Support/ZipUtils.m +++ b/cocos2d/Support/ZipUtils.m @@ -27,12 +27,12 @@ // Should buffer factor be 1.5 instead of 2 ? #define BUFFER_INC_FACTOR (2) -static int inflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int *outLength, unsigned int outlengthHint ) +static int inflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int *outLength, unsigned int outLengthHint ) { /* ret value */ int err = Z_OK; - int bufferSize = outlengthHint; + int bufferSize = outLengthHint; *out = (unsigned char*) malloc(bufferSize); z_stream d_stream; /* decompression stream */ @@ -183,8 +183,110 @@ int ccInflateGZipFile(const char *path, unsigned char **out) return offset; } +typedef struct { + uint8_t sig[4]; // signature. Should be 'CCZp' 4 bytes + uint16_t compression_type; // should 0 + uint16_t version; // should be 2 (although version type==1 is also supported) + uint32_t checksum; // Checksum + uint32_t len; // size of the uncompressed file +} CCPHeader; + +static uint32_t caw_key[4] = {0,0,0,0}; +static uint32_t caw_longKey[1024]; +static bool caw_longKeyValid=false; + +void caw_setkey_part(int index, uint32_t value) +{ + assert(index >= 0); + assert(index < 4); + if(caw_key[index] != value) + { + caw_key[index] = value; + caw_longKeyValid = false; + } +} + +static inline void caw_encdec (uint32_t *data, int len) +{ + const int enclen = 1024; + const int securelen = 512; + const int distance = 64; + + // check if key was set + // make sure to call caw_setkey_part() for all 4 key parts + assert(caw_key[0] != 0); + assert(caw_key[1] != 0); + assert(caw_key[2] != 0); + assert(caw_key[3] != 0); + + // create long key + if(!caw_longKeyValid) + { + uint32_t y; + unsigned int p, rounds=6, e; + + uint32_t sum = 0; + uint32_t z = caw_longKey[enclen-1]; + do + { + #define DELTA 0x9e3779b9 + #define MX (((z>>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (caw_key[(p&3)^e] ^ z))) + + sum += DELTA; + e = (sum >> 2) & 3; + for (p=0; p= enclen) + { + b=0; + } + } + + // encrypt second section partially + for(; i= enclen) + { + b=0; + } + } +} + +static inline uint32_t caw_checksum(const uint32_t *data, int len) +{ + uint32_t cs=0; + const int cslen=128; + len = (len < cslen) ? len : cslen; + for(int i=0; isig[0] != 'C' || header->sig[1] != 'C' || header->sig[2] != 'Z' || header->sig[3] != '!' ) { - CCLOG(@"cocos2d: Invalid CCZ file"); - free(compressed); - return -1; + uint32_t len = 0; + uint32_t headerSize = 0; + + if( compressed[0] == 'C' && compressed[1] == 'C' && compressed[2] == 'Z' && compressed[3] == '!' ) + { + // standard ccz file + struct CCZHeader *header = (struct CCZHeader*) compressed; + + // verify header version + uint16_t version = CFSwapInt16BigToHost( header->version ); + if( version > 2 ) { + CCLOG(@"cocos2d: Unsupported CCZ header format"); + free(compressed); + return -1; + } + + // verify compression format + if( CFSwapInt16BigToHost(header->compression_type) != CCZ_COMPRESSION_ZLIB ) { + CCLOG(@"cocos2d: CCZ Unsupported compression method"); + free(compressed); + return -1; + } + + len = CFSwapInt32BigToHost( header->len ); + + headerSize = sizeof(struct CCZHeader); } - - // verify header version - uint16_t version = CFSwapInt16BigToHost( header->version ); - if( version > 2 ) { - CCLOG(@"cocos2d: Unsupported CCZ header format"); - free(compressed); - return -1; - } - - // verify compression format - if( CFSwapInt16BigToHost(header->compression_type) != CCZ_COMPRESSION_ZLIB ) { - CCLOG(@"cocos2d: CCZ Unsupported compression method"); + else if(compressed[0] == 'C' && compressed[1] == 'C' && compressed[2] == 'Z' && compressed[3] == 'p' ) + { + // encrypted ccz file + CCPHeader *header = (CCPHeader*) compressed; + + // verify header version + uint16_t version = CFSwapInt16BigToHost( header->version ); + if( version > 0 ) { + CCLOG(@"cocos2d: Unsupported CCZ header format"); + free(compressed); + return -1; + } + + // verify compression format + if( CFSwapInt16BigToHost(header->compression_type) != 0 ) { + CCLOG(@"cocos2d: CCZ Unsupported compression method"); + free(compressed); + return -1; + } + + // decrypt + headerSize = sizeof(CCPHeader); + uint32_t* ints = (uint32_t*)(compressed+12); + int enclen = (fileLen-12)/4; + + caw_encdec(ints, enclen); + + len = CFSwapInt32BigToHost( header->len ); + +#ifndef NDEBUG + // verify checksum in debug mode + uint32_t calculated = caw_checksum(ints, enclen); + uint32_t required = CFSwapInt32BigToHost( header->checksum ); + if(calculated != required) + { + CCLOG(@"cocos2d: Can't decrypt image file: Invalid decryption key"); + free(compressed); + return -1; + } +#endif + } + else { + CCLOG(@"cocos2d: Invalid CCZ file"); free(compressed); return -1; - } + } - uint32_t len = CFSwapInt32BigToHost( header->len ); *out = malloc( len ); if(! *out ) @@ -232,8 +383,8 @@ int ccInflateCCZFile(const char *path, unsigned char **out) uLongf destlen = len; - uLongf source = (uLongf) compressed + sizeof(*header); - int ret = uncompress(*out, &destlen, (Bytef*)source, fileLen - sizeof(*header) ); + uLongf source = (uLongf) compressed + headerSize; + int ret = uncompress(*out, &destlen, (Bytef*)source, fileLen - headerSize ); free( compressed ); From cf374363e0e8c7d70a77ce9d8ce806c932b0502c Mon Sep 17 00:00:00 2001 From: Marco Fabian Date: Sun, 15 May 2016 17:49:10 +0200 Subject: [PATCH 91/94] Corrected some typos Converted tabs to spaces Added some comments --- cocos2d/Support/ZipUtils.h | 85 ++++---- cocos2d/Support/ZipUtils.m | 401 ++++++++++++++++++++----------------- 2 files changed, 257 insertions(+), 229 deletions(-) diff --git a/cocos2d/Support/ZipUtils.h b/cocos2d/Support/ZipUtils.h index 6a9b17813a7..01b28f3fbfa 100644 --- a/cocos2d/Support/ZipUtils.h +++ b/cocos2d/Support/ZipUtils.h @@ -10,8 +10,11 @@ * http://themanaworld.org/ * from the mapreader.cpp file * + * Some modifications were taken from: + * https://www.codeandweb.com/texturepacker/contentprotection + * */ - + #ifndef __CC_ZIP_UTILS_H #define __CC_ZIP_UTILS_H @@ -20,49 +23,49 @@ #ifdef __cplusplus extern "C" { #endif - - /** - * Set the TexturePacker encryption key - * - * If your key used to encrypt the pvr.ccz file is - * aaaaaaaabbbbbbbbccccccccdddddddd - * you have to call this function 4 times: - * caw_setkey_part(0, 0xaaaaaaaa); - * caw_setkey_part(1, 0xbbbbbbbb); - * caw_setkey_part(2, 0xcccccccc); - * caw_setkey_part(3, 0xdddddddd); - * - * Distribute the call accross some files but make sure - * to call all of the parts *before* loading the first - * spritesheet. - * - * @param index part of the key [0..3] - * @param value value of the key part - */ - void caw_setkey_part(int index, uint32_t value); - /* XXX: pragma pack ??? */ - /** @struct CCZHeader - */ - struct CCZHeader { - uint8_t sig[4]; // signature. Should be 'CCZ!' 4 bytes - uint16_t compression_type; // should 0 - uint16_t version; // should be 2 (although version type==1 is also supported) - uint32_t reserved; // Reserverd for users. - uint32_t len; // size of the uncompressed file - }; +/** + * Set the TexturePacker encryption key + * + * If your key used to encrypt the pvr.ccz file is + * aaaaaaaabbbbbbbbccccccccdddddddd + * you have to call this function 4 times: + * caw_setkey_part(0, 0xaaaaaaaa); + * caw_setkey_part(1, 0xbbbbbbbb); + * caw_setkey_part(2, 0xcccccccc); + * caw_setkey_part(3, 0xdddddddd); + * + * Distribute the call accross some files but make sure + * to call all of the parts *before* loading the first + * spritesheet. + * + * @param index part of the key [0..3] + * @param value value of the key part + */ +void caw_setkey_part(int index, uint32_t value); + +/* XXX: pragma pack ??? */ +/** @struct CCZHeader + */ +struct CCZHeader { + uint8_t sig[4]; // signature. Should be 'CCZ!' 4 bytes + uint16_t compression_type; // should 0 + uint16_t version; // should be 2 (although version type==1 is also supported) + uint32_t reserved; // Reserverd for users. + uint32_t len; // size of the uncompressed file +}; - enum { - CCZ_COMPRESSION_ZLIB, // zlib format. - CCZ_COMPRESSION_BZIP2, // bzip2 format (not supported yet) - CCZ_COMPRESSION_GZIP, // gzip format (not supported yet) - CCZ_COMPRESSION_NONE, // plain (not supported yet) - }; +enum { + CCZ_COMPRESSION_ZLIB, // zlib format. + CCZ_COMPRESSION_BZIP2, // bzip2 format (not supported yet) + CCZ_COMPRESSION_GZIP, // gzip format (not supported yet) + CCZ_COMPRESSION_NONE, // plain (not supported yet) +}; /** @file * Zip helper functions */ - + /** * Inflates either zlib or gzip deflated memory. The inflated memory is * expected to be freed by the caller. @@ -70,7 +73,7 @@ extern "C" { * It will allocate 256k for the destination buffer. If it is not enought it will multiply the previous buffer size per 2, until there is enough memory. * @returns the length of the deflated buffer * - @since v0.8.1 + @since v0.8.1 */ int ccInflateMemory(unsigned char *in, unsigned int inLength, unsigned char **out); @@ -78,11 +81,11 @@ int ccInflateMemory(unsigned char *in, unsigned int inLength, unsigned char **ou * Inflates either zlib or gzip deflated memory. The inflated memory is * expected to be freed by the caller. * - * outLenghtHint is assumed to be the needed room to allocate the inflated buffer. + * outLengthHint is assumed to be the needed room to allocate the inflated buffer. * * @returns the length of the deflated buffer * - @since v1.0.0 + @since v1.0.0 */ int ccInflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int outLengthHint ); diff --git a/cocos2d/Support/ZipUtils.m b/cocos2d/Support/ZipUtils.m index 86b841f4f1c..aca01c8a29a 100644 --- a/cocos2d/Support/ZipUtils.m +++ b/cocos2d/Support/ZipUtils.m @@ -12,8 +12,12 @@ * Some ideas were taken from: * http://themanaworld.org/ * from the mapreader.cpp file + * + * Some modifications were taken from: + * https://www.codeandweb.com/texturepacker/contentprotection + * */ - + #import #import #import @@ -29,172 +33,179 @@ static int inflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int *outLength, unsigned int outLengthHint ) { - /* ret value */ - int err = Z_OK; - - int bufferSize = outLengthHint; - *out = (unsigned char*) malloc(bufferSize); - + /* ret value */ + int err = Z_OK; + + int bufferSize = outLengthHint; + *out = (unsigned char*) malloc(bufferSize); + z_stream d_stream; /* decompression stream */ d_stream.zalloc = (alloc_func)0; d_stream.zfree = (free_func)0; d_stream.opaque = (voidpf)0; - + d_stream.next_in = in; d_stream.avail_in = inLength; - d_stream.next_out = *out; - d_stream.avail_out = bufferSize; - - /* window size to hold 256k */ - if( (err = inflateInit2(&d_stream, 15 + 32)) != Z_OK ) - return err; - - for (;;) { + d_stream.next_out = *out; + d_stream.avail_out = bufferSize; + + /* window size to hold 256k */ + if( (err = inflateInit2(&d_stream, 15 + 32)) != Z_OK ) + return err; + + for (;; ) { err = inflate(&d_stream, Z_NO_FLUSH); - - if (err == Z_STREAM_END) - break; - - switch (err) { - case Z_NEED_DICT: - err = Z_DATA_ERROR; - case Z_DATA_ERROR: - case Z_MEM_ERROR: - inflateEnd(&d_stream); - return err; - } - - // not enough memory ? - if (err != Z_STREAM_END) { - - unsigned char *tmp = realloc(*out, bufferSize * BUFFER_INC_FACTOR); - - /* not enough memory, ouch */ - if (! tmp ) { - CCLOG(@"cocos2d: ZipUtils: realloc failed"); - inflateEnd(&d_stream); - return Z_MEM_ERROR; - } - /* only assign to *out if tmp is valid. it's not guaranteed that realloc will reuse the memory */ - *out = tmp; - - d_stream.next_out = *out + bufferSize; - d_stream.avail_out = bufferSize; - bufferSize *= BUFFER_INC_FACTOR; - } + + if (err == Z_STREAM_END) + break; + + switch (err) { + case Z_NEED_DICT: + err = Z_DATA_ERROR; + case Z_DATA_ERROR: + case Z_MEM_ERROR: + inflateEnd(&d_stream); + return err; + } + + // not enough memory ? + if (err != Z_STREAM_END) { + + unsigned char *tmp = realloc(*out, bufferSize * BUFFER_INC_FACTOR); + + /* not enough memory, ouch */ + if (!tmp ) { + CCLOG(@"cocos2d: ZipUtils: realloc failed"); + inflateEnd(&d_stream); + return Z_MEM_ERROR; + } + /* only assign to *out if tmp is valid. it's not guaranteed that realloc will reuse the memory */ + *out = tmp; + + d_stream.next_out = *out + bufferSize; + d_stream.avail_out = bufferSize; + bufferSize *= BUFFER_INC_FACTOR; + } } - - - *outLength = bufferSize - d_stream.avail_out; + + + *outLength = bufferSize - d_stream.avail_out; err = inflateEnd(&d_stream); - return err; + return err; } int ccInflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int outLengthHint ) { - unsigned int outLength = 0; - int err = inflateMemoryWithHint(in, inLength, out, &outLength, outLengthHint ); - - if (err != Z_OK || *out == NULL) { - if (err == Z_MEM_ERROR) - CCLOG(@"cocos2d: ZipUtils: Out of memory while decompressing map data!"); - - else if (err == Z_VERSION_ERROR) - CCLOG(@"cocos2d: ZipUtils: Incompatible zlib version!"); - - else if (err == Z_DATA_ERROR) - CCLOG(@"cocos2d: ZipUtils: Incorrect zlib compressed data!"); - - else - CCLOG(@"cocos2d: ZipUtils: Unknown error while decompressing map data!"); - - free(*out); - *out = NULL; - outLength = 0; - } - - return outLength; + unsigned int outLength = 0; + int err = inflateMemoryWithHint(in, inLength, out, &outLength, outLengthHint ); + + if (err != Z_OK || *out == NULL) { + if (err == Z_MEM_ERROR) + CCLOG(@"cocos2d: ZipUtils: Out of memory while decompressing map data!"); + + else if (err == Z_VERSION_ERROR) + CCLOG(@"cocos2d: ZipUtils: Incompatible zlib version!"); + + else if (err == Z_DATA_ERROR) + CCLOG(@"cocos2d: ZipUtils: Incorrect zlib compressed data!"); + + else + CCLOG(@"cocos2d: ZipUtils: Unknown error while decompressing map data!"); + + free(*out); + *out = NULL; + outLength = 0; + } + + return outLength; } int ccInflateMemory(unsigned char *in, unsigned int inLength, unsigned char **out) { - // 256k for hint - return ccInflateMemoryWithHint(in, inLength, out, 256 * 1024 ); + // 256k for hint + return ccInflateMemoryWithHint(in, inLength, out, 256 * 1024 ); } int ccInflateGZipFile(const char *path, unsigned char **out) { - int len; - unsigned int offset = 0; - - NSCAssert( out, @"ccInflateGZipFile: invalid 'out' parameter"); - NSCAssert( &*out, @"ccInflateGZipFile: invalid 'out' parameter"); - - gzFile inFile = gzopen(path, "rb"); - if( inFile == NULL ) { - CCLOG(@"cocos2d: ZipUtils: error open gzip file: %s", path); - return -1; - } - - /* 512k initial decompress buffer */ - int bufferSize = 512 * 1024; - unsigned int totalBufferSize = bufferSize; - - *out = malloc( bufferSize ); - if( ! out ) { - CCLOG(@"cocos2d: ZipUtils: out of memory"); - return -1; - } - - for (;;) { - len = gzread(inFile, *out + offset, bufferSize); - if (len < 0) { - CCLOG(@"cocos2d: ZipUtils: error in gzread"); - free( *out ); - *out = NULL; - return -1; - } - if (len == 0) - break; - - offset += len; - - // finish reading the file - if( len < bufferSize ) - break; - - bufferSize *= BUFFER_INC_FACTOR; - totalBufferSize += bufferSize; - unsigned char *tmp = realloc(*out, totalBufferSize ); - - if( ! tmp ) { - CCLOG(@"cocos2d: ZipUtils: out of memory"); - free( *out ); - *out = NULL; - return -1; - } - - *out = tmp; - } - - if (gzclose(inFile) != Z_OK) - CCLOG(@"cocos2d: ZipUtils: gzclose failed"); - - return offset; + int len; + unsigned int offset = 0; + + NSCAssert( out, @"ccInflateGZipFile: invalid 'out' parameter"); + NSCAssert( &*out, @"ccInflateGZipFile: invalid 'out' parameter"); + + gzFile inFile = gzopen(path, "rb"); + if( inFile == NULL ) { + CCLOG(@"cocos2d: ZipUtils: error open gzip file: %s", path); + return -1; + } + + /* 512k initial decompress buffer */ + int bufferSize = 512 * 1024; + unsigned int totalBufferSize = bufferSize; + + *out = malloc( bufferSize ); + if( !out ) { + CCLOG(@"cocos2d: ZipUtils: out of memory"); + return -1; + } + + for (;; ) { + len = gzread(inFile, *out + offset, bufferSize); + if (len < 0) { + CCLOG(@"cocos2d: ZipUtils: error in gzread"); + free( *out ); + *out = NULL; + return -1; + } + if (len == 0) + break; + + offset += len; + + // finish reading the file + if( len < bufferSize ) + break; + + bufferSize *= BUFFER_INC_FACTOR; + totalBufferSize += bufferSize; + unsigned char *tmp = realloc(*out, totalBufferSize ); + + if( !tmp ) { + CCLOG(@"cocos2d: ZipUtils: out of memory"); + free( *out ); + *out = NULL; + return -1; + } + + *out = tmp; + } + + if (gzclose(inFile) != Z_OK) + CCLOG(@"cocos2d: ZipUtils: gzclose failed"); + + return offset; } typedef struct { - uint8_t sig[4]; // signature. Should be 'CCZp' 4 bytes - uint16_t compression_type; // should 0 - uint16_t version; // should be 2 (although version type==1 is also supported) - uint32_t checksum; // Checksum - uint32_t len; // size of the uncompressed file + uint8_t sig[4]; // signature. Should be 'CCZp' 4 bytes + uint16_t compression_type; // should 0 + uint16_t version; // should be 2 (although version type==1 is also supported) + uint32_t checksum; // Checksum + uint32_t len; // size of the uncompressed file } CCPHeader; +// TexturePacker Content Protection Part static uint32_t caw_key[4] = {0,0,0,0}; static uint32_t caw_longKey[1024]; static bool caw_longKeyValid=false; +/** + * TexturePacker Set Encryption Key (Partly) + * + * @param index + * @param value + */ void caw_setkey_part(int index, uint32_t value) { assert(index >= 0); @@ -202,10 +213,16 @@ void caw_setkey_part(int index, uint32_t value) if(caw_key[index] != value) { caw_key[index] = value; - caw_longKeyValid = false; + caw_longKeyValid = false; } } +/** + * TexturePacker Encoding Data + * + * @param data + * @param len + */ static inline void caw_encdec (uint32_t *data, int len) { const int enclen = 1024; @@ -270,6 +287,14 @@ static inline void caw_encdec (uint32_t *data, int len) } } +/** + * TexturePacker Checksum For Data + * + * @param data + * @param len + * + * @return checksum + */ static inline uint32_t caw_checksum(const uint32_t *data, int len) { uint32_t cs=0; @@ -287,25 +312,25 @@ int ccInflateCCZFile(const char *path, unsigned char **out) { printf("inflating: %s\n", path); - NSCAssert( out, @"ccInflateCCZFile: invalid 'out' parameter"); - NSCAssert( &*out, @"ccInflateCCZFile: invalid 'out' parameter"); - - // load file into memory - unsigned char *compressed = NULL; - NSInteger fileLen = ccLoadFileIntoMemory( path, &compressed ); - if( fileLen < 0 ) { - CCLOG(@"cocos2d: Error loading CCZ compressed file"); - return -1; - } - + NSCAssert( out, @"ccInflateCCZFile: invalid 'out' parameter"); + NSCAssert( &*out, @"ccInflateCCZFile: invalid 'out' parameter"); + + // load file into memory + unsigned char *compressed = NULL; + NSInteger fileLen = ccLoadFileIntoMemory( path, &compressed ); + if( fileLen < 0 ) { + CCLOG(@"cocos2d: Error loading CCZ compressed file"); + return -1; + } + uint32_t len = 0; uint32_t headerSize = 0; - if( compressed[0] == 'C' && compressed[1] == 'C' && compressed[2] == 'Z' && compressed[3] == '!' ) + if( compressed[0] == 'C' && compressed[1] == 'C' && compressed[2] == 'Z' && compressed[3] == '!' ) { // standard ccz file - struct CCZHeader *header = (struct CCZHeader*) compressed; - + struct CCZHeader *header = (struct CCZHeader*) compressed; + // verify header version uint16_t version = CFSwapInt16BigToHost( header->version ); if( version > 2 ) { @@ -320,16 +345,16 @@ int ccInflateCCZFile(const char *path, unsigned char **out) free(compressed); return -1; } - + len = CFSwapInt32BigToHost( header->len ); headerSize = sizeof(struct CCZHeader); - } + } else if(compressed[0] == 'C' && compressed[1] == 'C' && compressed[2] == 'Z' && compressed[3] == 'p' ) - { + { // encrypted ccz file CCPHeader *header = (CCPHeader*) compressed; - + // verify header version uint16_t version = CFSwapInt16BigToHost( header->version ); if( version > 0 ) { @@ -344,7 +369,7 @@ int ccInflateCCZFile(const char *path, unsigned char **out) free(compressed); return -1; } - + // decrypt headerSize = sizeof(CCPHeader); uint32_t* ints = (uint32_t*)(compressed+12); @@ -362,40 +387,40 @@ int ccInflateCCZFile(const char *path, unsigned char **out) { CCLOG(@"cocos2d: Can't decrypt image file: Invalid decryption key"); free(compressed); - return -1; + return -1; } #endif } else { - CCLOG(@"cocos2d: Invalid CCZ file"); - free(compressed); - return -1; + CCLOG(@"cocos2d: Invalid CCZ file"); + free(compressed); + return -1; } - - - *out = malloc( len ); - if(! *out ) - { - CCLOG(@"cocos2d: CCZ: Failed to allocate memory for texture"); - free(compressed); - return -1; - } - - - uLongf destlen = len; - uLongf source = (uLongf) compressed + headerSize; - int ret = uncompress(*out, &destlen, (Bytef*)source, fileLen - headerSize ); - - free( compressed ); - - if( ret != Z_OK ) - { - CCLOG(@"cocos2d: CCZ: Failed to uncompress data"); - free( *out ); - *out = NULL; - return -1; - } - - - return len; + + + *out = malloc( len ); + if(!*out ) + { + CCLOG(@"cocos2d: CCZ: Failed to allocate memory for texture"); + free(compressed); + return -1; + } + + + uLongf destlen = len; + uLongf source = (uLongf) compressed + headerSize; + int ret = uncompress(*out, &destlen, (Bytef*)source, fileLen - headerSize ); + + free( compressed ); + + if( ret != Z_OK ) + { + CCLOG(@"cocos2d: CCZ: Failed to uncompress data"); + free( *out ); + *out = NULL; + return -1; + } + + + return len; } From 7a2a1f761840bb026782252503070fdeae35fc62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gr=C3=B6nlund?= Date: Sat, 21 May 2016 16:14:03 +0200 Subject: [PATCH 92/94] Added method for loading sprite sheets and sprite frames from sprite atlases stored in the image asset folder. --- cocos2d/CCSpriteFrameCache.h | 9 ++ cocos2d/CCSpriteFrameCache.m | 179 ++++++++++++++++++++++++++++++----- 2 files changed, 163 insertions(+), 25 deletions(-) diff --git a/cocos2d/CCSpriteFrameCache.h b/cocos2d/CCSpriteFrameCache.h index da3eb36fa0e..036e7584bfc 100644 --- a/cocos2d/CCSpriteFrameCache.h +++ b/cocos2d/CCSpriteFrameCache.h @@ -76,6 +76,13 @@ */ -(void) addSpriteFramesWithFile:(NSString*)plist; +/** + * Add Sprite frames to the cache from the specified sprite atlas asset. + * + * @param name the name of the sprite atlas asset. + */ +-(void) addSpriteFramesFromSpriteAtlasAssetNamed:(NSString *)name; + /** * Add sprite frames to the cache from the specified plist and texture file. * @@ -100,6 +107,8 @@ */ -(void) addSpriteFrame:(CCSpriteFrame*)frame name:(NSString*)frameName; + + /** * Registers a sprite sheet with the sprite frame cache so that the sprite frames can be loaded by name. * diff --git a/cocos2d/CCSpriteFrameCache.m b/cocos2d/CCSpriteFrameCache.m index 5c21504ba6e..47c43b1ec4a 100644 --- a/cocos2d/CCSpriteFrameCache.m +++ b/cocos2d/CCSpriteFrameCache.m @@ -42,7 +42,7 @@ #import "CCSprite.h" #import "Support/CCFileUtils.h" #import "CCTexture.h" - +#import "CCDirector.h" @interface CCSpriteFrame(Proxy) - (BOOL)hasProxy; @@ -180,6 +180,43 @@ - (void) registerSpriteFramesFile:(NSString*)plist #pragma mark CCSpriteFrameCache - loading sprite frames +-(void) addSpriteFrameWithDictionary:(NSDictionary*)frameDict texture:(CCTexture *)texture scaleSuffix:(NSString *)scaleSuffix +{ + // Reducing frame name string to base asset name by cutting of extensions and resolution suffix. + NSString *frameName = [[frameDict objectForKey:@"name"] stringByDeletingPathExtension]; + NSString *frameDictKey = frameName; + + if (frameName.length > 3) { + NSString *resolutionComponent = [frameName substringWithRange:NSMakeRange(frameName.length -3, 3)]; + if ([resolutionComponent isEqualToString:scaleSuffix]) { + frameDictKey = [frameDictKey stringByReplacingCharactersInRange:NSMakeRange(frameDictKey.length - 3, 3) withString:@""]; + } + } + + CCSpriteFrame *spriteFrame=nil; + + // get values + CGSize spriteSize = CCRectFromString([frameDict objectForKey:@"textureRect"]).size; + CGPoint spriteOffset = CCPointFromString([frameDict objectForKey:@"spriteOffset"]); + CGSize spriteSourceSize = CCSizeFromString([frameDict objectForKey:@"spriteSourceSize"]); + CGRect textureRect = CCRectFromString([frameDict objectForKey:@"textureRect"]); + BOOL textureRotated = [[frameDict objectForKey:@"textureRotated"] boolValue]; + + // get aliases + NSArray *aliases = [frameDict objectForKey:@"aliases"]; + for(NSString *alias in aliases) { + if( [_spriteFramesAliases objectForKey:alias] ) + CCLOGWARN(@"cocos2d: WARNING: an alias with name %@ already exists",alias); + + [_spriteFramesAliases setObject:frameDictKey forKey:alias]; + } + + // set frame info + CGRect rectInPixels = CGRectMake(textureRect.origin.x, textureRect.origin.y, spriteSize.width, spriteSize.height); + + [self addSpriteFrame:spriteFrame withTextureReference:texture key:frameDictKey rectInPixels:rectInPixels rotated:textureRotated offset:spriteOffset originalSize:spriteSourceSize]; +} + -(void) addSpriteFramesWithDictionary:(NSDictionary*)dictionary textureReference:(id)textureReference { /* @@ -272,33 +309,38 @@ -(void) addSpriteFramesWithDictionary:(NSDictionary*)dictionary textureReference frameOffset = spriteOffset; originalSize = spriteSourceSize; } - - NSString *textureFileName = nil; - CCTexture * texture = nil; - - if ( [textureReference isKindOfClass:[NSString class]] ) - { - textureFileName = textureReference; - } - else if ( [textureReference isKindOfClass:[CCTexture class]] ) - { - texture = textureReference; - } - - if ( textureFileName ) - { - spriteFrame = [[CCSpriteFrame alloc] initWithTextureFilename:textureFileName rectInPixels:rectInPixels rotated:isRotated offset:frameOffset originalSize:originalSize]; - } - else - { - spriteFrame = [[CCSpriteFrame alloc] initWithTexture:texture rectInPixels:rectInPixels rotated:isRotated offset:frameOffset originalSize:originalSize]; - } - - // add sprite frame - [_spriteFrames setObject:spriteFrame forKey:frameDictKey]; + + [self addSpriteFrame:spriteFrame withTextureReference:textureReference key:frameDictKey rectInPixels:rectInPixels rotated:isRotated offset:frameOffset originalSize:originalSize]; } } +- (void)addSpriteFrame:(CCSpriteFrame *)spriteFrame withTextureReference:(id)textureReference key:(NSString *)key rectInPixels:(CGRect)rect rotated:(BOOL)rotated offset:(CGPoint)offset originalSize:(CGSize)originalSize +{ + NSString *textureFileName = nil; + CCTexture * texture = nil; + + if ( [textureReference isKindOfClass:[NSString class]] ) + { + textureFileName = textureReference; + } + else if ( [textureReference isKindOfClass:[CCTexture class]] ) + { + texture = textureReference; + } + + if ( textureFileName ) + { + spriteFrame = [[CCSpriteFrame alloc] initWithTextureFilename:textureFileName rectInPixels:rect rotated:rotated offset:offset originalSize:originalSize]; + } + else + { + spriteFrame = [[CCSpriteFrame alloc] initWithTexture:texture rectInPixels:rect rotated:rotated offset:offset originalSize:originalSize]; + } + + // add sprite frame + [_spriteFrames setObject:spriteFrame forKey:key]; +} + -(void) addSpriteFramesWithDictionary:(NSDictionary*)dictionary textureFilename:(NSString*)textureFilename { return [self addSpriteFramesWithDictionary:dictionary textureReference:textureFilename]; @@ -376,6 +418,93 @@ -(void) addSpriteFramesWithFile:(NSString*)plist } +-(void) addSpriteFramesFromSpriteAtlasAssetNamed:(NSString *)atlasAssetName +{ + NSDictionary *dictionary = [self dictionaryForSpriteAtlasAssetNamed:atlasAssetName]; + if (!dictionary) { + CCLOG(@"cocos2d: CCSpriteFrameCache: No sprite atlas asset found with name: %@", atlasAssetName); + return; + } + if (dictionary != nil) { + NSInteger version = [[dictionary objectForKey:@"version"] integerValue]; + if (version != 1) { + CCLOG(@"cocos2d: WARNING: Unsupported version of sprite atlas asset file version: %ld filename: %@", (long)version, atlasAssetName); + return; + } + + NSAssert([[dictionary objectForKey:@"format"] isEqualToString:@"APPL"], @"format is not supported for CCSpriteFrameCache addSpriteFramesFromSpriteAtlasAssetNamed:textureFilename:"); + + int scale = [[CCDirector sharedDirector] contentScaleFactor]; + NSString *scaleSuffix = scale == 1 ? @"" : [NSString stringWithFormat:@"@%dx",scale]; + + NSArray *imageDicts = [dictionary objectForKey:@"images"]; + NSArray *imagePaths = [imageDicts valueForKeyPath:@"path"]; + + // Trying to find image paths for the current devices native resolution. + NSMutableIndexSet *indexes = [self indexesForImagePaths:imagePaths forFilename:atlasAssetName withSuffix:scaleSuffix].mutableCopy; + + if (indexes.count == 0) { + // Falling back to using @1x graphics if the expected resolution is not found. + [indexes addIndexes:[self indexesForImagePaths:imagePaths forFilename:atlasAssetName withSuffix:nil]]; + scaleSuffix = nil; + } + + // Only processing the image dictionaries that are using textures with the correct resolution. + for (NSDictionary *imageDict in [imageDicts objectsAtIndexes:indexes]) { + NSArray *spriteFrames = [imageDict objectForKey:@"subimages"]; + NSString *resourceName = [imageDict objectForKey:@"path"]; + NSString *resourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:[NSString stringWithFormat:@"/%@.atlasc/%@",atlasAssetName,resourceName]]; + if ([[NSFileManager defaultManager] fileExistsAtPath:resourcePath]) { + // Loading the sprite atlas image from the file system + NSData *imageData = [NSData dataWithContentsOfFile:resourcePath]; + CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData( (__bridge CFDataRef) imageData); + CGImageRef imageRef = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault); + + // Scale suffix will be an empty string if there wasn't any native resolution graphics in the sprite atlas. + // In that case the @1x graphics is loaded as fallback. + CCTexture *texture = [[CCTexture alloc] initWithCGImage:imageRef contentScale:scaleSuffix.length > 0 ? [[CCDirector sharedDirector] contentScaleFactor] : 1.0]; + + CGDataProviderRelease(imgDataProvider); + CGImageRelease(imageRef); + + // Loading the frames and connecting them with the texture. + for (NSDictionary *frameDict in spriteFrames) { + [self addSpriteFrameWithDictionary:frameDict texture:texture scaleSuffix:scaleSuffix]; + } + } else { + CCLOG(@"cocos2d: WARNING: image not found at file path: %@",resourcePath); + } + } + } +} + +- (NSDictionary *) dictionaryForSpriteAtlasAssetNamed:(NSString *)assetName +{ + // Looking for the file in resource root + NSString *resourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:[NSString stringWithFormat:@"/%1$@.atlasc/%1$@.plist",assetName]]; + if ([[NSFileManager defaultManager] fileExistsAtPath:resourcePath]) { + NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:resourcePath]; + + return dict; + } + return nil; +} + +- (NSIndexSet *)indexesForImagePaths:(NSArray *)imagePaths forFilename:(NSString *)filename withSuffix:(NSString *)scaleSuffix +{ + // Checking for indexes that has image paths with the provided suffix. + NSMutableIndexSet *indexes = [[NSMutableIndexSet alloc] init]; + for (NSString * searchString in imagePaths) { + NSString *strippedString = [searchString stringByDeletingPathExtension]; + strippedString = [strippedString stringByReplacingOccurrencesOfString:filename withString:@""]; + strippedString = [strippedString stringByReplacingCharactersInRange:NSMakeRange(0, 2) withString:@""]; + if ([strippedString isEqualToString:scaleSuffix]) { + [indexes addIndex:[imagePaths indexOfObject:searchString]]; + } + } + return indexes; +} + -(void) addSpriteFrame:(CCSpriteFrame*)frame name:(NSString*)frameName { [_spriteFrames setObject:frame forKey:frameName]; From c629f7429922458ee5fb15fdbb7659ab8ed700f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gr=C3=B6nlund?= Date: Sun, 22 May 2016 10:19:57 +0200 Subject: [PATCH 93/94] Fixes issue that caused graphics loading to fail when only using @1x graphics in an atlas sprite asset. --- cocos2d/CCSpriteFrameCache.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocos2d/CCSpriteFrameCache.m b/cocos2d/CCSpriteFrameCache.m index 47c43b1ec4a..fec90b6aac2 100644 --- a/cocos2d/CCSpriteFrameCache.m +++ b/cocos2d/CCSpriteFrameCache.m @@ -445,7 +445,7 @@ -(void) addSpriteFramesFromSpriteAtlasAssetNamed:(NSString *)atlasAssetName if (indexes.count == 0) { // Falling back to using @1x graphics if the expected resolution is not found. - [indexes addIndexes:[self indexesForImagePaths:imagePaths forFilename:atlasAssetName withSuffix:nil]]; + [indexes addIndexes:[self indexesForImagePaths:imagePaths forFilename:atlasAssetName withSuffix:@""]]; scaleSuffix = nil; } From b0bb5ef226d907fd6fd95549176a1804c2455208 Mon Sep 17 00:00:00 2001 From: Logan Smith Date: Sat, 25 Jun 2016 15:56:06 -0700 Subject: [PATCH 94/94] Resolved compiler error when compiling a project that uses Objective-C++ as well as Cocos2D-Objc. Also added an Objective-C++ test to cocos2d-tests; one involving a basic node hierarchy, the next involving a slightly more dicey manual visiting of a node with proper transforms, without necessarily adding it as a child of another node, using CCRenderer_Private. This patch does *not necessarily* allow you to compile cocos2d in Objective-C++ mode. It only ensures that you can use Objective-C++ in your project along with Cocos2D-Objc. The Objective-C++ fix within CCRenderer_Private.h was suggested by @slembcke here: http://forum.spritebuilder.com/t/cocos3d-c-mm-files-compiler-issue/15570/4 --- cocos2d-ui-tests/tests/ObjectiveC++Test.mm | 115 +++++++++++++++++++++ cocos2d/CCRendererBasicTypes_Private.h | 2 +- 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 cocos2d-ui-tests/tests/ObjectiveC++Test.mm diff --git a/cocos2d-ui-tests/tests/ObjectiveC++Test.mm b/cocos2d-ui-tests/tests/ObjectiveC++Test.mm new file mode 100644 index 00000000000..8b761d6d98a --- /dev/null +++ b/cocos2d-ui-tests/tests/ObjectiveC++Test.mm @@ -0,0 +1,115 @@ +// +// ObjectiveC++Test.m +// cocos2d-tests +// +// Created by Logan on 6/25/16. +// Copyright © 2016 Cocos2d. All rights reserved. +// + +#import "cocos2d.h" +#import "TestBase.h" +#include +#import "CCRenderer_Private.h" + +@interface ObjectiveCppTest : TestBase @end +@implementation ObjectiveCppTest { + BOOL _transformTest; + CCSprite *_transformTestDeepestDescendedSprite; + CCNode *_transformContainer; +} + +- (void)setUp { + _transformTest = NO; + [[CCFileUtils sharedFileUtils] setSearchPath: @[ @"Images", kCCFileUtilsDefaultSearchPath] ]; +} + +- (NSArray*)testConstructors +{ + return [NSArray arrayWithObjects: + @"objCppBasicTest", + @"objCppTransformTest", + nil]; +} + +static CCNode* spriteContainer( std::vector& v ) { + CCNode *container = [CCNode node]; + float lastScale = container.scale; + CCNode *lastNode = container; + for ( std::vector::iterator it = v.begin(); it != v.end(); ++it ) { + CCSprite *s = *it; + [lastNode addChild:s]; + s.position = ccp( s.parent.contentSize.width/2., s.parent.contentSize.height/2. ); + s.scale = lastScale * 0.75; + lastScale = s.scale; + + s.anchorPoint = ccp( CCRANDOM_0_1(), CCRANDOM_0_1() ); + + CCActionInterval *rotate = [CCActionRotateBy actionWithDuration:CCRANDOM_0_1()*6. + 4. angle:360]; + rotate = CCRANDOM_0_1() < 0.5 ? rotate : [rotate reverse]; + [s runAction:[CCActionRepeatForever actionWithAction:rotate]]; + + lastNode = s; + } + return container; +} + +static CCNode* getSprites() { + std::vector sprites; + for ( int i = 0; i < 3; ++i ) { + CCSprite *sprite = [CCSprite spriteWithImageNamed:@"powered.png"]; + sprites.push_back( sprite ); + } + CCNode *container = spriteContainer( sprites ); + CGSize s = [[CCDirector sharedDirector] viewSize]; + container.position = ccp( s.width/2.0f, s.height/2.0f); + return container; +} + +- (void)objCppBasicTest { + _transformTest = NO; + [self.contentNode addChild:getSprites()]; + self.subTitle = @"Node hierarchy in Obj-C++ with some CCActions, after using some basic C++ objects and logic"; +} + +- (void)objCppTransformTest { + _transformTest = YES; + _transformContainer = getSprites(); + CCSprite *grandestChildSprite = (CCSprite *)_transformContainer.children[0]; + // find the deepest-descended sprite + while ( grandestChildSprite.children[0] ) { + grandestChildSprite = grandestChildSprite.children[0]; + [grandestChildSprite onEnter]; + } + _transformTestDeepestDescendedSprite = grandestChildSprite; +// [_transformTestDeepestDescendedSprite onEnter]; + + self.subTitle = @"Same as before, but only drawing the deepest-descended sprite using only transform matrices"; +} + +- (void)visit:(CCRenderer *)renderer parentTransform:(const GLKMatrix4 *)parentTransform { + if ( _transformTest ) { + CCRenderer *renderer = [CCRenderer currentRenderer]; + GLKMatrix4 transformMatrix; + [renderer.globalShaderUniforms[CCShaderUniformProjection] getValue:&transformMatrix]; + + NSMutableArray *transformNodes = [[NSMutableArray alloc] init]; + CCNode *currentNode = _transformTestDeepestDescendedSprite; + for ( int i = 0; i < 2; ++i ) { + while ( currentNode.parent ) { + currentNode = currentNode.parent; + [transformNodes addObject:currentNode]; + } + if ( i == 0 ) { + currentNode = self.contentNode; + [transformNodes addObject:self.contentNode]; + } + } + for ( CCNode *n in [transformNodes reverseObjectEnumerator] ) { + transformMatrix = [n transform:&transformMatrix]; + } + [_transformTestDeepestDescendedSprite visit:renderer parentTransform:&transformMatrix]; + } + [super visit:renderer parentTransform:parentTransform]; +} + +@end \ No newline at end of file diff --git a/cocos2d/CCRendererBasicTypes_Private.h b/cocos2d/CCRendererBasicTypes_Private.h index 5f4fb5ceefc..e624cbf4d5c 100644 --- a/cocos2d/CCRendererBasicTypes_Private.h +++ b/cocos2d/CCRendererBasicTypes_Private.h @@ -87,7 +87,7 @@ CCGraphicsBufferPushElements(CCGraphicsBuffer *buffer, size_t requestedCount) CCRenderDispatch(NO, ^{[buffer resize:required*1.5];}); } - void *array = buffer->_ptr + buffer->_count*buffer->_elementSize; + void *array = (uint8_t *)buffer->_ptr + buffer->_count*buffer->_elementSize; buffer->_count += requestedCount; return array;