Merge branch 'v3' of https://github.com/cocos2d/cocos2d-x into v3_EventFrame

This commit is contained in:
kaile.yin 2014-10-25 23:02:38 +08:00
commit dd517813a8
275 changed files with 10657 additions and 6643 deletions

1
.gitignore vendored
View File

@ -36,6 +36,7 @@ ipch/
*.opensdf *.opensdf
SubmissionInfo SubmissionInfo
Generated Files Generated Files
AppPackages
# Ignore files build by ndk and eclipse # Ignore files build by ndk and eclipse
libs/ libs/

View File

@ -1013,6 +1013,7 @@ Developers:
zhongfq zhongfq
Optimize decompress jpg data Optimize decompress jpg data
Fixed memory leak of TextureCache::reloadTexture()
wohaaitinciu wohaaitinciu
WebView support on windows WebView support on windows

View File

@ -1,3 +1,8 @@
cocos2d-x-3.3 ??
[FIX] WP/WinRT: Windows 8.1 universal app support; `UIEditBox` support
[FIX] Label: label shifting when outline feature enabled
[FIX] Sprite3D: did not create attached sprite from cache
cocos2d-x-3.3-rc0 Oct.21 2014 cocos2d-x-3.3-rc0 Oct.21 2014
[NEW] 3d: added light support: direction light, point light, spot light and ambient light [NEW] 3d: added light support: direction light, point light, spot light and ambient light
[NEW] Added ClippingRectangleNode [NEW] Added ClippingRectangleNode
@ -34,6 +39,7 @@ cocos2d-x-3.3-rc0 Oct.21 2014
[FIX] Node: unscheduleAllSelectors() deprecated in favor of unscheudleAllCallbacks() [FIX] Node: unscheduleAllSelectors() deprecated in favor of unscheudleAllCallbacks()
[FIX] Node: crashed if remove/add child too quickly when using integrated physics [FIX] Node: crashed if remove/add child too quickly when using integrated physics
[FIX] TextFieldTTF: will get wrong characters if using Chinese input method on WP8 [FIX] TextFieldTTF: will get wrong characters if using Chinese input method on WP8
[FIX] TextureCache: memory leak in reloadTexture()
[FIX] UI: Button: button remains gray when releasing it, this issue only happened if enable scale9 and only has one texture [FIX] UI: Button: button remains gray when releasing it, this issue only happened if enable scale9 and only has one texture
[FIX] UI: Button: when creating a button with a title only, button content size is not immediately updated [FIX] UI: Button: when creating a button with a title only, button content size is not immediately updated
[FIX] UI: EditBox: setMaxLength is invalid on mac [FIX] UI: EditBox: setMaxLength is invalid on mac

View File

@ -204,9 +204,9 @@ def build_samples(target,ndk_build_param,android_platform,build_mode):
exit(1) exit(1)
if build_mode is None: if build_mode is None:
build_mode = 'release' build_mode = 'debug'
elif build_mode != 'debug': elif build_mode != 'release':
build_mode = 'release' build_mode = 'debug'
app_android_root = '' app_android_root = ''

View File

@ -0,0 +1,228 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30723.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libcocos2d", "libcocos2d", "{B3F299D4-B4CA-4F0B-8BE2-FB328483BC13}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d_8_1.Shared", "..\cocos\2d\libcocos2d_8_1\libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems", "{5D6F020F-7E72-4494-90A0-2DF11D235DF9}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d_8_1.Windows", "..\cocos\2d\libcocos2d_8_1\libcocos2d_8_1\libcocos2d_8_1.Windows\libcocos2d_8_1.Windows.vcxproj", "{9335005F-678E-4E8E-9B84-50037216AEC8}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d_8_1.WindowsPhone", "..\cocos\2d\libcocos2d_8_1\libcocos2d_8_1\libcocos2d_8_1.WindowsPhone\libcocos2d_8_1.WindowsPhone.vcxproj", "{22F3B9DF-1209-4574-8331-003966F562BF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cpp-tests", "cpp-tests", "{572742C5-9322-4548-AB8B-96C3750A1B5D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpp-tests.Shared", "..\tests\cpp-tests\proj.win8.1-universal\cpp-tests.Shared\cpp-tests.Shared.vcxitems", "{BE3A1791-5BCE-4CEA-92CD-0E2D86DDE27A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpp-tests.Windows", "..\tests\cpp-tests\proj.win8.1-universal\cpp-tests.Windows\cpp-tests.Windows.vcxproj", "{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpp-tests.WindowsPhone", "..\tests\cpp-tests\proj.win8.1-universal\cpp-tests.WindowsPhone\cpp-tests.WindowsPhone.vcxproj", "{15247C71-5289-4913-B88F-E253CC353720}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External", "External", "{85630454-74EA-4B5B-9B62-0E459B4476CB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libbox2d", "libbox2d", "{B3D1A3D5-9F54-43AF-9322-230B53242B78}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d.Shared", "..\external\Box2D\proj.win8.1-universal\libbox2d.Shared\libbox2d.Shared.vcxitems", "{4A3C6BA8-C227-498B-AA21-40BDA27B461F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d.Windows", "..\external\Box2D\proj.win8.1-universal\libbox2d.Windows\libbox2d.Windows.vcxproj", "{3B26A12D-3A44-47EA-82D2-282660FC844D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d.WindowsPhone", "..\external\Box2D\proj.win8.1-universal\libbox2d.WindowsPhone\libbox2d.WindowsPhone.vcxproj", "{22F798D8-BFFF-4754-996F-A5395343D5EC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libSpine", "libSpine", "{6FEB795C-C98C-4C8C-A88B-A35DEE205348}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine.Shared", "..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Shared\libSpine.Shared.vcxitems", "{ADAFD00D-A0D6-46EF-9F0B-EA2880BFE1DE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine.Windows", "..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Windows\libSpine.Windows.vcxproj", "{F3550FE0-C795-44F6-8FEB-093EB68143AE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine.WindowsPhone", "..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.WindowsPhone\libSpine.WindowsPhone.vcxproj", "{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cpp-empty-test", "cpp-empty-test", "{B70EF25E-E352-4020-BCDF-388973E44637}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloCpp.Shared", "..\tests\cpp-empty-test\proj.win8.1-universal\HelloCpp.Shared\HelloCpp.Shared.vcxitems", "{A3AD93E4-0B2F-4C58-9181-69BED2E42E3E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloCpp.Windows", "..\tests\cpp-empty-test\proj.win8.1-universal\HelloCpp.Windows\HelloCpp.Windows.vcxproj", "{79A8FCDA-4B12-4DD1-B676-FF148D651638}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloCpp.WindowsPhone", "..\tests\cpp-empty-test\proj.win8.1-universal\HelloCpp.WindowsPhone\HelloCpp.WindowsPhone.vcxproj", "{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
..\cocos\2d\libcocos2d_8_1\libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems*{9335005f-678e-4e8e-9b84-50037216aec8}*SharedItemsImports = 4
..\tests\cpp-tests\proj.win8.1-universal\cpp-tests.Shared\cpp-tests.Shared.vcxitems*{15247c71-5289-4913-b88f-e253cc353720}*SharedItemsImports = 4
..\tests\cpp-empty-test\proj.win8.1-universal\HelloCpp.Shared\HelloCpp.Shared.vcxitems*{a3ad93e4-0b2f-4c58-9181-69bed2e42e3e}*SharedItemsImports = 9
..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Shared\libSpine.Shared.vcxitems*{cc1da216-a80d-4be4-b309-acb6af313aff}*SharedItemsImports = 4
..\external\Box2D\proj.win8.1-universal\libbox2d.Shared\libbox2d.Shared.vcxitems*{4a3c6ba8-c227-498b-aa21-40bda27b461f}*SharedItemsImports = 9
..\tests\cpp-empty-test\proj.win8.1-universal\HelloCpp.Shared\HelloCpp.Shared.vcxitems*{79a8fcda-4b12-4dd1-b676-ff148d651638}*SharedItemsImports = 4
..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Shared\libSpine.Shared.vcxitems*{adafd00d-a0d6-46ef-9f0b-ea2880bfe1de}*SharedItemsImports = 9
..\tests\cpp-tests\proj.win8.1-universal\cpp-tests.Shared\cpp-tests.Shared.vcxitems*{be3a1791-5bce-4cea-92cd-0e2d86dde27a}*SharedItemsImports = 9
..\cocos\2d\libcocos2d_8_1\libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems*{5d6f020f-7e72-4494-90a0-2df11d235df9}*SharedItemsImports = 9
..\external\Box2D\proj.win8.1-universal\libbox2d.Shared\libbox2d.Shared.vcxitems*{3b26a12d-3a44-47ea-82d2-282660fc844d}*SharedItemsImports = 4
..\cocos\2d\libcocos2d_8_1\libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems*{22f3b9df-1209-4574-8331-003966f562bf}*SharedItemsImports = 4
..\external\Box2D\proj.win8.1-universal\libbox2d.Shared\libbox2d.Shared.vcxitems*{22f798d8-bfff-4754-996f-a5395343d5ec}*SharedItemsImports = 4
..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Shared\libSpine.Shared.vcxitems*{f3550fe0-c795-44f6-8feb-093eb68143ae}*SharedItemsImports = 4
..\tests\cpp-tests\proj.win8.1-universal\cpp-tests.Shared\cpp-tests.Shared.vcxitems*{f2bae06b-caae-43ee-b21b-57fa48db04fa}*SharedItemsImports = 4
..\tests\cpp-empty-test\proj.win8.1-universal\HelloCpp.Shared\HelloCpp.Shared.vcxitems*{396fe85e-bb05-4b92-bccb-f89aed4ea41a}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|ARM = Release|ARM
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|ARM.ActiveCfg = Debug|ARM
{9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|ARM.Build.0 = Debug|ARM
{9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|Win32.ActiveCfg = Debug|Win32
{9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|Win32.Build.0 = Debug|Win32
{9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|x64.ActiveCfg = Debug|x64
{9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|x64.Build.0 = Debug|x64
{9335005F-678E-4E8E-9B84-50037216AEC8}.Release|ARM.ActiveCfg = Release|ARM
{9335005F-678E-4E8E-9B84-50037216AEC8}.Release|ARM.Build.0 = Release|ARM
{9335005F-678E-4E8E-9B84-50037216AEC8}.Release|Win32.ActiveCfg = Release|Win32
{9335005F-678E-4E8E-9B84-50037216AEC8}.Release|Win32.Build.0 = Release|Win32
{9335005F-678E-4E8E-9B84-50037216AEC8}.Release|x64.ActiveCfg = Release|x64
{9335005F-678E-4E8E-9B84-50037216AEC8}.Release|x64.Build.0 = Release|x64
{22F3B9DF-1209-4574-8331-003966F562BF}.Debug|ARM.ActiveCfg = Debug|ARM
{22F3B9DF-1209-4574-8331-003966F562BF}.Debug|ARM.Build.0 = Debug|ARM
{22F3B9DF-1209-4574-8331-003966F562BF}.Debug|Win32.ActiveCfg = Debug|Win32
{22F3B9DF-1209-4574-8331-003966F562BF}.Debug|Win32.Build.0 = Debug|Win32
{22F3B9DF-1209-4574-8331-003966F562BF}.Debug|x64.ActiveCfg = Debug|Win32
{22F3B9DF-1209-4574-8331-003966F562BF}.Release|ARM.ActiveCfg = Release|ARM
{22F3B9DF-1209-4574-8331-003966F562BF}.Release|ARM.Build.0 = Release|ARM
{22F3B9DF-1209-4574-8331-003966F562BF}.Release|Win32.ActiveCfg = Release|Win32
{22F3B9DF-1209-4574-8331-003966F562BF}.Release|Win32.Build.0 = Release|Win32
{22F3B9DF-1209-4574-8331-003966F562BF}.Release|x64.ActiveCfg = Release|Win32
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Debug|ARM.ActiveCfg = Debug|ARM
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Debug|ARM.Build.0 = Debug|ARM
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Debug|ARM.Deploy.0 = Debug|ARM
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Debug|Win32.ActiveCfg = Debug|Win32
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Debug|Win32.Build.0 = Debug|Win32
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Debug|Win32.Deploy.0 = Debug|Win32
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Debug|x64.ActiveCfg = Debug|x64
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Debug|x64.Build.0 = Debug|x64
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Debug|x64.Deploy.0 = Debug|x64
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Release|ARM.ActiveCfg = Release|ARM
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Release|ARM.Build.0 = Release|ARM
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Release|ARM.Deploy.0 = Release|ARM
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Release|Win32.ActiveCfg = Release|Win32
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Release|Win32.Build.0 = Release|Win32
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Release|Win32.Deploy.0 = Release|Win32
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Release|x64.ActiveCfg = Release|x64
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Release|x64.Build.0 = Release|x64
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA}.Release|x64.Deploy.0 = Release|x64
{15247C71-5289-4913-B88F-E253CC353720}.Debug|ARM.ActiveCfg = Debug|ARM
{15247C71-5289-4913-B88F-E253CC353720}.Debug|ARM.Build.0 = Debug|ARM
{15247C71-5289-4913-B88F-E253CC353720}.Debug|ARM.Deploy.0 = Debug|ARM
{15247C71-5289-4913-B88F-E253CC353720}.Debug|Win32.ActiveCfg = Debug|Win32
{15247C71-5289-4913-B88F-E253CC353720}.Debug|Win32.Build.0 = Debug|Win32
{15247C71-5289-4913-B88F-E253CC353720}.Debug|Win32.Deploy.0 = Debug|Win32
{15247C71-5289-4913-B88F-E253CC353720}.Debug|x64.ActiveCfg = Debug|Win32
{15247C71-5289-4913-B88F-E253CC353720}.Release|ARM.ActiveCfg = Release|ARM
{15247C71-5289-4913-B88F-E253CC353720}.Release|ARM.Build.0 = Release|ARM
{15247C71-5289-4913-B88F-E253CC353720}.Release|ARM.Deploy.0 = Release|ARM
{15247C71-5289-4913-B88F-E253CC353720}.Release|Win32.ActiveCfg = Release|Win32
{15247C71-5289-4913-B88F-E253CC353720}.Release|Win32.Build.0 = Release|Win32
{15247C71-5289-4913-B88F-E253CC353720}.Release|Win32.Deploy.0 = Release|Win32
{15247C71-5289-4913-B88F-E253CC353720}.Release|x64.ActiveCfg = Release|Win32
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|ARM.ActiveCfg = Debug|ARM
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|ARM.Build.0 = Debug|ARM
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|Win32.ActiveCfg = Debug|Win32
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|Win32.Build.0 = Debug|Win32
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|x64.ActiveCfg = Debug|x64
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|x64.Build.0 = Debug|x64
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|ARM.ActiveCfg = Release|ARM
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|ARM.Build.0 = Release|ARM
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|Win32.ActiveCfg = Release|Win32
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|Win32.Build.0 = Release|Win32
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|x64.ActiveCfg = Release|x64
{3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|x64.Build.0 = Release|x64
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Debug|ARM.ActiveCfg = Debug|ARM
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Debug|ARM.Build.0 = Debug|ARM
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Debug|Win32.ActiveCfg = Debug|Win32
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Debug|Win32.Build.0 = Debug|Win32
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Debug|x64.ActiveCfg = Debug|Win32
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Release|ARM.ActiveCfg = Release|ARM
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Release|ARM.Build.0 = Release|ARM
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Release|Win32.ActiveCfg = Release|Win32
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Release|Win32.Build.0 = Release|Win32
{22F798D8-BFFF-4754-996F-A5395343D5EC}.Release|x64.ActiveCfg = Release|Win32
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|ARM.ActiveCfg = Debug|ARM
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|ARM.Build.0 = Debug|ARM
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|Win32.ActiveCfg = Debug|Win32
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|Win32.Build.0 = Debug|Win32
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|x64.ActiveCfg = Debug|x64
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|x64.Build.0 = Debug|x64
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|ARM.ActiveCfg = Release|ARM
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|ARM.Build.0 = Release|ARM
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|Win32.ActiveCfg = Release|Win32
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|Win32.Build.0 = Release|Win32
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|x64.ActiveCfg = Release|x64
{F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|x64.Build.0 = Release|x64
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Debug|ARM.ActiveCfg = Debug|ARM
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Debug|ARM.Build.0 = Debug|ARM
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Debug|Win32.ActiveCfg = Debug|Win32
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Debug|Win32.Build.0 = Debug|Win32
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Debug|x64.ActiveCfg = Debug|Win32
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Release|ARM.ActiveCfg = Release|ARM
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Release|ARM.Build.0 = Release|ARM
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Release|Win32.ActiveCfg = Release|Win32
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Release|Win32.Build.0 = Release|Win32
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF}.Release|x64.ActiveCfg = Release|Win32
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Debug|ARM.ActiveCfg = Debug|ARM
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Debug|ARM.Build.0 = Debug|ARM
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Debug|ARM.Deploy.0 = Debug|ARM
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Debug|Win32.ActiveCfg = Debug|Win32
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Debug|Win32.Build.0 = Debug|Win32
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Debug|Win32.Deploy.0 = Debug|Win32
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Debug|x64.ActiveCfg = Debug|x64
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Debug|x64.Build.0 = Debug|x64
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Debug|x64.Deploy.0 = Debug|x64
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Release|ARM.ActiveCfg = Release|ARM
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Release|ARM.Build.0 = Release|ARM
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Release|ARM.Deploy.0 = Release|ARM
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Release|Win32.ActiveCfg = Release|Win32
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Release|Win32.Build.0 = Release|Win32
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Release|Win32.Deploy.0 = Release|Win32
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Release|x64.ActiveCfg = Release|x64
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Release|x64.Build.0 = Release|x64
{79A8FCDA-4B12-4DD1-B676-FF148D651638}.Release|x64.Deploy.0 = Release|x64
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Debug|ARM.ActiveCfg = Debug|ARM
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Debug|ARM.Build.0 = Debug|ARM
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Debug|ARM.Deploy.0 = Debug|ARM
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Debug|Win32.ActiveCfg = Debug|Win32
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Debug|Win32.Build.0 = Debug|Win32
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Debug|Win32.Deploy.0 = Debug|Win32
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Debug|x64.ActiveCfg = Debug|Win32
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Release|ARM.ActiveCfg = Release|ARM
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Release|ARM.Build.0 = Release|ARM
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Release|ARM.Deploy.0 = Release|ARM
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Release|Win32.ActiveCfg = Release|Win32
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Release|Win32.Build.0 = Release|Win32
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Release|Win32.Deploy.0 = Release|Win32
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{5D6F020F-7E72-4494-90A0-2DF11D235DF9} = {B3F299D4-B4CA-4F0B-8BE2-FB328483BC13}
{9335005F-678E-4E8E-9B84-50037216AEC8} = {B3F299D4-B4CA-4F0B-8BE2-FB328483BC13}
{22F3B9DF-1209-4574-8331-003966F562BF} = {B3F299D4-B4CA-4F0B-8BE2-FB328483BC13}
{BE3A1791-5BCE-4CEA-92CD-0E2D86DDE27A} = {572742C5-9322-4548-AB8B-96C3750A1B5D}
{F2BAE06B-CAAE-43EE-B21B-57FA48DB04FA} = {572742C5-9322-4548-AB8B-96C3750A1B5D}
{15247C71-5289-4913-B88F-E253CC353720} = {572742C5-9322-4548-AB8B-96C3750A1B5D}
{B3D1A3D5-9F54-43AF-9322-230B53242B78} = {85630454-74EA-4B5B-9B62-0E459B4476CB}
{4A3C6BA8-C227-498B-AA21-40BDA27B461F} = {B3D1A3D5-9F54-43AF-9322-230B53242B78}
{3B26A12D-3A44-47EA-82D2-282660FC844D} = {B3D1A3D5-9F54-43AF-9322-230B53242B78}
{22F798D8-BFFF-4754-996F-A5395343D5EC} = {B3D1A3D5-9F54-43AF-9322-230B53242B78}
{6FEB795C-C98C-4C8C-A88B-A35DEE205348} = {85630454-74EA-4B5B-9B62-0E459B4476CB}
{ADAFD00D-A0D6-46EF-9F0B-EA2880BFE1DE} = {6FEB795C-C98C-4C8C-A88B-A35DEE205348}
{F3550FE0-C795-44F6-8FEB-093EB68143AE} = {6FEB795C-C98C-4C8C-A88B-A35DEE205348}
{CC1DA216-A80D-4BE4-B309-ACB6AF313AFF} = {6FEB795C-C98C-4C8C-A88B-A35DEE205348}
{A3AD93E4-0B2F-4C58-9181-69BED2E42E3E} = {B70EF25E-E352-4020-BCDF-388973E44637}
{79A8FCDA-4B12-4DD1-B676-FF148D651638} = {B70EF25E-E352-4020-BCDF-388973E44637}
{396FE85E-BB05-4B92-BCCB-F89AED4EA41A} = {B70EF25E-E352-4020-BCDF-388973E44637}
EndGlobalSection
EndGlobal

View File

@ -1291,14 +1291,14 @@
3E6176771960F89B00DE83F5 /* CCEventListenerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176641960F89B00DE83F5 /* CCEventListenerController.h */; }; 3E6176771960F89B00DE83F5 /* CCEventListenerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176641960F89B00DE83F5 /* CCEventListenerController.h */; };
3E6176781960F89B00DE83F5 /* CCGameController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176651960F89B00DE83F5 /* CCGameController.h */; }; 3E6176781960F89B00DE83F5 /* CCGameController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176651960F89B00DE83F5 /* CCGameController.h */; };
3E61781D1966A5A300DE83F5 /* CCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E61781C1966A5A300DE83F5 /* CCController.cpp */; }; 3E61781D1966A5A300DE83F5 /* CCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E61781C1966A5A300DE83F5 /* CCController.cpp */; };
3EA1072F19D7F37700CAB794 /* CCLight.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EA1072D19D7F37700CAB794 /* CCLight.cpp */; }; 3EACC9A019F5014D00EB3C5E /* CCCamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EACC99C19F5014D00EB3C5E /* CCCamera.cpp */; };
3EA1073019D7F37700CAB794 /* CCLight.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EA1072D19D7F37700CAB794 /* CCLight.cpp */; }; 3EACC9A119F5014D00EB3C5E /* CCCamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EACC99C19F5014D00EB3C5E /* CCCamera.cpp */; };
3EA1073119D7F37700CAB794 /* CCLight.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA1072E19D7F37700CAB794 /* CCLight.h */; }; 3EACC9A219F5014D00EB3C5E /* CCCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EACC99D19F5014D00EB3C5E /* CCCamera.h */; };
3EA1073219D7F37700CAB794 /* CCLight.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA1072E19D7F37700CAB794 /* CCLight.h */; }; 3EACC9A319F5014D00EB3C5E /* CCCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EACC99D19F5014D00EB3C5E /* CCCamera.h */; };
3EA3EDBC1991CDFA00645534 /* CCCamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EA3EDBA1991CDFA00645534 /* CCCamera.cpp */; }; 3EACC9A419F5014D00EB3C5E /* CCLight.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EACC99E19F5014D00EB3C5E /* CCLight.cpp */; };
3EA3EDBD1991CDFA00645534 /* CCCamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EA3EDBA1991CDFA00645534 /* CCCamera.cpp */; }; 3EACC9A519F5014D00EB3C5E /* CCLight.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EACC99E19F5014D00EB3C5E /* CCLight.cpp */; };
3EA3EDBE1991CDFA00645534 /* CCCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA3EDBB1991CDFA00645534 /* CCCamera.h */; }; 3EACC9A619F5014D00EB3C5E /* CCLight.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EACC99F19F5014D00EB3C5E /* CCLight.h */; };
3EA3EDBF1991CDFA00645534 /* CCCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA3EDBB1991CDFA00645534 /* CCCamera.h */; }; 3EACC9A719F5014D00EB3C5E /* CCLight.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EACC99F19F5014D00EB3C5E /* CCLight.h */; };
464AD6E5197EBB1400E502D8 /* pvr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 464AD6E3197EBB1400E502D8 /* pvr.cpp */; }; 464AD6E5197EBB1400E502D8 /* pvr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 464AD6E3197EBB1400E502D8 /* pvr.cpp */; };
464AD6E6197EBB1400E502D8 /* pvr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 464AD6E3197EBB1400E502D8 /* pvr.cpp */; }; 464AD6E6197EBB1400E502D8 /* pvr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 464AD6E3197EBB1400E502D8 /* pvr.cpp */; };
464AD6E7197EBB1400E502D8 /* pvr.h in Headers */ = {isa = PBXBuildFile; fileRef = 464AD6E4197EBB1400E502D8 /* pvr.h */; }; 464AD6E7197EBB1400E502D8 /* pvr.h in Headers */ = {isa = PBXBuildFile; fileRef = 464AD6E4197EBB1400E502D8 /* pvr.h */; };
@ -2462,10 +2462,10 @@
3E61781C1966A5A300DE83F5 /* CCController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCController.cpp; path = ../base/CCController.cpp; sourceTree = "<group>"; }; 3E61781C1966A5A300DE83F5 /* CCController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCController.cpp; path = ../base/CCController.cpp; sourceTree = "<group>"; };
3EA0FB69191C841D00B170C8 /* UIVideoPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIVideoPlayer.h; sourceTree = "<group>"; }; 3EA0FB69191C841D00B170C8 /* UIVideoPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIVideoPlayer.h; sourceTree = "<group>"; };
3EA0FB6A191C841D00B170C8 /* UIVideoPlayer-ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "UIVideoPlayer-ios.mm"; sourceTree = "<group>"; }; 3EA0FB6A191C841D00B170C8 /* UIVideoPlayer-ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "UIVideoPlayer-ios.mm"; sourceTree = "<group>"; };
3EA1072D19D7F37700CAB794 /* CCLight.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCLight.cpp; path = ../base/CCLight.cpp; sourceTree = "<group>"; }; 3EACC99C19F5014D00EB3C5E /* CCCamera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCCamera.cpp; sourceTree = "<group>"; };
3EA1072E19D7F37700CAB794 /* CCLight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCLight.h; path = ../base/CCLight.h; sourceTree = "<group>"; }; 3EACC99D19F5014D00EB3C5E /* CCCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCCamera.h; sourceTree = "<group>"; };
3EA3EDBA1991CDFA00645534 /* CCCamera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCCamera.cpp; path = ../base/CCCamera.cpp; sourceTree = "<group>"; }; 3EACC99E19F5014D00EB3C5E /* CCLight.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCLight.cpp; sourceTree = "<group>"; };
3EA3EDBB1991CDFA00645534 /* CCCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCCamera.h; path = ../base/CCCamera.h; sourceTree = "<group>"; }; 3EACC99F19F5014D00EB3C5E /* CCLight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCLight.h; sourceTree = "<group>"; };
464AD6E3197EBB1400E502D8 /* pvr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pvr.cpp; path = ../base/pvr.cpp; sourceTree = "<group>"; }; 464AD6E3197EBB1400E502D8 /* pvr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pvr.cpp; path = ../base/pvr.cpp; sourceTree = "<group>"; };
464AD6E4197EBB1400E502D8 /* pvr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pvr.h; path = ../base/pvr.h; sourceTree = "<group>"; }; 464AD6E4197EBB1400E502D8 /* pvr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pvr.h; path = ../base/pvr.h; sourceTree = "<group>"; };
46A15FCC1807A544005B8026 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; name = AUTHORS; path = ../AUTHORS; sourceTree = "<group>"; }; 46A15FCC1807A544005B8026 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; name = AUTHORS; path = ../AUTHORS; sourceTree = "<group>"; };
@ -3222,12 +3222,8 @@
1A5700A2180BC5E60088DEC7 /* base */ = { 1A5700A2180BC5E60088DEC7 /* base */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
3EA1072D19D7F37700CAB794 /* CCLight.cpp */,
3EA1072E19D7F37700CAB794 /* CCLight.h */,
299CF1F919A434BC00C378C1 /* ccRandom.cpp */, 299CF1F919A434BC00C378C1 /* ccRandom.cpp */,
299CF1FA19A434BC00C378C1 /* ccRandom.h */, 299CF1FA19A434BC00C378C1 /* ccRandom.h */,
3EA3EDBA1991CDFA00645534 /* CCCamera.cpp */,
3EA3EDBB1991CDFA00645534 /* CCCamera.h */,
464AD6E3197EBB1400E502D8 /* pvr.cpp */, 464AD6E3197EBB1400E502D8 /* pvr.cpp */,
464AD6E4197EBB1400E502D8 /* pvr.h */, 464AD6E4197EBB1400E502D8 /* pvr.h */,
3E61781C1966A5A300DE83F5 /* CCController.cpp */, 3E61781C1966A5A300DE83F5 /* CCController.cpp */,
@ -4637,6 +4633,10 @@
46A169A11807B037005B8026 /* 2d */ = { 46A169A11807B037005B8026 /* 2d */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
3EACC99C19F5014D00EB3C5E /* CCCamera.cpp */,
3EACC99D19F5014D00EB3C5E /* CCCamera.h */,
3EACC99E19F5014D00EB3C5E /* CCLight.cpp */,
3EACC99F19F5014D00EB3C5E /* CCLight.h */,
1A9DCA02180E6955007A3AD4 /* CCGLBufferedNode.cpp */, 1A9DCA02180E6955007A3AD4 /* CCGLBufferedNode.cpp */,
1A9DCA03180E6955007A3AD4 /* CCGLBufferedNode.h */, 1A9DCA03180E6955007A3AD4 /* CCGLBufferedNode.h */,
1A570046180BC59A0088DEC7 /* actions */, 1A570046180BC59A0088DEC7 /* actions */,
@ -5129,7 +5129,6 @@
38B8E2E319E671D2002D7CE7 /* UILayoutComponent.h in Headers */, 38B8E2E319E671D2002D7CE7 /* UILayoutComponent.h in Headers */,
5034CA39191D591100CE6051 /* ccShader_PositionColorLengthTexture.frag in Headers */, 5034CA39191D591100CE6051 /* ccShader_PositionColorLengthTexture.frag in Headers */,
292DB14B19B4574100A80320 /* UIEditBoxImpl-mac.h in Headers */, 292DB14B19B4574100A80320 /* UIEditBoxImpl-mac.h in Headers */,
3EA1073119D7F37700CAB794 /* CCLight.h in Headers */,
B29A7E3F19EE1B7700872B35 /* AnimationState.h in Headers */, B29A7E3F19EE1B7700872B35 /* AnimationState.h in Headers */,
50ABBE891925AB6F00A911A9 /* CCMap.h in Headers */, 50ABBE891925AB6F00A911A9 /* CCMap.h in Headers */,
50ABBE8D1925AB6F00A911A9 /* CCNS.h in Headers */, 50ABBE8D1925AB6F00A911A9 /* CCNS.h in Headers */,
@ -5518,7 +5517,6 @@
15AE189E19AAD33D00C27E9E /* CCNodeLoader.h in Headers */, 15AE189E19AAD33D00C27E9E /* CCNodeLoader.h in Headers */,
50ABBE7B1925AB6F00A911A9 /* CCEventMouse.h in Headers */, 50ABBE7B1925AB6F00A911A9 /* CCEventMouse.h in Headers */,
503DD8F91926B0DB00CD74DD /* CCIMEDispatcher.h in Headers */, 503DD8F91926B0DB00CD74DD /* CCIMEDispatcher.h in Headers */,
3EA3EDBE1991CDFA00645534 /* CCCamera.h in Headers */,
15AE1B6619AADA9900C27E9E /* UIImageView.h in Headers */, 15AE1B6619AADA9900C27E9E /* UIImageView.h in Headers */,
15AE1BB419AADFEF00C27E9E /* HttpResponse.h in Headers */, 15AE1BB419AADFEF00C27E9E /* HttpResponse.h in Headers */,
15AE1A8519AAD40300C27E9E /* b2Joint.h in Headers */, 15AE1A8519AAD40300C27E9E /* b2Joint.h in Headers */,
@ -5557,6 +5555,7 @@
50ABBEC91925AB6F00A911A9 /* firePngData.h in Headers */, 50ABBEC91925AB6F00A911A9 /* firePngData.h in Headers */,
292DB16119B461CA00A80320 /* ExtensionDeprecated.h in Headers */, 292DB16119B461CA00A80320 /* ExtensionDeprecated.h in Headers */,
503DD8F51926B0DB00CD74DD /* CCIMEDelegate.h in Headers */, 503DD8F51926B0DB00CD74DD /* CCIMEDelegate.h in Headers */,
3EACC9A619F5014D00EB3C5E /* CCLight.h in Headers */,
50ABBD5A1925AB0000A911A9 /* Vec2.h in Headers */, 50ABBD5A1925AB0000A911A9 /* Vec2.h in Headers */,
15AE1BDB19AAE01E00C27E9E /* CCControlSwitch.h in Headers */, 15AE1BDB19AAE01E00C27E9E /* CCControlSwitch.h in Headers */,
B24AA987195A675C007B4522 /* CCFastTMXLayer.h in Headers */, B24AA987195A675C007B4522 /* CCFastTMXLayer.h in Headers */,
@ -5630,6 +5629,7 @@
15AE190219AAD35000C27E9E /* CCComController.h in Headers */, 15AE190219AAD35000C27E9E /* CCComController.h in Headers */,
15AE18DE19AAD35000C27E9E /* TriggerObj.h in Headers */, 15AE18DE19AAD35000C27E9E /* TriggerObj.h in Headers */,
15AE183E19AAD2F700C27E9E /* CCSkeleton3D.h in Headers */, 15AE183E19AAD2F700C27E9E /* CCSkeleton3D.h in Headers */,
3EACC9A219F5014D00EB3C5E /* CCCamera.h in Headers */,
50ABBECD1925AB6F00A911A9 /* s3tc.h in Headers */, 50ABBECD1925AB6F00A911A9 /* s3tc.h in Headers */,
15AE1BD119AAE01E00C27E9E /* CCControlHuePicker.h in Headers */, 15AE1BD119AAE01E00C27E9E /* CCControlHuePicker.h in Headers */,
50ABBE771925AB6F00A911A9 /* CCEventListenerTouch.h in Headers */, 50ABBE771925AB6F00A911A9 /* CCEventListenerTouch.h in Headers */,
@ -5652,6 +5652,7 @@
503DD8F01926736A00CD74DD /* CCStdC-ios.h in Headers */, 503DD8F01926736A00CD74DD /* CCStdC-ios.h in Headers */,
15AE1A9A19AAD40300C27E9E /* b2Math.h in Headers */, 15AE1A9A19AAD40300C27E9E /* b2Math.h in Headers */,
46A170FF1807CECB005B8026 /* CCPhysicsContact.h in Headers */, 46A170FF1807CECB005B8026 /* CCPhysicsContact.h in Headers */,
3EACC9A319F5014D00EB3C5E /* CCCamera.h in Headers */,
B29A7E1A19EE1B7700872B35 /* Event.h in Headers */, B29A7E1A19EE1B7700872B35 /* Event.h in Headers */,
15AE1AC719AAD40300C27E9E /* b2GearJoint.h in Headers */, 15AE1AC719AAD40300C27E9E /* b2GearJoint.h in Headers */,
50ABBDA21925AB4100A911A9 /* CCGroupCommand.h in Headers */, 50ABBDA21925AB4100A911A9 /* CCGroupCommand.h in Headers */,
@ -5689,7 +5690,6 @@
15B3708719EE414C00ABE682 /* Downloader.h in Headers */, 15B3708719EE414C00ABE682 /* Downloader.h in Headers */,
15AE192619AAD35100C27E9E /* TriggerObj.h in Headers */, 15AE192619AAD35100C27E9E /* TriggerObj.h in Headers */,
50ABBE2E1925AB6F00A911A9 /* ccCArray.h in Headers */, 50ABBE2E1925AB6F00A911A9 /* ccCArray.h in Headers */,
15AE1A0C19AAD3A700C27E9E /* CCSkeletonAnimation.h in Headers */,
15B3707B19EE414C00ABE682 /* AssetsManagerEx.h in Headers */, 15B3707B19EE414C00ABE682 /* AssetsManagerEx.h in Headers */,
15AE1B9119AADA9A00C27E9E /* UIWidget.h in Headers */, 15AE1B9119AADA9A00C27E9E /* UIWidget.h in Headers */,
50ABC0041926664800A911A9 /* CCLock-apple.h in Headers */, 50ABC0041926664800A911A9 /* CCLock-apple.h in Headers */,
@ -5820,7 +5820,6 @@
50ED2BE119BEAF7900A0AB90 /* UIEditBoxImpl-win32.h in Headers */, 50ED2BE119BEAF7900A0AB90 /* UIEditBoxImpl-win32.h in Headers */,
15AE1ACB19AAD40300C27E9E /* b2MouseJoint.h in Headers */, 15AE1ACB19AAD40300C27E9E /* b2MouseJoint.h in Headers */,
50ABBD3F1925AB0000A911A9 /* CCGeometry.h in Headers */, 50ABBD3F1925AB0000A911A9 /* CCGeometry.h in Headers */,
3EA3EDBF1991CDFA00645534 /* CCCamera.h in Headers */,
B29A7DD019EE1B7700872B35 /* RegionAttachment.h in Headers */, B29A7DD019EE1B7700872B35 /* RegionAttachment.h in Headers */,
15AE1AD319AAD40300C27E9E /* b2RopeJoint.h in Headers */, 15AE1AD319AAD40300C27E9E /* b2RopeJoint.h in Headers */,
50ABBFFE1926664800A911A9 /* CCFileUtils-apple.h in Headers */, 50ABBFFE1926664800A911A9 /* CCFileUtils-apple.h in Headers */,
@ -5872,6 +5871,7 @@
15AE1BFA19AAE01E00C27E9E /* CCControlSwitch.h in Headers */, 15AE1BFA19AAE01E00C27E9E /* CCControlSwitch.h in Headers */,
15AE182F19AAD2F700C27E9E /* CCMeshVertexIndexData.h in Headers */, 15AE182F19AAD2F700C27E9E /* CCMeshVertexIndexData.h in Headers */,
15AE1BAA19AADFDF00C27E9E /* UIVBox.h in Headers */, 15AE1BAA19AADFDF00C27E9E /* UIVBox.h in Headers */,
3EACC9A719F5014D00EB3C5E /* CCLight.h in Headers */,
15AE194E19AAD35100C27E9E /* CCDataReaderHelper.h in Headers */, 15AE194E19AAD35100C27E9E /* CCDataReaderHelper.h in Headers */,
3828C0A419EB8ACA002AB57B /* coded_stream_inl.h in Headers */, 3828C0A419EB8ACA002AB57B /* coded_stream_inl.h in Headers */,
15AE1ADB19AAD41000C27E9E /* b2Rope.h in Headers */, 15AE1ADB19AAD41000C27E9E /* b2Rope.h in Headers */,
@ -6129,7 +6129,6 @@
3828C0E219EB8ACA002AB57B /* stringprintf.h in Headers */, 3828C0E219EB8ACA002AB57B /* stringprintf.h in Headers */,
50ABBEDA1925AB6F00A911A9 /* ZipUtils.h in Headers */, 50ABBEDA1925AB6F00A911A9 /* ZipUtils.h in Headers */,
50ABBDC01925AB4100A911A9 /* CCTextureCache.h in Headers */, 50ABBDC01925AB4100A911A9 /* CCTextureCache.h in Headers */,
3EA1073219D7F37700CAB794 /* CCLight.h in Headers */,
B276EF641988D1D500CD400F /* CCVertexIndexBuffer.h in Headers */, B276EF641988D1D500CD400F /* CCVertexIndexBuffer.h in Headers */,
ED9C6A9718599AD8000A5232 /* CCNodeGrid.h in Headers */, ED9C6A9718599AD8000A5232 /* CCNodeGrid.h in Headers */,
50ABC0201926664800A911A9 /* CCThread.h in Headers */, 50ABC0201926664800A911A9 /* CCThread.h in Headers */,
@ -6251,7 +6250,6 @@
50ABBE2B1925AB6F00A911A9 /* ccCArray.cpp in Sources */, 50ABBE2B1925AB6F00A911A9 /* ccCArray.cpp in Sources */,
B29A7E3B19EE1B7700872B35 /* Animation.c in Sources */, B29A7E3B19EE1B7700872B35 /* Animation.c in Sources */,
15AE1BDE19AAE01E00C27E9E /* CCInvocation.cpp in Sources */, 15AE1BDE19AAE01E00C27E9E /* CCInvocation.cpp in Sources */,
3EA3EDBC1991CDFA00645534 /* CCCamera.cpp in Sources */,
292DB14F19B4574100A80320 /* UIEditBoxImpl-stub.cpp in Sources */, 292DB14F19B4574100A80320 /* UIEditBoxImpl-stub.cpp in Sources */,
B29A7E0B19EE1B7700872B35 /* Atlas.c in Sources */, B29A7E0B19EE1B7700872B35 /* Atlas.c in Sources */,
15AE199419AAD39600C27E9E /* LayoutReader.cpp in Sources */, 15AE199419AAD39600C27E9E /* LayoutReader.cpp in Sources */,
@ -6426,6 +6424,7 @@
1A5701DE180BCB8C0088DEC7 /* CCLayer.cpp in Sources */, 1A5701DE180BCB8C0088DEC7 /* CCLayer.cpp in Sources */,
15AE1B5919AADA9900C27E9E /* UIText.cpp in Sources */, 15AE1B5919AADA9900C27E9E /* UIText.cpp in Sources */,
15B3707C19EE414C00ABE682 /* CCEventAssetsManagerEx.cpp in Sources */, 15B3707C19EE414C00ABE682 /* CCEventAssetsManagerEx.cpp in Sources */,
3EACC9A419F5014D00EB3C5E /* CCLight.cpp in Sources */,
1A5701E2180BCB8C0088DEC7 /* CCScene.cpp in Sources */, 1A5701E2180BCB8C0088DEC7 /* CCScene.cpp in Sources */,
15AE1B9919AADFDF00C27E9E /* UIHBox.cpp in Sources */, 15AE1B9919AADFDF00C27E9E /* UIHBox.cpp in Sources */,
15AE199C19AAD39600C27E9E /* ScrollViewReader.cpp in Sources */, 15AE199C19AAD39600C27E9E /* ScrollViewReader.cpp in Sources */,
@ -6435,7 +6434,6 @@
1A5701E6180BCB8C0088DEC7 /* CCTransition.cpp in Sources */, 1A5701E6180BCB8C0088DEC7 /* CCTransition.cpp in Sources */,
B24AA985195A675C007B4522 /* CCFastTMXLayer.cpp in Sources */, B24AA985195A675C007B4522 /* CCFastTMXLayer.cpp in Sources */,
15AE1A6A19AAD40300C27E9E /* b2ChainAndCircleContact.cpp in Sources */, 15AE1A6A19AAD40300C27E9E /* b2ChainAndCircleContact.cpp in Sources */,
15AE19BE19AAD3A700C27E9E /* Event.cpp in Sources */,
15B3708819EE414C00ABE682 /* Manifest.cpp in Sources */, 15B3708819EE414C00ABE682 /* Manifest.cpp in Sources */,
1A5701EA180BCB8C0088DEC7 /* CCTransitionPageTurn.cpp in Sources */, 1A5701EA180BCB8C0088DEC7 /* CCTransitionPageTurn.cpp in Sources */,
3828C0D719EB8ACA002AB57B /* once.cc in Sources */, 3828C0D719EB8ACA002AB57B /* once.cc in Sources */,
@ -6458,6 +6456,7 @@
292DB14D19B4574100A80320 /* UIEditBoxImpl-mac.mm in Sources */, 292DB14D19B4574100A80320 /* UIEditBoxImpl-mac.mm in Sources */,
50ABBDB51925AB4100A911A9 /* CCTexture2D.cpp in Sources */, 50ABBDB51925AB4100A911A9 /* CCTexture2D.cpp in Sources */,
B29A7DD719EE1B7700872B35 /* SkeletonData.c in Sources */, B29A7DD719EE1B7700872B35 /* SkeletonData.c in Sources */,
3EACC9A019F5014D00EB3C5E /* CCCamera.cpp in Sources */,
1A570214180BCBF40088DEC7 /* CCRenderTexture.cpp in Sources */, 1A570214180BCBF40088DEC7 /* CCRenderTexture.cpp in Sources */,
15AE1BD019AAE01E00C27E9E /* CCControlHuePicker.cpp in Sources */, 15AE1BD019AAE01E00C27E9E /* CCControlHuePicker.cpp in Sources */,
15AE18F219AAD35000C27E9E /* CCArmatureDataManager.cpp in Sources */, 15AE18F219AAD35000C27E9E /* CCArmatureDataManager.cpp in Sources */,
@ -6558,7 +6557,6 @@
1A57034B180BD09B0088DEC7 /* tinyxml2.cpp in Sources */, 1A57034B180BD09B0088DEC7 /* tinyxml2.cpp in Sources */,
1A570354180BD0B00088DEC7 /* ioapi.cpp in Sources */, 1A570354180BD0B00088DEC7 /* ioapi.cpp in Sources */,
15B3707819EE414C00ABE682 /* AssetsManagerEx.cpp in Sources */, 15B3707819EE414C00ABE682 /* AssetsManagerEx.cpp in Sources */,
15AE19E419AAD3A700C27E9E /* SkeletonJson.cpp in Sources */,
1A570358180BD0B00088DEC7 /* unzip.cpp in Sources */, 1A570358180BD0B00088DEC7 /* unzip.cpp in Sources */,
3828C0CF19EB8ACA002AB57B /* common.cc in Sources */, 3828C0CF19EB8ACA002AB57B /* common.cc in Sources */,
B29A7DCB19EE1B7700872B35 /* Skeleton.c in Sources */, B29A7DCB19EE1B7700872B35 /* Skeleton.c in Sources */,
@ -6596,7 +6594,6 @@
15AE199819AAD39600C27E9E /* LoadingBarReader.cpp in Sources */, 15AE199819AAD39600C27E9E /* LoadingBarReader.cpp in Sources */,
503DD8F71926B0DB00CD74DD /* CCIMEDispatcher.cpp in Sources */, 503DD8F71926B0DB00CD74DD /* CCIMEDispatcher.cpp in Sources */,
50ABBE751925AB6F00A911A9 /* CCEventListenerTouch.cpp in Sources */, 50ABBE751925AB6F00A911A9 /* CCEventListenerTouch.cpp in Sources */,
3EA1072F19D7F37700CAB794 /* CCLight.cpp in Sources */,
15AE18F019AAD35000C27E9E /* CCArmatureAnimation.cpp in Sources */, 15AE18F019AAD35000C27E9E /* CCArmatureAnimation.cpp in Sources */,
50ABBE511925AB6F00A911A9 /* CCEventDispatcher.cpp in Sources */, 50ABBE511925AB6F00A911A9 /* CCEventDispatcher.cpp in Sources */,
50ABC0051926664800A911A9 /* CCThread-apple.mm in Sources */, 50ABC0051926664800A911A9 /* CCThread-apple.mm in Sources */,
@ -6808,6 +6805,7 @@
15AE184119AAD2F700C27E9E /* CCSprite3D.cpp in Sources */, 15AE184119AAD2F700C27E9E /* CCSprite3D.cpp in Sources */,
50ABBE5A1925AB6F00A911A9 /* CCEventKeyboard.cpp in Sources */, 50ABBE5A1925AB6F00A911A9 /* CCEventKeyboard.cpp in Sources */,
15AE193A19AAD35100C27E9E /* CCArmatureDataManager.cpp in Sources */, 15AE193A19AAD35100C27E9E /* CCArmatureDataManager.cpp in Sources */,
3EACC9A519F5014D00EB3C5E /* CCLight.cpp in Sources */,
15AE1B7A19AADA9A00C27E9E /* UIScrollView.cpp in Sources */, 15AE1B7A19AADA9A00C27E9E /* UIScrollView.cpp in Sources */,
1A570076180BC5A10088DEC7 /* CCActionGrid3D.cpp in Sources */, 1A570076180BC5A10088DEC7 /* CCActionGrid3D.cpp in Sources */,
15AE19B219AAD39700C27E9E /* SliderReader.cpp in Sources */, 15AE19B219AAD39700C27E9E /* SliderReader.cpp in Sources */,
@ -6956,6 +6954,7 @@
15AE194919AAD35100C27E9E /* CCComController.cpp in Sources */, 15AE194919AAD35100C27E9E /* CCComController.cpp in Sources */,
1A57022A180BCC1A0088DEC7 /* CCParticleSystem.cpp in Sources */, 1A57022A180BCC1A0088DEC7 /* CCParticleSystem.cpp in Sources */,
15AE182919AAD2F700C27E9E /* CCMeshSkin.cpp in Sources */, 15AE182919AAD2F700C27E9E /* CCMeshSkin.cpp in Sources */,
3EACC9A119F5014D00EB3C5E /* CCCamera.cpp in Sources */,
15AE1BBD19AADFF000C27E9E /* SocketIO.cpp in Sources */, 15AE1BBD19AADFF000C27E9E /* SocketIO.cpp in Sources */,
15AE1A4319AAD3D500C27E9E /* b2DynamicTree.cpp in Sources */, 15AE1A4319AAD3D500C27E9E /* b2DynamicTree.cpp in Sources */,
15AE1A3A19AAD3D500C27E9E /* b2BroadPhase.cpp in Sources */, 15AE1A3A19AAD3D500C27E9E /* b2BroadPhase.cpp in Sources */,
@ -6988,7 +6987,6 @@
15AE194D19AAD35100C27E9E /* CCDataReaderHelper.cpp in Sources */, 15AE194D19AAD35100C27E9E /* CCDataReaderHelper.cpp in Sources */,
15AE1B8C19AADA9A00C27E9E /* UIScale9Sprite.cpp in Sources */, 15AE1B8C19AADA9A00C27E9E /* UIScale9Sprite.cpp in Sources */,
15AE19AE19AAD39700C27E9E /* PageViewReader.cpp in Sources */, 15AE19AE19AAD39700C27E9E /* PageViewReader.cpp in Sources */,
3EA3EDBD1991CDFA00645534 /* CCCamera.cpp in Sources */,
1A570297180BCCAB0088DEC7 /* CCAnimationCache.cpp in Sources */, 1A570297180BCCAB0088DEC7 /* CCAnimationCache.cpp in Sources */,
50ABBE321925AB6F00A911A9 /* CCConfiguration.cpp in Sources */, 50ABBE321925AB6F00A911A9 /* CCConfiguration.cpp in Sources */,
15AE1A9F19AAD40300C27E9E /* b2Timer.cpp in Sources */, 15AE1A9F19AAD40300C27E9E /* b2Timer.cpp in Sources */,
@ -7095,7 +7093,6 @@
50ABBE201925AB6F00A911A9 /* atitc.cpp in Sources */, 50ABBE201925AB6F00A911A9 /* atitc.cpp in Sources */,
50CB248019D9C5A100687767 /* AudioPlayer.mm in Sources */, 50CB248019D9C5A100687767 /* AudioPlayer.mm in Sources */,
50ABBE9A1925AB6F00A911A9 /* CCRef.cpp in Sources */, 50ABBE9A1925AB6F00A911A9 /* CCRef.cpp in Sources */,
3EA1073019D7F37700CAB794 /* CCLight.cpp in Sources */,
15AE18BF19AAD33D00C27E9E /* CCLabelTTFLoader.cpp in Sources */, 15AE18BF19AAD33D00C27E9E /* CCLabelTTFLoader.cpp in Sources */,
15AE1B9519AADA9A00C27E9E /* CocosGUI.cpp in Sources */, 15AE1B9519AADA9A00C27E9E /* CocosGUI.cpp in Sources */,
15AE180919AAD2F700C27E9E /* CCAABB.cpp in Sources */, 15AE180919AAD2F700C27E9E /* CCAABB.cpp in Sources */,

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

View File

@ -234,6 +234,7 @@
<ClInclude Include="..\..\..\cocos\2d\CCAnimation.h" /> <ClInclude Include="..\..\..\cocos\2d\CCAnimation.h" />
<ClInclude Include="..\..\..\cocos\2d\CCAnimationCache.h" /> <ClInclude Include="..\..\..\cocos\2d\CCAnimationCache.h" />
<ClInclude Include="..\..\..\cocos\2d\CCAtlasNode.h" /> <ClInclude Include="..\..\..\cocos\2d\CCAtlasNode.h" />
<ClInclude Include="..\..\..\cocos\2d\CCCamera.h" />
<ClInclude Include="..\..\..\cocos\2d\CCClippingNode.h" /> <ClInclude Include="..\..\..\cocos\2d\CCClippingNode.h" />
<ClInclude Include="..\..\..\cocos\2d\CCComponent.h" /> <ClInclude Include="..\..\..\cocos\2d\CCComponent.h" />
<ClInclude Include="..\..\..\cocos\2d\CCComponentContainer.h" /> <ClInclude Include="..\..\..\cocos\2d\CCComponentContainer.h" />
@ -256,6 +257,7 @@
<ClInclude Include="..\..\..\cocos\2d\CCLabelTextFormatter.h" /> <ClInclude Include="..\..\..\cocos\2d\CCLabelTextFormatter.h" />
<ClInclude Include="..\..\..\cocos\2d\CCLabelTTF.h" /> <ClInclude Include="..\..\..\cocos\2d\CCLabelTTF.h" />
<ClInclude Include="..\..\..\cocos\2d\CCLayer.h" /> <ClInclude Include="..\..\..\cocos\2d\CCLayer.h" />
<ClInclude Include="..\..\..\cocos\2d\CCLight.h" />
<ClInclude Include="..\..\..\cocos\2d\CCMenu.h" /> <ClInclude Include="..\..\..\cocos\2d\CCMenu.h" />
<ClInclude Include="..\..\..\cocos\2d\CCMenuItem.h" /> <ClInclude Include="..\..\..\cocos\2d\CCMenuItem.h" />
<ClInclude Include="..\..\..\cocos\2d\CCMotionStreak.h" /> <ClInclude Include="..\..\..\cocos\2d\CCMotionStreak.h" />
@ -287,7 +289,6 @@
<ClInclude Include="..\..\..\cocos\base\atitc.h" /> <ClInclude Include="..\..\..\cocos\base\atitc.h" />
<ClInclude Include="..\..\..\cocos\base\base64.h" /> <ClInclude Include="..\..\..\cocos\base\base64.h" />
<ClInclude Include="..\..\..\cocos\base\CCAutoreleasePool.h" /> <ClInclude Include="..\..\..\cocos\base\CCAutoreleasePool.h" />
<ClInclude Include="..\..\..\cocos\base\CCCamera.h" />
<ClInclude Include="..\..\..\cocos\base\ccCArray.h" /> <ClInclude Include="..\..\..\cocos\base\ccCArray.h" />
<ClInclude Include="..\..\..\cocos\base\ccConfig.h" /> <ClInclude Include="..\..\..\cocos\base\ccConfig.h" />
<ClInclude Include="..\..\..\cocos\base\CCConfiguration.h" /> <ClInclude Include="..\..\..\cocos\base\CCConfiguration.h" />
@ -318,7 +319,6 @@
<ClInclude Include="..\..\..\cocos\base\CCGameController.h" /> <ClInclude Include="..\..\..\cocos\base\CCGameController.h" />
<ClInclude Include="..\..\..\cocos\base\CCIMEDelegate.h" /> <ClInclude Include="..\..\..\cocos\base\CCIMEDelegate.h" />
<ClInclude Include="..\..\..\cocos\base\CCIMEDispatcher.h" /> <ClInclude Include="..\..\..\cocos\base\CCIMEDispatcher.h" />
<ClInclude Include="..\..\..\cocos\base\CCLight.h" />
<ClInclude Include="..\..\..\cocos\base\ccMacros.h" /> <ClInclude Include="..\..\..\cocos\base\ccMacros.h" />
<ClInclude Include="..\..\..\cocos\base\CCMap.h" /> <ClInclude Include="..\..\..\cocos\base\CCMap.h" />
<ClInclude Include="..\..\..\cocos\base\CCNS.h" /> <ClInclude Include="..\..\..\cocos\base\CCNS.h" />
@ -432,6 +432,7 @@
<ClCompile Include="..\..\..\cocos\2d\CCAnimation.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCAnimation.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCAnimationCache.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCAnimationCache.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCAtlasNode.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCAtlasNode.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCCamera.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCClippingNode.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCClippingNode.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCComponent.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCComponent.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCComponentContainer.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCComponentContainer.cpp" />
@ -454,6 +455,7 @@
<ClCompile Include="..\..\..\cocos\2d\CCLabelTextFormatter.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCLabelTextFormatter.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCLabelTTF.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCLabelTTF.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCLayer.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCLayer.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCLight.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCMenu.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCMenu.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCMenuItem.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCMenuItem.cpp" />
<ClCompile Include="..\..\..\cocos\2d\CCMotionStreak.cpp" /> <ClCompile Include="..\..\..\cocos\2d\CCMotionStreak.cpp" />
@ -485,7 +487,6 @@
<ClCompile Include="..\..\..\cocos\base\atitc.cpp" /> <ClCompile Include="..\..\..\cocos\base\atitc.cpp" />
<ClCompile Include="..\..\..\cocos\base\base64.cpp" /> <ClCompile Include="..\..\..\cocos\base\base64.cpp" />
<ClCompile Include="..\..\..\cocos\base\CCAutoreleasePool.cpp" /> <ClCompile Include="..\..\..\cocos\base\CCAutoreleasePool.cpp" />
<ClCompile Include="..\..\..\cocos\base\CCCamera.cpp" />
<ClCompile Include="..\..\..\cocos\base\ccCArray.cpp" /> <ClCompile Include="..\..\..\cocos\base\ccCArray.cpp" />
<ClCompile Include="..\..\..\cocos\base\CCConfiguration.cpp" /> <ClCompile Include="..\..\..\cocos\base\CCConfiguration.cpp" />
<ClCompile Include="..\..\..\cocos\base\CCConsole.cpp" /> <ClCompile Include="..\..\..\cocos\base\CCConsole.cpp" />
@ -519,7 +520,6 @@
<CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsWinRT> <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsWinRT>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\cocos\base\CCIMEDispatcher.cpp" /> <ClCompile Include="..\..\..\cocos\base\CCIMEDispatcher.cpp" />
<ClCompile Include="..\..\..\cocos\base\CCLight.cpp" />
<ClCompile Include="..\..\..\cocos\base\CCNS.cpp" /> <ClCompile Include="..\..\..\cocos\base\CCNS.cpp" />
<ClCompile Include="..\..\..\cocos\base\CCProfiling.cpp" /> <ClCompile Include="..\..\..\cocos\base\CCProfiling.cpp" />
<ClCompile Include="..\..\..\cocos\base\ccRandom.cpp" /> <ClCompile Include="..\..\..\cocos\base\ccRandom.cpp" />

View File

@ -94,9 +94,6 @@
<ClCompile Include="..\..\..\cocos\base\CCAutoreleasePool.cpp"> <ClCompile Include="..\..\..\cocos\base\CCAutoreleasePool.cpp">
<Filter>libcoco2d\base</Filter> <Filter>libcoco2d\base</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\cocos\base\CCCamera.cpp">
<Filter>libcoco2d\base</Filter>
</ClCompile>
<ClCompile Include="..\..\..\cocos\base\ccCArray.cpp"> <ClCompile Include="..\..\..\cocos\base\ccCArray.cpp">
<Filter>libcoco2d\base</Filter> <Filter>libcoco2d\base</Filter>
</ClCompile> </ClCompile>
@ -175,9 +172,6 @@
<ClCompile Include="..\..\..\cocos\base\CCIMEDispatcher.cpp"> <ClCompile Include="..\..\..\cocos\base\CCIMEDispatcher.cpp">
<Filter>libcoco2d\base</Filter> <Filter>libcoco2d\base</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\cocos\base\CCLight.cpp">
<Filter>libcoco2d\base</Filter>
</ClCompile>
<ClCompile Include="..\..\..\cocos\base\CCNS.cpp"> <ClCompile Include="..\..\..\cocos\base\CCNS.cpp">
<Filter>libcoco2d\base</Filter> <Filter>libcoco2d\base</Filter>
</ClCompile> </ClCompile>
@ -583,6 +577,12 @@
<ClCompile Include="..\..\..\external\unzip\ioapi_mem.cpp"> <ClCompile Include="..\..\..\external\unzip\ioapi_mem.cpp">
<Filter>libcoco2d\external\unzip</Filter> <Filter>libcoco2d\external\unzip</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\cocos\2d\CCCamera.cpp">
<Filter>libcoco2d\2d</Filter>
</ClCompile>
<ClCompile Include="..\..\..\cocos\2d\CCLight.cpp">
<Filter>libcoco2d\2d</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="App.xaml.h" /> <ClInclude Include="App.xaml.h" />
@ -615,9 +615,6 @@
<ClInclude Include="..\..\..\cocos\base\CCAutoreleasePool.h"> <ClInclude Include="..\..\..\cocos\base\CCAutoreleasePool.h">
<Filter>libcoco2d\base</Filter> <Filter>libcoco2d\base</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\cocos\base\CCCamera.h">
<Filter>libcoco2d\base</Filter>
</ClInclude>
<ClInclude Include="..\..\..\cocos\base\ccCArray.h"> <ClInclude Include="..\..\..\cocos\base\ccCArray.h">
<Filter>libcoco2d\base</Filter> <Filter>libcoco2d\base</Filter>
</ClInclude> </ClInclude>
@ -708,9 +705,6 @@
<ClInclude Include="..\..\..\cocos\base\CCIMEDispatcher.h"> <ClInclude Include="..\..\..\cocos\base\CCIMEDispatcher.h">
<Filter>libcoco2d\base</Filter> <Filter>libcoco2d\base</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\cocos\base\CCLight.h">
<Filter>libcoco2d\base</Filter>
</ClInclude>
<ClInclude Include="..\..\..\cocos\base\ccMacros.h"> <ClInclude Include="..\..\..\cocos\base\ccMacros.h">
<Filter>libcoco2d\base</Filter> <Filter>libcoco2d\base</Filter>
</ClInclude> </ClInclude>
@ -1155,6 +1149,12 @@
<ClInclude Include="..\..\..\external\unzip\ioapi_mem.h"> <ClInclude Include="..\..\..\external\unzip\ioapi_mem.h">
<Filter>libcoco2d\external\unzip</Filter> <Filter>libcoco2d\external\unzip</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\cocos\2d\CCCamera.h">
<Filter>libcoco2d\2d</Filter>
</ClInclude>
<ClInclude Include="..\..\..\cocos\2d\CCLight.h">
<Filter>libcoco2d\2d</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<AppxManifest Include="Package.appxmanifest" /> <AppxManifest Include="Package.appxmanifest" />

View File

@ -28,7 +28,6 @@ THE SOFTWARE.
#include "CCPrecompiledShaders.h" #include "CCPrecompiledShaders.h"
using namespace Concurrency; using namespace Concurrency;
using namespace DirectX;
using namespace Microsoft::WRL; using namespace Microsoft::WRL;
using namespace Windows::Foundation; using namespace Windows::Foundation;
using namespace Windows::UI::Core; using namespace Windows::UI::Core;

View File

@ -1,4 +1,5 @@
How to compile precompiled shaders for Windows Phone 8.0 (WP8) How to compile precompiled shaders for Windows Phone 8.0 (WP8)
You need to use VS2013 with update 3.
1. Open the VS project Cocos2dShaderCompiler\Cocos2dShaderCompiler.sln 1. Open the VS project Cocos2dShaderCompiler\Cocos2dShaderCompiler.sln
2. Build and run the project 2. Build and run the project

View File

@ -21,7 +21,7 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
****************************************************************************/ ****************************************************************************/
#include "base/CCCamera.h" #include "2d/CCCamera.h"
#include "base/CCDirector.h" #include "base/CCDirector.h"
#include "platform/CCGLView.h" #include "platform/CCGLView.h"
#include "2d/CCScene.h" #include "2d/CCScene.h"

View File

@ -67,7 +67,7 @@ FontAtlas::FontAtlas(Font &theFont)
auto outlineSize = fontTTf->getOutlineSize(); auto outlineSize = fontTTf->getOutlineSize();
if(outlineSize > 0) if(outlineSize > 0)
{ {
_commonLineHeight += 2 * outlineSize * CC_CONTENT_SCALE_FACTOR(); _commonLineHeight += 2 * outlineSize;
_currentPageDataSize *= 2; _currentPageDataSize *= 2;
} }

View File

@ -95,12 +95,12 @@ FT_Library FontFreeType::getFTLibrary()
FontFreeType::FontFreeType(bool distanceFieldEnabled /* = false */,int outline /* = 0 */) FontFreeType::FontFreeType(bool distanceFieldEnabled /* = false */,int outline /* = 0 */)
: _fontRef(nullptr) : _fontRef(nullptr)
,_distanceFieldEnabled(distanceFieldEnabled) ,_distanceFieldEnabled(distanceFieldEnabled)
,_outlineSize(outline) ,_outlineSize(0.0f)
,_stroker(nullptr) ,_stroker(nullptr)
{ {
if (_outlineSize > 0) if (outline > 0)
{ {
_outlineSize *= CC_CONTENT_SCALE_FACTOR(); _outlineSize = outline * CC_CONTENT_SCALE_FACTOR();
FT_Stroker_New(FontFreeType::getFTLibrary(), &_stroker); FT_Stroker_New(FontFreeType::getFTLibrary(), &_stroker);
FT_Stroker_Set(_stroker, FT_Stroker_Set(_stroker,
(int)(_outlineSize * 64), (int)(_outlineSize * 64),
@ -328,8 +328,6 @@ unsigned char* FontFreeType::getGlyphBitmap(unsigned short theChar, long &outWid
} }
} }
outRect.origin.x = bbox.xMin >> 6;
outRect.origin.y = - (bbox.yMax >> 6);
xAdvance += 2 * _outlineSize; xAdvance += 2 * _outlineSize;
outRect.size.width = blendWidth; outRect.size.width = blendWidth;
outRect.size.height = blendHeight; outRect.size.height = blendHeight;

View File

@ -151,16 +151,16 @@ bool LabelTextFormatter::multilineText(Label *theLabel)
else else
{ {
StringUtils::trimUTF16Vector(last_word); StringUtils::trimUTF16Vector(last_word);
if (isStartOfLine) //issue #8492:endless loop if not using system font, and constrained length is less than one character width
if (isStartOfLine && last_word.size() == 0)
last_word.push_back(character); last_word.push_back(character);
else
last_word.push_back('\n');
multiline_string.insert(multiline_string.end(), last_word.begin(), last_word.end());
last_word.clear();
if (!isStartOfLine)
--j; --j;
last_word.push_back('\n');
multiline_string.insert(multiline_string.end(), last_word.begin(), last_word.end());
last_word.clear();
isStartOfWord = false; isStartOfWord = false;
isStartOfLine = false; isStartOfLine = false;
startOfWord = -1; startOfWord = -1;

View File

@ -1,4 +1,4 @@
#include "base/CCLight.h" #include "2d/CCLight.h"
#include "2d/CCScene.h" #include "2d/CCScene.h"
NS_CC_BEGIN NS_CC_BEGIN

View File

@ -37,7 +37,7 @@ THE SOFTWARE.
#include "base/CCDirector.h" #include "base/CCDirector.h"
#include "base/CCScheduler.h" #include "base/CCScheduler.h"
#include "base/CCEventDispatcher.h" #include "base/CCEventDispatcher.h"
#include "base/CCCamera.h" #include "2d/CCCamera.h"
#include "2d/CCActionManager.h" #include "2d/CCActionManager.h"
#include "2d/CCScene.h" #include "2d/CCScene.h"
#include "2d/CCComponent.h" #include "2d/CCComponent.h"

View File

@ -27,7 +27,7 @@ THE SOFTWARE.
#include "2d/CCScene.h" #include "2d/CCScene.h"
#include "base/CCDirector.h" #include "base/CCDirector.h"
#include "base/CCCamera.h" #include "2d/CCCamera.h"
#include "base/CCEventDispatcher.h" #include "base/CCEventDispatcher.h"
#include "base/CCEventListenerCustom.h" #include "base/CCEventListenerCustom.h"
#include "renderer/CCRenderer.h" #include "renderer/CCRenderer.h"

View File

@ -195,7 +195,6 @@ void TextFieldTTF::insertText(const char * text, size_t len)
if (len > 0) if (len > 0)
{ {
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WP8 && CC_TARGET_PLATFORM != CC_PLATFORM_WINRT)
if (_delegate && _delegate->onTextFieldInsertText(this, insert.c_str(), len)) if (_delegate && _delegate->onTextFieldInsertText(this, insert.c_str(), len))
{ {
// delegate doesn't want to insert text // delegate doesn't want to insert text
@ -206,15 +205,6 @@ void TextFieldTTF::insertText(const char * text, size_t len)
std::string sText(_inputText); std::string sText(_inputText);
sText.append(insert); sText.append(insert);
setString(sText); setString(sText);
#else
size_t existlen = _inputText.length();
if (_delegate && _delegate->onTextFieldInsertText(this, insert.c_str() + existlen, len - existlen))
{
// delegate doesn't want to insert text
return;
}
setString(insert);
#endif
} }
if ((int)insert.npos == pos) { if ((int)insert.npos == pos) {

View File

@ -20,6 +20,7 @@ set(COCOS_2D_SRC
2d/CCAnimationCache.cpp 2d/CCAnimationCache.cpp
2d/CCAnimation.cpp 2d/CCAnimation.cpp
2d/CCAtlasNode.cpp 2d/CCAtlasNode.cpp
2d/CCCamera.cpp
2d/CCClippingNode.cpp 2d/CCClippingNode.cpp
2d/CCClippingRectangleNode.cpp 2d/CCClippingRectangleNode.cpp
2d/CCComponentContainer.cpp 2d/CCComponentContainer.cpp
@ -43,6 +44,7 @@ set(COCOS_2D_SRC
2d/CCLabelTextFormatter.cpp 2d/CCLabelTextFormatter.cpp
2d/CCLabelTTF.cpp 2d/CCLabelTTF.cpp
2d/CCLayer.cpp 2d/CCLayer.cpp
2d/CCLight.cpp
2d/CCMenu.cpp 2d/CCMenu.cpp
2d/CCMenuItem.cpp 2d/CCMenuItem.cpp
2d/CCMotionStreak.cpp 2d/CCMotionStreak.cpp

View File

@ -253,7 +253,6 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClCompile Include="..\base\atitc.cpp" /> <ClCompile Include="..\base\atitc.cpp" />
<ClCompile Include="..\base\base64.cpp" /> <ClCompile Include="..\base\base64.cpp" />
<ClCompile Include="..\base\CCAutoreleasePool.cpp" /> <ClCompile Include="..\base\CCAutoreleasePool.cpp" />
<ClCompile Include="..\base\CCCamera.cpp" />
<ClCompile Include="..\base\ccCArray.cpp" /> <ClCompile Include="..\base\ccCArray.cpp" />
<ClCompile Include="..\base\CCConfiguration.cpp" /> <ClCompile Include="..\base\CCConfiguration.cpp" />
<ClCompile Include="..\base\CCConsole.cpp" /> <ClCompile Include="..\base\CCConsole.cpp" />
@ -277,7 +276,6 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClCompile Include="..\base\CCEventTouch.cpp" /> <ClCompile Include="..\base\CCEventTouch.cpp" />
<ClCompile Include="..\base\ccFPSImages.c" /> <ClCompile Include="..\base\ccFPSImages.c" />
<ClCompile Include="..\base\CCIMEDispatcher.cpp" /> <ClCompile Include="..\base\CCIMEDispatcher.cpp" />
<ClCompile Include="..\base\CCLight.cpp" />
<ClCompile Include="..\base\CCNS.cpp" /> <ClCompile Include="..\base\CCNS.cpp" />
<ClCompile Include="..\base\CCProfiling.cpp" /> <ClCompile Include="..\base\CCProfiling.cpp" />
<ClCompile Include="..\base\ccRandom.cpp" /> <ClCompile Include="..\base\ccRandom.cpp" />
@ -481,6 +479,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClCompile Include="CCAnimation.cpp" /> <ClCompile Include="CCAnimation.cpp" />
<ClCompile Include="CCAnimationCache.cpp" /> <ClCompile Include="CCAnimationCache.cpp" />
<ClCompile Include="CCAtlasNode.cpp" /> <ClCompile Include="CCAtlasNode.cpp" />
<ClCompile Include="CCCamera.cpp" />
<ClCompile Include="CCClippingNode.cpp" /> <ClCompile Include="CCClippingNode.cpp" />
<ClCompile Include="CCClippingRectangleNode.cpp" /> <ClCompile Include="CCClippingRectangleNode.cpp" />
<ClCompile Include="CCComponent.cpp" /> <ClCompile Include="CCComponent.cpp" />
@ -504,6 +503,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClCompile Include="CCLabelTextFormatter.cpp" /> <ClCompile Include="CCLabelTextFormatter.cpp" />
<ClCompile Include="CCLabelTTF.cpp" /> <ClCompile Include="CCLabelTTF.cpp" />
<ClCompile Include="CCLayer.cpp" /> <ClCompile Include="CCLayer.cpp" />
<ClCompile Include="CCLight.cpp" />
<ClCompile Include="CCMenu.cpp" /> <ClCompile Include="CCMenu.cpp" />
<ClCompile Include="CCMenuItem.cpp" /> <ClCompile Include="CCMenuItem.cpp" />
<ClCompile Include="CCMotionStreak.cpp" /> <ClCompile Include="CCMotionStreak.cpp" />
@ -637,7 +637,6 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClInclude Include="..\base\atitc.h" /> <ClInclude Include="..\base\atitc.h" />
<ClInclude Include="..\base\base64.h" /> <ClInclude Include="..\base\base64.h" />
<ClInclude Include="..\base\CCAutoreleasePool.h" /> <ClInclude Include="..\base\CCAutoreleasePool.h" />
<ClInclude Include="..\base\CCCamera.h" />
<ClInclude Include="..\base\ccCArray.h" /> <ClInclude Include="..\base\ccCArray.h" />
<ClInclude Include="..\base\ccConfig.h" /> <ClInclude Include="..\base\ccConfig.h" />
<ClInclude Include="..\base\CCConfiguration.h" /> <ClInclude Include="..\base\CCConfiguration.h" />
@ -664,7 +663,6 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClInclude Include="..\base\ccFPSImages.h" /> <ClInclude Include="..\base\ccFPSImages.h" />
<ClInclude Include="..\base\CCIMEDelegate.h" /> <ClInclude Include="..\base\CCIMEDelegate.h" />
<ClInclude Include="..\base\CCIMEDispatcher.h" /> <ClInclude Include="..\base\CCIMEDispatcher.h" />
<ClInclude Include="..\base\CCLight.h" />
<ClInclude Include="..\base\ccMacros.h" /> <ClInclude Include="..\base\ccMacros.h" />
<ClInclude Include="..\base\CCMap.h" /> <ClInclude Include="..\base\CCMap.h" />
<ClInclude Include="..\base\CCNS.h" /> <ClInclude Include="..\base\CCNS.h" />
@ -905,6 +903,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClInclude Include="CCAnimation.h" /> <ClInclude Include="CCAnimation.h" />
<ClInclude Include="CCAnimationCache.h" /> <ClInclude Include="CCAnimationCache.h" />
<ClInclude Include="CCAtlasNode.h" /> <ClInclude Include="CCAtlasNode.h" />
<ClInclude Include="CCCamera.h" />
<ClInclude Include="CCClippingNode.h" /> <ClInclude Include="CCClippingNode.h" />
<ClInclude Include="CCClippingRectangleNode.h" /> <ClInclude Include="CCClippingRectangleNode.h" />
<ClInclude Include="CCComponent.h" /> <ClInclude Include="CCComponent.h" />
@ -928,6 +927,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClInclude Include="CCLabelTextFormatter.h" /> <ClInclude Include="CCLabelTextFormatter.h" />
<ClInclude Include="CCLabelTTF.h" /> <ClInclude Include="CCLabelTTF.h" />
<ClInclude Include="CCLayer.h" /> <ClInclude Include="CCLayer.h" />
<ClInclude Include="CCLight.h" />
<ClInclude Include="CCMenu.h" /> <ClInclude Include="CCMenu.h" />
<ClInclude Include="CCMenuItem.h" /> <ClInclude Include="CCMenuItem.h" />
<ClInclude Include="CCMotionStreak.h" /> <ClInclude Include="CCMotionStreak.h" />

View File

@ -727,9 +727,6 @@
<ClCompile Include="CCProtectedNode.cpp"> <ClCompile Include="CCProtectedNode.cpp">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\base\CCCamera.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\renderer\CCPrimitive.cpp"> <ClCompile Include="..\renderer\CCPrimitive.cpp">
<Filter>renderer</Filter> <Filter>renderer</Filter>
</ClCompile> </ClCompile>
@ -1198,9 +1195,6 @@
<ClCompile Include="..\ui\UIWebView.cpp"> <ClCompile Include="..\ui\UIWebView.cpp">
<Filter>ui\UIWidgets</Filter> <Filter>ui\UIWidgets</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\base\CCLight.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\audio\AudioEngine.cpp"> <ClCompile Include="..\audio\AudioEngine.cpp">
<Filter>audioengine</Filter> <Filter>audioengine</Filter>
</ClCompile> </ClCompile>
@ -1265,6 +1259,12 @@
<ClCompile Include="..\..\external\protobuf-lite\src\google\protobuf\stubs\stringprintf.cc"> <ClCompile Include="..\..\external\protobuf-lite\src\google\protobuf\stubs\stringprintf.cc">
<Filter>cocostudio\json\protobuf-lite\stubs</Filter> <Filter>cocostudio\json\protobuf-lite\stubs</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CCCamera.cpp">
<Filter>2d</Filter>
</ClCompile>
<ClCompile Include="CCLight.cpp">
<Filter>2d</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\physics\CCPhysicsBody.h"> <ClInclude Include="..\physics\CCPhysicsBody.h">
@ -1841,9 +1841,6 @@
<ClInclude Include="CCProtectedNode.h"> <ClInclude Include="CCProtectedNode.h">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\base\CCCamera.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\renderer\CCPrimitive.h"> <ClInclude Include="..\renderer\CCPrimitive.h">
<Filter>renderer</Filter> <Filter>renderer</Filter>
</ClInclude> </ClInclude>
@ -2414,9 +2411,6 @@
<ClInclude Include="..\ui\UIWebView.h"> <ClInclude Include="..\ui\UIWebView.h">
<Filter>ui\UIWidgets</Filter> <Filter>ui\UIWidgets</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\base\CCLight.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\audio\include\AudioEngine.h"> <ClInclude Include="..\audio\include\AudioEngine.h">
<Filter>audioengine</Filter> <Filter>audioengine</Filter>
</ClInclude> </ClInclude>
@ -2529,6 +2523,12 @@
<ClInclude Include="..\..\external\protobuf-lite\src\google\protobuf\stubs\type_traits.h"> <ClInclude Include="..\..\external\protobuf-lite\src\google\protobuf\stubs\type_traits.h">
<Filter>cocostudio\json\protobuf-lite\stubs</Filter> <Filter>cocostudio\json\protobuf-lite\stubs</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="CCCamera.h">
<Filter>2d</Filter>
</ClInclude>
<ClInclude Include="CCLight.h">
<Filter>2d</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\math\Mat4.inl"> <None Include="..\math\Mat4.inl">

View File

@ -115,7 +115,6 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\atitc.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\atitc.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\base64.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\base64.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCAutoreleasePool.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCAutoreleasePool.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCCamera.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccCArray.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccCArray.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccConfig.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccConfig.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCConfiguration.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCConfiguration.h" />
@ -146,7 +145,6 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCGameController.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCGameController.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCIMEDelegate.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCIMEDelegate.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCIMEDispatcher.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCIMEDispatcher.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCLight.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccMacros.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccMacros.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCMap.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCMap.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCNS.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCNS.h" />
@ -328,6 +326,7 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_ntop_winrt.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_ntop_winrt.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEvent.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEvent.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEventTypes.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEventTypes.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\Keyboard-winrt.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\pch.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\pch.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\sha1.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\sha1.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\CCBatchCommand.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\CCBatchCommand.h" />
@ -359,6 +358,7 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UICheckBox.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UICheckBox.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIDeprecated.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIDeprecated.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIEditBox\UIEditBox.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIEditBox\UIEditBox.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIEditBox\UIEditBoxImpl-winrt.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIEditBox\UIEditBoxImpl.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIEditBox\UIEditBoxImpl.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIHBox.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIHBox.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIHelper.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIHelper.h" />
@ -397,6 +397,7 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCAnimation.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCAnimation.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCAnimationCache.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCAnimationCache.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCAtlasNode.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCAtlasNode.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCCamera.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCClippingNode.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCClippingNode.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCClippingRectangleNode.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCClippingRectangleNode.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCComponent.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCComponent.h" />
@ -420,6 +421,7 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCLabelTextFormatter.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCLabelTextFormatter.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCLabelTTF.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCLabelTTF.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCLayer.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCLayer.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCLight.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCMenu.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCMenu.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCMenuItem.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCMenuItem.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCMotionStreak.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\CCMotionStreak.h" />
@ -532,7 +534,6 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\atitc.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\atitc.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\base64.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\base64.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCAutoreleasePool.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCAutoreleasePool.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCCamera.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccCArray.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccCArray.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCConfiguration.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCConfiguration.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCConsole.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCConsole.cpp" />
@ -559,13 +560,11 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCEventTouch.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCEventTouch.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccFPSImages.c"> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccFPSImages.c">
<CompileAsWinRT>false</CompileAsWinRT> <CompileAsWinRT>false</CompileAsWinRT>
<CompileAs>CompileAsCpp</CompileAs> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<ForcedIncludeFiles> <ForcedIncludeFiles>
</ForcedIncludeFiles> </ForcedIncludeFiles>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCIMEDispatcher.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCIMEDispatcher.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCLight.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCNS.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCNS.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCProfiling.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCProfiling.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccRandom.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\ccRandom.cpp" />
@ -709,6 +708,7 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCWinRTUtils.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCWinRTUtils.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_ntop_winrt.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_ntop_winrt.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEvent.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEvent.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\Keyboard-winrt.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\pch.cpp"> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\pch.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
<ForcedIncludeFiles> <ForcedIncludeFiles>
@ -742,7 +742,7 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UICheckBox.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UICheckBox.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIDeprecated.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIDeprecated.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIEditBox\UIEditBox.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIEditBox\UIEditBox.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIEditBox\UIEditBoxImpl-stub.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIEditBox\UIEditBoxImpl-winrt.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIHBox.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIHBox.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIHelper.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIHelper.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIImageView.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\UIImageView.cpp" />
@ -780,6 +780,7 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCAnimation.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCAnimation.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCAnimationCache.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCAnimationCache.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCAtlasNode.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCAtlasNode.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCCamera.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCClippingNode.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCClippingNode.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCClippingRectangleNode.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCClippingRectangleNode.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCComponent.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCComponent.cpp" />
@ -803,6 +804,7 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCLabelTextFormatter.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCLabelTextFormatter.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCLabelTTF.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCLabelTTF.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCLayer.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCLayer.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCLight.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCMenu.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCMenu.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCMenuItem.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCMenuItem.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCMotionStreak.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\CCMotionStreak.cpp" />
@ -867,8 +869,13 @@
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_PositionTextureColor_noMVP.vert" /> <None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_PositionTextureColor_noMVP.vert" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_PositionTexture_uColor.frag" /> <None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_PositionTexture_uColor.frag" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_PositionTexture_uColor.vert" /> <None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_PositionTexture_uColor.vert" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_Position_uColor-no-gl_PointSize.vert">
<FileType>Document</FileType>
</None>
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_Position_uColor.frag" /> <None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_Position_uColor.frag" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_Position_uColor.vert" /> <None Include="$(MSBuildThisFileDirectory)..\..\..\..\renderer\ccShader_Position_uColor.vert" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\cocos2d.def" /> <None Include="$(MSBuildThisFileDirectory)..\..\..\cocos2d.def" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\libcocos2d.vcxproj.filters" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\libcocos2d_wp8.vcxproj.filters" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -109,7 +109,7 @@
<AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles> <ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>CC_NO_GL_POINTSIZE;_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
@ -127,7 +127,7 @@
<AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles> <ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>CC_NO_GL_POINTSIZE;_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
@ -145,7 +145,7 @@
<AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles> <ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>CC_NO_GL_POINTSIZE;_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
@ -163,7 +163,7 @@
<AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/Zm200 %(AdditionalOptions)</AdditionalOptions>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles> <ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>CC_NO_GL_POINTSIZE;_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>

View File

@ -266,7 +266,6 @@
<ClInclude Include="..\base\atitc.h" /> <ClInclude Include="..\base\atitc.h" />
<ClInclude Include="..\base\base64.h" /> <ClInclude Include="..\base\base64.h" />
<ClInclude Include="..\base\CCAutoreleasePool.h" /> <ClInclude Include="..\base\CCAutoreleasePool.h" />
<ClInclude Include="..\base\CCCamera.h" />
<ClInclude Include="..\base\ccCArray.h" /> <ClInclude Include="..\base\ccCArray.h" />
<ClInclude Include="..\base\ccConfig.h" /> <ClInclude Include="..\base\ccConfig.h" />
<ClInclude Include="..\base\CCConfiguration.h" /> <ClInclude Include="..\base\CCConfiguration.h" />
@ -293,7 +292,6 @@
<ClInclude Include="..\base\ccFPSImages.h" /> <ClInclude Include="..\base\ccFPSImages.h" />
<ClInclude Include="..\base\CCIMEDelegate.h" /> <ClInclude Include="..\base\CCIMEDelegate.h" />
<ClInclude Include="..\base\CCIMEDispatcher.h" /> <ClInclude Include="..\base\CCIMEDispatcher.h" />
<ClInclude Include="..\base\CCLight.h" />
<ClInclude Include="..\base\ccMacros.h" /> <ClInclude Include="..\base\ccMacros.h" />
<ClInclude Include="..\base\CCMap.h" /> <ClInclude Include="..\base\CCMap.h" />
<ClInclude Include="..\base\CCNS.h" /> <ClInclude Include="..\base\CCNS.h" />
@ -542,6 +540,7 @@
<ClInclude Include="CCAnimation.h" /> <ClInclude Include="CCAnimation.h" />
<ClInclude Include="CCAnimationCache.h" /> <ClInclude Include="CCAnimationCache.h" />
<ClInclude Include="CCAtlasNode.h" /> <ClInclude Include="CCAtlasNode.h" />
<ClInclude Include="CCCamera.h" />
<ClInclude Include="CCClippingNode.h" /> <ClInclude Include="CCClippingNode.h" />
<ClInclude Include="CCClippingRectangleNode.h" /> <ClInclude Include="CCClippingRectangleNode.h" />
<ClInclude Include="CCComponent.h" /> <ClInclude Include="CCComponent.h" />
@ -565,6 +564,7 @@
<ClInclude Include="CCLabelTextFormatter.h" /> <ClInclude Include="CCLabelTextFormatter.h" />
<ClInclude Include="CCLabelTTF.h" /> <ClInclude Include="CCLabelTTF.h" />
<ClInclude Include="CCLayer.h" /> <ClInclude Include="CCLayer.h" />
<ClInclude Include="CCLight.h" />
<ClInclude Include="CCMenu.h" /> <ClInclude Include="CCMenu.h" />
<ClInclude Include="CCMenuItem.h" /> <ClInclude Include="CCMenuItem.h" />
<ClInclude Include="CCMotionStreak.h" /> <ClInclude Include="CCMotionStreak.h" />
@ -733,7 +733,6 @@
<ClCompile Include="..\base\atitc.cpp" /> <ClCompile Include="..\base\atitc.cpp" />
<ClCompile Include="..\base\base64.cpp" /> <ClCompile Include="..\base\base64.cpp" />
<ClCompile Include="..\base\CCAutoreleasePool.cpp" /> <ClCompile Include="..\base\CCAutoreleasePool.cpp" />
<ClCompile Include="..\base\CCCamera.cpp" />
<ClCompile Include="..\base\ccCArray.cpp" /> <ClCompile Include="..\base\ccCArray.cpp" />
<ClCompile Include="..\base\CCConfiguration.cpp" /> <ClCompile Include="..\base\CCConfiguration.cpp" />
<ClCompile Include="..\base\CCConsole.cpp" /> <ClCompile Include="..\base\CCConsole.cpp" />
@ -782,7 +781,6 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\base\CCIMEDispatcher.cpp" /> <ClCompile Include="..\base\CCIMEDispatcher.cpp" />
<ClCompile Include="..\base\CCLight.cpp" />
<ClCompile Include="..\base\CCNS.cpp" /> <ClCompile Include="..\base\CCNS.cpp" />
<ClCompile Include="..\base\CCProfiling.cpp" /> <ClCompile Include="..\base\CCProfiling.cpp" />
<ClCompile Include="..\base\ccRandom.cpp" /> <ClCompile Include="..\base\ccRandom.cpp" />
@ -1000,6 +998,7 @@
<ClCompile Include="CCAnimation.cpp" /> <ClCompile Include="CCAnimation.cpp" />
<ClCompile Include="CCAnimationCache.cpp" /> <ClCompile Include="CCAnimationCache.cpp" />
<ClCompile Include="CCAtlasNode.cpp" /> <ClCompile Include="CCAtlasNode.cpp" />
<ClCompile Include="CCCamera.cpp" />
<ClCompile Include="CCClippingNode.cpp" /> <ClCompile Include="CCClippingNode.cpp" />
<ClCompile Include="CCClippingRectangleNode.cpp" /> <ClCompile Include="CCClippingRectangleNode.cpp" />
<ClCompile Include="CCComponent.cpp" /> <ClCompile Include="CCComponent.cpp" />
@ -1023,6 +1022,7 @@
<ClCompile Include="CCLabelTextFormatter.cpp" /> <ClCompile Include="CCLabelTextFormatter.cpp" />
<ClCompile Include="CCLabelTTF.cpp" /> <ClCompile Include="CCLabelTTF.cpp" />
<ClCompile Include="CCLayer.cpp" /> <ClCompile Include="CCLayer.cpp" />
<ClCompile Include="CCLight.cpp" />
<ClCompile Include="CCMenu.cpp" /> <ClCompile Include="CCMenu.cpp" />
<ClCompile Include="CCMenuItem.cpp" /> <ClCompile Include="CCMenuItem.cpp" />
<ClCompile Include="CCMotionStreak.cpp" /> <ClCompile Include="CCMotionStreak.cpp" />

View File

@ -286,6 +286,9 @@
<ClCompile Include="CCAtlasNode.cpp"> <ClCompile Include="CCAtlasNode.cpp">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CCCamera.cpp">
<Filter>2d</Filter>
</ClCompile>
<ClCompile Include="CCClippingNode.cpp"> <ClCompile Include="CCClippingNode.cpp">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClCompile> </ClCompile>
@ -352,6 +355,9 @@
<ClCompile Include="CCLayer.cpp"> <ClCompile Include="CCLayer.cpp">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CCLight.cpp">
<Filter>2d</Filter>
</ClCompile>
<ClCompile Include="CCMenu.cpp"> <ClCompile Include="CCMenu.cpp">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClCompile> </ClCompile>
@ -493,9 +499,6 @@
<ClCompile Include="..\base\CCAutoreleasePool.cpp"> <ClCompile Include="..\base\CCAutoreleasePool.cpp">
<Filter>base</Filter> <Filter>base</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\base\CCCamera.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\base\ccCArray.cpp"> <ClCompile Include="..\base\ccCArray.cpp">
<Filter>base</Filter> <Filter>base</Filter>
</ClCompile> </ClCompile>
@ -565,9 +568,6 @@
<ClCompile Include="..\base\CCIMEDispatcher.cpp"> <ClCompile Include="..\base\CCIMEDispatcher.cpp">
<Filter>base</Filter> <Filter>base</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\base\CCLight.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\base\CCNS.cpp"> <ClCompile Include="..\base\CCNS.cpp">
<Filter>base</Filter> <Filter>base</Filter>
</ClCompile> </ClCompile>
@ -1343,6 +1343,9 @@
<ClInclude Include="CCAtlasNode.h"> <ClInclude Include="CCAtlasNode.h">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="CCCamera.h">
<Filter>2d</Filter>
</ClInclude>
<ClInclude Include="CCClippingNode.h"> <ClInclude Include="CCClippingNode.h">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClInclude> </ClInclude>
@ -1409,6 +1412,9 @@
<ClInclude Include="CCLayer.h"> <ClInclude Include="CCLayer.h">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="CCLight.h">
<Filter>2d</Filter>
</ClInclude>
<ClInclude Include="CCMenu.h"> <ClInclude Include="CCMenu.h">
<Filter>2d</Filter> <Filter>2d</Filter>
</ClInclude> </ClInclude>
@ -1556,9 +1562,6 @@
<ClInclude Include="..\base\CCAutoreleasePool.h"> <ClInclude Include="..\base\CCAutoreleasePool.h">
<Filter>base</Filter> <Filter>base</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\base\CCCamera.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\base\ccCArray.h"> <ClInclude Include="..\base\ccCArray.h">
<Filter>base</Filter> <Filter>base</Filter>
</ClInclude> </ClInclude>
@ -1637,9 +1640,6 @@
<ClInclude Include="..\base\CCIMEDispatcher.h"> <ClInclude Include="..\base\CCIMEDispatcher.h">
<Filter>base</Filter> <Filter>base</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\base\CCLight.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\base\ccMacros.h"> <ClInclude Include="..\base\ccMacros.h">
<Filter>base</Filter> <Filter>base</Filter>
</ClInclude> </ClInclude>

View File

@ -25,7 +25,7 @@
#include "3d/CCBillBoard.h" #include "3d/CCBillBoard.h"
#include "2d/CCSpriteFrameCache.h" #include "2d/CCSpriteFrameCache.h"
#include "base/CCDirector.h" #include "base/CCDirector.h"
#include "base/CCCamera.h" #include "2d/CCCamera.h"
#include "renderer/CCRenderer.h" #include "renderer/CCRenderer.h"
#include "renderer/CCGLProgramCache.h" #include "renderer/CCGLProgramCache.h"

View File

@ -354,11 +354,11 @@ bool Bundle3D::loadAnimationData(const std::string& id, Animation3DData* animati
if (_isBinary) if (_isBinary)
{ {
return loadAnimationDataBinary(animationdata); return loadAnimationDataBinary(id,animationdata);
} }
else else
{ {
return loadAnimationDataJson(animationdata); return loadAnimationDataJson(id,animationdata);
} }
} }
@ -1189,7 +1189,7 @@ bool Bundle3D::loadMaterialDataJson_0_2(MaterialDatas& materialdatas)
return true; return true;
} }
bool Bundle3D::loadAnimationDataJson(Animation3DData* animationdata) bool Bundle3D::loadAnimationDataJson(const std::string& id, Animation3DData* animationdata)
{ {
std::string anim = ""; std::string anim = "";
if (_version == "1.2" || _version == "0.2") if (_version == "1.2" || _version == "0.2")
@ -1198,11 +1198,26 @@ bool Bundle3D::loadAnimationDataJson(Animation3DData* animationdata)
anim = ANIMATIONS; anim = ANIMATIONS;
if (!_jsonReader.HasMember(anim.c_str())) return false; if (!_jsonReader.HasMember(anim.c_str())) return false;
int the_index = -1;
const rapidjson::Value& animation_data_array = _jsonReader[anim.c_str()]; const rapidjson::Value& animation_data_array = _jsonReader[anim.c_str()];
if (animation_data_array.Size()==0) return false; if (animation_data_array.Size()==0) return false;
const rapidjson::Value& animation_data_array_val_0 = animation_data_array[(rapidjson::SizeType)0]; if(!id.empty())
{
for(int i=0 ;i<animation_data_array.Size();i++)
{
if(animation_data_array[i][ID].GetString() ==id )
{
the_index = i;
}
}
if(the_index < 0) return false;
}else{
the_index = 0;
}
const rapidjson::Value& animation_data_array_val_0 = animation_data_array[(rapidjson::SizeType)the_index];
animationdata->_totalTime = animation_data_array_val_0[LENGTH].GetDouble(); animationdata->_totalTime = animation_data_array_val_0[LENGTH].GetDouble();
@ -1609,11 +1624,11 @@ bool Bundle3D::loadMaterialDataBinary(MaterialData* materialdata)
return true; return true;
} }
bool Bundle3D::loadAnimationDataBinary(Animation3DData* animationdata) bool Bundle3D::loadAnimationDataBinary(const std::string& id, Animation3DData* animationdata)
{ {
if (!seekToFirstType(BUNDLE_TYPE_ANIMATIONS)) if (!seekToFirstType(BUNDLE_TYPE_ANIMATIONS))
return false; return false;
unsigned int animNum=0; unsigned int animNum = 1;
if( _version == "0.3"|| _version == "0.4") if( _version == "0.3"|| _version == "0.4")
{ {
if (!_binaryReader.read(&animNum)) if (!_binaryReader.read(&animNum))
@ -1622,106 +1637,124 @@ bool Bundle3D::loadAnimationDataBinary(Animation3DData* animationdata)
return false; return false;
} }
} }
std::string id = _binaryReader.readString();
bool has_found =false;
for(unsigned int k = 0; k < animNum ; k++ )
{
animationdata->resetData();
std::string animId = _binaryReader.readString();
if (!_binaryReader.read(&animationdata->_totalTime)) if (!_binaryReader.read(&animationdata->_totalTime))
{
CCLOG("warning: Failed to read AnimationData: totalTime '%s'.", _path.c_str());
return false;
}
unsigned int nodeAnimationNum;
if (!_binaryReader.read(&nodeAnimationNum))
{
CCLOG("warning: Failed to read AnimationData: animNum '%s'.", _path.c_str());
return false;
}
for (unsigned int i = 0; i < nodeAnimationNum; ++i)
{
std::string boneName = _binaryReader.readString();
unsigned int keyframeNum;
if (!_binaryReader.read(&keyframeNum))
{ {
CCLOG("warning: Failed to read AnimationData: keyframeNum '%s'.", _path.c_str()); CCLOG("warning: Failed to read AnimationData: totalTime '%s'.", _path.c_str());
return false; return false;
} }
animationdata->_rotationKeys[boneName].reserve(keyframeNum);
animationdata->_scaleKeys[boneName].reserve(keyframeNum);
animationdata->_translationKeys[boneName].reserve(keyframeNum);
for (unsigned int j = 0; j < keyframeNum; ++j) unsigned int nodeAnimationNum;
if (!_binaryReader.read(&nodeAnimationNum))
{ {
float keytime; CCLOG("warning: Failed to read AnimationData: animNum '%s'.", _path.c_str());
if (!_binaryReader.read(&keytime)) return false;
}
for (unsigned int i = 0; i < nodeAnimationNum; ++i)
{
std::string boneName = _binaryReader.readString();
unsigned int keyframeNum;
if (!_binaryReader.read(&keyframeNum))
{ {
CCLOG("warning: Failed to read AnimationData: keytime '%s'.", _path.c_str()); CCLOG("warning: Failed to read AnimationData: keyframeNum '%s'.", _path.c_str());
return false; return false;
} }
// transform flag animationdata->_rotationKeys[boneName].reserve(keyframeNum);
unsigned char transformFlag(0); animationdata->_scaleKeys[boneName].reserve(keyframeNum);
if (_version == "0.4") animationdata->_translationKeys[boneName].reserve(keyframeNum);
for (unsigned int j = 0; j < keyframeNum; ++j)
{ {
if (!_binaryReader.read(&transformFlag)) float keytime;
if (!_binaryReader.read(&keytime))
{ {
CCLOG("warning: Failed to read AnimationData: transformFlag '%s'.", _path.c_str()); CCLOG("warning: Failed to read AnimationData: keytime '%s'.", _path.c_str());
return false; return false;
} }
}
// transform flag
// rotation unsigned char transformFlag(0);
bool hasRotate = true; if (_version == "0.4")
if (_version == "0.4")
hasRotate = transformFlag & 0x01;
if (hasRotate)
{
Quaternion rotate;
if (_binaryReader.read(&rotate, 4, 4) != 4)
{ {
CCLOG("warning: Failed to read AnimationData: rotate '%s'.", _path.c_str()); if (!_binaryReader.read(&transformFlag))
return false; {
CCLOG("warning: Failed to read AnimationData: transformFlag '%s'.", _path.c_str());
return false;
}
}
// rotation
bool hasRotate = true;
if (_version == "0.4")
hasRotate = transformFlag & 0x01;
if (hasRotate)
{
Quaternion rotate;
if (_binaryReader.read(&rotate, 4, 4) != 4)
{
CCLOG("warning: Failed to read AnimationData: rotate '%s'.", _path.c_str());
return false;
}
animationdata->_rotationKeys[boneName].push_back(Animation3DData::QuatKey(keytime, rotate));
}
// scale
bool hasScale = true;
if (_version == "0.4")
hasScale = (transformFlag >> 1) & 0x01;
if (hasScale)
{
Vec3 scale;
if (_binaryReader.read(&scale, 4, 3) != 3)
{
CCLOG("warning: Failed to read AnimationData: scale '%s'.", _path.c_str());
return false;
}
animationdata->_scaleKeys[boneName].push_back(Animation3DData::Vec3Key(keytime, scale));
}
// translation
bool hasTranslation = true;
if (_version == "0.4")
hasTranslation = (transformFlag >> 2) & 0x01;
if (hasTranslation)
{
Vec3 position;
if (_binaryReader.read(&position, 4, 3) != 3)
{
CCLOG("warning: Failed to read AnimationData: position '%s'.", _path.c_str());
return false;
}
animationdata->_translationKeys[boneName].push_back(Animation3DData::Vec3Key(keytime, position));
} }
animationdata->_rotationKeys[boneName].push_back(Animation3DData::QuatKey(keytime, rotate));
} }
// scale
bool hasScale = true;
if (_version == "0.4")
hasScale = (transformFlag >> 1) & 0x01;
if (hasScale)
{
Vec3 scale;
if (_binaryReader.read(&scale, 4, 3) != 3)
{
CCLOG("warning: Failed to read AnimationData: scale '%s'.", _path.c_str());
return false;
}
animationdata->_scaleKeys[boneName].push_back(Animation3DData::Vec3Key(keytime, scale));
}
// translation
bool hasTranslation = true;
if (_version == "0.4")
hasTranslation = (transformFlag >> 2) & 0x01;
if (hasTranslation)
{
Vec3 position;
if (_binaryReader.read(&position, 4, 3) != 3)
{
CCLOG("warning: Failed to read AnimationData: position '%s'.", _path.c_str());
return false;
}
animationdata->_translationKeys[boneName].push_back(Animation3DData::Vec3Key(keytime, position));
}
} }
if( id == animId || id.empty())
{
has_found = true;
break;
}
}
if(!has_found)
{
animationdata->resetData();
return false;
} }
return true; return true;
} }
bool Bundle3D::loadNodesJson(NodeDatas& nodedatas) bool Bundle3D::loadNodesJson(NodeDatas& nodedatas)
{ {
if (!_jsonReader.HasMember(NODES)) return false; if (!_jsonReader.HasMember(NODES)) return false;

View File

@ -114,7 +114,7 @@ protected:
bool loadMaterialDataJson(MaterialData* materialdata){return true;} bool loadMaterialDataJson(MaterialData* materialdata){return true;}
bool loadMaterialDataJson_0_1(MaterialData* materialdata){return true;} bool loadMaterialDataJson_0_1(MaterialData* materialdata){return true;}
bool loadMaterialDataJson_0_2(MaterialData* materialdata){return true;} bool loadMaterialDataJson_0_2(MaterialData* materialdata){return true;}
bool loadAnimationDataJson(Animation3DData* animationdata); bool loadAnimationDataJson(const std::string& id,Animation3DData* animationdata);
/** /**
* load data in binary * load data in binary
* @param path The c3b file path * @param path The c3b file path
@ -145,7 +145,7 @@ protected:
* load animation data in binary * load animation data in binary
* @param animationdata The animation data pointer * @param animationdata The animation data pointer
*/ */
bool loadAnimationDataBinary(Animation3DData* animationdata); bool loadAnimationDataBinary(const std::string& id,Animation3DData* animationdata);
bool checkIsBone(const std::string& name); bool checkIsBone(const std::string& name);

View File

@ -230,10 +230,31 @@ void Mesh::calcuateAABB()
_aabb = _meshIndexData->getAABB(); _aabb = _meshIndexData->getAABB();
if (_skin) if (_skin)
{ {
Bone3D* root = _skin->getRootBone(); //get skin root
Bone3D* root = nullptr;
Mat4 invBindPose;
if (_skin->_skinBones.size())
{
root = _skin->_skinBones.at(0);
while (root) {
auto parent = root->getParentBone();
bool parentInSkinBone = false;
for (const auto& bone : _skin->_skinBones) {
if (bone == parent)
{
parentInSkinBone = true;
break;
}
}
if (!parentInSkinBone)
break;
root = parent;
}
}
if (root) if (root)
{ {
_aabb.transform(root->getWorldMat()); _aabb.transform(root->getWorldMat() * _skin->getInvBindPose(root));
} }
} }
} }

View File

@ -146,4 +146,15 @@ Bone3D* MeshSkin::getRootBone() const
return root; return root;
} }
const Mat4& MeshSkin::getInvBindPose(const Bone3D* bone)
{
for (ssize_t i = 0; i < _skinBones.size(); i++) {
if (_skinBones.at(i) == bone)
{
return _invBindPoses.at(i);
}
}
return Mat4::IDENTITY;
}
NS_CC_END NS_CC_END

View File

@ -42,6 +42,7 @@ class Skeleton3D;
*/ */
class CC_DLL MeshSkin: public Ref class CC_DLL MeshSkin: public Ref
{ {
friend class Mesh;
public: public:
/**create a new meshskin if do not want to share meshskin*/ /**create a new meshskin if do not want to share meshskin*/
@ -80,6 +81,9 @@ CC_CONSTRUCTOR_ACCESS:
/**add skin bone*/ /**add skin bone*/
void addSkinBone(Bone3D* bone); void addSkinBone(Bone3D* bone);
/** get inverse bind pose */
const Mat4& getInvBindPose(const Bone3D* bone);
protected: protected:
Vector<Bone3D*> _skinBones; // bones with skin Vector<Bone3D*> _skinBones; // bones with skin

View File

@ -31,8 +31,8 @@
#include "3d/CCMesh.h" #include "3d/CCMesh.h"
#include "base/CCDirector.h" #include "base/CCDirector.h"
#include "base/CCLight.h" #include "2d/CCLight.h"
#include "base/CCCamera.h" #include "2d/CCCamera.h"
#include "base/ccMacros.h" #include "base/ccMacros.h"
#include "platform/CCPlatformMacros.h" #include "platform/CCPlatformMacros.h"
#include "platform/CCFileUtils.h" #include "platform/CCFileUtils.h"
@ -92,6 +92,14 @@ bool Sprite3D::loadFromCache(const std::string& path)
} }
} }
for(const auto& it : spritedata->nodedatas->skeleton)
{
if(it)
{
createAttachSprite3DNode(it,*(spritedata->materialdatas));
}
}
for (ssize_t i = 0; i < _meshes.size(); i++) { for (ssize_t i = 0; i < _meshes.size(); i++) {
_meshes.at(i)->setGLProgramState(spritedata->glProgramStates.at(i)); _meshes.at(i)->setGLProgramState(spritedata->glProgramStates.at(i));
} }

View File

@ -69,6 +69,9 @@ public:
/**get mesh*/ /**get mesh*/
Mesh* getMesh() const { return _meshes.at(0); } Mesh* getMesh() const { return _meshes.at(0); }
/** get mesh count */
ssize_t getMeshCount() const { return _meshes.size(); }
/**get skin*/ /**get skin*/
CC_DEPRECATED_ATTRIBUTE MeshSkin* getSkin() const; CC_DEPRECATED_ATTRIBUTE MeshSkin* getSkin() const;

View File

@ -24,6 +24,7 @@ cocos2d.cpp \
2d/CCAnimation.cpp \ 2d/CCAnimation.cpp \
2d/CCAnimationCache.cpp \ 2d/CCAnimationCache.cpp \
2d/CCAtlasNode.cpp \ 2d/CCAtlasNode.cpp \
2d/CCCamera.cpp \
2d/CCClippingNode.cpp \ 2d/CCClippingNode.cpp \
2d/CCClippingRectangleNode.cpp \ 2d/CCClippingRectangleNode.cpp \
2d/CCComponent.cpp \ 2d/CCComponent.cpp \
@ -45,6 +46,7 @@ cocos2d.cpp \
2d/CCLabelTTF.cpp \ 2d/CCLabelTTF.cpp \
2d/CCLabelTextFormatter.cpp \ 2d/CCLabelTextFormatter.cpp \
2d/CCLayer.cpp \ 2d/CCLayer.cpp \
2d/CCLight.cpp \
2d/CCMenu.cpp \ 2d/CCMenu.cpp \
2d/CCMenuItem.cpp \ 2d/CCMenuItem.cpp \
2d/CCMotionStreak.cpp \ 2d/CCMotionStreak.cpp \
@ -91,7 +93,6 @@ math/Vec2.cpp \
math/Vec3.cpp \ math/Vec3.cpp \
math/Vec4.cpp \ math/Vec4.cpp \
base/CCAutoreleasePool.cpp \ base/CCAutoreleasePool.cpp \
base/CCCamera.cpp \
base/CCConfiguration.cpp \ base/CCConfiguration.cpp \
base/CCConsole.cpp \ base/CCConsole.cpp \
base/CCData.cpp \ base/CCData.cpp \
@ -115,7 +116,6 @@ base/CCEventListenerTouch.cpp \
base/CCEventMouse.cpp \ base/CCEventMouse.cpp \
base/CCEventTouch.cpp \ base/CCEventTouch.cpp \
base/CCIMEDispatcher.cpp \ base/CCIMEDispatcher.cpp \
base/CCLight.cpp \
base/CCNS.cpp \ base/CCNS.cpp \
base/CCProfiling.cpp \ base/CCProfiling.cpp \
base/ccRandom.cpp \ base/ccRandom.cpp \

View File

@ -145,7 +145,7 @@ if(MINGW)
elseif(WINDOWS) elseif(WINDOWS)
set(PLATFORM_SPECIFIC_LIBS libjpeg libpng libwebp libtiff libcurl_imp libwebsockets freetype250 glfw3 glew32 opengl32 libiconv libzlib) set(PLATFORM_SPECIFIC_LIBS libjpeg libpng libwebp libtiff libcurl_imp libwebsockets freetype250 glfw3 glew32 opengl32 libiconv libzlib)
elseif(LINUX) elseif(LINUX)
set(PLATFORM_SPECIFIC_LIBS jpeg webp tiff freetype curl websockets set(PLATFORM_SPECIFIC_LIBS jpeg webp tiff freetype curl websockets ssl crypto
fontconfig png pthread glfw GLEW GL X11 rt z protobuf ${FMOD_LIB}) fontconfig png pthread glfw GLEW GL X11 rt z protobuf ${FMOD_LIB})
elseif(MACOSX OR APPLE) elseif(MACOSX OR APPLE)
INCLUDE_DIRECTORIES ( /System/Library/Frameworks ) INCLUDE_DIRECTORIES ( /System/Library/Frameworks )

View File

@ -217,7 +217,7 @@ bool AudioEngineImpl::init()
return ret; return ret;
} }
int AudioEngineImpl::play2d(const std::string &fileFullPath ,bool loop ,float volume) int AudioEngineImpl::play2d(const std::string &filePath ,bool loop ,float volume)
{ {
auto audioId = AudioEngine::INVAILD_AUDIO_ID; auto audioId = AudioEngine::INVAILD_AUDIO_ID;
@ -227,10 +227,10 @@ int AudioEngineImpl::play2d(const std::string &fileFullPath ,bool loop ,float vo
break; break;
auto& player = _audioPlayers[currentAudioID]; auto& player = _audioPlayers[currentAudioID];
auto initPlayer = player.init( _engineEngine, _outputMixObject, fileFullPath, volume, loop); auto initPlayer = player.init( _engineEngine, _outputMixObject, FileUtils::getInstance()->fullPathForFilename(filePath), volume, loop);
if (!initPlayer){ if (!initPlayer){
_audioPlayers.erase(currentAudioID); _audioPlayers.erase(currentAudioID);
log("%s,%d message:create player for %s fail", __func__, __LINE__, fileFullPath.c_str()); log("%s,%d message:create player for %s fail", __func__, __LINE__, filePath.c_str());
break; break;
} }

View File

@ -47,7 +47,7 @@ THE SOFTWARE.
#include "renderer/CCTextureCache.h" #include "renderer/CCTextureCache.h"
#include "renderer/ccGLStateCache.h" #include "renderer/ccGLStateCache.h"
#include "renderer/CCRenderer.h" #include "renderer/CCRenderer.h"
#include "base/CCCamera.h" #include "2d/CCCamera.h"
#include "base/CCUserDefault.h" #include "base/CCUserDefault.h"
#include "base/ccFPSImages.h" #include "base/ccFPSImages.h"
#include "base/CCScheduler.h" #include "base/CCScheduler.h"
@ -155,9 +155,8 @@ bool Director::init(void)
_renderer = new (std::nothrow) Renderer; _renderer = new (std::nothrow) Renderer;
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT)
_console = new (std::nothrow) Console; _console = new (std::nothrow) Console;
#endif
return true; return true;
} }
@ -181,9 +180,8 @@ Director::~Director(void)
delete _renderer; delete _renderer;
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT)
delete _console; delete _console;
#endif
CC_SAFE_RELEASE(_eventDispatcher); CC_SAFE_RELEASE(_eventDispatcher);

View File

@ -8,10 +8,8 @@ endif()
# todo: also base/CCController-android.cpp # todo: also base/CCController-android.cpp
set(COCOS_BASE_SRC set(COCOS_BASE_SRC
base/CCLight.cpp
base/ccFPSImages.c base/ccFPSImages.c
base/CCAutoreleasePool.cpp base/CCAutoreleasePool.cpp
base/CCCamera.cpp
base/CCConfiguration.cpp base/CCConfiguration.cpp
base/CCConsole.cpp base/CCConsole.cpp
base/CCController.cpp base/CCController.cpp

View File

@ -86,7 +86,7 @@ namespace utils
/** /**
* calculate all children's boundingBox * calculate all children's boundingBox
*/ */
Rect getCascadeBoundingBox(Node *node); Rect CC_DLL getCascadeBoundingBox(Node *node);
} }
NS_CC_END NS_CC_END

View File

@ -61,8 +61,6 @@ THE SOFTWARE.
#include "base/CCIMEDelegate.h" #include "base/CCIMEDelegate.h"
#include "base/CCIMEDispatcher.h" #include "base/CCIMEDispatcher.h"
#include "base/ccUtils.h" #include "base/ccUtils.h"
#include "base/CCCamera.h"
#include "base/CCLight.h"
// EventDispatcher // EventDispatcher
#include "base/CCEventType.h" #include "base/CCEventType.h"
@ -140,6 +138,9 @@ THE SOFTWARE.
#include "2d/CCGrabber.h" #include "2d/CCGrabber.h"
#include "2d/CCGrid.h" #include "2d/CCGrid.h"
#include "2d/CCCamera.h"
#include "2d/CCLight.h"
// include // include
#include "base/CCProtocols.h" #include "base/CCProtocols.h"

View File

@ -47,7 +47,7 @@ static const char* FrameType_ScaleFrame = "ScaleFrame";
static const char* FrameType_RotationFrame = "RotationFrame"; static const char* FrameType_RotationFrame = "RotationFrame";
static const char* FrameType_SkewFrame = "SkewFrame"; static const char* FrameType_SkewFrame = "SkewFrame";
static const char* FrameType_RotationSkewFrame = "RotationSkewFrame"; static const char* FrameType_RotationSkewFrame = "RotationSkewFrame";
static const char* FrameType_AnchorFrame = "AnchorFrame"; static const char* FrameType_AnchorFrame = "AnchorPointFrame";
static const char* FrameType_InnerActionFrame = "InnerActionFrame"; static const char* FrameType_InnerActionFrame = "InnerActionFrame";
static const char* FrameType_ColorFrame = "ColorFrame"; static const char* FrameType_ColorFrame = "ColorFrame";
static const char* FrameType_TextureFrame = "TextureFrame"; static const char* FrameType_TextureFrame = "TextureFrame";

View File

@ -208,8 +208,6 @@ void Timeline::binarySearchKeyFrame(int frameIndex)
void Timeline::updateCurrentKeyFrame(int frameIndex) void Timeline::updateCurrentKeyFrame(int frameIndex)
{ {
if(frameIndex > 60)
int a = 0;
//! If play to current frame's front or back, then find current frame again //! If play to current frame's front or back, then find current frame again
if (frameIndex < _currentKeyFrameIndex || frameIndex >= _currentKeyFrameIndex + _betweenDuration) if (frameIndex < _currentKeyFrameIndex || frameIndex >= _currentKeyFrameIndex + _betweenDuration)
{ {

View File

@ -141,7 +141,7 @@ void CSLoader::destroyInstance()
CSLoader::CSLoader() CSLoader::CSLoader()
: _recordJsonPath(true) : _recordJsonPath(true)
, _jsonPath("") , _jsonPath("")
, _recordProtocolBuffersPath(true) , _recordProtocolBuffersPath(false)
, _protocolBuffersPath("") , _protocolBuffersPath("")
, _monoCocos2dxVersion("") , _monoCocos2dxVersion("")
{ {

View File

@ -128,8 +128,7 @@ bool ComAudio::serialize(void* r)
} }
if (strcmp(className, "CCBackgroundAudio") == 0) if (strcmp(className, "CCBackgroundAudio") == 0)
{ {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
// no MP3 support for CC_PLATFORM_WP8
std::string::size_type pos = filePath.find(".mp3"); std::string::size_type pos = filePath.find(".mp3");
if (pos == filePath.npos) if (pos == filePath.npos)
{ {

View File

@ -199,6 +199,10 @@ namespace cocostudio
std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath();
bool barTextureScale9Enable = options.scale9enable(); bool barTextureScale9Enable = options.scale9enable();
if (barTextureScale9Enable)
{
slider->setUnifySizeEnabled(false);
}
slider->setScale9Enabled(barTextureScale9Enable); slider->setScale9Enabled(barTextureScale9Enable);
slider->setPercent(options.percent()); slider->setPercent(options.percent());

View File

@ -133,7 +133,4 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\spine-cocos2dx.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\spine-cocos2dx.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\spine.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\spine.h" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Text Include="$(MSBuildThisFileDirectory)..\..\CMakeLists.txt" />
</ItemGroup>
</Project> </Project>

View File

@ -65,7 +65,4 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\spine.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\spine.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\spine-cocos2dx.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\spine-cocos2dx.h" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Text Include="$(MSBuildThisFileDirectory)..\..\CMakeLists.txt" />
</ItemGroup>
</Project> </Project>

View File

@ -79,27 +79,27 @@ NS_CC_BEGIN
int Device::getDPI() int Device::getDPI()
{ {
static int dpi = -1; static int dpi = -1;
if (dpi == -1) if (dpi == -1)
{ {
Display *dpy; Display *dpy;
char *displayname = NULL; char *displayname = NULL;
int scr = 0; /* Screen number */ int scr = 0; /* Screen number */
dpy = XOpenDisplay (displayname); dpy = XOpenDisplay (displayname);
/* /*
* there are 2.54 centimeters to an inch; so there are 25.4 millimeters. * there are 2.54 centimeters to an inch; so there are 25.4 millimeters.
* *
* dpi = N pixels / (M millimeters / (25.4 millimeters / 1 inch)) * dpi = N pixels / (M millimeters / (25.4 millimeters / 1 inch))
* = N pixels / (M inch / 25.4) * = N pixels / (M inch / 25.4)
* = N * 25.4 pixels / M inch * = N * 25.4 pixels / M inch
*/ */
double xres = ((((double) DisplayWidth(dpy,scr)) * 25.4) / double xres = ((((double) DisplayWidth(dpy,scr)) * 25.4) /
((double) DisplayWidthMM(dpy,scr))); ((double) DisplayWidthMM(dpy,scr)));
dpi = (int) (xres + 0.5); dpi = (int) (xres + 0.5);
//printf("dpi = %d\n", dpi); //printf("dpi = %d\n", dpi);
XCloseDisplay (dpy); XCloseDisplay (dpy);
} }
return dpi; return dpi;
} }
void Device::setAccelerometerEnabled(bool isEnabled) void Device::setAccelerometerEnabled(bool isEnabled)
@ -115,25 +115,25 @@ void Device::setAccelerometerInterval(float interval)
class BitmapDC class BitmapDC
{ {
public: public:
BitmapDC() { BitmapDC() {
libError = FT_Init_FreeType( &library ); libError = FT_Init_FreeType( &library );
FcInit(); FcInit();
_data = NULL; _data = NULL;
reset();
}
~BitmapDC() {
FT_Done_FreeType(library);
FcFini();
reset(); reset();
} }
void reset() { ~BitmapDC() {
iMaxLineWidth = 0; FT_Done_FreeType(library);
iMaxLineHeight = 0; FcFini();
textLines.clear();
} reset();
}
void reset() {
iMaxLineWidth = 0;
iMaxLineHeight = 0;
textLines.clear();
}
int utf8(char **p) int utf8(char **p)
{ {
@ -171,268 +171,268 @@ public:
} }
bool isBreakPoint(FT_UInt currentCharacter, FT_UInt previousCharacter) { bool isBreakPoint(FT_UInt currentCharacter, FT_UInt previousCharacter) {
if ( previousCharacter == '-' || previousCharacter == '/' || previousCharacter == '\\' ) { if ( previousCharacter == '-' || previousCharacter == '/' || previousCharacter == '\\' ) {
// we can insert a line break after one of these characters // we can insert a line break after one of these characters
return true; return true;
} }
return false; return false;
} }
bool divideString(FT_Face face, const char* sText, int iMaxWidth, int iMaxHeight) { bool divideString(FT_Face face, const char* sText, int iMaxWidth, int iMaxHeight) {
const char* pText = sText; const char* pText = sText;
textLines.clear(); textLines.clear();
iMaxLineWidth = 0; iMaxLineWidth = 0;
FT_UInt unicode; FT_UInt unicode;
FT_UInt prevCharacter = 0; FT_UInt prevCharacter = 0;
FT_UInt glyphIndex = 0; FT_UInt glyphIndex = 0;
FT_UInt prevGlyphIndex = 0; FT_UInt prevGlyphIndex = 0;
FT_Vector delta; FT_Vector delta;
LineBreakLine currentLine; LineBreakLine currentLine;
int currentPaintPosition = 0; int currentPaintPosition = 0;
int lastBreakIndex = -1; int lastBreakIndex = -1;
bool hasKerning = FT_HAS_KERNING( face ); bool hasKerning = FT_HAS_KERNING( face );
while ((unicode=utf8((char**)&pText))) { while ((unicode=utf8((char**)&pText))) {
if (unicode == '\n') { if (unicode == '\n') {
currentLine.calculateWidth(); currentLine.calculateWidth();
iMaxLineWidth = max(iMaxLineWidth, currentLine.lineWidth); iMaxLineWidth = max(iMaxLineWidth, currentLine.lineWidth);
textLines.push_back(currentLine); textLines.push_back(currentLine);
currentLine.reset(); currentLine.reset();
prevGlyphIndex = 0; prevGlyphIndex = 0;
prevCharacter = 0; prevCharacter = 0;
lastBreakIndex = -1; lastBreakIndex = -1;
currentPaintPosition = 0; currentPaintPosition = 0;
continue; continue;
}
if ( isBreakPoint(unicode, prevCharacter) ) {
lastBreakIndex = currentLine.glyphs.size() - 1;
} }
glyphIndex = FT_Get_Char_Index(face, unicode); if ( isBreakPoint(unicode, prevCharacter) ) {
if (FT_Load_Glyph(face, glyphIndex, FT_LOAD_DEFAULT)) { lastBreakIndex = currentLine.glyphs.size() - 1;
return false; }
}
if (iswspace(unicode)) { glyphIndex = FT_Get_Char_Index(face, unicode);
currentPaintPosition += face->glyph->metrics.horiAdvance >> 6; if (FT_Load_Glyph(face, glyphIndex, FT_LOAD_DEFAULT)) {
prevGlyphIndex = glyphIndex; return false;
prevCharacter = unicode; }
lastBreakIndex = currentLine.glyphs.size();
continue;
}
LineBreakGlyph glyph; if (iswspace(unicode)) {
glyph.glyphIndex = glyphIndex; currentPaintPosition += face->glyph->metrics.horiAdvance >> 6;
glyph.glyphWidth = face->glyph->metrics.width >> 6; prevGlyphIndex = glyphIndex;
glyph.bearingX = face->glyph->metrics.horiBearingX >> 6; prevCharacter = unicode;
glyph.horizAdvance = face->glyph->metrics.horiAdvance >> 6; lastBreakIndex = currentLine.glyphs.size();
glyph.kerning = 0; continue;
}
if (prevGlyphIndex != 0 && hasKerning) { LineBreakGlyph glyph;
FT_Get_Kerning(face, prevGlyphIndex, glyphIndex, FT_KERNING_DEFAULT, &delta); glyph.glyphIndex = glyphIndex;
glyph.kerning = delta.x >> 6; glyph.glyphWidth = face->glyph->metrics.width >> 6;
} glyph.bearingX = face->glyph->metrics.horiBearingX >> 6;
glyph.horizAdvance = face->glyph->metrics.horiAdvance >> 6;
glyph.kerning = 0;
if (iMaxWidth > 0 && currentPaintPosition + glyph.bearingX + glyph.kerning + glyph.glyphWidth > iMaxWidth) { if (prevGlyphIndex != 0 && hasKerning) {
FT_Get_Kerning(face, prevGlyphIndex, glyphIndex, FT_KERNING_DEFAULT, &delta);
glyph.kerning = delta.x >> 6;
}
int glyphCount = currentLine.glyphs.size(); if (iMaxWidth > 0 && currentPaintPosition + glyph.bearingX + glyph.kerning + glyph.glyphWidth > iMaxWidth) {
if ( lastBreakIndex >= 0 && lastBreakIndex < glyphCount && currentPaintPosition + glyph.bearingX + glyph.kerning + glyph.glyphWidth - currentLine.glyphs.at(lastBreakIndex).paintPosition < iMaxWidth ) {
// we insert a line break at our last break opportunity
std::vector<LineBreakGlyph> tempGlyphs;
std::vector<LineBreakGlyph>::iterator it = currentLine.glyphs.begin();
std::advance(it, lastBreakIndex);
tempGlyphs.insert(tempGlyphs.begin(), it, currentLine.glyphs.end());
currentLine.glyphs.erase(it, currentLine.glyphs.end());
currentLine.calculateWidth();
iMaxLineWidth = max(iMaxLineWidth, currentLine.lineWidth);
textLines.push_back(currentLine);
currentLine.reset();
currentPaintPosition = 0;
for ( it = tempGlyphs.begin(); it != tempGlyphs.end(); it++ ) {
if ( currentLine.glyphs.empty() ) {
currentPaintPosition = -(*it).bearingX;
(*it).kerning = 0;
}
(*it).paintPosition = currentPaintPosition + (*it).bearingX + (*it).kerning;
currentLine.glyphs.push_back((*it));
currentPaintPosition += (*it).kerning + (*it).horizAdvance;
}
} else {
// the current word is too big to fit into one line, insert line break right here
currentPaintPosition = 0;
glyph.kerning = 0;
currentLine.calculateWidth();
iMaxLineWidth = max(iMaxLineWidth, currentLine.lineWidth);
textLines.push_back(currentLine);
currentLine.reset();
}
prevGlyphIndex = 0; int glyphCount = currentLine.glyphs.size();
prevCharacter = 0; if ( lastBreakIndex >= 0 && lastBreakIndex < glyphCount && currentPaintPosition + glyph.bearingX + glyph.kerning + glyph.glyphWidth - currentLine.glyphs.at(lastBreakIndex).paintPosition < iMaxWidth ) {
lastBreakIndex = -1; // we insert a line break at our last break opportunity
} else { std::vector<LineBreakGlyph> tempGlyphs;
prevGlyphIndex = glyphIndex; std::vector<LineBreakGlyph>::iterator it = currentLine.glyphs.begin();
prevCharacter = unicode; std::advance(it, lastBreakIndex);
} tempGlyphs.insert(tempGlyphs.begin(), it, currentLine.glyphs.end());
currentLine.glyphs.erase(it, currentLine.glyphs.end());
currentLine.calculateWidth();
iMaxLineWidth = max(iMaxLineWidth, currentLine.lineWidth);
textLines.push_back(currentLine);
currentLine.reset();
currentPaintPosition = 0;
for ( it = tempGlyphs.begin(); it != tempGlyphs.end(); it++ ) {
if ( currentLine.glyphs.empty() ) {
currentPaintPosition = -(*it).bearingX;
(*it).kerning = 0;
}
(*it).paintPosition = currentPaintPosition + (*it).bearingX + (*it).kerning;
currentLine.glyphs.push_back((*it));
currentPaintPosition += (*it).kerning + (*it).horizAdvance;
}
} else {
// the current word is too big to fit into one line, insert line break right here
currentPaintPosition = 0;
glyph.kerning = 0;
currentLine.calculateWidth();
iMaxLineWidth = max(iMaxLineWidth, currentLine.lineWidth);
textLines.push_back(currentLine);
currentLine.reset();
}
if ( currentLine.glyphs.empty() ) { prevGlyphIndex = 0;
currentPaintPosition = -glyph.bearingX; prevCharacter = 0;
} lastBreakIndex = -1;
glyph.paintPosition = currentPaintPosition + glyph.bearingX + glyph.kerning; } else {
currentLine.glyphs.push_back(glyph); prevGlyphIndex = glyphIndex;
currentPaintPosition += glyph.kerning + glyph.horizAdvance; prevCharacter = unicode;
} }
if ( currentLine.glyphs.empty() == false ) { if ( currentLine.glyphs.empty() ) {
currentLine.calculateWidth(); currentPaintPosition = -glyph.bearingX;
iMaxLineWidth = max(iMaxLineWidth, currentLine.lineWidth); }
textLines.push_back(currentLine); glyph.paintPosition = currentPaintPosition + glyph.bearingX + glyph.kerning;
} currentLine.glyphs.push_back(glyph);
return true; currentPaintPosition += glyph.kerning + glyph.horizAdvance;
} }
/** if ( currentLine.glyphs.empty() == false ) {
* compute the start pos of every line currentLine.calculateWidth();
*/ iMaxLineWidth = max(iMaxLineWidth, currentLine.lineWidth);
int computeLineStart(FT_Face face, Device::TextAlign eAlignMask, int line) { textLines.push_back(currentLine);
int lineWidth = textLines.at(line).lineWidth; }
if (eAlignMask == Device::TextAlign::CENTER || eAlignMask == Device::TextAlign::TOP || eAlignMask == Device::TextAlign::BOTTOM) { return true;
return (iMaxLineWidth - lineWidth) / 2;
} else if (eAlignMask == Device::TextAlign::RIGHT || eAlignMask == Device::TextAlign::TOP_RIGHT || eAlignMask == Device::TextAlign::BOTTOM_RIGHT) {
return (iMaxLineWidth - lineWidth);
}
// left or other situation
return 0;
}
int computeLineStartY( FT_Face face, Device::TextAlign eAlignMask, int txtHeight, int borderHeight ){
int baseLinePos = ceilf(FT_MulFix( face->bbox.yMax, face->size->metrics.y_scale )/64.0f);
if (eAlignMask == Device::TextAlign::CENTER || eAlignMask == Device::TextAlign::LEFT || eAlignMask == Device::TextAlign::RIGHT) {
//vertical center
return (borderHeight - txtHeight) / 2 + baseLinePos;
} else if (eAlignMask == Device::TextAlign::BOTTOM_RIGHT || eAlignMask == Device::TextAlign::BOTTOM || eAlignMask == Device::TextAlign::BOTTOM_LEFT) {
//vertical bottom
return borderHeight - txtHeight + baseLinePos;
}
// top alignment
return baseLinePos;
}
std::string getFontFile(const char* family_name) {
std::string fontPath = family_name;
std::map<std::string, std::string>::iterator it = fontCache.find(family_name);
if ( it != fontCache.end() ) {
return it->second;
}
// check if the parameter is a font file shipped with the application
std::string lowerCasePath = fontPath;
std::transform(lowerCasePath.begin(), lowerCasePath.end(), lowerCasePath.begin(), ::tolower);
if ( lowerCasePath.find(".ttf") != std::string::npos ) {
fontPath = cocos2d::FileUtils::getInstance()->fullPathForFilename(fontPath.c_str());
FILE *f = fopen(fontPath.c_str(), "r");
if ( f ) {
fclose(f);
fontCache.insert(std::pair<std::string, std::string>(family_name, fontPath));
return fontPath;
}
}
// use fontconfig to match the parameter against the fonts installed on the system
FcPattern *pattern = FcPatternBuild (0, FC_FAMILY, FcTypeString, family_name, (char *) 0);
FcConfigSubstitute(0, pattern, FcMatchPattern);
FcDefaultSubstitute(pattern);
FcResult result;
FcPattern *font = FcFontMatch(0, pattern, &result);
if ( font ) {
FcChar8 *s = NULL;
if ( FcPatternGetString(font, FC_FILE, 0, &s) == FcResultMatch ) {
fontPath = (const char*)s;
FcPatternDestroy(font);
FcPatternDestroy(pattern);
fontCache.insert(std::pair<std::string, std::string>(family_name, fontPath));
return fontPath;
}
FcPatternDestroy(font);
}
FcPatternDestroy(pattern);
return family_name;
} }
bool getBitmap(const char *text, int nWidth, int nHeight, Device::TextAlign eAlignMask, const char * pFontName, float fontSize) { /**
if (libError) { * compute the start pos of every line
return false; */
} int computeLineStart(FT_Face face, Device::TextAlign eAlignMask, int line) {
int lineWidth = textLines.at(line).lineWidth;
if (eAlignMask == Device::TextAlign::CENTER || eAlignMask == Device::TextAlign::TOP || eAlignMask == Device::TextAlign::BOTTOM) {
return (iMaxLineWidth - lineWidth) / 2;
} else if (eAlignMask == Device::TextAlign::RIGHT || eAlignMask == Device::TextAlign::TOP_RIGHT || eAlignMask == Device::TextAlign::BOTTOM_RIGHT) {
return (iMaxLineWidth - lineWidth);
}
FT_Face face; // left or other situation
std::string fontfile = getFontFile(pFontName); return 0;
if ( FT_New_Face(library, fontfile.c_str(), 0, &face) ) { }
//no valid font found use default
if ( FT_New_Face(library, "/usr/share/fonts/truetype/freefont/FreeSerif.ttf", 0, &face) ) {
return false;
}
}
//select utf8 charmap int computeLineStartY( FT_Face face, Device::TextAlign eAlignMask, int txtHeight, int borderHeight ){
if ( FT_Select_Charmap(face, FT_ENCODING_UNICODE) ) { int baseLinePos = ceilf(FT_MulFix( face->bbox.yMax, face->size->metrics.y_scale )/64.0f);
FT_Done_Face(face); if (eAlignMask == Device::TextAlign::CENTER || eAlignMask == Device::TextAlign::LEFT || eAlignMask == Device::TextAlign::RIGHT) {
return false; //vertical center
} return (borderHeight - txtHeight) / 2 + baseLinePos;
} else if (eAlignMask == Device::TextAlign::BOTTOM_RIGHT || eAlignMask == Device::TextAlign::BOTTOM || eAlignMask == Device::TextAlign::BOTTOM_LEFT) {
//vertical bottom
return borderHeight - txtHeight + baseLinePos;
}
if ( FT_Set_Pixel_Sizes(face, fontSize, fontSize) ) { // top alignment
FT_Done_Face(face); return baseLinePos;
return false; }
}
if ( divideString(face, text, nWidth, nHeight) == false ) { std::string getFontFile(const char* family_name) {
FT_Done_Face(face); std::string fontPath = family_name;
return false;
}
//compute the final line width std::map<std::string, std::string>::iterator it = fontCache.find(family_name);
iMaxLineWidth = MAX(iMaxLineWidth, nWidth); if ( it != fontCache.end() ) {
return it->second;
}
//compute the final line height // check if the parameter is a font file shipped with the application
iMaxLineHeight = ceilf(FT_MulFix( face->bbox.yMax - face->bbox.yMin, face->size->metrics.y_scale )/64.0f); std::string lowerCasePath = fontPath;
int lineHeight = face->size->metrics.height>>6; std::transform(lowerCasePath.begin(), lowerCasePath.end(), lowerCasePath.begin(), ::tolower);
if ( textLines.size() > 0 ) { if ( lowerCasePath.find(".ttf") != std::string::npos ) {
iMaxLineHeight += (lineHeight * (textLines.size() -1)); fontPath = cocos2d::FileUtils::getInstance()->fullPathForFilename(fontPath.c_str());
}
int txtHeight = iMaxLineHeight;
iMaxLineHeight = MAX(iMaxLineHeight, nHeight);
_data = (unsigned char*)malloc(sizeof(unsigned char) * (iMaxLineWidth * iMaxLineHeight * 4)); FILE *f = fopen(fontPath.c_str(), "r");
memset(_data,0, iMaxLineWidth * iMaxLineHeight*4); if ( f ) {
fclose(f);
fontCache.insert(std::pair<std::string, std::string>(family_name, fontPath));
return fontPath;
}
}
int iCurYCursor = computeLineStartY(face, eAlignMask, txtHeight, iMaxLineHeight); // use fontconfig to match the parameter against the fonts installed on the system
FcPattern *pattern = FcPatternBuild (0, FC_FAMILY, FcTypeString, family_name, (char *) 0);
FcConfigSubstitute(0, pattern, FcMatchPattern);
FcDefaultSubstitute(pattern);
int lineCount = textLines.size(); FcResult result;
for (int line = 0; line < lineCount; line++) { FcPattern *font = FcFontMatch(0, pattern, &result);
int iCurXCursor = computeLineStart(face, eAlignMask, line); if ( font ) {
FcChar8 *s = NULL;
if ( FcPatternGetString(font, FC_FILE, 0, &s) == FcResultMatch ) {
fontPath = (const char*)s;
int glyphCount = textLines.at(line).glyphs.size(); FcPatternDestroy(font);
for (int i = 0; i < glyphCount; i++) { FcPatternDestroy(pattern);
LineBreakGlyph glyph = textLines.at(line).glyphs.at(i);
if (FT_Load_Glyph(face, glyph.glyphIndex, FT_LOAD_RENDER)) { fontCache.insert(std::pair<std::string, std::string>(family_name, fontPath));
continue; return fontPath;
} }
FcPatternDestroy(font);
}
FcPatternDestroy(pattern);
FT_Bitmap& bitmap = face->glyph->bitmap; return family_name;
int yoffset = iCurYCursor - (face->glyph->metrics.horiBearingY >> 6); }
int xoffset = iCurXCursor + glyph.paintPosition;
for (int y = 0; y < bitmap.rows; ++y) { bool getBitmap(const char *text, const FontDefinition& textDefinition, Device::TextAlign eAlignMask) {
if (libError) {
return false;
}
FT_Face face;
std::string fontfile = getFontFile(textDefinition._fontName.c_str());
if ( FT_New_Face(library, fontfile.c_str(), 0, &face) ) {
//no valid font found use default
if ( FT_New_Face(library, "/usr/share/fonts/truetype/freefont/FreeSerif.ttf", 0, &face) ) {
return false;
}
}
//select utf8 charmap
if ( FT_Select_Charmap(face, FT_ENCODING_UNICODE) ) {
FT_Done_Face(face);
return false;
}
if ( FT_Set_Pixel_Sizes(face, textDefinition._fontSize, textDefinition._fontSize) ) {
FT_Done_Face(face);
return false;
}
if ( divideString(face, text, textDefinition._dimensions.width, textDefinition._dimensions.height) == false ) {
FT_Done_Face(face);
return false;
}
//compute the final line width
iMaxLineWidth = MAX(iMaxLineWidth, textDefinition._dimensions.width);
//compute the final line height
iMaxLineHeight = ceilf(FT_MulFix( face->bbox.yMax - face->bbox.yMin, face->size->metrics.y_scale )/64.0f);
int lineHeight = face->size->metrics.height>>6;
if ( textLines.size() > 0 ) {
iMaxLineHeight += (lineHeight * (textLines.size() -1));
}
int txtHeight = iMaxLineHeight;
iMaxLineHeight = MAX(iMaxLineHeight, textDefinition._dimensions.height);
_data = (unsigned char*)malloc(sizeof(unsigned char) * (iMaxLineWidth * iMaxLineHeight * 4));
memset(_data,0, iMaxLineWidth * iMaxLineHeight*4);
int iCurYCursor = computeLineStartY(face, eAlignMask, txtHeight, iMaxLineHeight);
int lineCount = textLines.size();
for (int line = 0; line < lineCount; line++) {
int iCurXCursor = computeLineStart(face, eAlignMask, line);
int glyphCount = textLines.at(line).glyphs.size();
for (int i = 0; i < glyphCount; i++) {
LineBreakGlyph glyph = textLines.at(line).glyphs.at(i);
if (FT_Load_Glyph(face, glyph.glyphIndex, FT_LOAD_RENDER)) {
continue;
}
FT_Bitmap& bitmap = face->glyph->bitmap;
int yoffset = iCurYCursor - (face->glyph->metrics.horiBearingY >> 6);
int xoffset = iCurXCursor + glyph.paintPosition;
for (int y = 0; y < bitmap.rows; ++y) {
int iY = yoffset + y; int iY = yoffset + y;
if (iY>=iMaxLineHeight) { if (iY>=iMaxLineHeight) {
//exceed the height truncate //exceed the height truncate
@ -442,42 +442,42 @@ public:
int bitmap_y = y * bitmap.width; int bitmap_y = y * bitmap.width;
for (int x = 0; x < bitmap.width; ++x) { for (int x = 0; x < bitmap.width; ++x) {
unsigned char cTemp = bitmap.buffer[bitmap_y + x]; unsigned char cTemp = bitmap.buffer[bitmap_y + x];
if (cTemp == 0) { if (cTemp == 0) {
continue; continue;
} }
int iX = xoffset + x; int iX = xoffset + x;
//FIXME:wrong text color
int iTemp = cTemp << 24 | cTemp << 16 | cTemp << 8 | cTemp;
*(int*) &_data[(iY + iX) * 4 + 0] = iTemp;
}
}
}
// step to next line
iCurYCursor += lineHeight;
}
int iTemp = cTemp << 24 | cTemp << 16 | cTemp << 8 | cTemp; // free face
*(int*) &_data[(iY + iX) * 4 + 0] = iTemp; FT_Done_Face(face);
} return true;
} }
}
// step to next line
iCurYCursor += lineHeight;
}
// free face
FT_Done_Face(face);
return true;
}
public: public:
FT_Library library; FT_Library library;
unsigned char *_data; unsigned char *_data;
int libError; int libError;
std::vector<LineBreakLine> textLines; std::vector<LineBreakLine> textLines;
int iMaxLineWidth; int iMaxLineWidth;
int iMaxLineHeight; int iMaxLineHeight;
}; };
static BitmapDC& sharedBitmapDC() static BitmapDC& sharedBitmapDC()
{ {
static BitmapDC s_BmpDC; static BitmapDC s_BmpDC;
return s_BmpDC; return s_BmpDC;
} }
Data Device::getTextureDataForText(const char * text, const FontDefinition& textDefinition, TextAlign align, int &width, int &height, bool& hasPremultipliedAlpha) Data Device::getTextureDataForText(const char * text, const FontDefinition& textDefinition, TextAlign align, int &width, int &height, bool& hasPremultipliedAlpha)
@ -487,7 +487,7 @@ Data Device::getTextureDataForText(const char * text, const FontDefinition& text
{ {
BitmapDC &dc = sharedBitmapDC(); BitmapDC &dc = sharedBitmapDC();
CC_BREAK_IF(! dc.getBitmap(text, textDefinition._dimensions.width, textDefinition._dimensions.height, align, textDefinition._fontName.c_str(), textDefinition._fontSize)); CC_BREAK_IF(! dc.getBitmap(text, textDefinition, align));
CC_BREAK_IF(! dc._data); CC_BREAK_IF(! dc._data);
width = dc.iMaxLineWidth; width = dc.iMaxLineWidth;
height = dc.iMaxLineHeight; height = dc.iMaxLineHeight;

View File

@ -131,7 +131,7 @@ static bool _initWithString(const char * text, Device::TextAlign align, const ch
if ([@"!?.,-= " rangeOfString:character].location != NSNotFound) { if ([@"!?.,-= " rangeOfString:character].location != NSNotFound) {
lastBreakLocation = i + insertCount; lastBreakLocation = i + insertCount;
} }
//textSize = [lineBreak sizeWithAttributes:tokenAttributesDict]; textSize = [lineBreak sizeWithAttributes:tokenAttributesDict];
if(textSize.height > info->height) if(textSize.height > info->height)
break; break;
if (textSize.width > info->width) { if (textSize.width > info->width) {

View File

@ -431,7 +431,7 @@ Data Device::getTextureDataForText(const char * text, const FontDefinition& text
GetDIBits(dc.getDC(), dc.getBitmap(), 0, height, dataBuf, GetDIBits(dc.getDC(), dc.getBitmap(), 0, height, dataBuf,
(LPBITMAPINFO)&bi, DIB_RGB_COLORS); (LPBITMAPINFO)&bi, DIB_RGB_COLORS);
// change pixel's alpha value to 255, when it's RGB != 0 COLORREF textColor = (textDefinition._fontFillColor.b << 16 | textDefinition._fontFillColor.g << 8 | textDefinition._fontFillColor.r) & 0x00ffffff;
COLORREF * pPixel = nullptr; COLORREF * pPixel = nullptr;
for (int y = 0; y < height; ++y) for (int y = 0; y < height; ++y)
{ {
@ -439,7 +439,7 @@ Data Device::getTextureDataForText(const char * text, const FontDefinition& text
for (int x = 0; x < width; ++x) for (int x = 0; x < width; ++x)
{ {
COLORREF& clr = *pPixel; COLORREF& clr = *pPixel;
clr = (0xffffff | (GetRValue(clr) << 24)); clr = (GetRValue(clr) << 24) | textColor;
++pPixel; ++pPixel;
} }
} }

View File

@ -0,0 +1,85 @@
/*
* cocos2d-x http://www.cocos2d-x.org
*
* Copyright (c) 2010-2014 - cocos2d-x community
*
* Portions Copyright (c) Microsoft Open Technologies, Inc.
* All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/
#include "Cocos2dRenderer.h"
#include "AppDelegate.h"
#include "CCGLViewImpl-winrt.h"
#include "CCApplication.h"
#include "cocos2d.h"
// These are used by the shader compilation methods.
#include <vector>
#include <iostream>
#include <fstream>
using namespace Platform;
using namespace Windows::UI::Core;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::Graphics::Display;
USING_NS_CC;
Cocos2dRenderer::Cocos2dRenderer(const int width, const int height, CoreDispatcher^ dispatcher, Panel^ panel)
: mApp(nullptr)
, mWidth(width)
, mHeight(height)
, m_dispatcher(dispatcher)
, m_panel(panel)
{
mApp = new AppDelegate();
auto director = cocos2d::Director::getInstance();
GLViewImpl* glview = GLViewImpl::create("Test Cpp");
glview->setDispatcher(dispatcher);
glview->setPanel(panel);
glview->Create(static_cast<float>(width), static_cast<float>(height), DisplayOrientations::Landscape);
director->setOpenGLView(glview);
CCApplication::getInstance()->run();
}
Cocos2dRenderer::~Cocos2dRenderer()
{
delete mApp;
}
// Draws a basic triangle
void Cocos2dRenderer::Draw(GLsizei width, GLsizei height)
{
if (width != mWidth || height != mHeight)
{
mWidth = width;
mHeight = height;
GLViewImpl::sharedOpenGLView()->UpdateForWindowSizeChange(static_cast<float>(width), static_cast<float>(height));
}
GLViewImpl::sharedOpenGLView()->ProcessEvents();
GLViewImpl::sharedOpenGLView()->Render();
}
void Cocos2dRenderer::QueuePointerEvent(cocos2d::PointerEventType type, Windows::UI::Core::PointerEventArgs^ args)
{
GLViewImpl::sharedOpenGLView()->QueuePointerEvent(type, args);
}
void Cocos2dRenderer::QueueKeyBoardEvent(cocos2d::Cocos2dKeyEvent type, Windows::UI::Core::KeyEventArgs^ e)
{
//GLViewImpl::sharedOpenGLView()->QueuePointerEvent(type, e);
}

View File

@ -0,0 +1,47 @@
/*
* cocos2d-x http://www.cocos2d-x.org
*
* Copyright (c) 2010-2014 - cocos2d-x community
*
* Portions Copyright (c) Microsoft Open Technologies, Inc.
* All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/
#pragma once
#include <agile.h>
#include "cocos2d.h"
class AppDelegate;
namespace cocos2d
{
class Cocos2dRenderer
{
public:
Cocos2dRenderer(const int width, const int height, Windows::UI::Core::CoreDispatcher^ dispathcer, Windows::UI::Xaml::Controls::Panel^ panel);
~Cocos2dRenderer();
void Draw(GLsizei width, GLsizei height);
void QueuePointerEvent(PointerEventType type, Windows::UI::Core::PointerEventArgs^ args);
void QueueKeyBoardEvent(Cocos2dKeyEvent type, Windows::UI::Core::KeyEventArgs^ e);
private:
int mWidth;
int mHeight;
// The AppDelegate for the Cocos2D app
AppDelegate* mApp;
Platform::Agile<Windows::UI::Core::CoreDispatcher> m_dispatcher;
Platform::Agile<Windows::UI::Xaml::Controls::Panel> m_panel;
};
}

View File

@ -1,5 +1,22 @@
#include "pch.h" /*
* cocos2d-x http://www.cocos2d-x.org
*
* Copyright (c) 2010-2014 - cocos2d-x community
*
* Portions Copyright (c) Microsoft Open Technologies, Inc.
* All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/
#include "OpenGLES.h"
using namespace Platform; using namespace Platform;
using namespace Windows::UI::Xaml::Controls; using namespace Windows::UI::Xaml::Controls;
using namespace Windows::Foundation; using namespace Windows::Foundation;
@ -36,8 +53,13 @@ void OpenGLES::Initialize()
// This can be used to configure D3D11. For example, EGL_PLATFORM_ANGLE_TYPE_D3D11_FL9_3_ANGLE could be used. // This can be used to configure D3D11. For example, EGL_PLATFORM_ANGLE_TYPE_D3D11_FL9_3_ANGLE could be used.
// This would ask the graphics card to use D3D11 Feature Level 9_3 instead of Feature Level 11_0+. // This would ask the graphics card to use D3D11 Feature Level 9_3 instead of Feature Level 11_0+.
// On Windows Phone, this would allow the Phone Emulator to act more like the GPUs that are available on real Phone devices. // On Windows Phone, this would allow the Phone Emulator to act more like the GPUs that are available on real Phone devices.
#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_FL9_3_ANGLE,
EGL_NONE,
#else
EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
EGL_NONE, EGL_NONE,
#endif
}; };
const EGLint contextAttributes[] = const EGLint contextAttributes[] =

View File

@ -0,0 +1,52 @@
/*
* cocos2d-x http://www.cocos2d-x.org
*
* Copyright (c) 2010-2014 - cocos2d-x community
*
* Portions Copyright (c) Microsoft Open Technologies, Inc.
* All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/
#pragma once
// OpenGL ES includes
#include <GLES3/gl3.h>
#include <GLES3/gl3ext.h>
// EGL includes
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <EGL/eglplatform.h>
#include <angle_windowsstore.h>
class OpenGLES
{
public:
OpenGLES();
~OpenGLES();
EGLSurface CreateSurface(Windows::UI::Xaml::Controls::SwapChainPanel^ panel, const Windows::Foundation::Size* renderSurfaceSize);
void DestroySurface(const EGLSurface surface);
void MakeCurrent(const EGLSurface surface);
EGLBoolean SwapBuffers(const EGLSurface surface);
void Reset();
private:
void Initialize();
void Cleanup();
private:
EGLDisplay mEglDisplay;
EGLContext mEglContext;
EGLConfig mEglConfig;
};

View File

@ -0,0 +1,28 @@
<Page
x:Class="cocos2d.OpenGLESPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:cocos2d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<SwapChainPanel x:Name="swapChainPanel">
<Button x:Name="cocos2d_editbox" Visibility="Collapsed" Height="1">
<Button.Flyout>
<Flyout x:Name="cocos2d_editbox_flyout">
<Grid VerticalAlignment="Top" x:Name="cocos2d_editbox_grid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="120" />
<ColumnDefinition Width="120" />
</Grid.ColumnDefinitions>
<Button x:Name="cocos2d_editbox_done" Grid.Column="1" VerticalAlignment="Center">Done</Button>
<Button x:Name="cocos2d_editbox_cancel" Grid.Column="2" VerticalAlignment="Center">Cancel</Button>
</Grid>
</Flyout>
</Button.Flyout>
</Button>
</SwapChainPanel>
</Page>

View File

@ -1,10 +1,40 @@
#include "pch.h" /*
* cocos2d-x http://www.cocos2d-x.org
*
* Copyright (c) 2010-2014 - cocos2d-x community
*
* Portions Copyright (c) Microsoft Open Technologies, Inc.
* All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/
#include "App.xaml.h"
#include "OpenGLESPage.xaml.h" #include "OpenGLESPage.xaml.h"
using namespace cpp_tests; using namespace cocos2d;
using namespace Platform; using namespace Platform;
using namespace Concurrency; using namespace Concurrency;
using namespace Windows::Foundation; using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::Graphics::Display;
using namespace Windows::System::Threading;
using namespace Windows::UI::Core;
using namespace Windows::UI::Input;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Controls::Primitives;
using namespace Windows::UI::Xaml::Data;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;
OpenGLESPage::OpenGLESPage() : OpenGLESPage::OpenGLESPage() :
OpenGLESPage(nullptr) OpenGLESPage(nullptr)
@ -16,7 +46,8 @@ OpenGLESPage::OpenGLESPage(OpenGLES* openGLES) :
mOpenGLES(openGLES), mOpenGLES(openGLES),
mRenderSurface(EGL_NO_SURFACE), mRenderSurface(EGL_NO_SURFACE),
mCustomRenderSurfaceSize(0,0), mCustomRenderSurfaceSize(0,0),
mUseCustomRenderSurfaceSize(false) mUseCustomRenderSurfaceSize(false),
m_coreInput(nullptr)
{ {
InitializeComponent(); InitializeComponent();
@ -31,7 +62,11 @@ OpenGLESPage::OpenGLESPage(OpenGLES* openGLES) :
this->Loaded += this->Loaded +=
ref new Windows::UI::Xaml::RoutedEventHandler(this, &OpenGLESPage::OnPageLoaded); ref new Windows::UI::Xaml::RoutedEventHandler(this, &OpenGLESPage::OnPageLoaded);
#if !(WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) mSwapChainPanelSize = { swapChainPanel->RenderSize.Width, swapChainPanel->RenderSize.Height };
#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
Windows::UI::ViewManagement::StatusBar::GetForCurrentView()->HideAsync();
#else
// Disable all pointer visual feedback for better performance when touching. // Disable all pointer visual feedback for better performance when touching.
// This is not supported on Windows Phone applications. // This is not supported on Windows Phone applications.
auto pointerVisualizationSettings = Windows::UI::Input::PointerVisualizationSettings::GetForCurrentView(); auto pointerVisualizationSettings = Windows::UI::Input::PointerVisualizationSettings::GetForCurrentView();
@ -39,7 +74,28 @@ OpenGLESPage::OpenGLESPage(OpenGLES* openGLES) :
pointerVisualizationSettings->IsBarrelButtonFeedbackEnabled = false; pointerVisualizationSettings->IsBarrelButtonFeedbackEnabled = false;
#endif #endif
mSwapChainPanelSize = { swapChainPanel->RenderSize.Width, swapChainPanel->RenderSize.Height }; // Register our SwapChainPanel to get independent input pointer events
auto workItemHandler = ref new WorkItemHandler([this](IAsyncAction ^)
{
// The CoreIndependentInputSource will raise pointer events for the specified device types on whichever thread it's created on.
m_coreInput = swapChainPanel->CreateCoreIndependentInputSource(
Windows::UI::Core::CoreInputDeviceTypes::Mouse |
Windows::UI::Core::CoreInputDeviceTypes::Touch |
Windows::UI::Core::CoreInputDeviceTypes::Pen
);
// Register for pointer events, which will be raised on the background thread.
m_coreInput->PointerPressed += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &OpenGLESPage::OnPointerPressed);
m_coreInput->PointerMoved += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &OpenGLESPage::OnPointerMoved);
m_coreInput->PointerReleased += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &OpenGLESPage::OnPointerReleased);
// Begin processing input messages as they're delivered.
m_coreInput->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessUntilQuit);
});
// Run task on a dedicated high priority background thread.
m_inputLoopWorker = ThreadPool::RunAsync(workItemHandler, WorkItemPriority::High, WorkItemOptions::TimeSliced);
} }
OpenGLESPage::~OpenGLESPage() OpenGLESPage::~OpenGLESPage()
@ -55,6 +111,32 @@ void OpenGLESPage::OnPageLoaded(Platform::Object^ sender, Windows::UI::Xaml::Rou
StartRenderLoop(); StartRenderLoop();
} }
void OpenGLESPage::OnPointerPressed(Object^ sender, PointerEventArgs^ e)
{
if (m_renderer)
{
m_renderer->QueuePointerEvent(PointerEventType::PointerPressed, e);
}
}
void OpenGLESPage::OnPointerMoved(Object^ sender, PointerEventArgs^ e)
{
if (m_renderer)
{
m_renderer->QueuePointerEvent(PointerEventType::PointerMoved, e);
}
}
void OpenGLESPage::OnPointerReleased(Object^ sender, PointerEventArgs^ e)
{
if (m_renderer)
{
m_renderer->QueuePointerEvent(PointerEventType::PointerReleased, e);
}
}
void OpenGLESPage::OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args) void OpenGLESPage::OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args)
{ {
if (args->Visible && mRenderSurface != EGL_NO_SURFACE) if (args->Visible && mRenderSurface != EGL_NO_SURFACE)
@ -143,21 +225,29 @@ void OpenGLESPage::StartRenderLoop()
return; return;
} }
auto dispatcher = Windows::UI::Xaml::Window::Current->CoreWindow->Dispatcher;
// Create a task for rendering that will be run on a background thread. // Create a task for rendering that will be run on a background thread.
auto workItemHandler = ref new Windows::System::Threading::WorkItemHandler([this](Windows::Foundation::IAsyncAction ^ action) auto workItemHandler = ref new Windows::System::Threading::WorkItemHandler([this, dispatcher](Windows::Foundation::IAsyncAction ^ action)
{ {
critical_section::scoped_lock lock(mRenderSurfaceCriticalSection); critical_section::scoped_lock lock(mRenderSurfaceCriticalSection);
mOpenGLES->MakeCurrent(mRenderSurface); mOpenGLES->MakeCurrent(mRenderSurface);
HelloTriangleRenderer renderer;
GLsizei panelWidth = 0;
GLsizei panelHeight = 0;
GetSwapChainPanelSize(&panelWidth, &panelHeight);
if (m_renderer.get() == nullptr)
{
m_renderer = std::make_shared<Cocos2dRenderer>(panelWidth, panelHeight, dispatcher, swapChainPanel);
}
while (action->Status == Windows::Foundation::AsyncStatus::Started) while (action->Status == Windows::Foundation::AsyncStatus::Started)
{ {
GLsizei panelWidth = 0;
GLsizei panelHeight = 0;
GetSwapChainPanelSize(&panelWidth, &panelHeight); GetSwapChainPanelSize(&panelWidth, &panelHeight);
renderer.Draw(panelWidth, panelHeight); m_renderer.get()->Draw(panelWidth, panelHeight);
// The call to eglSwapBuffers might not be successful (i.e. due to Device Lost) // The call to eglSwapBuffers might not be successful (i.e. due to Device Lost)
// If the call fails, then we must reinitialize EGL and the GL resources. // If the call fails, then we must reinitialize EGL and the GL resources.
@ -165,6 +255,7 @@ void OpenGLESPage::StartRenderLoop()
{ {
// XAML objects like the SwapChainPanel must only be manipulated on the UI thread. // XAML objects like the SwapChainPanel must only be manipulated on the UI thread.
swapChainPanel->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([=]() swapChainPanel->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([=]()
//swapChainPanel->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([=]()
{ {
RecoverFromLostDevice(); RecoverFromLostDevice();
}, CallbackContext::Any)); }, CallbackContext::Any));

View File

@ -0,0 +1,71 @@
/*
* cocos2d-x http://www.cocos2d-x.org
*
* Copyright (c) 2010-2014 - cocos2d-x community
*
* Portions Copyright (c) Microsoft Open Technologies, Inc.
* All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/
#pragma once
#include "OpenGLES.h"
#include "OpenGLESPage.g.h"
#include <memory>
#include "Cocos2dRenderer.h"
namespace cocos2d
{
public ref class OpenGLESPage sealed
{
public:
OpenGLESPage();
virtual ~OpenGLESPage();
internal:
OpenGLESPage(OpenGLES* openGLES);
private:
void OnPageLoaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args);
void OnSwapChainPanelSizeChanged(Platform::Object^ sender, Windows::UI::Xaml::SizeChangedEventArgs^ e);
void GetSwapChainPanelSize(GLsizei* width, GLsizei* height);
void CreateRenderSurface();
void DestroyRenderSurface();
void RecoverFromLostDevice();
void StartRenderLoop();
void StopRenderLoop();
OpenGLES* mOpenGLES;
std::shared_ptr<cocos2d::Cocos2dRenderer> m_renderer;
Windows::Foundation::Size mSwapChainPanelSize;
Concurrency::critical_section mSwapChainPanelSizeCriticalSection;
Windows::Foundation::Size mCustomRenderSurfaceSize;
bool mUseCustomRenderSurfaceSize;
EGLSurface mRenderSurface; // This surface is associated with a swapChainPanel on the page
Concurrency::critical_section mRenderSurfaceCriticalSection;
Windows::Foundation::IAsyncAction^ mRenderLoopWorker;
// Track user input on a background worker thread.
Windows::Foundation::IAsyncAction^ m_inputLoopWorker;
Windows::UI::Core::CoreIndependentInputSource^ m_coreInput;
// Independent input handling functions.
void OnPointerPressed(Platform::Object^ sender, Windows::UI::Core::PointerEventArgs^ e);
void OnPointerMoved(Platform::Object^ sender, Windows::UI::Core::PointerEventArgs^ e);
void OnPointerReleased(Platform::Object^ sender, Windows::UI::Core::PointerEventArgs^ e);
};
}

View File

@ -0,0 +1,14 @@
//
// pch.h
// Header for standard system include files.
//
#pragma once
#include <collection.h>
#include <ppltasks.h>
#include "cocos2d.h"
#include "cocos-ext.h"

View File

@ -26,7 +26,7 @@ THE SOFTWARE.
#include "platform/CCStdC.h" #include "platform/CCStdC.h"
#include "CCWinRTUtils.h" #include "CCWinRTUtils.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || defined(WP8_SHADER_COMPILER)
#include "platform/wp8/CCGLViewImpl-wp8.h" #include "platform/wp8/CCGLViewImpl-wp8.h"
#endif #endif
@ -42,17 +42,9 @@ void MessageBox(const char * pszMsg, const char * pszTitle)
// Create the message dialog and set its content // Create the message dialog and set its content
Platform::String^ message = ref new Platform::String(CCUtf8ToUnicode(pszMsg, -1).c_str()); Platform::String^ message = ref new Platform::String(CCUtf8ToUnicode(pszMsg, -1).c_str());
Platform::String^ title = ref new Platform::String(CCUtf8ToUnicode(pszTitle, -1).c_str()); Platform::String^ title = ref new Platform::String(CCUtf8ToUnicode(pszTitle, -1).c_str());
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) #ifndef WP8_SHADER_COMPILER
Windows::UI::Popups::MessageDialog^ msg = ref new Windows::UI::Popups::MessageDialog(message, title);
// Set the command to be invoked when a user presses 'ESC'
msg->CancelCommandIndex = 1;
// Show the message dialog
msg->ShowAsync();
#else
GLViewImpl::sharedOpenGLView()->ShowMessageBox(title, message); GLViewImpl::sharedOpenGLView()->ShowMessageBox(title, message);
#endif #endif
} }

View File

@ -51,6 +51,7 @@ static Accelerometer^ sAccelerometer = nullptr;
void Device::setAccelerometerEnabled(bool isEnabled) void Device::setAccelerometerEnabled(bool isEnabled)
{ {
#ifndef WP8_SHADER_COMPILER
static Windows::Foundation::EventRegistrationToken sToken; static Windows::Foundation::EventRegistrationToken sToken;
static bool sEnabled = false; static bool sEnabled = false;
@ -91,7 +92,6 @@ void Device::setAccelerometerEnabled(bool isEnabled)
acc.z = reading->AccelerationZ; acc.z = reading->AccelerationZ;
acc.timestamp = 0; acc.timestamp = 0;
#if CC_TARGET_PLATFORM == CC_PLATFORM_WP8
auto orientation = GLViewImpl::sharedOpenGLView()->getDeviceOrientation(); auto orientation = GLViewImpl::sharedOpenGLView()->getDeviceOrientation();
switch (orientation) switch (orientation)
@ -121,14 +121,12 @@ void Device::setAccelerometerEnabled(bool isEnabled)
acc.y = reading->AccelerationY; acc.y = reading->AccelerationY;
break; break;
} }
#endif
#ifndef WP8_SHADER_COMPILER
std::shared_ptr<cocos2d::InputEvent> event(new AccelerometerEvent(acc)); std::shared_ptr<cocos2d::InputEvent> event(new AccelerometerEvent(acc));
cocos2d::GLViewImpl::sharedOpenGLView()->QueueEvent(event); cocos2d::GLViewImpl::sharedOpenGLView()->QueueEvent(event);
#endif
}); });
} }
#endif
} }
void Device::setAccelerometerInterval(float interval) void Device::setAccelerometerInterval(float interval)

View File

@ -24,7 +24,6 @@ THE SOFTWARE.
****************************************************************************/ ****************************************************************************/
#include "CCGLViewImpl-winrt.h" #include "CCGLViewImpl-winrt.h"
#include "deprecated/CCSet.h"
#include "base/ccMacros.h" #include "base/ccMacros.h"
#include "base/CCDirector.h" #include "base/CCDirector.h"
#include "base/CCTouch.h" #include "base/CCTouch.h"
@ -40,7 +39,9 @@ using namespace Windows::Graphics::Display;
using namespace Windows::UI::Input; using namespace Windows::UI::Input;
using namespace Windows::UI::Core; using namespace Windows::UI::Core;
using namespace Windows::UI::Xaml; using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Media; using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::System; using namespace Windows::System;
using namespace Windows::UI::ViewManagement; using namespace Windows::UI::ViewManagement;
using namespace Windows::ApplicationModel; using namespace Windows::ApplicationModel;
@ -48,7 +49,6 @@ using namespace Windows::ApplicationModel::Core;
using namespace Windows::ApplicationModel::Activation; using namespace Windows::ApplicationModel::Activation;
using namespace Platform; using namespace Platform;
using namespace Microsoft::WRL; using namespace Microsoft::WRL;
using namespace PhoneDirect3DXamlAppComponent;
NS_CC_BEGIN NS_CC_BEGIN
@ -79,8 +79,6 @@ GLViewImpl::GLViewImpl()
, m_windowVisible(true) , m_windowVisible(true)
, m_width(0) , m_width(0)
, m_height(0) , m_height(0)
, m_delegate(nullptr)
, m_messageBoxDelegate(nullptr)
, m_orientation(DisplayOrientations::Landscape) , m_orientation(DisplayOrientations::Landscape)
{ {
s_pEglView = this; s_pEglView = this;
@ -116,6 +114,16 @@ bool GLViewImpl::Create(float width, float height, DisplayOrientations orientati
return true; return true;
} }
void GLViewImpl::setDispatcher(Windows::UI::Core::CoreDispatcher^ dispatcher)
{
m_dispatcher = dispatcher;
}
void GLViewImpl::setPanel(Windows::UI::Xaml::Controls::Panel^ panel)
{
m_panel = panel;
}
void GLViewImpl::setIMEKeyboardState(bool bOpen) void GLViewImpl::setIMEKeyboardState(bool bOpen)
@ -124,44 +132,55 @@ void GLViewImpl::setIMEKeyboardState(bool bOpen)
setIMEKeyboardState(bOpen, str); setIMEKeyboardState(bOpen, str);
} }
bool GLViewImpl::ShowMessageBox(Platform::String^ title, Platform::String^ message)
{
if (m_dispatcher.Get())
{
m_dispatcher.Get()->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([title, message]()
{
// Show the message dialog
auto msg = ref new Windows::UI::Popups::MessageDialog(message, title);
// Set the command to be invoked when a user presses 'ESC'
msg->CancelCommandIndex = 1;
msg->ShowAsync();
}));
return true;
}
return false;
}
void GLViewImpl::setIMEKeyboardState(bool bOpen, std::string str) void GLViewImpl::setIMEKeyboardState(bool bOpen, std::string str)
{ {
if(m_delegate) if(bOpen)
{ {
if(bOpen) if (m_keyboard == nullptr)
{ {
m_delegate->Invoke(Cocos2dEvent::ShowKeyboard, stringToPlatformString(str)); m_keyboard = ref new KeyBoardWinRT(m_dispatcher.Get(), m_panel.Get());
} }
else m_keyboard->ShowKeyboard(PlatformStringFromString(str));
}
else
{
if (m_keyboard != nullptr)
{ {
m_delegate->Invoke(Cocos2dEvent::HideKeyboard, stringToPlatformString(str)); m_keyboard->HideKeyboard(PlatformStringFromString(str));
} }
m_keyboard = nullptr;
} }
} }
Platform::String^ GLViewImpl::stringToPlatformString(std::string strSrc)
{
// to wide char
int strLen = MultiByteToWideChar(CP_UTF8, 0, strSrc.c_str(), -1, NULL, 0);
wchar_t* wstr = new wchar_t[strLen + 1];
memset(wstr, 0, strLen + 1);
MultiByteToWideChar(CP_UTF8, 0, strSrc.c_str(), -1, wstr, strLen);
Platform::String^ strDst = ref new Platform::String(wstr);
delete[] wstr;
return strDst;
}
void GLViewImpl::swapBuffers() void GLViewImpl::swapBuffers()
{ {
//eglSwapBuffers(m_eglDisplay, m_eglSurface);
} }
bool GLViewImpl::isOpenGLReady() bool GLViewImpl::isOpenGLReady()
{ {
return true; return true;
// TODO: need to revisit this
//return (m_eglDisplay && m_orientation != DisplayOrientations::None);
} }
void GLViewImpl::end() void GLViewImpl::end()
@ -184,7 +203,7 @@ void GLViewImpl::OnBackKeyPress()
std::string str; std::string str;
if(m_delegate) if(m_delegate)
{ {
m_delegate->Invoke(Cocos2dEvent::TerminateApp, stringToPlatformString(str)); //m_delegate->Invoke(Cocos2dEvent::TerminateApp, stringToPlatformString(str));
} }
} }
@ -308,30 +327,6 @@ void GLViewImpl::OnRendering()
} }
} }
bool GLViewImpl::ShowMessageBox(Platform::String^ title, Platform::String^ message)
{
if(m_messageBoxDelegate)
{
m_messageBoxDelegate->Invoke(title, message);
return true;
}
return false;
}
bool GLViewImpl::OpenXamlEditBox(Platform::String^ strPlaceHolder, Platform::String^ strText, int maxLength, int inputMode, int inputFlag, Windows::Foundation::EventHandler<Platform::String^>^ receiveHandler)
{
if(m_editBoxDelegate)
{
m_editBoxDelegate->Invoke(strPlaceHolder, strText, maxLength, inputMode, inputFlag, receiveHandler);
return true;
}
return false;
}
// called by orientation change from WP8 XAML // called by orientation change from WP8 XAML
void GLViewImpl::UpdateOrientation(DisplayOrientations orientation) void GLViewImpl::UpdateOrientation(DisplayOrientations orientation)
{ {
@ -345,9 +340,12 @@ void GLViewImpl::UpdateOrientation(DisplayOrientations orientation)
// called by size change from WP8 XAML // called by size change from WP8 XAML
void GLViewImpl::UpdateForWindowSizeChange(float width, float height) void GLViewImpl::UpdateForWindowSizeChange(float width, float height)
{ {
m_width = width; if (width != m_width || height != m_height)
m_height = height; {
UpdateWindowSize(); m_width = width;
m_height = height;
UpdateWindowSize();
}
} }
#if 0 #if 0
@ -371,18 +369,9 @@ void GLViewImpl::UpdateWindowSize()
{ {
float width, height; float width, height;
if(m_orientation == DisplayOrientations::Landscape || m_orientation == DisplayOrientations::LandscapeFlipped) width = m_width;
{ height = m_height;
width = m_height;
height = m_width;
}
else
{
width = m_width;
height = m_height;
}
UpdateOrientationMatrix();
//CCSize designSize = getDesignResolutionSize(); //CCSize designSize = getDesignResolutionSize();
if(!m_initialized) if(!m_initialized)
@ -403,45 +392,15 @@ void GLViewImpl::UpdateWindowSize()
} }
} }
const Mat4& GLViewImpl::getOrientationMatrix() const
{
return m_orientationMatrix;
};
void GLViewImpl::UpdateOrientationMatrix()
{
kmMat4Identity(&m_orientationMatrix);
kmMat4Identity(&m_reverseOrientationMatrix);
switch(m_orientation)
{
case Windows::Graphics::Display::DisplayOrientations::PortraitFlipped:
kmMat4RotationZ(&m_orientationMatrix, static_cast<float>(M_PI));
kmMat4RotationZ(&m_reverseOrientationMatrix, static_cast<float>(-M_PI));
break;
case Windows::Graphics::Display::DisplayOrientations::Landscape:
kmMat4RotationZ(&m_orientationMatrix, static_cast<float>(-M_PI_2));
kmMat4RotationZ(&m_reverseOrientationMatrix, static_cast<float>(M_PI_2));
break;
case Windows::Graphics::Display::DisplayOrientations::LandscapeFlipped:
kmMat4RotationZ(&m_orientationMatrix, static_cast<float>(M_PI_2));
kmMat4RotationZ(&m_reverseOrientationMatrix, static_cast<float>(-M_PI_2));
break;
default:
break;
}
}
cocos2d::Vec2 GLViewImpl::TransformToOrientation(Windows::Foundation::Point p) cocos2d::Vec2 GLViewImpl::TransformToOrientation(Windows::Foundation::Point p)
{ {
cocos2d::Vec2 returnValue; cocos2d::Vec2 returnValue;
float x = p.X; float x = p.X;
float y = p.Y; float y = p.Y;
returnValue = Vec2(x, y);
#if 0
switch (m_orientation) switch (m_orientation)
{ {
case DisplayOrientations::Portrait: case DisplayOrientations::Portrait:
@ -458,6 +417,7 @@ cocos2d::Vec2 GLViewImpl::TransformToOrientation(Windows::Foundation::Point p)
returnValue = Vec2(m_height - y, x); returnValue = Vec2(m_height - y, x);
break; break;
} }
#endif
float zoomFactor = GLViewImpl::sharedOpenGLView()->getFrameZoomFactor(); float zoomFactor = GLViewImpl::sharedOpenGLView()->getFrameZoomFactor();
if(zoomFactor > 0.0f) { if(zoomFactor > 0.0f) {
@ -473,48 +433,23 @@ cocos2d::Vec2 GLViewImpl::TransformToOrientation(Windows::Foundation::Point p)
Vec2 GLViewImpl::GetPoint(PointerEventArgs^ args) { Vec2 GLViewImpl::GetPoint(PointerEventArgs^ args) {
return TransformToOrientation(args->CurrentPoint->Position); return TransformToOrientation(args->CurrentPoint->Position);
} }
void GLViewImpl::setViewPortInPoints(float x , float y , float w , float h) void GLViewImpl::setViewPortInPoints(float x , float y , float w , float h)
{ {
switch(m_orientation) glViewport((GLint) (x * _scaleX + _viewPortRect.origin.x),
{ (GLint) (y * _scaleY + _viewPortRect.origin.y),
case DisplayOrientations::Landscape: (GLsizei) (w * _scaleX),
case DisplayOrientations::LandscapeFlipped: (GLsizei) (h * _scaleY));
glViewport((GLint)(y * _scaleY + _viewPortRect.origin.y),
(GLint)(x * _scaleX + _viewPortRect.origin.x),
(GLsizei)(h * _scaleY),
(GLsizei)(w * _scaleX));
break;
default:
glViewport((GLint)(x * _scaleX + _viewPortRect.origin.x),
(GLint)(y * _scaleY + _viewPortRect.origin.y),
(GLsizei)(w * _scaleX),
(GLsizei)(h * _scaleY));
}
} }
void GLViewImpl::setScissorInPoints(float x , float y , float w , float h) void GLViewImpl::setScissorInPoints(float x , float y , float w , float h)
{ {
switch(m_orientation) glScissor((GLint) (x * _scaleX + _viewPortRect.origin.x),
{ (GLint) (y * _scaleY + _viewPortRect.origin.y),
case DisplayOrientations::Landscape: (GLsizei) (w * _scaleX),
case DisplayOrientations::LandscapeFlipped: (GLsizei) (h * _scaleY));
glScissor((GLint)(y * _scaleX + _viewPortRect.origin.y),
(GLint)((_viewPortRect.size.width - ((x + w) * _scaleX)) + _viewPortRect.origin.x),
(GLsizei)(h * _scaleY),
(GLsizei)(w * _scaleX));
break;
default:
glScissor((GLint)(x * _scaleX + _viewPortRect.origin.x),
(GLint)(y * _scaleY + _viewPortRect.origin.y),
(GLsizei)(w * _scaleX),
(GLsizei)(h * _scaleY));
}
} }
void GLViewImpl::QueueBackKeyPress() void GLViewImpl::QueueBackKeyPress()

View File

@ -33,21 +33,16 @@ THE SOFTWARE.
#include <agile.h> #include <agile.h>
#include <string>
#include <wrl/client.h> #include <wrl/client.h>
#include <d3d11_1.h>
#include <mutex> #include <mutex>
#include <queue> #include <queue>
#include <Keyboard-winrt.h>
#include <agile.h>
#include <DirectXMath.h>
NS_CC_BEGIN NS_CC_BEGIN
class GLViewImpl; class GLViewImpl;
class CC_DLL GLViewImpl : public GLView class CC_DLL GLViewImpl : public GLView
{ {
public: public:
@ -59,20 +54,20 @@ public:
virtual void swapBuffers(); virtual void swapBuffers();
virtual void setViewPortInPoints(float x , float y , float w , float h); virtual void setViewPortInPoints(float x , float y , float w , float h);
virtual void setScissorInPoints(float x , float y , float w , float h); virtual void setScissorInPoints(float x , float y , float w , float h);
const Mat4& getOrientationMatrix() const;
const Mat4& getReverseOrientationMatrix () const {return m_reverseOrientationMatrix;};
Windows::Graphics::Display::DisplayOrientations getDeviceOrientation() {return m_orientation;}; Windows::Graphics::Display::DisplayOrientations getDeviceOrientation() {return m_orientation;};
Size getRenerTargetSize() const { return Size(m_width, m_height); } Size getRenerTargetSize() const { return Size(m_width, m_height); }
virtual void setIMEKeyboardState(bool bOpen); virtual void setIMEKeyboardState(bool bOpen);
virtual void setIMEKeyboardState(bool bOpen, std::string str); virtual void setIMEKeyboardState(bool bOpen, std::string str);
Platform::String^ stringToPlatformString(std::string strSrc);
void ShowKeyboard(Windows::Foundation::Rect r);
void HideKeyboard(Windows::Foundation::Rect r);
// WP8 XAML app virtual bool Create(float width, float height ,Windows::Graphics::Display::DisplayOrientations orientation);
virtual bool Create(float width, float height, Windows::Graphics::Display::DisplayOrientations orientation);
void setDispatcher(Windows::UI::Core::CoreDispatcher^ dispatcher);
Windows::UI::Core::CoreDispatcher^ getDispatcher() {return m_dispatcher.Get();}
void setPanel(Windows::UI::Xaml::Controls::Panel^ panel);
Windows::UI::Xaml::Controls::Panel^ getPanel() {return m_panel.Get();}
void OnPointerPressed(Windows::UI::Core::PointerEventArgs^ args); void OnPointerPressed(Windows::UI::Core::PointerEventArgs^ args);
void OnPointerMoved(Windows::UI::Core::PointerEventArgs^ args); void OnPointerMoved(Windows::UI::Core::PointerEventArgs^ args);
@ -89,14 +84,9 @@ public:
void QueueBackKeyPress(); void QueueBackKeyPress();
void QueuePointerEvent(PointerEventType type, Windows::UI::Core::PointerEventArgs^ args); void QueuePointerEvent(PointerEventType type, Windows::UI::Core::PointerEventArgs^ args);
void GLViewImpl::QueueEvent(std::shared_ptr<InputEvent>& event); void QueueEvent(std::shared_ptr<InputEvent>& event);
void SetXamlEventDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEventDelegate^ delegate) { m_delegate = delegate; };
void SetXamlMessageBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dMessageBoxDelegate^ delegate) { m_messageBoxDelegate = delegate; };
void SetXamlEditBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEditBoxDelegate^ delegate) { m_editBoxDelegate = delegate; };
bool ShowMessageBox(Platform::String^ title, Platform::String^ message); bool ShowMessageBox(Platform::String^ title, Platform::String^ message);
bool OpenXamlEditBox(Platform::String^ strPlaceHolder, Platform::String^ strText, int maxLength, int inputMode, int inputFlag, Windows::Foundation::EventHandler<Platform::String^>^ receiveHandler);
int Run(); int Run();
void Render(); void Render();
@ -116,9 +106,6 @@ public:
static GLViewImpl* sharedOpenGLView(); static GLViewImpl* sharedOpenGLView();
void ProcessEvents(); void ProcessEvents();
void AddPointerEvent(PointerEventType type, Windows::UI::Core::PointerEventArgs^ args);
protected: protected:
GLViewImpl(); GLViewImpl();
@ -144,8 +131,7 @@ private:
void OnRendering(); void OnRendering();
void UpdateWindowSize(); void UpdateWindowSize();
void UpdateOrientationMatrix();
cocos2d::Vec2 TransformToOrientation(Windows::Foundation::Point point); cocos2d::Vec2 TransformToOrientation(Windows::Foundation::Point point);
cocos2d::Vec2 GetPoint(Windows::UI::Core::PointerEventArgs^ args); cocos2d::Vec2 GetPoint(Windows::UI::Core::PointerEventArgs^ args);
@ -162,20 +148,20 @@ private:
bool m_lastPointValid; bool m_lastPointValid;
bool m_windowClosed; bool m_windowClosed;
bool m_windowVisible; bool m_windowVisible;
Mat4 m_orientationMatrix;
Mat4 m_reverseOrientationMatrix;
bool m_running; bool m_running;
bool m_initialized; bool m_initialized;
PhoneDirect3DXamlAppComponent::Cocos2dEventDelegate^ m_delegate; Cocos2dEventDelegate^ m_delegate;
PhoneDirect3DXamlAppComponent::Cocos2dMessageBoxDelegate^ m_messageBoxDelegate; Cocos2dMessageBoxDelegate^ m_messageBoxDelegate;
PhoneDirect3DXamlAppComponent::Cocos2dEditBoxDelegate^ m_editBoxDelegate; Cocos2dEditBoxDelegate^ m_editBoxDelegate;
std::queue<std::shared_ptr<InputEvent>> mInputEvents; std::queue<std::shared_ptr<InputEvent>> mInputEvents;
std::mutex mMutex; std::mutex mMutex;
Platform::Agile<Windows::UI::Core::CoreDispatcher> m_dispatcher;
Platform::Agile<Windows::UI::Xaml::Controls::Panel> m_panel;
KeyBoardWinRT^ m_keyboard;
}; };
NS_CC_END NS_CC_END

View File

@ -32,6 +32,11 @@ THE SOFTWARE.
#include <ppltasks.h> #include <ppltasks.h>
#include <sstream> #include <sstream>
#if CC_TARGET_PLATFORM != CC_PLATFORM_WP8
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
#endif
NS_CC_BEGIN NS_CC_BEGIN
using namespace Windows::Graphics::Display; using namespace Windows::Graphics::Display;
@ -153,6 +158,103 @@ std::string CC_DLL getDeviceIPAddresses()
return result.str(); return result.str();
} }
#if CC_TARGET_PLATFORM != CC_PLATFORM_WP8
Platform::Object^ findXamlElement(Platform::Object^ parent, Platform::String^ name)
{
if (parent == nullptr || name == nullptr || name->Length() == 0)
{
return nullptr;
}
FrameworkElement^ element = dynamic_cast<FrameworkElement^>(parent);
if (element == nullptr)
{
return nullptr;
}
if (element->Name == name)
{
return element;
}
Panel^ panel = dynamic_cast<Panel^>(element);
if (panel == nullptr)
{
return nullptr;
}
int count = panel->Children->Size;
for (int i = 0; i < count; i++)
{
auto result = findXamlElement(panel->Children->GetAt(i), name);
if (result != nullptr)
{
return result;
}
}
return nullptr;
}
bool removeXamlElement(Platform::Object^ parent, Platform::Object^ element)
{
Panel^ panel = dynamic_cast<Panel^>(parent);
if (panel == nullptr)
{
return false;
}
UIElement^ uiElement = dynamic_cast<UIElement^>(element);
if (uiElement == nullptr)
{
return false;
}
unsigned int index;
if (!panel->Children->IndexOf(uiElement, &index))
{
return false;
}
panel->Children->RemoveAt(index);
return true;
}
bool replaceXamlElement(Platform::Object^ parent, Platform::Object^ add, Platform::Object^ remove)
{
Panel^ panel = dynamic_cast<Panel^>(parent);
if (panel == nullptr)
{
return false;
}
UIElement^ addElement = dynamic_cast<UIElement^>(add);
if (addElement == nullptr)
{
return false;
}
UIElement^ removeElement = dynamic_cast<UIElement^>(remove);
if (removeElement == nullptr)
{
return false;
}
unsigned int index;
if (!panel->Children->IndexOf(removeElement, &index))
{
return false;
}
panel->Children->RemoveAt(index);
panel->Children->InsertAt(index, addElement);
return true;
}
#endif

View File

@ -40,6 +40,12 @@ NS_CC_BEGIN
std::wstring CC_DLL CCUtf8ToUnicode(const char * pszUtf8Str, unsigned len = -1); std::wstring CC_DLL CCUtf8ToUnicode(const char * pszUtf8Str, unsigned len = -1);
std::string CC_DLL CCUnicodeToUtf8(const wchar_t* pwszStr); std::string CC_DLL CCUnicodeToUtf8(const wchar_t* pwszStr);
#if CC_TARGET_PLATFORM != CC_PLATFORM_WP8
Platform::Object^ findXamlElement(Platform::Object^ parent, Platform::String^ name);
bool removeXamlElement(Platform::Object^ parent, Platform::Object^ element);
bool replaceXamlElement(Platform::Object^ parent, Platform::Object^ add, Platform::Object^ remove);
#endif
std::string PlatformStringToString(Platform::String^ s); std::string PlatformStringToString(Platform::String^ s);
Platform::String^ PlatformStringFromString(const std::string& s); Platform::String^ PlatformStringFromString(const std::string& s);

View File

@ -24,6 +24,7 @@ THE SOFTWARE.
****************************************************************************/ ****************************************************************************/
#include "InputEvent.h" #include "InputEvent.h"
#include "CCWinRTUtils.h"
#if CC_TARGET_PLATFORM == CC_PLATFORM_WP8 #if CC_TARGET_PLATFORM == CC_PLATFORM_WP8
#include "CCGLViewImpl-wp8.h" #include "CCGLViewImpl-wp8.h"
@ -35,9 +36,6 @@ THE SOFTWARE.
NS_CC_BEGIN NS_CC_BEGIN
using namespace PhoneDirect3DXamlAppComponent;
AccelerometerEvent::AccelerometerEvent(const Acceleration& event) AccelerometerEvent::AccelerometerEvent(const Acceleration& event)
: m_event(event) : m_event(event)
{ {
@ -92,9 +90,11 @@ void KeyboardEvent::execute()
{ {
case Cocos2dKeyEvent::Text: case Cocos2dKeyEvent::Text:
{ {
char szUtf8[256] = { 0 }; std::wstring w(m_text.Get()->Data());
int nLen = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR) m_text.Get()->Data(), -1, szUtf8, sizeof(szUtf8), NULL, NULL); std::u16string s16(w.begin(),w.end());
IMEDispatcher::sharedDispatcher()->dispatchInsertText(szUtf8, nLen - 1); std::string utf8String;
StringUtils::UTF16ToUTF8(s16, utf8String);
IMEDispatcher::sharedDispatcher()->dispatchInsertText(utf8String.c_str(), utf8String.size());
break; break;
} }
@ -108,7 +108,6 @@ void KeyboardEvent::execute()
IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward(); IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward();
break; break;
case Cocos2dKeyEvent::Enter: case Cocos2dKeyEvent::Enter:
//SetFocus(false);
IMEDispatcher::sharedDispatcher()->dispatchInsertText("\n", 1); IMEDispatcher::sharedDispatcher()->dispatchInsertText("\n", 1);
break; break;
default: default:
@ -133,12 +132,27 @@ CustomInputEvent::CustomInputEvent(const std::function<void()>& fun)
: m_fun(fun) : m_fun(fun)
{ {
} }
void CustomInputEvent::execute() void CustomInputEvent::execute()
{ {
m_fun(); m_fun();
} }
UIEditBoxEvent::UIEditBoxEvent(Platform::Object^ sender, Platform::String^ text, Windows::Foundation::EventHandler<Platform::String^>^ handle)
: m_sender(sender)
, m_text(text)
, m_handler(handle)
{
}
void UIEditBoxEvent::execute()
{
if (m_handler.Get())
{
m_handler.Get()->Invoke(m_sender.Get(), m_text.Get());
}
}
NS_CC_END NS_CC_END

View File

@ -30,17 +30,13 @@ THE SOFTWARE.
#include "InputEventTypes.h" #include "InputEventTypes.h"
#include <agile.h> #include <agile.h>
namespace PhoneDirect3DXamlAppComponent
{
public delegate void Cocos2dEventDelegate(Cocos2dEvent event, Platform::String^ text);
public delegate void Cocos2dMessageBoxDelegate(Platform::String^ title, Platform::String^ text);
public delegate void Cocos2dEditBoxDelegate(Platform::String^ strPlaceHolder, Platform::String^ strText, int maxLength, int inputMode, int inputFlag, Windows::Foundation::EventHandler<Platform::String^>^ receiveHandler);
public delegate void Cocos2dOpenURLDelegate(Platform::String^ url);
}
NS_CC_BEGIN NS_CC_BEGIN
public delegate void Cocos2dEventDelegate(Cocos2dEvent event, Platform::String^ text);
public delegate void Cocos2dMessageBoxDelegate(Platform::String^ title, Platform::String^ text);
public delegate void Cocos2dEditBoxDelegate(Platform::String^ strPlaceHolder, Platform::String^ strText, int maxLength, int inputMode, int inputFlag, Windows::Foundation::EventHandler<Platform::String^>^ receiveHandler);
public delegate void Cocos2dOpenURLDelegate(Platform::String^ url);
enum PointerEventType enum PointerEventType
{ {
PointerPressed, PointerPressed,
@ -83,12 +79,12 @@ class CC_DLL KeyboardEvent : public InputEvent
{ {
public: public:
KeyboardEvent(PhoneDirect3DXamlAppComponent::Cocos2dKeyEvent type); KeyboardEvent(Cocos2dKeyEvent type);
KeyboardEvent(PhoneDirect3DXamlAppComponent::Cocos2dKeyEvent type, Platform::String^ text); KeyboardEvent(Cocos2dKeyEvent type, Platform::String^ text);
virtual void execute(); virtual void execute();
private: private:
PhoneDirect3DXamlAppComponent::Cocos2dKeyEvent m_type; Cocos2dKeyEvent m_type;
Platform::Agile<Platform::String> m_text; Platform::Agile<Platform::String> m_text;
}; };
@ -108,6 +104,19 @@ private:
std::function<void()> m_fun; std::function<void()> m_fun;
}; };
class UIEditBoxEvent : public cocos2d::InputEvent
{
public:
UIEditBoxEvent(Platform::Object^ sender, Platform::String^ text, Windows::Foundation::EventHandler<Platform::String^>^ handle);
virtual void execute();
private:
Platform::Agile<Platform::Object^> m_sender;
Platform::Agile<Platform::String^> m_text;
Platform::Agile<Windows::Foundation::EventHandler<Platform::String^>^> m_handler;
};
NS_CC_END NS_CC_END
#endif // #ifndef __INPUT_EVENT__ #endif // #ifndef __INPUT_EVENT__

View File

@ -27,8 +27,8 @@ THE SOFTWARE.
#define __INPUT_EVENT_TYPES__ #define __INPUT_EVENT_TYPES__
namespace PhoneDirect3DXamlAppComponent NS_CC_BEGIN
{
public enum class Cocos2dEvent public enum class Cocos2dEvent
{ {
@ -46,7 +46,8 @@ public enum class Cocos2dKeyEvent : int
Enter Enter
}; };
} NS_CC_END
#endif // #ifndef __INPUT_EVENT_TYPES__ #endif // #ifndef __INPUT_EVENT_TYPES__

View File

@ -0,0 +1,157 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2013-2014 Chukong Technologies Inc.
* Portions Copyright (c) Microsoft Open Technologies, Inc.
* All Rights Reserved
http://www.cocos2d-x.org
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.
****************************************************************************/
#include "Keyboard-winrt.h"
using namespace cocos2d;
using namespace Platform;
using namespace Concurrency;
using namespace Windows::System;
using namespace Windows::System::Threading;
using namespace Windows::UI::Core;
using namespace Windows::UI::Input;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Input;
NS_CC_BEGIN
KeyBoardWinRT::KeyBoardWinRT()
{
}
KeyBoardWinRT::~KeyBoardWinRT()
{
}
KeyBoardWinRT::KeyBoardWinRT(Windows::UI::Core::CoreDispatcher^ dispatcher, Windows::UI::Xaml::Controls::Panel^ panel)
: m_dispatcher(dispatcher)
, m_panel(panel)
{
}
void KeyBoardWinRT::ShowKeyboard(Platform::String^ text)
{
if (m_dispatcher.Get() && m_panel.Get())
{
// run on main UI thread
m_dispatcher.Get()->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new DispatchedHandler([this, text]()
{
if (m_textBox == nullptr)
{
m_textBox = ref new TextBox();
m_textBox->Opacity = 0.0;
m_textBox->Width = 1;
m_textBox->Height = 1;
m_textBox->AddHandler(UIElement::KeyDownEvent, ref new KeyEventHandler(this, &KeyBoardWinRT::OnKeyPressed), true);
m_textBox->AddHandler(UIElement::KeyUpEvent, ref new KeyEventHandler(this, &KeyBoardWinRT::OnKeyReleased), true);
m_textBox->TextChanged += ref new TextChangedEventHandler(this, &KeyBoardWinRT::OnTextChanged);
#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
// Need to use InputScopeNameValue::Search to prevent auto-capitalize
m_textBox->InputScope = ref new InputScope();
auto n = m_textBox->InputScope->Names;
n->Append(ref new InputScopeName(InputScopeNameValue::Search));
#endif
m_panel.Get()->Children->Append(m_textBox);
}
m_textBox->SelectionLength = 0;
m_textBox->SelectionStart = 32768;
m_textBox->Focus(FocusState::Programmatic);
}));
}
}
void KeyBoardWinRT::HideKeyboard(Platform::String^ text)
{
if (m_dispatcher.Get() && m_panel.Get())
{
// run on main UI thread
m_dispatcher.Get()->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new DispatchedHandler([this, text]()
{
if (m_textBox != nullptr)
{
unsigned int index;
if (m_panel->Children->IndexOf(m_textBox, &index))
{
m_panel->Children->RemoveAt(index);
}
}
m_textBox = nullptr;
}));
}
}
void KeyBoardWinRT::QueueKeyEvent(Cocos2dKeyEvent key)
{
std::shared_ptr<cocos2d::InputEvent> e(new cocos2d::KeyboardEvent(key));
cocos2d::GLViewImpl::sharedOpenGLView()->QueueEvent(e);
}
void KeyBoardWinRT::OnKeyPressed(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ args)
{
switch (args->Key)
{
case VirtualKey::Escape:
QueueKeyEvent(Cocos2dKeyEvent::Escape);
args->Handled = true;
break;
case VirtualKey::Back:
QueueKeyEvent(Cocos2dKeyEvent::Back);
args->Handled = true;
break;
case VirtualKey::Enter:
QueueKeyEvent(Cocos2dKeyEvent::Enter);
args->Handled = true;
break;
default:
break;
}
}
void KeyBoardWinRT::OnTextChanged(Platform::Object^ sender, TextChangedEventArgs^ args)
{
auto text = m_textBox->Text;
if (text)
{
std::shared_ptr<cocos2d::InputEvent> e(new cocos2d::KeyboardEvent(Cocos2dKeyEvent::Text, text));
cocos2d::GLViewImpl::sharedOpenGLView()->QueueEvent(e);
m_textBox->Text = L"";
}
}
void KeyBoardWinRT::OnKeyReleased(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ args)
{
//m_textBox->Text = L"";
}
NS_CC_END

View File

@ -0,0 +1,58 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2013-2014 Chukong Technologies Inc.
* Portions Copyright (c) Microsoft Open Technologies, Inc.
* All Rights Reserved
http://www.cocos2d-x.org
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.
****************************************************************************/
#pragma once
#include <agile.h>
NS_CC_BEGIN
ref class KeyBoardWinRT sealed
{
public:
KeyBoardWinRT();
virtual ~KeyBoardWinRT();
void ShowKeyboard(Platform::String^ text);
void HideKeyboard(Platform::String^ text);
internal:
KeyBoardWinRT(Windows::UI::Core::CoreDispatcher^ dispatcher, Windows::UI::Xaml::Controls::Panel^ panel);
private:
void QueueKeyEvent(Cocos2dKeyEvent key);
void OnKeyPressed(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ args);
void OnKeyReleased(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ args);
void OnTextChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::TextChangedEventArgs^ args);
Platform::Agile<Windows::UI::Core::CoreDispatcher> m_dispatcher;
Platform::Agile<Windows::UI::Xaml::Controls::Panel> m_panel;
Windows::UI::Xaml::Controls::TextBox^ m_textBox;
};
NS_CC_END

View File

@ -35,7 +35,6 @@ using namespace DirectX;
using namespace Microsoft::WRL; using namespace Microsoft::WRL;
using namespace Windows::Foundation; using namespace Windows::Foundation;
using namespace Windows::UI::Core; using namespace Windows::UI::Core;
using namespace PhoneDirect3DXamlAppComponent;
USING_NS_CC; USING_NS_CC;
@ -151,7 +150,7 @@ void Cocos2dRenderer::OnCocos2dKeyEvent(Cocos2dKeyEvent event)
} }
void Cocos2dRenderer::SetXamlEventDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEventDelegate^ delegate) void Cocos2dRenderer::SetXamlEventDelegate(Cocos2dEventDelegate^ delegate)
{ {
m_delegate = delegate; m_delegate = delegate;
GLViewImpl* eglView = GLViewImpl::sharedOpenGLView(); GLViewImpl* eglView = GLViewImpl::sharedOpenGLView();
@ -161,7 +160,7 @@ void Cocos2dRenderer::SetXamlEventDelegate(PhoneDirect3DXamlAppComponent::Cocos2
} }
} }
void Cocos2dRenderer::SetXamlMessageBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dMessageBoxDelegate^ delegate) void Cocos2dRenderer::SetXamlMessageBoxDelegate(Cocos2dMessageBoxDelegate^ delegate)
{ {
m_messageBoxDelegate = delegate; m_messageBoxDelegate = delegate;
GLViewImpl* eglView = GLViewImpl::sharedOpenGLView(); GLViewImpl* eglView = GLViewImpl::sharedOpenGLView();
@ -171,7 +170,7 @@ void Cocos2dRenderer::SetXamlMessageBoxDelegate(PhoneDirect3DXamlAppComponent::C
} }
} }
void Cocos2dRenderer::SetXamlEditBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEditBoxDelegate^ delegate) void Cocos2dRenderer::SetXamlEditBoxDelegate(Cocos2dEditBoxDelegate^ delegate)
{ {
m_editBoxDelegate = delegate; m_editBoxDelegate = delegate;
GLViewImpl* eglView = GLViewImpl::sharedOpenGLView(); GLViewImpl* eglView = GLViewImpl::sharedOpenGLView();
@ -181,7 +180,7 @@ void Cocos2dRenderer::SetXamlEditBoxDelegate(PhoneDirect3DXamlAppComponent::Coco
} }
} }
void Cocos2dRenderer::SetXamlOpenURLDelegate(PhoneDirect3DXamlAppComponent::Cocos2dOpenURLDelegate^ delegate) void Cocos2dRenderer::SetXamlOpenURLDelegate(Cocos2dOpenURLDelegate^ delegate)
{ {
m_openURLDelegate = delegate; m_openURLDelegate = delegate;
Application* app = Application::getInstance(); Application* app = Application::getInstance();

View File

@ -41,11 +41,11 @@ public:
void OnBackButton(); void OnBackButton();
void OnKeyPressed(Platform::String^ text); void OnKeyPressed(Platform::String^ text);
void OnCocos2dKeyEvent(PhoneDirect3DXamlAppComponent::Cocos2dKeyEvent event); void OnCocos2dKeyEvent(cocos2d::Cocos2dKeyEvent event);
void SetXamlEventDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEventDelegate^ delegate); void SetXamlEventDelegate(cocos2d::Cocos2dEventDelegate^ delegate);
void SetXamlMessageBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dMessageBoxDelegate^ delegate); void SetXamlMessageBoxDelegate(cocos2d::Cocos2dMessageBoxDelegate^ delegate);
void SetXamlEditBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEditBoxDelegate^ delegate); void SetXamlEditBoxDelegate(cocos2d::Cocos2dEditBoxDelegate^ delegate);
void SetXamlOpenURLDelegate(PhoneDirect3DXamlAppComponent::Cocos2dOpenURLDelegate^ delegate); void SetXamlOpenURLDelegate(cocos2d::Cocos2dOpenURLDelegate^ delegate);
Windows::Foundation::IAsyncAction^ OnSuspending(); Windows::Foundation::IAsyncAction^ OnSuspending();
void Connect(); void Connect();
@ -59,10 +59,10 @@ private:
bool m_loadingComplete; bool m_loadingComplete;
bool mInitialized; bool mInitialized;
PhoneDirect3DXamlAppComponent::Cocos2dEventDelegate^ m_delegate; cocos2d::Cocos2dEventDelegate^ m_delegate;
PhoneDirect3DXamlAppComponent::Cocos2dMessageBoxDelegate^ m_messageBoxDelegate; cocos2d::Cocos2dMessageBoxDelegate^ m_messageBoxDelegate;
PhoneDirect3DXamlAppComponent::Cocos2dEditBoxDelegate^ m_editBoxDelegate; cocos2d::Cocos2dEditBoxDelegate^ m_editBoxDelegate;
PhoneDirect3DXamlAppComponent::Cocos2dOpenURLDelegate^ m_openURLDelegate; cocos2d::Cocos2dOpenURLDelegate^ m_openURLDelegate;
// The AppDelegate for the Cocos2D app // The AppDelegate for the Cocos2D app
AppDelegate* mApp; AppDelegate* mApp;

View File

@ -26,7 +26,7 @@ THE SOFTWARE.
#include "Direct3DContentProvider.h" #include "Direct3DContentProvider.h"
#include "Direct3DInterop.h" #include "Direct3DInterop.h"
using namespace PhoneDirect3DXamlAppComponent; using namespace cocos2d;
Direct3DContentProvider::Direct3DContentProvider(Direct3DInterop^ controller) : Direct3DContentProvider::Direct3DContentProvider(Direct3DInterop^ controller) :
m_controller(controller) m_controller(controller)

View File

@ -37,7 +37,7 @@ class Direct3DContentProvider : public Microsoft::WRL::RuntimeClass<
IDrawingSurfaceBackgroundContentProviderNative> IDrawingSurfaceBackgroundContentProviderNative>
{ {
public: public:
Direct3DContentProvider(PhoneDirect3DXamlAppComponent::Direct3DInterop^ controller); Direct3DContentProvider(cocos2d::Direct3DInterop^ controller);
// IDrawingSurfaceContentProviderNative // IDrawingSurfaceContentProviderNative
HRESULT STDMETHODCALLTYPE Connect(_In_ IDrawingSurfaceRuntimeHostNative* host, _In_ ID3D11Device1* device); HRESULT STDMETHODCALLTYPE Connect(_In_ IDrawingSurfaceRuntimeHostNative* host, _In_ ID3D11Device1* device);
@ -47,6 +47,6 @@ public:
HRESULT STDMETHODCALLTYPE Draw(_In_ ID3D11Device1* device, _In_ ID3D11DeviceContext1* context, _In_ ID3D11RenderTargetView* renderTargetView); HRESULT STDMETHODCALLTYPE Draw(_In_ ID3D11Device1* device, _In_ ID3D11DeviceContext1* context, _In_ ID3D11RenderTargetView* renderTargetView);
private: private:
PhoneDirect3DXamlAppComponent::Direct3DInterop^ m_controller; cocos2d::Direct3DInterop^ m_controller;
Microsoft::WRL::ComPtr<IDrawingSurfaceRuntimeHostNative> m_host; Microsoft::WRL::ComPtr<IDrawingSurfaceRuntimeHostNative> m_host;
}; };

View File

@ -35,9 +35,8 @@ using namespace Windows::Phone::Graphics::Interop;
using namespace Windows::Phone::Input::Interop; using namespace Windows::Phone::Input::Interop;
using namespace Windows::Graphics::Display; using namespace Windows::Graphics::Display;
using namespace DirectX; using namespace DirectX;
using namespace PhoneDirect3DXamlAppComponent;
namespace PhoneDirect3DXamlAppComponent namespace cocos2d
{ {
Direct3DInterop::Direct3DInterop(Windows::Graphics::Display::DisplayOrientations orientation) Direct3DInterop::Direct3DInterop(Windows::Graphics::Display::DisplayOrientations orientation)

View File

@ -34,7 +34,7 @@ THE SOFTWARE.
#include <DrawingSurfaceNative.h> #include <DrawingSurfaceNative.h>
namespace PhoneDirect3DXamlAppComponent namespace cocos2d
{ {
public delegate void RequestAdditionalFrameHandler(); public delegate void RequestAdditionalFrameHandler();

View File

@ -26,9 +26,9 @@ THE SOFTWARE.
using namespace Platform; using namespace Platform;
namespace PhoneDirect3DXamlAppComponent namespace cocos2d
{ {
EditBoxEvent::EditBoxEvent( Object^ sender, Platform::String^ arg, Windows::Foundation::EventHandler<Platform::String^>^ handle ): EditBoxEvent::EditBoxEvent( Platform::Object^ sender, Platform::String^ arg, Windows::Foundation::EventHandler<Platform::String^>^ handle ):
m_sender(sender), m_sender(sender),
m_args(arg), m_args(arg),
m_handler(handle) m_handler(handle)

View File

@ -29,7 +29,7 @@ THE SOFTWARE.
#include <agile.h> #include <agile.h>
namespace PhoneDirect3DXamlAppComponent namespace cocos2d
{ {
class EditBoxEvent : public cocos2d::InputEvent class EditBoxEvent : public cocos2d::InputEvent
{ {

View File

@ -1,5 +1,5 @@
<Application <Application
x:Class="PhoneDirect3DXamlAppInterop.App" x:Class="cocos2d.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
@ -7,7 +7,7 @@
<!--Application Resources--> <!--Application Resources-->
<Application.Resources> <Application.Resources>
<local:LocalizedStrings xmlns:local="clr-namespace:PhoneDirect3DXamlAppInterop" x:Key="LocalizedStrings"/> <local:LocalizedStrings xmlns:local="clr-namespace:cocos2d" x:Key="LocalizedStrings"/>
</Application.Resources> </Application.Resources>
<Application.ApplicationLifetimeObjects> <Application.ApplicationLifetimeObjects>

View File

@ -7,9 +7,8 @@ using System.Windows.Navigation;
using Microsoft.Phone.Controls; using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell; using Microsoft.Phone.Shell;
using System.IO.IsolatedStorage; using System.IO.IsolatedStorage;
using PhoneDirect3DXamlAppInterop.Resources;
namespace PhoneDirect3DXamlAppInterop namespace cocos2d
{ {
public partial class App : Application public partial class App : Application
{ {

View File

@ -1,4 +1,4 @@
<UserControl x:Class="PhoneDirect3DXamlAppInterop.EditBox" <UserControl x:Class="cocos2d.EditBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

View File

@ -31,11 +31,10 @@ using System.Windows.Controls;
using System.Windows.Navigation; using System.Windows.Navigation;
using Microsoft.Phone.Controls; using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell; using Microsoft.Phone.Shell;
using PhoneDirect3DXamlAppComponent;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Input; using System.Windows.Input;
namespace PhoneDirect3DXamlAppInterop namespace cocos2d
{ {
public partial class EditBox : UserControl public partial class EditBox : UserControl
{ {

View File

@ -1,5 +1,5 @@
<phone:PhoneApplicationPage <phone:PhoneApplicationPage
x:Class="PhoneDirect3DXamlAppInterop.MainPage" x:Class="cocos2d.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"

View File

@ -16,7 +16,6 @@ using System.Windows.Media;
using System.Windows.Media.Animation; using System.Windows.Media.Animation;
using System.Windows.Shapes; using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Controls;
using PhoneDirect3DXamlAppComponent;
using System.Threading; using System.Threading;
using System.Diagnostics; using System.Diagnostics;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -27,7 +26,7 @@ using Microsoft.Phone.Info;
using Windows.Graphics.Display; using Windows.Graphics.Display;
using Microsoft.Phone.Tasks; using Microsoft.Phone.Tasks;
namespace PhoneDirect3DXamlAppInterop namespace cocos2d
{ {
public partial class MainPage : PhoneApplicationPage public partial class MainPage : PhoneApplicationPage
{ {
@ -141,13 +140,15 @@ namespace PhoneDirect3DXamlAppInterop
public void OnKeyUp(object sender, KeyEventArgs e) public void OnKeyUp(object sender, KeyEventArgs e)
{ {
m_d3dInterop.OnCocos2dKeyEvent(Cocos2dKeyEvent.Text, m_textBox.Text);
m_textBox.Text = "";
} }
public void OnTextChanged(object sender, TextChangedEventArgs e) public void OnTextChanged(object sender, TextChangedEventArgs e)
{ {
m_d3dInterop.OnCocos2dKeyEvent(Cocos2dKeyEvent.Text, m_textBox.Text); if (m_textBox.Text.Length > 0)
{
m_d3dInterop.OnCocos2dKeyEvent(Cocos2dKeyEvent.Text, m_textBox.Text);
m_textBox.Text = "";
}
} }
// Called by the Cocos2d-x C++ engine to display a MessageBox // Called by the Cocos2d-x C++ engine to display a MessageBox
@ -181,7 +182,6 @@ namespace PhoneDirect3DXamlAppInterop
m_textBox.TextChanged += OnTextChanged; m_textBox.TextChanged += OnTextChanged;
DrawingSurfaceBackground.Children.Add(m_textBox); DrawingSurfaceBackground.Children.Add(m_textBox);
} }
m_textBox.Text = text;
m_textBox.SelectionLength = 0; m_textBox.SelectionLength = 0;
m_textBox.SelectionStart = int.MaxValue; m_textBox.SelectionStart = int.MaxValue;
m_textBox.Focus(); m_textBox.Focus();

View File

@ -49,7 +49,6 @@ using namespace Windows::ApplicationModel::Activation;
using namespace Windows::Phone::UI::Core; using namespace Windows::Phone::UI::Core;
using namespace Platform; using namespace Platform;
using namespace Microsoft::WRL; using namespace Microsoft::WRL;
using namespace PhoneDirect3DXamlAppComponent;
NS_CC_BEGIN NS_CC_BEGIN

View File

@ -95,9 +95,9 @@ public:
void QueuePointerEvent(PointerEventType type, Windows::UI::Core::PointerEventArgs^ args); void QueuePointerEvent(PointerEventType type, Windows::UI::Core::PointerEventArgs^ args);
void GLViewImpl::QueueEvent(std::shared_ptr<InputEvent>& event); void GLViewImpl::QueueEvent(std::shared_ptr<InputEvent>& event);
void SetXamlEventDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEventDelegate^ delegate) { m_delegate = delegate; }; void SetXamlEventDelegate(Cocos2dEventDelegate^ delegate) { m_delegate = delegate; };
void SetXamlMessageBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dMessageBoxDelegate^ delegate) { m_messageBoxDelegate = delegate; }; void SetXamlMessageBoxDelegate(Cocos2dMessageBoxDelegate^ delegate) { m_messageBoxDelegate = delegate; };
void SetXamlEditBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEditBoxDelegate^ delegate) { m_editBoxDelegate = delegate; }; void SetXamlEditBoxDelegate(Cocos2dEditBoxDelegate^ delegate) { m_editBoxDelegate = delegate; };
bool ShowMessageBox(Platform::String^ title, Platform::String^ message); bool ShowMessageBox(Platform::String^ title, Platform::String^ message);
bool OpenXamlEditBox(Platform::String^ strPlaceHolder, Platform::String^ strText, int maxLength, int inputMode, int inputFlag, Windows::Foundation::EventHandler<Platform::String^>^ receiveHandler); bool OpenXamlEditBox(Platform::String^ strPlaceHolder, Platform::String^ strText, int maxLength, int inputMode, int inputFlag, Windows::Foundation::EventHandler<Platform::String^>^ receiveHandler);
@ -178,9 +178,9 @@ private:
EGLDisplay m_eglDisplay; EGLDisplay m_eglDisplay;
EGLContext m_eglContext; EGLContext m_eglContext;
EGLSurface m_eglSurface; EGLSurface m_eglSurface;
PhoneDirect3DXamlAppComponent::Cocos2dEventDelegate^ m_delegate; Cocos2dEventDelegate^ m_delegate;
PhoneDirect3DXamlAppComponent::Cocos2dMessageBoxDelegate^ m_messageBoxDelegate; Cocos2dMessageBoxDelegate^ m_messageBoxDelegate;
PhoneDirect3DXamlAppComponent::Cocos2dEditBoxDelegate^ m_editBoxDelegate; Cocos2dEditBoxDelegate^ m_editBoxDelegate;
std::queue<std::shared_ptr<InputEvent>> mInputEvents; std::queue<std::shared_ptr<InputEvent>> mInputEvents;
std::mutex mMutex; std::mutex mMutex;

File diff suppressed because it is too large Load Diff

View File

@ -45,13 +45,6 @@ THE SOFTWARE.
NS_CC_BEGIN NS_CC_BEGIN
typedef struct _hashUniformEntry
{
GLvoid* value; // value
unsigned int location; // Key
UT_hash_handle hh; // hash entry
} tHashUniformEntry;
const char* GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR = "ShaderPositionTextureColor"; const char* GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR = "ShaderPositionTextureColor";
const char* GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP = "ShaderPositionTextureColor_noMVP"; const char* GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP = "ShaderPositionTextureColor_noMVP";
const char* GLProgram::SHADER_NAME_POSITION_TEXTURE_ALPHA_TEST = "ShaderPositionTextureColorAlphaTest"; const char* GLProgram::SHADER_NAME_POSITION_TEXTURE_ALPHA_TEST = "ShaderPositionTextureColorAlphaTest";
@ -136,7 +129,6 @@ GLProgram::GLProgram()
: _program(0) : _program(0)
, _vertShader(0) , _vertShader(0)
, _fragShader(0) , _fragShader(0)
, _hashForUniforms(nullptr)
, _flags() , _flags()
{ {
memset(_builtInUniforms, 0, sizeof(_builtInUniforms)); memset(_builtInUniforms, 0, sizeof(_builtInUniforms));
@ -163,15 +155,11 @@ GLProgram::~GLProgram()
GL::deleteProgram(_program); GL::deleteProgram(_program);
} }
tHashUniformEntry *current_element, *tmp; for (auto e : _hashForUniforms)
// Purge uniform hash
HASH_ITER(hh, _hashForUniforms, current_element, tmp)
{ {
HASH_DEL(_hashForUniforms, current_element); free(e.second);
free(current_element->value);
free(current_element);
} }
_hashForUniforms.clear();
} }
bool GLProgram::initWithByteArrays(const GLchar* vShaderByteArray, const GLchar* fShaderByteArray) bool GLProgram::initWithByteArrays(const GLchar* vShaderByteArray, const GLchar* fShaderByteArray)
@ -222,7 +210,8 @@ bool GLProgram::initWithByteArrays(const GLchar* vShaderByteArray, const GLchar*
{ {
glAttachShader(_program, _fragShader); glAttachShader(_program, _fragShader);
} }
_hashForUniforms = nullptr;
_hashForUniforms.clear();
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
@ -260,7 +249,7 @@ bool GLProgram::initWithPrecompiledProgramByteArray(const GLchar* vShaderByteArr
haveProgram = CCPrecompiledShaders::getInstance()->loadProgram(_program, vShaderByteArray, fShaderByteArray); haveProgram = CCPrecompiledShaders::getInstance()->loadProgram(_program, vShaderByteArray, fShaderByteArray);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
_hashForUniforms = nullptr; _hashForUniforms.clear();
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
@ -418,7 +407,9 @@ bool GLProgram::compileShader(GLuint * shader, GLenum type, const GLchar* source
} }
const GLchar *sources[] = { const GLchar *sources[] = {
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32 && CC_TARGET_PLATFORM != CC_PLATFORM_LINUX && CC_TARGET_PLATFORM != CC_PLATFORM_MAC) #if CC_TARGET_PLATFORM == CC_PLATFORM_WINRT
(type == GL_VERTEX_SHADER ? "precision mediump float;\n precision mediump int;\n" : "precision mediump float;\n precision mediump int;\n"),
#elif (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32 && CC_TARGET_PLATFORM != CC_PLATFORM_LINUX && CC_TARGET_PLATFORM != CC_PLATFORM_MAC)
(type == GL_VERTEX_SHADER ? "precision highp float;\n precision highp int;\n" : "precision mediump float;\n precision mediump int;\n"), (type == GL_VERTEX_SHADER ? "precision highp float;\n precision highp int;\n" : "precision mediump float;\n precision mediump int;\n"),
#endif #endif
"uniform mat4 CC_PMatrix;\n" "uniform mat4 CC_PMatrix;\n"
@ -562,7 +553,7 @@ bool GLProgram::link()
_vertShader = _fragShader = 0; _vertShader = _fragShader = 0;
#if DEBUG || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) #if DEBUG || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
glGetProgramiv(_program, GL_LINK_STATUS, &status); glGetProgramiv(_program, GL_LINK_STATUS, &status);
if (status == GL_FALSE) if (status == GL_FALSE)
@ -631,31 +622,23 @@ bool GLProgram::updateUniformLocation(GLint location, const GLvoid* data, unsign
} }
bool updated = true; bool updated = true;
tHashUniformEntry *element = nullptr;
HASH_FIND_INT(_hashForUniforms, &location, element); auto element = _hashForUniforms.find(location);
if (element == _hashForUniforms.end())
if (! element)
{ {
element = (tHashUniformEntry*)malloc( sizeof(*element) ); GLvoid* value = malloc(bytes);
memcpy(value, data, bytes );
// key _hashForUniforms.insert(std::make_pair(location, value));
element->location = location;
// value
element->value = malloc( bytes );
memcpy(element->value, data, bytes );
HASH_ADD_INT(_hashForUniforms, location, element);
} }
else else
{ {
if (memcmp(element->value, data, bytes) == 0) if (memcmp(element->second, data, bytes) == 0)
{ {
updated = false; updated = false;
} }
else else
{ {
memcpy(element->value, data, bytes); memcpy(element->second, data, bytes);
} }
} }
@ -921,17 +904,12 @@ void GLProgram::reset()
//GL::deleteProgram(_program); //GL::deleteProgram(_program);
_program = 0; _program = 0;
for (auto e: _hashForUniforms)
tHashUniformEntry *current_element, *tmp;
// Purge uniform hash
HASH_ITER(hh, _hashForUniforms, current_element, tmp)
{ {
HASH_DEL(_hashForUniforms, current_element); free(e.second);
free(current_element->value);
free(current_element);
} }
_hashForUniforms = nullptr;
_hashForUniforms.clear();
} }
NS_CC_END NS_CC_END

View File

@ -45,7 +45,6 @@ NS_CC_BEGIN
* @{ * @{
*/ */
struct _hashUniformEntry;
class GLProgram; class GLProgram;
typedef void (*GLInfoFunction)(GLuint program, GLenum pname, GLint* params); typedef void (*GLInfoFunction)(GLuint program, GLenum pname, GLint* params);
@ -340,7 +339,6 @@ protected:
GLuint _vertShader; GLuint _vertShader;
GLuint _fragShader; GLuint _fragShader;
GLint _builtInUniforms[UNIFORM_MAX]; GLint _builtInUniforms[UNIFORM_MAX];
struct _hashUniformEntry* _hashForUniforms;
bool _hasShaderCompiler; bool _hasShaderCompiler;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || defined(WP8_SHADER_COMPILER) #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || defined(WP8_SHADER_COMPILER)
@ -360,6 +358,7 @@ protected:
std::unordered_map<std::string, Uniform> _userUniforms; std::unordered_map<std::string, Uniform> _userUniforms;
std::unordered_map<std::string, VertexAttrib> _vertexAttribs; std::unordered_map<std::string, VertexAttrib> _vertexAttribs;
std::unordered_map<GLint, GLvoid*> _hashForUniforms;
}; };
NS_CC_END NS_CC_END

View File

@ -31,7 +31,7 @@
#include "base/CCEventDispatcher.h" #include "base/CCEventDispatcher.h"
#include "base/CCEventType.h" #include "base/CCEventType.h"
#include "base/CCConfiguration.h" #include "base/CCConfiguration.h"
#include "base/CCLight.h" #include "2d/CCLight.h"
#include "renderer/ccGLStateCache.h" #include "renderer/ccGLStateCache.h"
#include "renderer/CCGLProgramState.h" #include "renderer/CCGLProgramState.h"
#include "renderer/CCRenderer.h" #include "renderer/CCRenderer.h"

View File

@ -40,7 +40,7 @@
#include "base/CCEventDispatcher.h" #include "base/CCEventDispatcher.h"
#include "base/CCEventListenerCustom.h" #include "base/CCEventListenerCustom.h"
#include "base/CCEventType.h" #include "base/CCEventType.h"
#include "base/CCCamera.h" #include "2d/CCCamera.h"
#include "2d/CCScene.h" #include "2d/CCScene.h"
NS_CC_BEGIN NS_CC_BEGIN

View File

@ -406,6 +406,7 @@ Texture2D* TextureCache::addImage(Image *image, const std::string &key)
bool TextureCache::reloadTexture(const std::string& fileName) bool TextureCache::reloadTexture(const std::string& fileName)
{ {
Texture2D * texture = nullptr; Texture2D * texture = nullptr;
Image * image = nullptr;
std::string fullpath = FileUtils::getInstance()->fullPathForFilename(fileName); std::string fullpath = FileUtils::getInstance()->fullPathForFilename(fileName);
if (fullpath.size() == 0) if (fullpath.size() == 0)
@ -426,7 +427,7 @@ bool TextureCache::reloadTexture(const std::string& fileName)
else else
{ {
do { do {
Image* image = new (std::nothrow) Image(); image = new (std::nothrow) Image();
CC_BREAK_IF(nullptr == image); CC_BREAK_IF(nullptr == image);
bool bRet = image->initWithImageFile(fullpath); bool bRet = image->initWithImageFile(fullpath);
@ -435,6 +436,8 @@ bool TextureCache::reloadTexture(const std::string& fileName)
ret = texture->initWithImage(image); ret = texture->initWithImage(image);
} while (0); } while (0);
} }
CC_SAFE_RELEASE(image);
return ret; return ret;
} }

View File

@ -100,28 +100,25 @@ void getPositionAndNormal(out vec4 position, out vec3 normal)
matrixPalette1 += u_matrixPalette[matrixIndex] * blendWeight; matrixPalette1 += u_matrixPalette[matrixIndex] * blendWeight;
matrixPalette2 += u_matrixPalette[matrixIndex + 1] * blendWeight; matrixPalette2 += u_matrixPalette[matrixIndex + 1] * blendWeight;
matrixPalette3 += u_matrixPalette[matrixIndex + 2] * blendWeight; matrixPalette3 += u_matrixPalette[matrixIndex + 2] * blendWeight;
blendWeight = a_blendWeight[2];
if (blendWeight > 0.0)
{
matrixIndex = int(a_blendIndex[2]) * 3;
matrixPalette1 += u_matrixPalette[matrixIndex] * blendWeight;
matrixPalette2 += u_matrixPalette[matrixIndex + 1] * blendWeight;
matrixPalette3 += u_matrixPalette[matrixIndex + 2] * blendWeight;
blendWeight = a_blendWeight[3];
if (blendWeight > 0.0)
{
matrixIndex = int(a_blendIndex[3]) * 3;
matrixPalette1 += u_matrixPalette[matrixIndex] * blendWeight;
matrixPalette2 += u_matrixPalette[matrixIndex + 1] * blendWeight;
matrixPalette3 += u_matrixPalette[matrixIndex + 2] * blendWeight;
}
}
} }
blendWeight = a_blendWeight[2];
if (blendWeight > 0.0)
{
matrixIndex = int(a_blendIndex[2]) * 3;
matrixPalette1 += u_matrixPalette[matrixIndex] * blendWeight;
matrixPalette2 += u_matrixPalette[matrixIndex + 1] * blendWeight;
matrixPalette3 += u_matrixPalette[matrixIndex + 2] * blendWeight;
}
blendWeight = a_blendWeight[3];
if (blendWeight > 0.0)
{
matrixIndex = int(a_blendIndex[3]) * 3;
matrixPalette1 += u_matrixPalette[matrixIndex] * blendWeight;
matrixPalette2 += u_matrixPalette[matrixIndex + 1] * blendWeight;
matrixPalette3 += u_matrixPalette[matrixIndex + 2] * blendWeight;
}
vec4 p = vec4(a_position, 1.0); vec4 p = vec4(a_position, 1.0);
position.x = dot(p, matrixPalette1); position.x = dot(p, matrixPalette1);

Some files were not shown because too many files have changed in this diff Show More