Merge branch 'fix_spritepolygon2' of https://github.com/Wu-Hao/cocos2d-x into spritepolygon

This commit is contained in:
pandamicro 2015-06-16 00:56:58 +08:00
commit ccd15b3da7
150 changed files with 5534 additions and 154 deletions

View File

@ -72,6 +72,7 @@ endif()
option(USE_CHIPMUNK "Use chipmunk for physics library" ON)
option(USE_BOX2D "Use box2d for physics library" OFF)
option(USE_BULLET "Use bullet for physics3d library" ON)
option(USE_RECAST "Use Recast for navigation mesh" ON)
option(USE_WEBP "Use WebP codec" ${USE_WEBP_DEFAULT})
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
option(DEBUG_MODE "Debug or release?" ON)
@ -267,6 +268,22 @@ else()
add_definitions(-DCC_USE_3D_PHYSICS=0)
endif(USE_BULLET)
# Recast (not prebuilded, exists as source)
if(USE_RECAST)
if(USE_PREBUILT_LIBS)
add_subdirectory(external/recast)
set(RECAST_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/recast)
set(RECAST_LIBRARIES recast)
else()
cocos_find_package(recast RECAST REQUIRED)
set(RECAST_LIBRARIES recast)
endif()
message(STATUS "Recast include dirs: ${RECAST_INCLUDE_DIRS}")
add_definitions(-DCC_USE_NAVMESH=1)
else()
add_definitions(-DCC_USE_NAVMESH=0)
endif(USE_RECAST)
# Tinyxml2 (not prebuilded, exists as source)
if(USE_PREBUILT_LIBS)
add_subdirectory(external/tinyxml2)

View File

@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 12.0.21005.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\cocos\2d\libcocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}"
EndProject
@ -16,6 +16,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "js-tests", "..\tests\js-tes
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet", "..\external\bullet\proj.win32\libbullet.vcxproj", "{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librecast", "..\external\recast\proj.win32\librecast.vcxproj", "{41E34993-647E-4282-8384-4AB1AE31A452}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
@ -60,6 +62,12 @@ Global
{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|ARM.ActiveCfg = Release|Win32
{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.ActiveCfg = Release|Win32
{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.Build.0 = Release|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Debug|ARM.ActiveCfg = Debug|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Debug|Win32.ActiveCfg = Debug|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Debug|Win32.Build.0 = Debug|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Release|ARM.ActiveCfg = Release|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Release|Win32.ActiveCfg = Release|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -68,6 +76,7 @@ Global
{B7C2A162-DEC9-4418-972E-240AB3CBFCAE} = {92D54E36-7916-48EF-A951-224DD3B25442}
{929480E7-23C0-4DF6-8456-096D71547116} = {92D54E36-7916-48EF-A951-224DD3B25442}
{012DFF48-A13F-4F52-B07B-F8B9D21CE95B} = {92D54E36-7916-48EF-A951-224DD3B25442}
{41E34993-647E-4282-8384-4AB1AE31A452} = {92D54E36-7916-48EF-A951-224DD3B25442}
EndGlobalSection
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}

View File

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30723.0
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 12.0.21005.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libcocos2d", "libcocos2d", "{B3F299D4-B4CA-4F0B-8BE2-FB328483BC13}"
EndProject
@ -53,14 +53,24 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet.Windows", "..\ext
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet.WindowsPhone", "..\external\bullet\proj.win8.1-universal\libbullet.WindowsPhone\libbullet.WindowsPhone.vcxproj", "{E35634BD-B91B-4A6D-B957-96F56DD065F9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "librecast", "librecast", "{B8419273-177E-467D-AE4F-002BFDF050BF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librecast.Shared", "..\external\recast\proj.win8.1-universal\librecast.Shared\librecast.Shared.vcxitems", "{F39A11FB-0D36-4B0A-91F1-345F1F0C9AA9}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librecast.Windows", "..\external\recast\proj.win8.1-universal\librecast.Windows\librecast.Windows.vcxproj", "{19E35654-A3EC-48FA-BB21-082A2356C87C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librecast.WindowsPhone", "..\external\recast\proj.win8.1-universal\librecast.WindowsPhone\librecast.WindowsPhone.vcxproj", "{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
..\tests\js-tests\project\proj.win8.1-universal\App.Shared\js-tests.Shared.vcxitems*{ae6763f6-1549-441e-afb5-377be1c776dc}*SharedItemsImports = 9
..\tests\js-tests\project\proj.win8.1-universal\App.Shared\js-tests.Shared.vcxitems*{94874b5b-398f-448a-a366-35a35dc1db9c}*SharedItemsImports = 4
..\cocos\2d\libcocos2d_8_1\libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems*{9335005f-678e-4e8e-9b84-50037216aec8}*SharedItemsImports = 4
..\external\recast\proj.win8.1-universal\librecast.Shared\librecast.Shared.vcxitems*{19e35654-a3ec-48fa-bb21-082a2356c87c}*SharedItemsImports = 4
..\tests\js-tests\project\proj.win8.1-universal\App.Shared\js-tests.Shared.vcxitems*{70914fc8-7709-4cd6-b86b-c63fde5478db}*SharedItemsImports = 4
..\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
..\external\recast\proj.win8.1-universal\librecast.Shared\librecast.Shared.vcxitems*{f39a11fb-0d36-4b0a-91f1-345f1f0c9aa9}*SharedItemsImports = 9
..\external\bullet\proj.win8.1-universal\libbullet.Shared\libbullet.Shared.vcxitems*{e35634bd-b91b-4a6d-b957-96f56dd065f9}*SharedItemsImports = 4
..\external\bullet\proj.win8.1-universal\libbullet.Shared\libbullet.Shared.vcxitems*{ec2b1292-2d8c-4feb-a84b-2550b32c1ae7}*SharedItemsImports = 4
..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Shared\libSpine.Shared.vcxitems*{adafd00d-a0d6-46ef-9f0b-ea2880bfe1de}*SharedItemsImports = 9
@ -73,6 +83,7 @@ Global
..\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
..\external\recast\proj.win8.1-universal\librecast.Shared\librecast.Shared.vcxitems*{d3bcfc1a-94bd-43b7-9c15-3f48ac6a9fac}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
@ -225,6 +236,28 @@ Global
{E35634BD-B91B-4A6D-B957-96F56DD065F9}.Release|Win32.ActiveCfg = Release|Win32
{E35634BD-B91B-4A6D-B957-96F56DD065F9}.Release|Win32.Build.0 = Release|Win32
{E35634BD-B91B-4A6D-B957-96F56DD065F9}.Release|x64.ActiveCfg = Release|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|ARM.ActiveCfg = Debug|ARM
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|ARM.Build.0 = Debug|ARM
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|Win32.ActiveCfg = Debug|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|Win32.Build.0 = Debug|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|x64.ActiveCfg = Debug|x64
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|x64.Build.0 = Debug|x64
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|ARM.ActiveCfg = Release|ARM
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|ARM.Build.0 = Release|ARM
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|Win32.ActiveCfg = Release|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|Win32.Build.0 = Release|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|x64.ActiveCfg = Release|x64
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|x64.Build.0 = Release|x64
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|ARM.ActiveCfg = Debug|ARM
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|ARM.Build.0 = Debug|ARM
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|Win32.ActiveCfg = Debug|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|Win32.Build.0 = Debug|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|x64.ActiveCfg = Debug|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|ARM.ActiveCfg = Release|ARM
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|ARM.Build.0 = Release|ARM
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|Win32.ActiveCfg = Release|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|Win32.Build.0 = Release|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -251,5 +284,9 @@ Global
{16AF311F-74CA-45A3-A82D-6334200FB124} = {9A66AB4C-057B-4675-849D-5D69B98C728C}
{EC2B1292-2D8C-4FEB-A84B-2550B32C1AE7} = {9A66AB4C-057B-4675-849D-5D69B98C728C}
{E35634BD-B91B-4A6D-B957-96F56DD065F9} = {9A66AB4C-057B-4675-849D-5D69B98C728C}
{B8419273-177E-467D-AE4F-002BFDF050BF} = {85630454-74EA-4B5B-9B62-0E459B4476CB}
{F39A11FB-0D36-4B0A-91F1-345F1F0C9AA9} = {B8419273-177E-467D-AE4F-002BFDF050BF}
{19E35654-A3EC-48FA-BB21-082A2356C87C} = {B8419273-177E-467D-AE4F-002BFDF050BF}
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC} = {B8419273-177E-467D-AE4F-002BFDF050BF}
EndGlobalSection
EndGlobal

View File

@ -1,7 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 12.0.21005.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpp-tests", "..\tests\cpp-tests\proj.win32\cpp-tests.vcxproj", "{76A39BB2-9B84-4C65-98A5-654D86B86F2A}"
EndProject
@ -26,6 +25,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d", "..\external\Box
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet", "..\external\bullet\proj.win32\libbullet.vcxproj", "{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librecast", "..\external\recast\proj.win32\librecast.vcxproj", "{41E34993-647E-4282-8384-4AB1AE31A452}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
@ -88,6 +89,12 @@ Global
{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|ARM.ActiveCfg = Release|Win32
{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.ActiveCfg = Release|Win32
{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.Build.0 = Release|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Debug|ARM.ActiveCfg = Debug|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Debug|Win32.ActiveCfg = Debug|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Debug|Win32.Build.0 = Debug|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Release|ARM.ActiveCfg = Release|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Release|Win32.ActiveCfg = Release|Win32
{41E34993-647E-4282-8384-4AB1AE31A452}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -96,6 +103,7 @@ Global
{B7C2A162-DEC9-4418-972E-240AB3CBFCAE} = {92D54E36-7916-48EF-A951-224DD3B25442}
{929480E7-23C0-4DF6-8456-096D71547116} = {92D54E36-7916-48EF-A951-224DD3B25442}
{012DFF48-A13F-4F52-B07B-F8B9D21CE95B} = {92D54E36-7916-48EF-A951-224DD3B25442}
{41E34993-647E-4282-8384-4AB1AE31A452} = {92D54E36-7916-48EF-A951-224DD3B25442}
EndGlobalSection
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}

View File

@ -53,13 +53,23 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet.Windows", "..\ext
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet.WindowsPhone", "..\external\bullet\proj.win8.1-universal\libbullet.WindowsPhone\libbullet.WindowsPhone.vcxproj", "{E35634BD-B91B-4A6D-B957-96F56DD065F9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "librecast", "librecast", "{F07894BD-4919-4C5F-9CCD-1B8168466573}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librecast.Shared", "..\external\recast\proj.win8.1-universal\librecast.Shared\librecast.Shared.vcxitems", "{F39A11FB-0D36-4B0A-91F1-345F1F0C9AA9}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librecast.Windows", "..\external\recast\proj.win8.1-universal\librecast.Windows\librecast.Windows.vcxproj", "{19E35654-A3EC-48FA-BB21-082A2356C87C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librecast.WindowsPhone", "..\external\recast\proj.win8.1-universal\librecast.WindowsPhone\librecast.WindowsPhone.vcxproj", "{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}"
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
..\external\recast\proj.win8.1-universal\librecast.Shared\librecast.Shared.vcxitems*{19e35654-a3ec-48fa-bb21-082a2356c87c}*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
..\external\recast\proj.win8.1-universal\librecast.Shared\librecast.Shared.vcxitems*{f39a11fb-0d36-4b0a-91f1-345f1f0c9aa9}*SharedItemsImports = 9
..\external\bullet\proj.win8.1-universal\libbullet.Shared\libbullet.Shared.vcxitems*{e35634bd-b91b-4a6d-b957-96f56dd065f9}*SharedItemsImports = 4
..\tests\cpp-empty-test\proj.win8.1-universal\HelloCpp.Shared\HelloCpp.Shared.vcxitems*{79a8fcda-4b12-4dd1-b676-ff148d651638}*SharedItemsImports = 4
..\external\bullet\proj.win8.1-universal\libbullet.Shared\libbullet.Shared.vcxitems*{ec2b1292-2d8c-4feb-a84b-2550b32c1ae7}*SharedItemsImports = 4
@ -72,6 +82,7 @@ Global
..\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
..\external\recast\proj.win8.1-universal\librecast.Shared\librecast.Shared.vcxitems*{d3bcfc1a-94bd-43b7-9c15-3f48ac6a9fac}*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
@ -235,6 +246,28 @@ Global
{E35634BD-B91B-4A6D-B957-96F56DD065F9}.Release|Win32.ActiveCfg = Release|Win32
{E35634BD-B91B-4A6D-B957-96F56DD065F9}.Release|Win32.Build.0 = Release|Win32
{E35634BD-B91B-4A6D-B957-96F56DD065F9}.Release|x64.ActiveCfg = Release|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|ARM.ActiveCfg = Debug|ARM
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|ARM.Build.0 = Debug|ARM
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|Win32.ActiveCfg = Debug|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|Win32.Build.0 = Debug|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|x64.ActiveCfg = Debug|x64
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Debug|x64.Build.0 = Debug|x64
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|ARM.ActiveCfg = Release|ARM
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|ARM.Build.0 = Release|ARM
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|Win32.ActiveCfg = Release|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|Win32.Build.0 = Release|Win32
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|x64.ActiveCfg = Release|x64
{19E35654-A3EC-48FA-BB21-082A2356C87C}.Release|x64.Build.0 = Release|x64
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|ARM.ActiveCfg = Debug|ARM
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|ARM.Build.0 = Debug|ARM
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|Win32.ActiveCfg = Debug|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|Win32.Build.0 = Debug|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Debug|x64.ActiveCfg = Debug|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|ARM.ActiveCfg = Release|ARM
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|ARM.Build.0 = Release|ARM
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|Win32.ActiveCfg = Release|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|Win32.Build.0 = Release|Win32
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -261,5 +294,9 @@ Global
{16AF311F-74CA-45A3-A82D-6334200FB124} = {0500043C-7E95-4351-97D6-0382A8C92DD3}
{EC2B1292-2D8C-4FEB-A84B-2550B32C1AE7} = {0500043C-7E95-4351-97D6-0382A8C92DD3}
{E35634BD-B91B-4A6D-B957-96F56DD065F9} = {0500043C-7E95-4351-97D6-0382A8C92DD3}
{F07894BD-4919-4C5F-9CCD-1B8168466573} = {85630454-74EA-4B5B-9B62-0E459B4476CB}
{F39A11FB-0D36-4B0A-91F1-345F1F0C9AA9} = {F07894BD-4919-4C5F-9CCD-1B8168466573}
{19E35654-A3EC-48FA-BB21-082A2356C87C} = {F07894BD-4919-4C5F-9CCD-1B8168466573}
{D3BCFC1A-94BD-43B7-9C15-3F48AC6A9FAC} = {F07894BD-4919-4C5F-9CCD-1B8168466573}
EndGlobalSection
EndGlobal

View File

@ -596,7 +596,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "#!/bin/bash\ncocos_dir=${SRCROOT}/../tests/js-tests/res\nif [ -d \"${cocos_dir}\" ]; then\nrm -rv \"${cocos_dir}\"\nmkdir \"${cocos_dir}\"\nelse\nmkdir \"${cocos_dir}\"\nfi\n\ncp -r \"${SRCROOT}/../tests/cpp-tests/Resources/\" \"${cocos_dir}\"\ncp -r \"${SRCROOT}/../tests/js-tests/resjs/\" \"${cocos_dir}\"";
shellScript = "#!/bin/bash\ncocos_dir=${SRCROOT}/../tests/js-tests/res\nif [ -d \"${cocos_dir}\" ]; then\nrm -rv \"${cocos_dir}\"\nmkdir \"${cocos_dir}\"\nelse\nmkdir \"${cocos_dir}\"\nfi\n\ncp -r \"${SRCROOT}/../tests/cpp-tests/Resources/\" \"${cocos_dir}\"\ncp -r \"${SRCROOT}/../tests/js-tests/resjs/\" \"${cocos_dir}/resjs\"";
};
EDCA13EE1AEA4E7B00F445CA /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
@ -609,7 +609,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "#!/bin/bash\ncocos_dir=${SRCROOT}/../tests/js-tests/res\nif [ -d \"${cocos_dir}\" ]; then\nrm -rv \"${cocos_dir}\"\nmkdir \"${cocos_dir}\"\nelse\nmkdir \"${cocos_dir}\"\nfi\n\ncp -r \"${SRCROOT}/../tests/cpp-tests/Resources/\" \"${cocos_dir}\"\ncp -r \"${SRCROOT}/../tests/js-tests/resjs/\" \"${cocos_dir}\"";
shellScript = "#!/bin/bash\ncocos_dir=${SRCROOT}/../tests/js-tests/res\nif [ -d \"${cocos_dir}\" ]; then\nrm -rv \"${cocos_dir}\"\nmkdir \"${cocos_dir}\"\nelse\nmkdir \"${cocos_dir}\"\nfi\n\ncp -r \"${SRCROOT}/../tests/cpp-tests/Resources/\" \"${cocos_dir}\"\ncp -r \"${SRCROOT}/../tests/js-tests/resjs/\" \"${cocos_dir}/resjs\"";
};
/* End PBXShellScriptBuildPhase section */

View File

@ -2609,6 +2609,26 @@
B665E43B1AA80A6600DDB1C5 /* CCPUVortexAffectorTranslator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B665E1F01AA80A6500DDB1C5 /* CCPUVortexAffectorTranslator.cpp */; };
B665E43C1AA80A6600DDB1C5 /* CCPUVortexAffectorTranslator.h in Headers */ = {isa = PBXBuildFile; fileRef = B665E1F11AA80A6500DDB1C5 /* CCPUVortexAffectorTranslator.h */; };
B665E43D1AA80A6600DDB1C5 /* CCPUVortexAffectorTranslator.h in Headers */ = {isa = PBXBuildFile; fileRef = B665E1F11AA80A6500DDB1C5 /* CCPUVortexAffectorTranslator.h */; };
B677B0C91B18492D006762CB /* CCNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0BF1B18492D006762CB /* CCNavMesh.cpp */; };
B677B0CA1B18492D006762CB /* CCNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0BF1B18492D006762CB /* CCNavMesh.cpp */; };
B677B0CB1B18492D006762CB /* CCNavMesh.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C01B18492D006762CB /* CCNavMesh.h */; };
B677B0CC1B18492D006762CB /* CCNavMesh.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C01B18492D006762CB /* CCNavMesh.h */; };
B677B0CD1B18492D006762CB /* CCNavMeshAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0C11B18492D006762CB /* CCNavMeshAgent.cpp */; };
B677B0CE1B18492D006762CB /* CCNavMeshAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0C11B18492D006762CB /* CCNavMeshAgent.cpp */; };
B677B0CF1B18492D006762CB /* CCNavMeshAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C21B18492D006762CB /* CCNavMeshAgent.h */; };
B677B0D01B18492D006762CB /* CCNavMeshAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C21B18492D006762CB /* CCNavMeshAgent.h */; };
B677B0D11B18492D006762CB /* CCNavMeshDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0C31B18492D006762CB /* CCNavMeshDebugDraw.cpp */; };
B677B0D21B18492D006762CB /* CCNavMeshDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0C31B18492D006762CB /* CCNavMeshDebugDraw.cpp */; };
B677B0D31B18492D006762CB /* CCNavMeshDebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C41B18492D006762CB /* CCNavMeshDebugDraw.h */; };
B677B0D41B18492D006762CB /* CCNavMeshDebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C41B18492D006762CB /* CCNavMeshDebugDraw.h */; };
B677B0D51B18492D006762CB /* CCNavMeshObstacle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0C51B18492D006762CB /* CCNavMeshObstacle.cpp */; };
B677B0D61B18492D006762CB /* CCNavMeshObstacle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0C51B18492D006762CB /* CCNavMeshObstacle.cpp */; };
B677B0D71B18492D006762CB /* CCNavMeshObstacle.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C61B18492D006762CB /* CCNavMeshObstacle.h */; };
B677B0D81B18492D006762CB /* CCNavMeshObstacle.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C61B18492D006762CB /* CCNavMeshObstacle.h */; };
B677B0D91B18492D006762CB /* CCNavMeshUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0C71B18492D006762CB /* CCNavMeshUtils.cpp */; };
B677B0DA1B18492D006762CB /* CCNavMeshUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B677B0C71B18492D006762CB /* CCNavMeshUtils.cpp */; };
B677B0DB1B18492D006762CB /* CCNavMeshUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C81B18492D006762CB /* CCNavMeshUtils.h */; };
B677B0DC1B18492D006762CB /* CCNavMeshUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = B677B0C81B18492D006762CB /* CCNavMeshUtils.h */; };
B68778F81A8CA82E00643ABF /* CCParticle3DAffector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B68778F01A8CA82E00643ABF /* CCParticle3DAffector.cpp */; };
B68778F91A8CA82E00643ABF /* CCParticle3DAffector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B68778F01A8CA82E00643ABF /* CCParticle3DAffector.cpp */; };
B68778FA1A8CA82E00643ABF /* CCParticle3DAffector.h in Headers */ = {isa = PBXBuildFile; fileRef = B68778F11A8CA82E00643ABF /* CCParticle3DAffector.h */; };
@ -3459,6 +3479,88 @@
B6D38B8F1AC3AFAC00043997 /* CCTextureCube.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6D38B881AC3AFAC00043997 /* CCTextureCube.cpp */; };
B6D38B901AC3AFAC00043997 /* CCTextureCube.h in Headers */ = {isa = PBXBuildFile; fileRef = B6D38B891AC3AFAC00043997 /* CCTextureCube.h */; };
B6D38B911AC3AFAC00043997 /* CCTextureCube.h in Headers */ = {isa = PBXBuildFile; fileRef = B6D38B891AC3AFAC00043997 /* CCTextureCube.h */; };
B6DD2FA71B04825B00E47F5F /* DebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F7A1B04825B00E47F5F /* DebugDraw.cpp */; };
B6DD2FA81B04825B00E47F5F /* DebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F7A1B04825B00E47F5F /* DebugDraw.cpp */; };
B6DD2FA91B04825B00E47F5F /* DebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F7B1B04825B00E47F5F /* DebugDraw.h */; };
B6DD2FAA1B04825B00E47F5F /* DebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F7B1B04825B00E47F5F /* DebugDraw.h */; };
B6DD2FAB1B04825B00E47F5F /* DetourDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F7C1B04825B00E47F5F /* DetourDebugDraw.cpp */; };
B6DD2FAC1B04825B00E47F5F /* DetourDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F7C1B04825B00E47F5F /* DetourDebugDraw.cpp */; };
B6DD2FAD1B04825B00E47F5F /* DetourDebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F7D1B04825B00E47F5F /* DetourDebugDraw.h */; };
B6DD2FAE1B04825B00E47F5F /* DetourDebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F7D1B04825B00E47F5F /* DetourDebugDraw.h */; };
B6DD2FAF1B04825B00E47F5F /* RecastDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F7E1B04825B00E47F5F /* RecastDebugDraw.cpp */; };
B6DD2FB01B04825B00E47F5F /* RecastDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F7E1B04825B00E47F5F /* RecastDebugDraw.cpp */; };
B6DD2FB11B04825B00E47F5F /* RecastDebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F7F1B04825B00E47F5F /* RecastDebugDraw.h */; };
B6DD2FB21B04825B00E47F5F /* RecastDebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F7F1B04825B00E47F5F /* RecastDebugDraw.h */; };
B6DD2FB31B04825B00E47F5F /* RecastDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F801B04825B00E47F5F /* RecastDump.cpp */; };
B6DD2FB41B04825B00E47F5F /* RecastDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F801B04825B00E47F5F /* RecastDump.cpp */; };
B6DD2FB51B04825B00E47F5F /* RecastDump.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F811B04825B00E47F5F /* RecastDump.h */; };
B6DD2FB61B04825B00E47F5F /* RecastDump.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F811B04825B00E47F5F /* RecastDump.h */; };
B6DD2FB71B04825B00E47F5F /* DetourAlloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F831B04825B00E47F5F /* DetourAlloc.cpp */; };
B6DD2FB81B04825B00E47F5F /* DetourAlloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F831B04825B00E47F5F /* DetourAlloc.cpp */; };
B6DD2FB91B04825B00E47F5F /* DetourAlloc.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F841B04825B00E47F5F /* DetourAlloc.h */; };
B6DD2FBA1B04825B00E47F5F /* DetourAlloc.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F841B04825B00E47F5F /* DetourAlloc.h */; };
B6DD2FBB1B04825B00E47F5F /* DetourAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F851B04825B00E47F5F /* DetourAssert.h */; };
B6DD2FBC1B04825B00E47F5F /* DetourAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F851B04825B00E47F5F /* DetourAssert.h */; };
B6DD2FBD1B04825B00E47F5F /* DetourCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F861B04825B00E47F5F /* DetourCommon.cpp */; };
B6DD2FBE1B04825B00E47F5F /* DetourCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F861B04825B00E47F5F /* DetourCommon.cpp */; };
B6DD2FBF1B04825B00E47F5F /* DetourCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F871B04825B00E47F5F /* DetourCommon.h */; };
B6DD2FC01B04825B00E47F5F /* DetourCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F871B04825B00E47F5F /* DetourCommon.h */; };
B6DD2FC11B04825B00E47F5F /* DetourMath.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F881B04825B00E47F5F /* DetourMath.h */; };
B6DD2FC21B04825B00E47F5F /* DetourMath.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F881B04825B00E47F5F /* DetourMath.h */; };
B6DD2FC31B04825B00E47F5F /* DetourNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F891B04825B00E47F5F /* DetourNavMesh.cpp */; };
B6DD2FC41B04825B00E47F5F /* DetourNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F891B04825B00E47F5F /* DetourNavMesh.cpp */; };
B6DD2FC51B04825B00E47F5F /* DetourNavMesh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F8A1B04825B00E47F5F /* DetourNavMesh.h */; };
B6DD2FC61B04825B00E47F5F /* DetourNavMesh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F8A1B04825B00E47F5F /* DetourNavMesh.h */; };
B6DD2FC71B04825B00E47F5F /* DetourNavMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F8B1B04825B00E47F5F /* DetourNavMeshBuilder.cpp */; };
B6DD2FC81B04825B00E47F5F /* DetourNavMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F8B1B04825B00E47F5F /* DetourNavMeshBuilder.cpp */; };
B6DD2FC91B04825B00E47F5F /* DetourNavMeshBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F8C1B04825B00E47F5F /* DetourNavMeshBuilder.h */; };
B6DD2FCA1B04825B00E47F5F /* DetourNavMeshBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F8C1B04825B00E47F5F /* DetourNavMeshBuilder.h */; };
B6DD2FCB1B04825B00E47F5F /* DetourNavMeshQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F8D1B04825B00E47F5F /* DetourNavMeshQuery.cpp */; };
B6DD2FCC1B04825B00E47F5F /* DetourNavMeshQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F8D1B04825B00E47F5F /* DetourNavMeshQuery.cpp */; };
B6DD2FCD1B04825B00E47F5F /* DetourNavMeshQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F8E1B04825B00E47F5F /* DetourNavMeshQuery.h */; };
B6DD2FCE1B04825B00E47F5F /* DetourNavMeshQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F8E1B04825B00E47F5F /* DetourNavMeshQuery.h */; };
B6DD2FCF1B04825B00E47F5F /* DetourNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F8F1B04825B00E47F5F /* DetourNode.cpp */; };
B6DD2FD01B04825B00E47F5F /* DetourNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F8F1B04825B00E47F5F /* DetourNode.cpp */; };
B6DD2FD11B04825B00E47F5F /* DetourNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F901B04825B00E47F5F /* DetourNode.h */; };
B6DD2FD21B04825B00E47F5F /* DetourNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F901B04825B00E47F5F /* DetourNode.h */; };
B6DD2FD31B04825B00E47F5F /* DetourStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F911B04825B00E47F5F /* DetourStatus.h */; };
B6DD2FD41B04825B00E47F5F /* DetourStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F911B04825B00E47F5F /* DetourStatus.h */; };
B6DD2FD51B04825B00E47F5F /* DetourCrowd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F931B04825B00E47F5F /* DetourCrowd.cpp */; };
B6DD2FD61B04825B00E47F5F /* DetourCrowd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F931B04825B00E47F5F /* DetourCrowd.cpp */; };
B6DD2FD71B04825B00E47F5F /* DetourCrowd.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F941B04825B00E47F5F /* DetourCrowd.h */; };
B6DD2FD81B04825B00E47F5F /* DetourCrowd.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F941B04825B00E47F5F /* DetourCrowd.h */; };
B6DD2FD91B04825B00E47F5F /* DetourLocalBoundary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F951B04825B00E47F5F /* DetourLocalBoundary.cpp */; };
B6DD2FDA1B04825B00E47F5F /* DetourLocalBoundary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F951B04825B00E47F5F /* DetourLocalBoundary.cpp */; };
B6DD2FDB1B04825B00E47F5F /* DetourLocalBoundary.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F961B04825B00E47F5F /* DetourLocalBoundary.h */; };
B6DD2FDC1B04825B00E47F5F /* DetourLocalBoundary.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F961B04825B00E47F5F /* DetourLocalBoundary.h */; };
B6DD2FDD1B04825B00E47F5F /* DetourObstacleAvoidance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F971B04825B00E47F5F /* DetourObstacleAvoidance.cpp */; };
B6DD2FDE1B04825B00E47F5F /* DetourObstacleAvoidance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F971B04825B00E47F5F /* DetourObstacleAvoidance.cpp */; };
B6DD2FDF1B04825B00E47F5F /* DetourObstacleAvoidance.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F981B04825B00E47F5F /* DetourObstacleAvoidance.h */; };
B6DD2FE01B04825B00E47F5F /* DetourObstacleAvoidance.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F981B04825B00E47F5F /* DetourObstacleAvoidance.h */; };
B6DD2FE11B04825B00E47F5F /* DetourPathCorridor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F991B04825B00E47F5F /* DetourPathCorridor.cpp */; };
B6DD2FE21B04825B00E47F5F /* DetourPathCorridor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F991B04825B00E47F5F /* DetourPathCorridor.cpp */; };
B6DD2FE31B04825B00E47F5F /* DetourPathCorridor.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F9A1B04825B00E47F5F /* DetourPathCorridor.h */; };
B6DD2FE41B04825B00E47F5F /* DetourPathCorridor.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F9A1B04825B00E47F5F /* DetourPathCorridor.h */; };
B6DD2FE51B04825B00E47F5F /* DetourPathQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F9B1B04825B00E47F5F /* DetourPathQueue.cpp */; };
B6DD2FE61B04825B00E47F5F /* DetourPathQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F9B1B04825B00E47F5F /* DetourPathQueue.cpp */; };
B6DD2FE71B04825B00E47F5F /* DetourPathQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F9C1B04825B00E47F5F /* DetourPathQueue.h */; };
B6DD2FE81B04825B00E47F5F /* DetourPathQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F9C1B04825B00E47F5F /* DetourPathQueue.h */; };
B6DD2FE91B04825B00E47F5F /* DetourProximityGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F9D1B04825B00E47F5F /* DetourProximityGrid.cpp */; };
B6DD2FEA1B04825B00E47F5F /* DetourProximityGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2F9D1B04825B00E47F5F /* DetourProximityGrid.cpp */; };
B6DD2FEB1B04825B00E47F5F /* DetourProximityGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F9E1B04825B00E47F5F /* DetourProximityGrid.h */; };
B6DD2FEC1B04825B00E47F5F /* DetourProximityGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2F9E1B04825B00E47F5F /* DetourProximityGrid.h */; };
B6DD2FED1B04825B00E47F5F /* DetourTileCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2FA01B04825B00E47F5F /* DetourTileCache.cpp */; };
B6DD2FEE1B04825B00E47F5F /* DetourTileCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2FA01B04825B00E47F5F /* DetourTileCache.cpp */; };
B6DD2FEF1B04825B00E47F5F /* DetourTileCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2FA11B04825B00E47F5F /* DetourTileCache.h */; };
B6DD2FF01B04825B00E47F5F /* DetourTileCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2FA11B04825B00E47F5F /* DetourTileCache.h */; };
B6DD2FF11B04825B00E47F5F /* DetourTileCacheBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2FA21B04825B00E47F5F /* DetourTileCacheBuilder.cpp */; };
B6DD2FF21B04825B00E47F5F /* DetourTileCacheBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2FA21B04825B00E47F5F /* DetourTileCacheBuilder.cpp */; };
B6DD2FF31B04825B00E47F5F /* DetourTileCacheBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2FA31B04825B00E47F5F /* DetourTileCacheBuilder.h */; };
B6DD2FF41B04825B00E47F5F /* DetourTileCacheBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2FA31B04825B00E47F5F /* DetourTileCacheBuilder.h */; };
B6DD2FF51B04825B00E47F5F /* fastlz.c in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2FA51B04825B00E47F5F /* fastlz.c */; };
B6DD2FF61B04825B00E47F5F /* fastlz.c in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2FA51B04825B00E47F5F /* fastlz.c */; };
B6DD2FF71B04825B00E47F5F /* fastlz.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2FA61B04825B00E47F5F /* fastlz.h */; };
B6DD2FF81B04825B00E47F5F /* fastlz.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD2FA61B04825B00E47F5F /* fastlz.h */; };
D0FD03491A3B51AA00825BB5 /* CCAllocatorBase.h in Headers */ = {isa = PBXBuildFile; fileRef = D0FD033B1A3B51AA00825BB5 /* CCAllocatorBase.h */; };
D0FD034A1A3B51AA00825BB5 /* CCAllocatorBase.h in Headers */ = {isa = PBXBuildFile; fileRef = D0FD033B1A3B51AA00825BB5 /* CCAllocatorBase.h */; };
D0FD034B1A3B51AA00825BB5 /* CCAllocatorDiagnostics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0FD033C1A3B51AA00825BB5 /* CCAllocatorDiagnostics.cpp */; };
@ -4892,6 +4994,16 @@
B665E1EF1AA80A6500DDB1C5 /* CCPUVortexAffector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPUVortexAffector.h; path = Particle3D/PU/CCPUVortexAffector.h; sourceTree = "<group>"; };
B665E1F01AA80A6500DDB1C5 /* CCPUVortexAffectorTranslator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCPUVortexAffectorTranslator.cpp; path = Particle3D/PU/CCPUVortexAffectorTranslator.cpp; sourceTree = "<group>"; };
B665E1F11AA80A6500DDB1C5 /* CCPUVortexAffectorTranslator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPUVortexAffectorTranslator.h; path = Particle3D/PU/CCPUVortexAffectorTranslator.h; sourceTree = "<group>"; };
B677B0BF1B18492D006762CB /* CCNavMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCNavMesh.cpp; path = ../cocos/navmesh/CCNavMesh.cpp; sourceTree = "<group>"; };
B677B0C01B18492D006762CB /* CCNavMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCNavMesh.h; path = ../cocos/navmesh/CCNavMesh.h; sourceTree = "<group>"; };
B677B0C11B18492D006762CB /* CCNavMeshAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCNavMeshAgent.cpp; path = ../cocos/navmesh/CCNavMeshAgent.cpp; sourceTree = "<group>"; };
B677B0C21B18492D006762CB /* CCNavMeshAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCNavMeshAgent.h; path = ../cocos/navmesh/CCNavMeshAgent.h; sourceTree = "<group>"; };
B677B0C31B18492D006762CB /* CCNavMeshDebugDraw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCNavMeshDebugDraw.cpp; path = ../cocos/navmesh/CCNavMeshDebugDraw.cpp; sourceTree = "<group>"; };
B677B0C41B18492D006762CB /* CCNavMeshDebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCNavMeshDebugDraw.h; path = ../cocos/navmesh/CCNavMeshDebugDraw.h; sourceTree = "<group>"; };
B677B0C51B18492D006762CB /* CCNavMeshObstacle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCNavMeshObstacle.cpp; path = ../cocos/navmesh/CCNavMeshObstacle.cpp; sourceTree = "<group>"; };
B677B0C61B18492D006762CB /* CCNavMeshObstacle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCNavMeshObstacle.h; path = ../cocos/navmesh/CCNavMeshObstacle.h; sourceTree = "<group>"; };
B677B0C71B18492D006762CB /* CCNavMeshUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCNavMeshUtils.cpp; path = ../cocos/navmesh/CCNavMeshUtils.cpp; sourceTree = "<group>"; };
B677B0C81B18492D006762CB /* CCNavMeshUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCNavMeshUtils.h; path = ../cocos/navmesh/CCNavMeshUtils.h; sourceTree = "<group>"; };
B67C624319D4186F00F11FC6 /* ccShader_3D_ColorNormal.frag */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_ColorNormal.frag; sourceTree = "<group>"; };
B67C624419D4186F00F11FC6 /* ccShader_3D_ColorNormalTex.frag */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_ColorNormalTex.frag; sourceTree = "<group>"; };
B67C624519D4186F00F11FC6 /* ccShader_3D_PositionNormalTex.vert */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_PositionNormalTex.vert; sourceTree = "<group>"; };
@ -5324,6 +5436,47 @@
B6D38B951AC3B45600043997 /* ccShader_3D_Particle.vert */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_Particle.vert; sourceTree = "<group>"; };
B6D38B961AC3B45600043997 /* ccShader_3D_Skybox.frag */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_Skybox.frag; sourceTree = "<group>"; };
B6D38B971AC3B45600043997 /* ccShader_3D_Skybox.vert */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_Skybox.vert; sourceTree = "<group>"; };
B6DD2F7A1B04825B00E47F5F /* DebugDraw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebugDraw.cpp; sourceTree = "<group>"; };
B6DD2F7B1B04825B00E47F5F /* DebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugDraw.h; sourceTree = "<group>"; };
B6DD2F7C1B04825B00E47F5F /* DetourDebugDraw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourDebugDraw.cpp; sourceTree = "<group>"; };
B6DD2F7D1B04825B00E47F5F /* DetourDebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourDebugDraw.h; sourceTree = "<group>"; };
B6DD2F7E1B04825B00E47F5F /* RecastDebugDraw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RecastDebugDraw.cpp; sourceTree = "<group>"; };
B6DD2F7F1B04825B00E47F5F /* RecastDebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecastDebugDraw.h; sourceTree = "<group>"; };
B6DD2F801B04825B00E47F5F /* RecastDump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RecastDump.cpp; sourceTree = "<group>"; };
B6DD2F811B04825B00E47F5F /* RecastDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecastDump.h; sourceTree = "<group>"; };
B6DD2F831B04825B00E47F5F /* DetourAlloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourAlloc.cpp; sourceTree = "<group>"; };
B6DD2F841B04825B00E47F5F /* DetourAlloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourAlloc.h; sourceTree = "<group>"; };
B6DD2F851B04825B00E47F5F /* DetourAssert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourAssert.h; sourceTree = "<group>"; };
B6DD2F861B04825B00E47F5F /* DetourCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourCommon.cpp; sourceTree = "<group>"; };
B6DD2F871B04825B00E47F5F /* DetourCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourCommon.h; sourceTree = "<group>"; };
B6DD2F881B04825B00E47F5F /* DetourMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourMath.h; sourceTree = "<group>"; };
B6DD2F891B04825B00E47F5F /* DetourNavMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourNavMesh.cpp; sourceTree = "<group>"; };
B6DD2F8A1B04825B00E47F5F /* DetourNavMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourNavMesh.h; sourceTree = "<group>"; };
B6DD2F8B1B04825B00E47F5F /* DetourNavMeshBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourNavMeshBuilder.cpp; sourceTree = "<group>"; };
B6DD2F8C1B04825B00E47F5F /* DetourNavMeshBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourNavMeshBuilder.h; sourceTree = "<group>"; };
B6DD2F8D1B04825B00E47F5F /* DetourNavMeshQuery.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourNavMeshQuery.cpp; sourceTree = "<group>"; };
B6DD2F8E1B04825B00E47F5F /* DetourNavMeshQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourNavMeshQuery.h; sourceTree = "<group>"; };
B6DD2F8F1B04825B00E47F5F /* DetourNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourNode.cpp; sourceTree = "<group>"; };
B6DD2F901B04825B00E47F5F /* DetourNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourNode.h; sourceTree = "<group>"; };
B6DD2F911B04825B00E47F5F /* DetourStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourStatus.h; sourceTree = "<group>"; };
B6DD2F931B04825B00E47F5F /* DetourCrowd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourCrowd.cpp; sourceTree = "<group>"; };
B6DD2F941B04825B00E47F5F /* DetourCrowd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourCrowd.h; sourceTree = "<group>"; };
B6DD2F951B04825B00E47F5F /* DetourLocalBoundary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourLocalBoundary.cpp; sourceTree = "<group>"; };
B6DD2F961B04825B00E47F5F /* DetourLocalBoundary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourLocalBoundary.h; sourceTree = "<group>"; };
B6DD2F971B04825B00E47F5F /* DetourObstacleAvoidance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourObstacleAvoidance.cpp; sourceTree = "<group>"; };
B6DD2F981B04825B00E47F5F /* DetourObstacleAvoidance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourObstacleAvoidance.h; sourceTree = "<group>"; };
B6DD2F991B04825B00E47F5F /* DetourPathCorridor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourPathCorridor.cpp; sourceTree = "<group>"; };
B6DD2F9A1B04825B00E47F5F /* DetourPathCorridor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourPathCorridor.h; sourceTree = "<group>"; };
B6DD2F9B1B04825B00E47F5F /* DetourPathQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourPathQueue.cpp; sourceTree = "<group>"; };
B6DD2F9C1B04825B00E47F5F /* DetourPathQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourPathQueue.h; sourceTree = "<group>"; };
B6DD2F9D1B04825B00E47F5F /* DetourProximityGrid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourProximityGrid.cpp; sourceTree = "<group>"; };
B6DD2F9E1B04825B00E47F5F /* DetourProximityGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourProximityGrid.h; sourceTree = "<group>"; };
B6DD2FA01B04825B00E47F5F /* DetourTileCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourTileCache.cpp; sourceTree = "<group>"; };
B6DD2FA11B04825B00E47F5F /* DetourTileCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourTileCache.h; sourceTree = "<group>"; };
B6DD2FA21B04825B00E47F5F /* DetourTileCacheBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetourTileCacheBuilder.cpp; sourceTree = "<group>"; };
B6DD2FA31B04825B00E47F5F /* DetourTileCacheBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetourTileCacheBuilder.h; sourceTree = "<group>"; };
B6DD2FA51B04825B00E47F5F /* fastlz.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fastlz.c; sourceTree = "<group>"; };
B6DD2FA61B04825B00E47F5F /* fastlz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fastlz.h; sourceTree = "<group>"; };
D0FD033B1A3B51AA00825BB5 /* CCAllocatorBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAllocatorBase.h; sourceTree = "<group>"; };
D0FD033C1A3B51AA00825BB5 /* CCAllocatorDiagnostics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCAllocatorDiagnostics.cpp; sourceTree = "<group>"; };
D0FD033D1A3B51AA00825BB5 /* CCAllocatorDiagnostics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAllocatorDiagnostics.h; sourceTree = "<group>"; };
@ -5430,6 +5583,7 @@
1A57033E180BD0490088DEC7 /* external */,
1551A341158F2AB200E66CFE /* Frameworks */,
46A170851807CE87005B8026 /* math */,
B6DD2F351B04805400E47F5F /* navmesh */,
1AAF5360180E3374000584C8 /* network */,
46A170611807CE7A005B8026 /* physics */,
B6CAAFD11AF9A98E00B9B856 /* physics3d */,
@ -5928,6 +6082,7 @@
isa = PBXGroup;
children = (
68B39B391B1C5C670084F72C /* clipper */,
B6DD2F731B04820C00E47F5F /* recast */,
B6CAB0021AF9A9EE00B9B856 /* bullet */,
15FB20781AE7C57D00C31518 /* poly2tri */,
382383E11A258FA7002C4610 /* flatbuffers */,
@ -8520,6 +8675,116 @@
path = MiniCLTask;
sourceTree = "<group>";
};
B6DD2F351B04805400E47F5F /* navmesh */ = {
isa = PBXGroup;
children = (
B677B0BF1B18492D006762CB /* CCNavMesh.cpp */,
B677B0C01B18492D006762CB /* CCNavMesh.h */,
B677B0C11B18492D006762CB /* CCNavMeshAgent.cpp */,
B677B0C21B18492D006762CB /* CCNavMeshAgent.h */,
B677B0C31B18492D006762CB /* CCNavMeshDebugDraw.cpp */,
B677B0C41B18492D006762CB /* CCNavMeshDebugDraw.h */,
B677B0C51B18492D006762CB /* CCNavMeshObstacle.cpp */,
B677B0C61B18492D006762CB /* CCNavMeshObstacle.h */,
B677B0C71B18492D006762CB /* CCNavMeshUtils.cpp */,
B677B0C81B18492D006762CB /* CCNavMeshUtils.h */,
);
name = navmesh;
sourceTree = "<group>";
};
B6DD2F731B04820C00E47F5F /* recast */ = {
isa = PBXGroup;
children = (
B6DD2F791B04825B00E47F5F /* DebugUtils */,
B6DD2F821B04825B00E47F5F /* Detour */,
B6DD2F921B04825B00E47F5F /* DetourCrowd */,
B6DD2F9F1B04825B00E47F5F /* DetourTileCache */,
B6DD2FA41B04825B00E47F5F /* fastlz */,
);
name = recast;
sourceTree = "<group>";
};
B6DD2F791B04825B00E47F5F /* DebugUtils */ = {
isa = PBXGroup;
children = (
B6DD2F7A1B04825B00E47F5F /* DebugDraw.cpp */,
B6DD2F7B1B04825B00E47F5F /* DebugDraw.h */,
B6DD2F7C1B04825B00E47F5F /* DetourDebugDraw.cpp */,
B6DD2F7D1B04825B00E47F5F /* DetourDebugDraw.h */,
B6DD2F7E1B04825B00E47F5F /* RecastDebugDraw.cpp */,
B6DD2F7F1B04825B00E47F5F /* RecastDebugDraw.h */,
B6DD2F801B04825B00E47F5F /* RecastDump.cpp */,
B6DD2F811B04825B00E47F5F /* RecastDump.h */,
);
name = DebugUtils;
path = ../external/recast/DebugUtils;
sourceTree = "<group>";
};
B6DD2F821B04825B00E47F5F /* Detour */ = {
isa = PBXGroup;
children = (
B6DD2F831B04825B00E47F5F /* DetourAlloc.cpp */,
B6DD2F841B04825B00E47F5F /* DetourAlloc.h */,
B6DD2F851B04825B00E47F5F /* DetourAssert.h */,
B6DD2F861B04825B00E47F5F /* DetourCommon.cpp */,
B6DD2F871B04825B00E47F5F /* DetourCommon.h */,
B6DD2F881B04825B00E47F5F /* DetourMath.h */,
B6DD2F891B04825B00E47F5F /* DetourNavMesh.cpp */,
B6DD2F8A1B04825B00E47F5F /* DetourNavMesh.h */,
B6DD2F8B1B04825B00E47F5F /* DetourNavMeshBuilder.cpp */,
B6DD2F8C1B04825B00E47F5F /* DetourNavMeshBuilder.h */,
B6DD2F8D1B04825B00E47F5F /* DetourNavMeshQuery.cpp */,
B6DD2F8E1B04825B00E47F5F /* DetourNavMeshQuery.h */,
B6DD2F8F1B04825B00E47F5F /* DetourNode.cpp */,
B6DD2F901B04825B00E47F5F /* DetourNode.h */,
B6DD2F911B04825B00E47F5F /* DetourStatus.h */,
);
name = Detour;
path = ../external/recast/Detour;
sourceTree = "<group>";
};
B6DD2F921B04825B00E47F5F /* DetourCrowd */ = {
isa = PBXGroup;
children = (
B6DD2F931B04825B00E47F5F /* DetourCrowd.cpp */,
B6DD2F941B04825B00E47F5F /* DetourCrowd.h */,
B6DD2F951B04825B00E47F5F /* DetourLocalBoundary.cpp */,
B6DD2F961B04825B00E47F5F /* DetourLocalBoundary.h */,
B6DD2F971B04825B00E47F5F /* DetourObstacleAvoidance.cpp */,
B6DD2F981B04825B00E47F5F /* DetourObstacleAvoidance.h */,
B6DD2F991B04825B00E47F5F /* DetourPathCorridor.cpp */,
B6DD2F9A1B04825B00E47F5F /* DetourPathCorridor.h */,
B6DD2F9B1B04825B00E47F5F /* DetourPathQueue.cpp */,
B6DD2F9C1B04825B00E47F5F /* DetourPathQueue.h */,
B6DD2F9D1B04825B00E47F5F /* DetourProximityGrid.cpp */,
B6DD2F9E1B04825B00E47F5F /* DetourProximityGrid.h */,
);
name = DetourCrowd;
path = ../external/recast/DetourCrowd;
sourceTree = "<group>";
};
B6DD2F9F1B04825B00E47F5F /* DetourTileCache */ = {
isa = PBXGroup;
children = (
B6DD2FA01B04825B00E47F5F /* DetourTileCache.cpp */,
B6DD2FA11B04825B00E47F5F /* DetourTileCache.h */,
B6DD2FA21B04825B00E47F5F /* DetourTileCacheBuilder.cpp */,
B6DD2FA31B04825B00E47F5F /* DetourTileCacheBuilder.h */,
);
name = DetourTileCache;
path = ../external/recast/DetourTileCache;
sourceTree = "<group>";
};
B6DD2FA41B04825B00E47F5F /* fastlz */ = {
isa = PBXGroup;
children = (
B6DD2FA51B04825B00E47F5F /* fastlz.c */,
B6DD2FA61B04825B00E47F5F /* fastlz.h */,
);
name = fastlz;
path = ../external/recast/fastlz;
sourceTree = "<group>";
};
D0FD03391A3B51AA00825BB5 /* allocator */ = {
isa = PBXGroup;
children = (
@ -8621,12 +8886,15 @@
50ABBD3E1925AB0000A911A9 /* CCGeometry.h in Headers */,
B6CAB34F1AF9AA1A00B9B856 /* gim_geom_types.h in Headers */,
15AE1A7719AAD40300C27E9E /* b2EdgeAndPolygonContact.h in Headers */,
B6DD2FD11B04825B00E47F5F /* DetourNode.h in Headers */,
15AE18F719AAD35000C27E9E /* CCBatchNode.h in Headers */,
15AE181419AAD2F700C27E9E /* CCAnimationCurve.h in Headers */,
50ABBE631925AB6F00A911A9 /* CCEventListenerAcceleration.h in Headers */,
B665E4281AA80A6600DDB1C5 /* CCPUUtil.h in Headers */,
B665E2601AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandlerTranslator.h in Headers */,
15AE1C1419AAE2C600C27E9E /* CCPhysicsSprite.h in Headers */,
B6DD2FE71B04825B00E47F5F /* DetourPathQueue.h in Headers */,
B6DD2FBB1B04825B00E47F5F /* DetourAssert.h in Headers */,
46A170EE1807CECA005B8026 /* CCPhysicsShape.h in Headers */,
B6CAB3D91AF9AA1A00B9B856 /* btSolverBody.h in Headers */,
15AE1A5C19AAD40300C27E9E /* b2Timer.h in Headers */,
@ -8665,12 +8933,14 @@
B665E2841AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandler.h in Headers */,
B6CAB52D1AF9AA1A00B9B856 /* btSerializer.h in Headers */,
B665E3E01AA80A6600DDB1C5 /* CCPUSimpleSpline.h in Headers */,
B6DD2FAD1B04825B00E47F5F /* DetourDebugDraw.h in Headers */,
B665E42C1AA80A6600DDB1C5 /* CCPUVelocityMatchingAffector.h in Headers */,
B665E3B41AA80A6500DDB1C5 /* CCPURendererTranslator.h in Headers */,
B6CAAFF01AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.h in Headers */,
1A57006B180BC5A10088DEC7 /* CCActionCatmullRom.h in Headers */,
B665E3BC1AA80A6500DDB1C5 /* CCPURibbonTrailRender.h in Headers */,
B6CAB3371AF9AA1A00B9B856 /* btQuantization.h in Headers */,
B677B0CB1B18492D006762CB /* CCNavMesh.h in Headers */,
B6CAB4371AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedCode.h in Headers */,
B665E2A81AA80A6500DDB1C5 /* CCPUEventHandlerTranslator.h in Headers */,
4D76BE3C1A4AAF0A00102962 /* CCActionTimelineNode.h in Headers */,
@ -8684,6 +8954,7 @@
15AE1BD319AAE01E00C27E9E /* CCControlPotentiometer.h in Headers */,
15AE1B6E19AADA9900C27E9E /* UIHelper.h in Headers */,
B230ED7319B417AE00364AA8 /* CCTrianglesCommand.h in Headers */,
B6DD2FB11B04825B00E47F5F /* RecastDebugDraw.h in Headers */,
B6CAB2F71AF9AA1A00B9B856 /* btTriangleBuffer.h in Headers */,
B665E2D41AA80A6500DDB1C5 /* CCPUInterParticleColliderTranslator.h in Headers */,
15AE187F19AAD33D00C27E9E /* CCBKeyframe.h in Headers */,
@ -8701,7 +8972,9 @@
15AE182A19AAD2F700C27E9E /* CCMeshSkin.h in Headers */,
B276EF5F1988D1D500CD400F /* CCVertexIndexData.h in Headers */,
1A57007F180BC5A10088DEC7 /* CCActionInterval.h in Headers */,
B6DD2FDB1B04825B00E47F5F /* DetourLocalBoundary.h in Headers */,
B6CAB3491AF9AA1A00B9B856 /* gim_clip_polygon.h in Headers */,
B677B0DB1B18492D006762CB /* CCNavMeshUtils.h in Headers */,
B6CAAFE41AF9A9E100B9B856 /* CCPhysics3D.h in Headers */,
15AE1A7F19AAD40300C27E9E /* b2DistanceJoint.h in Headers */,
B665E3301AA80A6500DDB1C5 /* CCPUOnCountObserverTranslator.h in Headers */,
@ -8753,6 +9026,8 @@
15AE191219AAD35000C27E9E /* CCProcessBase.h in Headers */,
15AE1BB619AADFEF00C27E9E /* SocketIO.h in Headers */,
B665E2F41AA80A6500DDB1C5 /* CCPULineEmitterTranslator.h in Headers */,
B6DD2FB91B04825B00E47F5F /* DetourAlloc.h in Headers */,
B6DD2FF71B04825B00E47F5F /* fastlz.h in Headers */,
B665E2D81AA80A6500DDB1C5 /* CCPUJetAffector.h in Headers */,
1A570093180BC5A10088DEC7 /* CCActionTween.h in Headers */,
B6CAB3CF1AF9AA1A00B9B856 /* btSequentialImpulseConstraintSolver.h in Headers */,
@ -8826,6 +9101,7 @@
15AE1B6C19AADA9900C27E9E /* UIWidget.h in Headers */,
B665E2681AA80A6500DDB1C5 /* CCPUDoExpireEventHandlerTranslator.h in Headers */,
15FB208B1AE7C57D00C31518 /* utils.h in Headers */,
B6DD2FB51B04825B00E47F5F /* RecastDump.h in Headers */,
B6CAB3411AF9AA1A00B9B856 /* gim_bitset.h in Headers */,
15AE180E19AAD2F700C27E9E /* CCAnimate3D.h in Headers */,
1A5701B3180BCB590088DEC7 /* CCFontFNT.h in Headers */,
@ -8843,6 +9119,7 @@
B6CAB3E91AF9AA1A00B9B856 /* btDiscreteDynamicsWorld.h in Headers */,
B6CAB2F31AF9AA1A00B9B856 /* btTetrahedronShape.h in Headers */,
B6CAB4231AF9AA1A00B9B856 /* btMLCPSolverInterface.h in Headers */,
B6DD2FE31B04825B00E47F5F /* DetourPathCorridor.h in Headers */,
50ED2BE019BEAF7900A0AB90 /* UIEditBoxImpl-win32.h in Headers */,
B6CAB5011AF9AA1A00B9B856 /* btConvexHullComputer.h in Headers */,
15AE197119AAD35700C27E9E /* CCFrame.h in Headers */,
@ -8934,6 +9211,7 @@
B665E3081AA80A6500DDB1C5 /* CCPUMeshSurfaceEmitterTranslator.h in Headers */,
15AE184219AAD2F700C27E9E /* CCSprite3D.h in Headers */,
B665E3181AA80A6500DDB1C5 /* CCPUObserverTranslator.h in Headers */,
B6DD2FC91B04825B00E47F5F /* DetourNavMeshBuilder.h in Headers */,
B6CAB5111AF9AA1A00B9B856 /* btMatrix3x3.h in Headers */,
B665E3201AA80A6500DDB1C5 /* CCPUOnClearObserverTranslator.h in Headers */,
B665E2A01AA80A6500DDB1C5 /* CCPUEventHandler.h in Headers */,
@ -8982,6 +9260,7 @@
B6CAB50B1AF9AA1A00B9B856 /* btHashMap.h in Headers */,
15AE1A6719AAD40300C27E9E /* b2World.h in Headers */,
B6CAB3571AF9AA1A00B9B856 /* gim_math.h in Headers */,
B677B0D71B18492D006762CB /* CCNavMeshObstacle.h in Headers */,
15AE199B19AAD39600C27E9E /* PageViewReader.h in Headers */,
B665E2A41AA80A6500DDB1C5 /* CCPUEventHandlerManager.h in Headers */,
15AE1A6219AAD40300C27E9E /* b2Fixture.h in Headers */,
@ -9008,6 +9287,7 @@
15AE188519AAD33D00C27E9E /* CCBSequence.h in Headers */,
15FB20951AE7C57D00C31518 /* cdt.h in Headers */,
B665E3541AA80A6500DDB1C5 /* CCPUOnQuotaObserver.h in Headers */,
B6DD2FDF1B04825B00E47F5F /* DetourObstacleAvoidance.h in Headers */,
B6CAB4F11AF9AA1A00B9B856 /* Win32ThreadSupport.h in Headers */,
50643BE219BFCF1800EF68ED /* CCPlatformConfig.h in Headers */,
B29A7DF519EE1B7700872B35 /* Skeleton.h in Headers */,
@ -9017,6 +9297,7 @@
5034CA49191D591100CE6051 /* ccShader_Label_df.frag in Headers */,
292DB14119B4574100A80320 /* UIEditBoxImpl.h in Headers */,
B29A7DD919EE1B7700872B35 /* SkeletonRenderer.h in Headers */,
B6DD2FC11B04825B00E47F5F /* DetourMath.h in Headers */,
50CB247919D9C5A100687767 /* AudioEngine-inl.h in Headers */,
1A01C68C18F57BE800EFE3A6 /* CCDeprecated.h in Headers */,
B6CAB0001AF9A9E100B9B856 /* CCPhysicsSprite3D.h in Headers */,
@ -9040,6 +9321,7 @@
15AE1A5419AAD40300C27E9E /* b2GrowableStack.h in Headers */,
15AE1B4E19AADA9900C27E9E /* UIListView.h in Headers */,
1A570284180BCC900088DEC7 /* CCSpriteBatchNode.h in Headers */,
B6DD2FD71B04825B00E47F5F /* DetourCrowd.h in Headers */,
5034CA2B191D591100CE6051 /* ccShader_PositionTextureA8Color.vert in Headers */,
B665E2041AA80A6500DDB1C5 /* CCPUAlignAffectorTranslator.h in Headers */,
B6CAB3A11AF9AA1A00B9B856 /* btKinematicCharacterController.h in Headers */,
@ -9064,6 +9346,7 @@
B665E3501AA80A6500DDB1C5 /* CCPUOnPositionObserverTranslator.h in Headers */,
B68778FA1A8CA82E00643ABF /* CCParticle3DAffector.h in Headers */,
15AE1BA019AADFDF00C27E9E /* UILayout.h in Headers */,
B677B0CF1B18492D006762CB /* CCNavMeshAgent.h in Headers */,
1A570294180BCCAB0088DEC7 /* CCAnimation.h in Headers */,
B665E4081AA80A6600DDB1C5 /* CCPUSphereSurfaceEmitter.h in Headers */,
B6CAB28B1AF9AA1A00B9B856 /* btCapsuleShape.h in Headers */,
@ -9241,6 +9524,7 @@
B6CAB1FF1AF9AA1A00B9B856 /* btDispatcher.h in Headers */,
15AE188B19AAD33D00C27E9E /* CCControlLoader.h in Headers */,
B29A7DF719EE1B7700872B35 /* Attachment.h in Headers */,
B6DD2FA91B04825B00E47F5F /* DebugDraw.h in Headers */,
15FB208D1AE7C57D00C31518 /* poly2tri.h in Headers */,
B6CAB3091AF9AA1A00B9B856 /* btTriangleMesh.h in Headers */,
B6CAB4AF1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.h in Headers */,
@ -9257,10 +9541,12 @@
B6CAB1E31AF9AA1A00B9B856 /* btBulletDynamicsCommon.h in Headers */,
382384311A259112002C4610 /* ParticleReader.h in Headers */,
B6CAB3BD1AF9AA1A00B9B856 /* btGeneric6DofSpringConstraint.h in Headers */,
B6DD2FBF1B04825B00E47F5F /* DetourCommon.h in Headers */,
B665E3D01AA80A6600DDB1C5 /* CCPUScriptCompiler.h in Headers */,
5034CA35191D591100CE6051 /* ccShader_PositionTexture.frag in Headers */,
15AE1BB219AADFEF00C27E9E /* HttpClient.h in Headers */,
B6CAB3FD1AF9AA1A00B9B856 /* btMultiBodyConstraint.h in Headers */,
B6DD2FF31B04825B00E47F5F /* DetourTileCacheBuilder.h in Headers */,
15AE197619AAD35700C27E9E /* CCTimelineMacro.h in Headers */,
50ABBE6F1925AB6F00A911A9 /* CCEventListenerKeyboard.h in Headers */,
15AE1A5619AAD40300C27E9E /* b2Math.h in Headers */,
@ -9338,7 +9624,9 @@
B665E2881AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandlerTranslator.h in Headers */,
B665E2441AA80A6500DDB1C5 /* CCPUCollisionAvoidanceAffector.h in Headers */,
B665E2281AA80A6500DDB1C5 /* CCPUBillboardChain.h in Headers */,
B6DD2FD31B04825B00E47F5F /* DetourStatus.h in Headers */,
15AE18A919AAD33D00C27E9E /* CCSpriteLoader.h in Headers */,
B677B0D31B18492D006762CB /* CCNavMeshDebugDraw.h in Headers */,
15AE198419AAD36400C27E9E /* WidgetReaderProtocol.h in Headers */,
B6CAB53D1AF9AA1A00B9B856 /* cl_MiniCL_Defs.h in Headers */,
50ABBEC91925AB6F00A911A9 /* firePngData.h in Headers */,
@ -9471,6 +9759,7 @@
B6CAB2EB1AF9AA1A00B9B856 /* btStaticPlaneShape.h in Headers */,
3EACC9A219F5014D00EB3C5E /* CCCamera.h in Headers */,
B6CAB5331AF9AA1A00B9B856 /* btTransformUtil.h in Headers */,
B6DD2FEF1B04825B00E47F5F /* DetourTileCache.h in Headers */,
50ABBECD1925AB6F00A911A9 /* s3tc.h in Headers */,
B6CAB3651AF9AA1A00B9B856 /* btContinuousConvexCollision.h in Headers */,
15AE1BD119AAE01E00C27E9E /* CCControlHuePicker.h in Headers */,
@ -9479,7 +9768,10 @@
50ABBE771925AB6F00A911A9 /* CCEventListenerTouch.h in Headers */,
5034CA33191D591100CE6051 /* ccShader_PositionTexture_uColor.frag in Headers */,
B665E4341AA80A6600DDB1C5 /* CCPUVertexEmitter.h in Headers */,
B6DD2FEB1B04825B00E47F5F /* DetourProximityGrid.h in Headers */,
B6DD2FC51B04825B00E47F5F /* DetourNavMesh.h in Headers */,
50ABC0171926664800A911A9 /* CCImage.h in Headers */,
B6DD2FCD1B04825B00E47F5F /* DetourNavMeshQuery.h in Headers */,
50ABBDA91925AB4100A911A9 /* CCRenderCommand.h in Headers */,
B6CAB3791AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.h in Headers */,
50ABBD951925AB4100A911A9 /* CCGLProgramState.h in Headers */,
@ -9587,8 +9879,10 @@
B6CAB4061AF9AA1A00B9B856 /* btMultiBodyDynamicsWorld.h in Headers */,
ED74D76A1A5B8A2600157FD4 /* CCPhysicsHelper.h in Headers */,
5034CA40191D591100CE6051 /* ccShader_Position_uColor.vert in Headers */,
B6DD2FD41B04825B00E47F5F /* DetourStatus.h in Headers */,
B665E2891AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandlerTranslator.h in Headers */,
15AE184719AAD2F700C27E9E /* CCSprite3DMaterial.h in Headers */,
B6DD2FC21B04825B00E47F5F /* DetourMath.h in Headers */,
B6CAB5101AF9AA1A00B9B856 /* btList.h in Headers */,
15AE1BFC19AAE01E00C27E9E /* CCControlUtils.h in Headers */,
15AE193519AAD35100C27E9E /* CCActionObject.h in Headers */,
@ -9604,7 +9898,9 @@
B257B4511989D5E800D9A687 /* CCPrimitive.h in Headers */,
50643BE319BFCF1800EF68ED /* CCPlatformConfig.h in Headers */,
B665E27D1AA80A6500DDB1C5 /* CCPUDoScaleEventHandler.h in Headers */,
B6DD2FE81B04825B00E47F5F /* DetourPathQueue.h in Headers */,
B6CAB29E1AF9AA1A00B9B856 /* btConeShape.h in Headers */,
B677B0D81B18492D006762CB /* CCNavMeshObstacle.h in Headers */,
15AE181F19AAD2F700C27E9E /* CCBundle3DData.h in Headers */,
15AE193119AAD35100C27E9E /* CCActionManagerEx.h in Headers */,
15AE185B19AAD31200C27E9E /* CDOpenALSupport.h in Headers */,
@ -9628,6 +9924,7 @@
B6CAB32E1AF9AA1A00B9B856 /* btGImpactMassUtil.h in Headers */,
B6CAB43C1AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedTypes.h in Headers */,
50643BD619BFAEDA00EF68ED /* CCPlatformDefine.h in Headers */,
B6DD2FCE1B04825B00E47F5F /* DetourNavMeshQuery.h in Headers */,
1A570068180BC5A10088DEC7 /* CCActionCamera.h in Headers */,
B29A7E1E19EE1B7700872B35 /* PolygonBatch.h in Headers */,
B6CAB4E61AF9AA1A00B9B856 /* SpuSampleTaskProcess.h in Headers */,
@ -9643,6 +9940,7 @@
B665E4311AA80A6600DDB1C5 /* CCPUVelocityMatchingAffectorTranslator.h in Headers */,
B6CAB2C21AF9AA1A00B9B856 /* btEmptyShape.h in Headers */,
B665E3C51AA80A6600DDB1C5 /* CCPUScaleAffectorTranslator.h in Headers */,
B6DD2FF81B04825B00E47F5F /* fastlz.h in Headers */,
B665E4351AA80A6600DDB1C5 /* CCPUVertexEmitter.h in Headers */,
B665E2451AA80A6500DDB1C5 /* CCPUCollisionAvoidanceAffector.h in Headers */,
B6CAB3381AF9AA1A00B9B856 /* btQuantization.h in Headers */,
@ -9700,6 +9998,7 @@
B6CAB5341AF9AA1A00B9B856 /* btTransformUtil.h in Headers */,
1A570088180BC5A10088DEC7 /* CCActionPageTurn3D.h in Headers */,
15AE1B9319AADA9A00C27E9E /* UIHelper.h in Headers */,
B677B0DC1B18492D006762CB /* CCNavMeshUtils.h in Headers */,
50ABBD9E1925AB4100A911A9 /* ccGLStateCache.h in Headers */,
B665E2111AA80A6500DDB1C5 /* CCPUBaseForceAffector.h in Headers */,
B665E30D1AA80A6500DDB1C5 /* CCPUNoise.h in Headers */,
@ -9758,6 +10057,7 @@
50ABBD571925AB0000A911A9 /* TransformUtils.h in Headers */,
B665E2711AA80A6500DDB1C5 /* CCPUDoFreezeEventHandlerTranslator.h in Headers */,
1A570115180BC8EE0088DEC7 /* CCDrawNode.h in Headers */,
B677B0D41B18492D006762CB /* CCNavMeshDebugDraw.h in Headers */,
B6CAB2341AF9AA1A00B9B856 /* btCollisionWorld.h in Headers */,
1A57011E180BC90D0088DEC7 /* CCGrabber.h in Headers */,
B6CAB4A21AF9AA1A00B9B856 /* PosixThreadSupport.h in Headers */,
@ -9810,13 +10110,16 @@
B665E3E51AA80A6600DDB1C5 /* CCPUSineForceAffector.h in Headers */,
182C5CE81A9D725400C30D34 /* UserCameraReader.h in Headers */,
15AE1A4C19AAD3D500C27E9E /* b2EdgeShape.h in Headers */,
B6DD2FB21B04825B00E47F5F /* RecastDebugDraw.h in Headers */,
B6CAB39C1AF9AA1A00B9B856 /* btVoronoiSimplexSolver.h in Headers */,
B6CAB2701AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.h in Headers */,
1A5701B4180BCB590088DEC7 /* CCFontFNT.h in Headers */,
B6DD2FBC1B04825B00E47F5F /* DetourAssert.h in Headers */,
15AE18D419AAD33D00C27E9E /* CCParticleSystemQuadLoader.h in Headers */,
B665E3411AA80A6500DDB1C5 /* CCPUOnEventFlagObserverTranslator.h in Headers */,
B6CAB5041AF9AA1A00B9B856 /* btDefaultMotionState.h in Headers */,
B6CAB52A1AF9AA1A00B9B856 /* btScalar.h in Headers */,
B6DD2FF41B04825B00E47F5F /* DetourTileCacheBuilder.h in Headers */,
B29A7DFA19EE1B7700872B35 /* Json.h in Headers */,
3823842B1A2590F9002C4610 /* NodeReader.h in Headers */,
B6CAB3241AF9AA1A00B9B856 /* btGeometryOperations.h in Headers */,
@ -9830,6 +10133,7 @@
15AE18CB19AAD33D00C27E9E /* CCMenuLoader.h in Headers */,
B665E4011AA80A6600DDB1C5 /* CCPUSphereCollider.h in Headers */,
B6CAB31E1AF9AA1A00B9B856 /* btContactProcessing.h in Headers */,
B6DD2FC61B04825B00E47F5F /* DetourNavMesh.h in Headers */,
1A5701BC180BCB5A0088DEC7 /* CCLabel.h in Headers */,
B665E2D51AA80A6500DDB1C5 /* CCPUInterParticleColliderTranslator.h in Headers */,
1A5701C0180BCB5A0088DEC7 /* CCLabelAtlas.h in Headers */,
@ -9848,6 +10152,7 @@
B6CAB4EE1AF9AA1A00B9B856 /* vectormath2bullet.h in Headers */,
15AE1BBA19AADFF000C27E9E /* HttpClient.h in Headers */,
B6CAB2241AF9AA1A00B9B856 /* btCollisionConfiguration.h in Headers */,
B6DD2FCA1B04825B00E47F5F /* DetourNavMeshBuilder.h in Headers */,
292DB14619B4574100A80320 /* UIEditBoxImpl-android.h in Headers */,
B6CAB49E1AF9AA1A00B9B856 /* PlatformDefinitions.h in Headers */,
B665E2DD1AA80A6500DDB1C5 /* CCPUJetAffectorTranslator.h in Headers */,
@ -9881,6 +10186,7 @@
15AE196219AAD35100C27E9E /* CCSSceneReader.h in Headers */,
1A01C69518F57BE800EFE3A6 /* CCFloat.h in Headers */,
B665E2011AA80A6500DDB1C5 /* CCPUAlignAffector.h in Headers */,
B6DD2FEC1B04825B00E47F5F /* DetourProximityGrid.h in Headers */,
B6CAB49C1AF9AA1A00B9B856 /* HeapManager.h in Headers */,
1A5701CA180BCB5A0088DEC7 /* CCLabelTextFormatter.h in Headers */,
B6CAB25C1AF9AA1A00B9B856 /* btHashedSimplePairCache.h in Headers */,
@ -9920,8 +10226,10 @@
1A5701E9180BCB8C0088DEC7 /* CCTransition.h in Headers */,
15AE198F19AAD36E00C27E9E /* CheckBoxReader.h in Headers */,
B665E3911AA80A6500DDB1C5 /* CCPUPlaneCollider.h in Headers */,
B6DD2FAE1B04825B00E47F5F /* DetourDebugDraw.h in Headers */,
382384011A258FA7002C4610 /* util.h in Headers */,
18956BB51A9DFBFD006E9155 /* Particle3DReader.h in Headers */,
B6DD2FD81B04825B00E47F5F /* DetourCrowd.h in Headers */,
B6CAB34A1AF9AA1A00B9B856 /* gim_clip_polygon.h in Headers */,
B665E3F91AA80A6600DDB1C5 /* CCPUSlaveEmitterTranslator.h in Headers */,
B665E2551AA80A6500DDB1C5 /* CCPUDoAffectorEventHandler.h in Headers */,
@ -9958,12 +10266,14 @@
1A57020B180BCBDF0088DEC7 /* CCMotionStreak.h in Headers */,
B665E2211AA80A6500DDB1C5 /* CCPUBehaviourManager.h in Headers */,
15AE195219AAD35100C27E9E /* CCDecorativeDisplay.h in Headers */,
B6DD2FAA1B04825B00E47F5F /* DebugDraw.h in Headers */,
15AE196619AAD35100C27E9E /* CCTween.h in Headers */,
15AE194619AAD35100C27E9E /* CCComAttribute.h in Headers */,
B6CAB5181AF9AA1A00B9B856 /* btMotionState.h in Headers */,
B6CAAFE51AF9A9E100B9B856 /* CCPhysics3D.h in Headers */,
B6CAB1F41AF9AA1A00B9B856 /* btCollisionAlgorithm.h in Headers */,
382384241A2590DA002C4610 /* GameMapReader.h in Headers */,
B6DD2FDC1B04825B00E47F5F /* DetourLocalBoundary.h in Headers */,
15AE1ABD19AAD40300C27E9E /* b2PolygonAndCircleContact.h in Headers */,
15AE1AA819AAD40300C27E9E /* b2Island.h in Headers */,
B665E2391AA80A6500DDB1C5 /* CCPUBoxEmitterTranslator.h in Headers */,
@ -9984,6 +10294,7 @@
15FB20961AE7C57D00C31518 /* cdt.h in Headers */,
15AE1AC919AAD40300C27E9E /* b2Joint.h in Headers */,
382383EF1A258FA7002C4610 /* flatbuffers.h in Headers */,
B677B0CC1B18492D006762CB /* CCNavMesh.h in Headers */,
B6D38B911AC3AFAC00043997 /* CCTextureCube.h in Headers */,
B665E2811AA80A6500DDB1C5 /* CCPUDoScaleEventHandlerTranslator.h in Headers */,
15AE196819AAD35100C27E9E /* CCUtilMath.h in Headers */,
@ -10038,6 +10349,7 @@
B6CAB1F81AF9AA1A00B9B856 /* btDbvt.h in Headers */,
B665E35D1AA80A6500DDB1C5 /* CCPUOnRandomObserver.h in Headers */,
1A570281180BCC900088DEC7 /* CCSprite.h in Headers */,
B6DD2FD21B04825B00E47F5F /* DetourNode.h in Headers */,
1A570285180BCC900088DEC7 /* CCSpriteBatchNode.h in Headers */,
15AE193B19AAD35100C27E9E /* CCArmatureDataManager.h in Headers */,
1A570289180BCC900088DEC7 /* CCSpriteFrame.h in Headers */,
@ -10080,6 +10392,7 @@
1A5702ED180BCE750088DEC7 /* CCTileMapAtlas.h in Headers */,
15AE195E19AAD35100C27E9E /* CCSkin.h in Headers */,
B6CAB3CC1AF9AA1A00B9B856 /* btPoint2PointConstraint.h in Headers */,
B6DD2FE01B04825B00E47F5F /* DetourObstacleAvoidance.h in Headers */,
B6CAB5081AF9AA1A00B9B856 /* btGeometryUtil.h in Headers */,
1A5702F1180BCE750088DEC7 /* CCTMXLayer.h in Headers */,
15FB20771AE7BF8600C31518 /* CCAutoPolygon.h in Headers */,
@ -10147,6 +10460,7 @@
15AE1BBE19AADFF000C27E9E /* SocketIO.h in Headers */,
B665E3351AA80A6500DDB1C5 /* CCPUOnEmissionObserver.h in Headers */,
B665E3811AA80A6500DDB1C5 /* CCPUParticleSystem3DTranslator.h in Headers */,
B6DD2FBA1B04825B00E47F5F /* DetourAlloc.h in Headers */,
B6CAB4D21AF9AA1A00B9B856 /* SpuConvexPenetrationDepthSolver.h in Headers */,
B665E2151AA80A6500DDB1C5 /* CCPUBaseForceAffectorTranslator.h in Headers */,
1A01C69B18F57BE800EFE3A6 /* CCSet.h in Headers */,
@ -10178,8 +10492,10 @@
B6CAB3761AF9AA1A00B9B856 /* btGjkEpa2.h in Headers */,
182C5CD91A98F30500C30D34 /* Sprite3DReader.h in Headers */,
50ABBE301925AB6F00A911A9 /* ccConfig.h in Headers */,
B6DD2FE41B04825B00E47F5F /* DetourPathCorridor.h in Headers */,
15AE195819AAD35100C27E9E /* CCInputDelegate.h in Headers */,
B6CAB3281AF9AA1A00B9B856 /* btGImpactBvh.h in Headers */,
B6DD2FB61B04825B00E47F5F /* RecastDump.h in Headers */,
50ABBDAC1925AB4100A911A9 /* CCRenderCommandPool.h in Headers */,
B6CAB24C1AF9AA1A00B9B856 /* btConvexPlaneCollisionAlgorithm.h in Headers */,
B665E3CD1AA80A6600DDB1C5 /* CCPUScaleVelocityAffectorTranslator.h in Headers */,
@ -10278,6 +10594,7 @@
299CF1FE19A434BC00C378C1 /* ccRandom.h in Headers */,
B665E3BD1AA80A6500DDB1C5 /* CCPURibbonTrailRender.h in Headers */,
50ABBDBC1925AB4100A911A9 /* CCTextureAtlas.h in Headers */,
B6DD2FC01B04825B00E47F5F /* DetourCommon.h in Headers */,
B6CAAFE91AF9A9E100B9B856 /* CCPhysics3DComponent.h in Headers */,
15AE182319AAD2F700C27E9E /* CCBundleReader.h in Headers */,
182C5CB51A95964F00C30D34 /* Node3DReader.h in Headers */,
@ -10315,6 +10632,7 @@
B6CAB3001AF9AA1A00B9B856 /* btTriangleIndexVertexArray.h in Headers */,
B6CAB3881AF9AA1A00B9B856 /* btPersistentManifold.h in Headers */,
B68779031A8CA82E00643ABF /* CCParticle3DRender.h in Headers */,
B6DD2FF01B04825B00E47F5F /* DetourTileCache.h in Headers */,
15AE195A19AAD35100C27E9E /* CCProcessBase.h in Headers */,
15AE193D19AAD35100C27E9E /* CCArmatureDefine.h in Headers */,
B6CAB37A1AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.h in Headers */,
@ -10388,6 +10706,7 @@
15AE18D219AAD33D00C27E9E /* CCNodeLoaderListener.h in Headers */,
15AE184D19AAD30800C27E9E /* SimpleAudioEngine.h in Headers */,
B665E3551AA80A6500DDB1C5 /* CCPUOnQuotaObserver.h in Headers */,
B677B0D01B18492D006762CB /* CCNavMeshAgent.h in Headers */,
B665E3C91AA80A6600DDB1C5 /* CCPUScaleVelocityAffector.h in Headers */,
B665E3FD1AA80A6600DDB1C5 /* CCPUSphere.h in Headers */,
B68778FB1A8CA82E00643ABF /* CCParticle3DAffector.h in Headers */,
@ -10544,6 +10863,7 @@
15AE189D19AAD33D00C27E9E /* CCNodeLoader.cpp in Sources */,
B665E2461AA80A6500DDB1C5 /* CCPUCollisionAvoidanceAffectorTranslator.cpp in Sources */,
B68779041A8CA82E00643ABF /* CCParticleSystem3D.cpp in Sources */,
B6DD2FB71B04825B00E47F5F /* DetourAlloc.cpp in Sources */,
5027253C190BF1B900AAF4ED /* cocos2d.cpp in Sources */,
50ABC0611926664800A911A9 /* CCCommon-mac.mm in Sources */,
50ABBDB11925AB4100A911A9 /* ccShaders.cpp in Sources */,
@ -10569,6 +10889,7 @@
B6CAB41F1AF9AA1A00B9B856 /* btMLCPSolver.cpp in Sources */,
46A170E61807CECA005B8026 /* CCPhysicsBody.cpp in Sources */,
B665E40A1AA80A6600DDB1C5 /* CCPUSphereSurfaceEmitterTranslator.cpp in Sources */,
B677B0D91B18492D006762CB /* CCNavMeshUtils.cpp in Sources */,
50ABBDA71925AB4100A911A9 /* CCRenderCommand.cpp in Sources */,
B665E35E1AA80A6500DDB1C5 /* CCPUOnRandomObserverTranslator.cpp in Sources */,
B6CAB2931AF9AA1A00B9B856 /* btCompoundShape.cpp in Sources */,
@ -10644,6 +10965,7 @@
B6CAB4D91AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.cpp in Sources */,
B665E3CE1AA80A6600DDB1C5 /* CCPUScriptCompiler.cpp in Sources */,
15AE18E819AAD35000C27E9E /* CCActionManagerEx.cpp in Sources */,
B677B0CD1B18492D006762CB /* CCNavMeshAgent.cpp in Sources */,
B29A7DDB19EE1B7700872B35 /* Event.c in Sources */,
15AE191B19AAD35000C27E9E /* CCTransformHelp.cpp in Sources */,
15AE190319AAD35000C27E9E /* CCComRender.cpp in Sources */,
@ -10665,6 +10987,7 @@
B6CAB2451AF9AA1A00B9B856 /* btConvexConvexAlgorithm.cpp in Sources */,
15AE1B9D19AADFDF00C27E9E /* UIVBox.cpp in Sources */,
B665E2B61AA80A6500DDB1C5 /* CCPUForceFieldAffector.cpp in Sources */,
B6DD2FD51B04825B00E47F5F /* DetourCrowd.cpp in Sources */,
1A570079180BC5A10088DEC7 /* CCActionInstant.cpp in Sources */,
15AE1A7019AAD40300C27E9E /* b2Contact.cpp in Sources */,
15AE18A619AAD33D00C27E9E /* CCScrollViewLoader.cpp in Sources */,
@ -10672,6 +10995,7 @@
15AE184419AAD2F700C27E9E /* CCSprite3DMaterial.cpp in Sources */,
50ABBE591925AB6F00A911A9 /* CCEventKeyboard.cpp in Sources */,
B665E2FA1AA80A6500DDB1C5 /* CCPUMaterialManager.cpp in Sources */,
B6DD2FAF1B04825B00E47F5F /* RecastDebugDraw.cpp in Sources */,
B29A7DDF19EE1B7700872B35 /* IkConstraintData.c in Sources */,
B665E3921AA80A6500DDB1C5 /* CCPUPlaneColliderTranslator.cpp in Sources */,
1A57007D180BC5A10088DEC7 /* CCActionInterval.cpp in Sources */,
@ -10689,6 +11013,7 @@
B665E3CA1AA80A6600DDB1C5 /* CCPUScaleVelocityAffectorTranslator.cpp in Sources */,
1A57008D180BC5A10088DEC7 /* CCActionTiledGrid.cpp in Sources */,
B665E26E1AA80A6500DDB1C5 /* CCPUDoFreezeEventHandlerTranslator.cpp in Sources */,
B6DD2FF11B04825B00E47F5F /* DetourTileCacheBuilder.cpp in Sources */,
B665E1FE1AA80A6500DDB1C5 /* CCPUAlignAffector.cpp in Sources */,
B665E2961AA80A6500DDB1C5 /* CCPUEmitterManager.cpp in Sources */,
1A570091180BC5A10088DEC7 /* CCActionTween.cpp in Sources */,
@ -10725,11 +11050,13 @@
B6CAAFF61AF9A9E100B9B856 /* CCPhysics3DShape.cpp in Sources */,
B6CAB3071AF9AA1A00B9B856 /* btTriangleMesh.cpp in Sources */,
B29A7E1319EE1B7700872B35 /* Bone.c in Sources */,
B677B0C91B18492D006762CB /* CCNavMesh.cpp in Sources */,
B665E1F61AA80A6500DDB1C5 /* CCPUAffectorManager.cpp in Sources */,
292DB14919B4574100A80320 /* UIEditBoxImpl-ios.mm in Sources */,
B6CAB2511AF9AA1A00B9B856 /* btEmptyCollisionAlgorithm.cpp in Sources */,
15AE181019AAD2F700C27E9E /* CCAnimation3D.cpp in Sources */,
1A01C68418F57BE800EFE3A6 /* CCArray.cpp in Sources */,
B6DD2FDD1B04825B00E47F5F /* DetourObstacleAvoidance.cpp in Sources */,
1A570112180BC8EE0088DEC7 /* CCDrawNode.cpp in Sources */,
B6CAB4B11AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp in Sources */,
15AE186D19AAD31D00C27E9E /* SimpleAudioEngine_objc.m in Sources */,
@ -10744,6 +11071,7 @@
382383FE1A258FA7002C4610 /* idl_parser.cpp in Sources */,
1A57011F180BC90D0088DEC7 /* CCGrid.cpp in Sources */,
B665E26A1AA80A6500DDB1C5 /* CCPUDoFreezeEventHandler.cpp in Sources */,
B6DD2FD91B04825B00E47F5F /* DetourLocalBoundary.cpp in Sources */,
15AE187A19AAD33D00C27E9E /* CCBAnimationManager.cpp in Sources */,
15AE1B6D19AADA9900C27E9E /* UIHelper.cpp in Sources */,
15AE1A8A19AAD40300C27E9E /* b2PulleyJoint.cpp in Sources */,
@ -10756,6 +11084,7 @@
B6CAB2D51AF9AA1A00B9B856 /* btOptimizedBvh.cpp in Sources */,
50CB247B19D9C5A100687767 /* AudioEngine-inl.mm in Sources */,
1A5701A1180BCB590088DEC7 /* CCFontAtlas.cpp in Sources */,
B6DD2FC71B04825B00E47F5F /* DetourNavMeshBuilder.cpp in Sources */,
B29A7DFF19EE1B7700872B35 /* Json.c in Sources */,
B6CAB3111AF9AA1A00B9B856 /* btUniformScalingShape.cpp in Sources */,
15AE1A8619AAD40300C27E9E /* b2MouseJoint.cpp in Sources */,
@ -10769,6 +11098,7 @@
1A5701B1180BCB590088DEC7 /* CCFontFNT.cpp in Sources */,
B6CAB4A51AF9AA1A00B9B856 /* SequentialThreadSupport.cpp in Sources */,
15AE181619AAD2F700C27E9E /* CCAttachNode.cpp in Sources */,
B6DD2FE91B04825B00E47F5F /* DetourProximityGrid.cpp in Sources */,
B29A7DED19EE1B7700872B35 /* IkConstraint.c in Sources */,
18956BB21A9DFBFD006E9155 /* Particle3DReader.cpp in Sources */,
1A5701B5180BCB590088DEC7 /* CCFontFreeType.cpp in Sources */,
@ -10799,6 +11129,7 @@
B6CAB3D51AF9AA1A00B9B856 /* btSolve2LinearConstraint.cpp in Sources */,
B6CAB2591AF9AA1A00B9B856 /* btHashedSimplePairCache.cpp in Sources */,
382F7ADC1AB1292A002EBECF /* CCObjectExtensionData.cpp in Sources */,
B6DD2FAB1B04825B00E47F5F /* DetourDebugDraw.cpp in Sources */,
15AE191719AAD35000C27E9E /* CCSpriteFrameCacheHelper.cpp in Sources */,
B665E2E21AA80A6500DDB1C5 /* CCPULineAffectorTranslator.cpp in Sources */,
B6CAB2A31AF9AA1A00B9B856 /* btConvexHullShape.cpp in Sources */,
@ -10823,6 +11154,7 @@
3EACC9A419F5014D00EB3C5E /* CCLight.cpp in Sources */,
B6CAB4C91AF9AA1A00B9B856 /* SpuCollisionShapes.cpp in Sources */,
B6CAB38B1AF9AA1A00B9B856 /* btPolyhedralContactClipping.cpp in Sources */,
B677B0D51B18492D006762CB /* CCNavMeshObstacle.cpp in Sources */,
B665E42E1AA80A6600DDB1C5 /* CCPUVelocityMatchingAffectorTranslator.cpp in Sources */,
1A5701E2180BCB8C0088DEC7 /* CCScene.cpp in Sources */,
B6CAB5351AF9AA1A00B9B856 /* btVector3.cpp in Sources */,
@ -10886,6 +11218,7 @@
B665E3FE1AA80A6600DDB1C5 /* CCPUSphereCollider.cpp in Sources */,
B6CAB3591AF9AA1A00B9B856 /* gim_memory.cpp in Sources */,
B665E25A1AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandler.cpp in Sources */,
B6DD2FB31B04825B00E47F5F /* RecastDump.cpp in Sources */,
B6CAB2BB1AF9AA1A00B9B856 /* btCylinderShape.cpp in Sources */,
15AE1BD019AAE01E00C27E9E /* CCControlHuePicker.cpp in Sources */,
B6CAAFFA1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp in Sources */,
@ -10926,6 +11259,7 @@
B29A7DF319EE1B7700872B35 /* AttachmentLoader.c in Sources */,
B6CAB3331AF9AA1A00B9B856 /* btGImpactShape.cpp in Sources */,
382383F01A258FA7002C4610 /* flatc.cpp in Sources */,
B6DD2FA71B04825B00E47F5F /* DebugDraw.cpp in Sources */,
B665E31A1AA80A6500DDB1C5 /* CCPUOnClearObserver.cpp in Sources */,
1A57028A180BCC900088DEC7 /* CCSpriteFrameCache.cpp in Sources */,
15AE18E619AAD35000C27E9E /* CCActionFrameEasing.cpp in Sources */,
@ -10946,6 +11280,7 @@
1A570296180BCCAB0088DEC7 /* CCAnimationCache.cpp in Sources */,
B29A7E1B19EE1B7700872B35 /* SkeletonJson.c in Sources */,
50ABBE351925AB6F00A911A9 /* CCConsole.cpp in Sources */,
B6DD2FED1B04825B00E47F5F /* DetourTileCache.cpp in Sources */,
B665E3FA1AA80A6600DDB1C5 /* CCPUSphere.cpp in Sources */,
50ABBEAF1925AB6F00A911A9 /* CCUserDefault.cpp in Sources */,
15AE1BCB19AAE01E00C27E9E /* CCControlButton.cpp in Sources */,
@ -11015,6 +11350,7 @@
B665E3621AA80A6500DDB1C5 /* CCPUOnTimeObserver.cpp in Sources */,
15AE18DF19AAD35000C27E9E /* TriggerBase.cpp in Sources */,
15AE1A7219AAD40300C27E9E /* b2ContactSolver.cpp in Sources */,
B6DD2FE11B04825B00E47F5F /* DetourPathCorridor.cpp in Sources */,
B665E2BE1AA80A6500DDB1C5 /* CCPUGeometryRotator.cpp in Sources */,
3823841A1A2590D2002C4610 /* ComAudioReader.cpp in Sources */,
15AE1BC519AAE00000C27E9E /* AssetsManager.cpp in Sources */,
@ -11047,6 +11383,7 @@
1A570310180BCF190088DEC7 /* CCComponentContainer.cpp in Sources */,
15AE190719AAD35000C27E9E /* CCDatas.cpp in Sources */,
1A01C69C18F57BE800EFE3A6 /* CCString.cpp in Sources */,
B6DD2FCB1B04825B00E47F5F /* DetourNavMeshQuery.cpp in Sources */,
B6CAB26D1AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.cpp in Sources */,
B6CAB3251AF9AA1A00B9B856 /* btGImpactBvh.cpp in Sources */,
B665E2721AA80A6500DDB1C5 /* CCPUDoPlacementParticleEventHandler.cpp in Sources */,
@ -11100,6 +11437,7 @@
15AE18FA19AAD35000C27E9E /* CCColliderDetector.cpp in Sources */,
50ABBEA71925AB6F00A911A9 /* CCTouch.cpp in Sources */,
15AE191319AAD35000C27E9E /* CCSGUIReader.cpp in Sources */,
B6DD2FBD1B04825B00E47F5F /* DetourCommon.cpp in Sources */,
15AE186819AAD31D00C27E9E /* CDXMacOSXSupport.mm in Sources */,
B665E3221AA80A6500DDB1C5 /* CCPUOnCollisionObserver.cpp in Sources */,
15AE191519AAD35000C27E9E /* CCSkin.cpp in Sources */,
@ -11143,6 +11481,7 @@
B665E2921AA80A6500DDB1C5 /* CCPUEmitter.cpp in Sources */,
15B3708419EE414C00ABE682 /* Downloader.cpp in Sources */,
50ABC0631926664800A911A9 /* CCDevice-mac.mm in Sources */,
B677B0D11B18492D006762CB /* CCNavMeshDebugDraw.cpp in Sources */,
15AE1A2819AAD3D500C27E9E /* b2Collision.cpp in Sources */,
15AE1B6719AADA9900C27E9E /* UIScale9Sprite.cpp in Sources */,
292DB14319B4574100A80320 /* UIEditBoxImpl-android.cpp in Sources */,
@ -11182,6 +11521,7 @@
B665E4021AA80A6600DDB1C5 /* CCPUSphereColliderTranslator.cpp in Sources */,
15AE1A3619AAD3D500C27E9E /* b2PolygonShape.cpp in Sources */,
D0FD03531A3B51AA00825BB5 /* CCAllocatorGlobalNewDelete.cpp in Sources */,
B6DD2FE51B04825B00E47F5F /* DetourPathQueue.cpp in Sources */,
B665E39A1AA80A6500DDB1C5 /* CCPUPointEmitterTranslator.cpp in Sources */,
50ABBD9B1925AB4100A911A9 /* ccGLStateCache.cpp in Sources */,
15AE188119AAD33D00C27E9E /* CCBReader.cpp in Sources */,
@ -11227,12 +11567,15 @@
B6CAB3811AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.cpp in Sources */,
B6CAB4AD1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp in Sources */,
50ABBE9F1925AB6F00A911A9 /* CCScheduler.cpp in Sources */,
B6DD2FC31B04825B00E47F5F /* DetourNavMesh.cpp in Sources */,
B6DD2FCF1B04825B00E47F5F /* DetourNode.cpp in Sources */,
15AE1C1119AAE2C600C27E9E /* CCPhysicsDebugNode.cpp in Sources */,
B665E2521AA80A6500DDB1C5 /* CCPUDoAffectorEventHandler.cpp in Sources */,
50ABC0151926664800A911A9 /* CCImage.cpp in Sources */,
50ABBE231925AB6F00A911A9 /* base64.cpp in Sources */,
B665E3AA1AA80A6500DDB1C5 /* CCPURandomiserTranslator.cpp in Sources */,
15AE1B5D19AADA9900C27E9E /* UITextBMFont.cpp in Sources */,
B6DD2FF51B04825B00E47F5F /* fastlz.c in Sources */,
B665E3561AA80A6500DDB1C5 /* CCPUOnQuotaObserverTranslator.cpp in Sources */,
382384361A259126002C4610 /* ProjectNodeReader.cpp in Sources */,
B665E37A1AA80A6500DDB1C5 /* CCPUParticleSystem3D.cpp in Sources */,
@ -11310,6 +11653,7 @@
B665E38F1AA80A6500DDB1C5 /* CCPUPlaneCollider.cpp in Sources */,
B665E21B1AA80A6500DDB1C5 /* CCPUBehaviour.cpp in Sources */,
B6CAB2CA1AF9AA1A00B9B856 /* btMinkowskiSumShape.cpp in Sources */,
B6DD2FE61B04825B00E47F5F /* DetourPathQueue.cpp in Sources */,
B665E38B1AA80A6500DDB1C5 /* CCPUPlane.cpp in Sources */,
B665E2731AA80A6500DDB1C5 /* CCPUDoPlacementParticleEventHandler.cpp in Sources */,
15AE1C0519AAE01E00C27E9E /* CCTableViewCell.cpp in Sources */,
@ -11332,6 +11676,7 @@
B665E35B1AA80A6500DDB1C5 /* CCPUOnRandomObserver.cpp in Sources */,
50ABC0161926664800A911A9 /* CCImage.cpp in Sources */,
B665E3AB1AA80A6500DDB1C5 /* CCPURandomiserTranslator.cpp in Sources */,
B6DD2FE21B04825B00E47F5F /* DetourPathCorridor.cpp in Sources */,
1A01C6A518F58F7500EFE3A6 /* CCNotificationCenter.cpp in Sources */,
292DB14E19B4574100A80320 /* UIEditBoxImpl-mac.mm in Sources */,
B6CAB4BC1AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.cpp in Sources */,
@ -11353,11 +11698,13 @@
50ABBE561925AB6F00A911A9 /* CCEventFocus.cpp in Sources */,
382F7ADD1AB1292A002EBECF /* CCObjectExtensionData.cpp in Sources */,
15AE183D19AAD2F700C27E9E /* CCSkeleton3D.cpp in Sources */,
B6DD2FF21B04825B00E47F5F /* DetourTileCacheBuilder.cpp in Sources */,
503DD8E11926736A00CD74DD /* CCApplication-ios.mm in Sources */,
15AE1AAC19AAD40300C27E9E /* b2WorldCallbacks.cpp in Sources */,
B6CAB20C1AF9AA1A00B9B856 /* btQuantizedBvh.cpp in Sources */,
B6CAB3F21AF9AA1A00B9B856 /* btSimpleDynamicsWorld.cpp in Sources */,
15AE18C719AAD33D00C27E9E /* CCMenuItemImageLoader.cpp in Sources */,
B6DD2FF61B04825B00E47F5F /* fastlz.c in Sources */,
50ABC01A1926664800A911A9 /* CCSAXParser.cpp in Sources */,
B29A7E1C19EE1B7700872B35 /* SkeletonJson.c in Sources */,
B2CC507C19776DD10041958E /* CCPhysicsJoint.cpp in Sources */,
@ -11389,6 +11736,7 @@
B29A7E0C19EE1B7700872B35 /* Atlas.c in Sources */,
15AE185E19AAD31200C27E9E /* CocosDenshion.m in Sources */,
B665E2071AA80A6500DDB1C5 /* CCPUBaseCollider.cpp in Sources */,
B6DD2FB01B04825B00E47F5F /* RecastDebugDraw.cpp in Sources */,
46A170FE1807CECB005B8026 /* CCPhysicsContact.cpp in Sources */,
1A570062180BC5A10088DEC7 /* CCAction.cpp in Sources */,
1A570066180BC5A10088DEC7 /* CCActionCamera.cpp in Sources */,
@ -11487,6 +11835,7 @@
50ABBE761925AB6F00A911A9 /* CCEventListenerTouch.cpp in Sources */,
15AE1AD219AAD40300C27E9E /* b2RopeJoint.cpp in Sources */,
B29A7DCC19EE1B7700872B35 /* Skeleton.c in Sources */,
B6DD2FEE1B04825B00E47F5F /* DetourTileCache.cpp in Sources */,
B6CAB2B41AF9AA1A00B9B856 /* btConvexShape.cpp in Sources */,
15AE1A4919AAD3D500C27E9E /* b2CircleShape.cpp in Sources */,
15AE184119AAD2F700C27E9E /* CCSprite3D.cpp in Sources */,
@ -11508,6 +11857,7 @@
15AE1A3E19AAD3D500C27E9E /* b2CollidePolygon.cpp in Sources */,
15AE1AB219AAD40300C27E9E /* b2CircleContact.cpp in Sources */,
B29A7E2619EE1B7700872B35 /* Attachment.c in Sources */,
B6DD2FDA1B04825B00E47F5F /* DetourLocalBoundary.cpp in Sources */,
15AE18C119AAD33D00C27E9E /* CCLayerColorLoader.cpp in Sources */,
50ABBD551925AB0000A911A9 /* TransformUtils.cpp in Sources */,
B665E2CF1AA80A6500DDB1C5 /* CCPUInterParticleCollider.cpp in Sources */,
@ -11515,6 +11865,7 @@
15AE193619AAD35100C27E9E /* CCArmature.cpp in Sources */,
1A57007A180BC5A10088DEC7 /* CCActionInstant.cpp in Sources */,
15AE1AC419AAD40300C27E9E /* b2FrictionJoint.cpp in Sources */,
B6DD2FDE1B04825B00E47F5F /* DetourObstacleAvoidance.cpp in Sources */,
15AE1BEC19AAE01E00C27E9E /* CCControlColourPicker.cpp in Sources */,
B6CAB2361AF9AA1A00B9B856 /* btCompoundCollisionAlgorithm.cpp in Sources */,
382383FD1A258FA7002C4610 /* idl_gen_text.cpp in Sources */,
@ -11558,6 +11909,7 @@
B6CAB3341AF9AA1A00B9B856 /* btGImpactShape.cpp in Sources */,
B6CAB4C61AF9AA1A00B9B856 /* boxBoxDistance.cpp in Sources */,
1A57008E180BC5A10088DEC7 /* CCActionTiledGrid.cpp in Sources */,
B677B0CE1B18492D006762CB /* CCNavMeshAgent.cpp in Sources */,
B6CAB2A01AF9AA1A00B9B856 /* btConvex2dShape.cpp in Sources */,
1A570092180BC5A10088DEC7 /* CCActionTween.cpp in Sources */,
1A570099180BC5C10088DEC7 /* CCAtlasNode.cpp in Sources */,
@ -11565,6 +11917,7 @@
B6CAAFF31AF9A9E100B9B856 /* CCPhysics3DObject.cpp in Sources */,
B665E2931AA80A6500DDB1C5 /* CCPUEmitter.cpp in Sources */,
50ABBD4D1925AB0000A911A9 /* MathUtil.cpp in Sources */,
B6DD2FCC1B04825B00E47F5F /* DetourNavMeshQuery.cpp in Sources */,
50ABBE3E1925AB6F00A911A9 /* CCDataVisitor.cpp in Sources */,
B6CAB4B21AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp in Sources */,
1A57009F180BC5D20088DEC7 /* CCNode.cpp in Sources */,
@ -11586,6 +11939,7 @@
B6CAB3F81AF9AA1A00B9B856 /* btMultiBody.cpp in Sources */,
503DD8E21926736A00CD74DD /* CCCommon-ios.mm in Sources */,
292DB14A19B4574100A80320 /* UIEditBoxImpl-ios.mm in Sources */,
B677B0D61B18492D006762CB /* CCNavMeshObstacle.cpp in Sources */,
B6CAB2561AF9AA1A00B9B856 /* btGhostObject.cpp in Sources */,
15AE1A9419AAD40300C27E9E /* b2BlockAllocator.cpp in Sources */,
B29A7E3C19EE1B7700872B35 /* Animation.c in Sources */,
@ -11607,6 +11961,7 @@
1A5701A6180BCB590088DEC7 /* CCFontAtlasCache.cpp in Sources */,
15AE192B19AAD35100C27E9E /* TriggerObj.cpp in Sources */,
B6CAAFEB1AF9A9E100B9B856 /* CCPhysics3DConstraint.cpp in Sources */,
B677B0D21B18492D006762CB /* CCNavMeshDebugDraw.cpp in Sources */,
4D76BE3B1A4AAF0A00102962 /* CCActionTimelineNode.cpp in Sources */,
15AE198519AAD36400C27E9E /* WidgetReader.cpp in Sources */,
B665E36B1AA80A6500DDB1C5 /* CCPUOnVelocityObserver.cpp in Sources */,
@ -11646,6 +12001,7 @@
B665E3771AA80A6500DDB1C5 /* CCPUParticleFollowerTranslator.cpp in Sources */,
B6CAB4CA1AF9AA1A00B9B856 /* SpuCollisionShapes.cpp in Sources */,
15AE1B7C19AADA9A00C27E9E /* UISlider.cpp in Sources */,
B6DD2FC41B04825B00E47F5F /* DetourNavMesh.cpp in Sources */,
B6CAAFFB1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp in Sources */,
B665E3471AA80A6500DDB1C5 /* CCPUOnExpireObserverTranslator.cpp in Sources */,
B6CAB2A41AF9AA1A00B9B856 /* btConvexHullShape.cpp in Sources */,
@ -11718,6 +12074,7 @@
503DD8ED1926736A00CD74DD /* CCGLViewImpl-ios.mm in Sources */,
15AE197719AAD35700C27E9E /* CCActionTimeline.cpp in Sources */,
15AE19B419AAD39700C27E9E /* TextAtlasReader.cpp in Sources */,
B6DD2FA81B04825B00E47F5F /* DebugDraw.cpp in Sources */,
B665E2A31AA80A6500DDB1C5 /* CCPUEventHandlerManager.cpp in Sources */,
B6CAB3601AF9AA1A00B9B856 /* gim_tri_collision.cpp in Sources */,
15AE194019AAD35100C27E9E /* CCBone.cpp in Sources */,
@ -11744,9 +12101,11 @@
B6CAB1FA1AF9AA1A00B9B856 /* btDbvtBroadphase.cpp in Sources */,
15AE1A4319AAD3D500C27E9E /* b2DynamicTree.cpp in Sources */,
15AE1A3A19AAD3D500C27E9E /* b2BroadPhase.cpp in Sources */,
B6DD2FC81B04825B00E47F5F /* DetourNavMeshBuilder.cpp in Sources */,
B665E42B1AA80A6600DDB1C5 /* CCPUVelocityMatchingAffector.cpp in Sources */,
B665E3371AA80A6500DDB1C5 /* CCPUOnEmissionObserverTranslator.cpp in Sources */,
15AE19B619AAD39700C27E9E /* TextBMFontReader.cpp in Sources */,
B6DD2FBE1B04825B00E47F5F /* DetourCommon.cpp in Sources */,
15AE1BFD19AAE01E00C27E9E /* CCInvocation.cpp in Sources */,
B24AA98A195A675C007B4522 /* CCFastTMXTiledMap.cpp in Sources */,
38F5263F1A48363B000DB7F7 /* ArmatureNodeReader.cpp in Sources */,
@ -11842,6 +12201,7 @@
1A5702F7180BCE750088DEC7 /* CCTMXTiledMap.cpp in Sources */,
50ABBEC61925AB6F00A911A9 /* etc1.cpp in Sources */,
50ABBE8C1925AB6F00A911A9 /* CCNS.cpp in Sources */,
B6DD2FAC1B04825B00E47F5F /* DetourDebugDraw.cpp in Sources */,
B29A7DE019EE1B7700872B35 /* IkConstraintData.c in Sources */,
B6CAB40C1AF9AA1A00B9B856 /* btMultiBodyJointMotor.cpp in Sources */,
B6CAB2D21AF9AA1A00B9B856 /* btMultiSphereShape.cpp in Sources */,
@ -11932,9 +12292,11 @@
B6CAB3821AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.cpp in Sources */,
B6CAB3641AF9AA1A00B9B856 /* btContinuousConvexCollision.cpp in Sources */,
52B47A2F1A5349A3004E4C60 /* HttpAsynConnection.m in Sources */,
B6DD2FB41B04825B00E47F5F /* RecastDump.cpp in Sources */,
B665E23B1AA80A6500DDB1C5 /* CCPUCircleEmitter.cpp in Sources */,
15AE1B8019AADA9A00C27E9E /* UITextAtlas.cpp in Sources */,
15AE195919AAD35100C27E9E /* CCProcessBase.cpp in Sources */,
B6DD2FB81B04825B00E47F5F /* DetourAlloc.cpp in Sources */,
B665E3FF1AA80A6600DDB1C5 /* CCPUSphereCollider.cpp in Sources */,
15AE18D319AAD33D00C27E9E /* CCParticleSystemQuadLoader.cpp in Sources */,
B6CAB4CE1AF9AA1A00B9B856 /* SpuContactResult.cpp in Sources */,
@ -11948,6 +12310,7 @@
15AE195719AAD35100C27E9E /* CCInputDelegate.cpp in Sources */,
B6CAB32A1AF9AA1A00B9B856 /* btGImpactCollisionAlgorithm.cpp in Sources */,
15AE1B8A19AADA9A00C27E9E /* UIImageView.cpp in Sources */,
B6DD2FD61B04825B00E47F5F /* DetourCrowd.cpp in Sources */,
50ABBD391925AB0000A911A9 /* CCAffineTransform.cpp in Sources */,
B6CAB5421AF9AA1A00B9B856 /* MiniCL.cpp in Sources */,
B6CAB4AE1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp in Sources */,
@ -12036,6 +12399,7 @@
50ABBD5D1925AB0000A911A9 /* Vec3.cpp in Sources */,
B6CAB2061AF9AA1A00B9B856 /* btOverlappingPairCache.cpp in Sources */,
38B8E2D619E66581002D7CE7 /* CSLoader.cpp in Sources */,
B677B0CA1B18492D006762CB /* CCNavMesh.cpp in Sources */,
B665E3B31AA80A6500DDB1C5 /* CCPURendererTranslator.cpp in Sources */,
B6CAAFE71AF9A9E100B9B856 /* CCPhysics3DComponent.cpp in Sources */,
B6CAB2141AF9AA1A00B9B856 /* btActivatingCollisionAlgorithm.cpp in Sources */,
@ -12066,6 +12430,7 @@
D0FD034C1A3B51AA00825BB5 /* CCAllocatorDiagnostics.cpp in Sources */,
B665E31F1AA80A6500DDB1C5 /* CCPUOnClearObserverTranslator.cpp in Sources */,
B665E4331AA80A6600DDB1C5 /* CCPUVertexEmitter.cpp in Sources */,
B677B0DA1B18492D006762CB /* CCNavMeshUtils.cpp in Sources */,
B665E3C71AA80A6600DDB1C5 /* CCPUScaleVelocityAffector.cpp in Sources */,
B6CAB26E1AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.cpp in Sources */,
50ABBED01925AB6F00A911A9 /* TGAlib.cpp in Sources */,
@ -12083,7 +12448,9 @@
B6CAB3121AF9AA1A00B9B856 /* btUniformScalingShape.cpp in Sources */,
1A1645B3191B726C008C7C7F /* ConvertUTFWrapper.cpp in Sources */,
15B3708519EE414C00ABE682 /* Downloader.cpp in Sources */,
B6DD2FEA1B04825B00E47F5F /* DetourProximityGrid.cpp in Sources */,
1ABA68AF1888D700007D1BB4 /* CCFontCharMap.cpp in Sources */,
B6DD2FD01B04825B00E47F5F /* DetourNode.cpp in Sources */,
B6CAB2DE1AF9AA1A00B9B856 /* btScaledBvhTriangleMeshShape.cpp in Sources */,
15AE180D19AAD2F700C27E9E /* CCAnimate3D.cpp in Sources */,
B6CAB1EE1AF9AA1A00B9B856 /* btBroadphaseProxy.cpp in Sources */,

View File

@ -834,6 +834,8 @@
B603F1B51AC8FBFB00A9579C /* TerrainTest in Resources */ = {isa = PBXBuildFile; fileRef = B603F1B31AC8FBFB00A9579C /* TerrainTest */; };
B609E67319C18DAD003D0074 /* BillBoardTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B609E67119C18DAD003D0074 /* BillBoardTest.cpp */; };
B609E67419C18DAD003D0074 /* BillBoardTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B609E67119C18DAD003D0074 /* BillBoardTest.cpp */; };
B61E90CB1B12B74B00BE69EA /* NavMesh in Resources */ = {isa = PBXBuildFile; fileRef = B61E90CA1B12B74B00BE69EA /* NavMesh */; };
B61E90CC1B12B74B00BE69EA /* NavMesh in Resources */ = {isa = PBXBuildFile; fileRef = B61E90CA1B12B74B00BE69EA /* NavMesh */; };
B6337DF71ABA9B44005AEF24 /* PerformanceParticle3DTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6337DF51ABA9B44005AEF24 /* PerformanceParticle3DTest.cpp */; };
B6337DF81ABA9B44005AEF24 /* PerformanceParticle3DTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6337DF51ABA9B44005AEF24 /* PerformanceParticle3DTest.cpp */; };
B639932E1A490EC700B07923 /* Particle3DTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B639932C1A490EC700B07923 /* Particle3DTest.cpp */; };
@ -844,6 +846,8 @@
B6C039DA19C95D83007207DC /* LightTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6C039D719C95D83007207DC /* LightTest.cpp */; };
B6CAB54E1AF9AA6C00B9B856 /* Physics3DTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB54C1AF9AA6C00B9B856 /* Physics3DTest.cpp */; };
B6CAB54F1AF9AA6C00B9B856 /* Physics3DTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB54C1AF9AA6C00B9B856 /* Physics3DTest.cpp */; };
B6DD2FFC1B04979C00E47F5F /* NavMeshTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2FFA1B04979C00E47F5F /* NavMeshTest.cpp */; };
B6DD2FFD1B04979C00E47F5F /* NavMeshTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6DD2FFA1B04979C00E47F5F /* NavMeshTest.cpp */; };
C04F935A1941B05400E9FEAB /* TileMapTest2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C04F93581941B05400E9FEAB /* TileMapTest2.cpp */; };
C04F935B1941B05400E9FEAB /* TileMapTest2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C04F93581941B05400E9FEAB /* TileMapTest2.cpp */; };
C08689C118D370C90093E810 /* background.caf in Resources */ = {isa = PBXBuildFile; fileRef = C08689C018D370C90093E810 /* background.caf */; };
@ -1784,6 +1788,7 @@
B603F1B31AC8FBFB00A9579C /* TerrainTest */ = {isa = PBXFileReference; lastKnownFileType = folder; name = TerrainTest; path = "../tests/cpp-tests/Resources/TerrainTest"; sourceTree = "<group>"; };
B609E67119C18DAD003D0074 /* BillBoardTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BillBoardTest.cpp; path = BillBoardTest/BillBoardTest.cpp; sourceTree = "<group>"; };
B609E67219C18DAD003D0074 /* BillBoardTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BillBoardTest.h; path = BillBoardTest/BillBoardTest.h; sourceTree = "<group>"; };
B61E90CA1B12B74B00BE69EA /* NavMesh */ = {isa = PBXFileReference; lastKnownFileType = folder; name = NavMesh; path = "../tests/cpp-tests/Resources/NavMesh"; sourceTree = "<group>"; };
B6337DF51ABA9B44005AEF24 /* PerformanceParticle3DTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PerformanceParticle3DTest.cpp; sourceTree = "<group>"; };
B6337DF61ABA9B44005AEF24 /* PerformanceParticle3DTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceParticle3DTest.h; sourceTree = "<group>"; };
B639932C1A490EC700B07923 /* Particle3DTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Particle3DTest.cpp; path = Particle3DTest/Particle3DTest.cpp; sourceTree = "<group>"; };
@ -1793,6 +1798,8 @@
B6C039D819C95D83007207DC /* LightTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LightTest.h; path = LightTest/LightTest.h; sourceTree = "<group>"; };
B6CAB54C1AF9AA6C00B9B856 /* Physics3DTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Physics3DTest.cpp; path = Physics3DTest/Physics3DTest.cpp; sourceTree = "<group>"; };
B6CAB54D1AF9AA6C00B9B856 /* Physics3DTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Physics3DTest.h; path = Physics3DTest/Physics3DTest.h; sourceTree = "<group>"; };
B6DD2FFA1B04979C00E47F5F /* NavMeshTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NavMeshTest.cpp; path = NavMeshTest/NavMeshTest.cpp; sourceTree = "<group>"; };
B6DD2FFB1B04979C00E47F5F /* NavMeshTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NavMeshTest.h; path = NavMeshTest/NavMeshTest.h; sourceTree = "<group>"; };
C04F93581941B05400E9FEAB /* TileMapTest2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TileMapTest2.cpp; sourceTree = "<group>"; };
C04F93591941B05400E9FEAB /* TileMapTest2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TileMapTest2.h; sourceTree = "<group>"; };
C08689C018D370C90093E810 /* background.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = background.caf; path = "../tests/cpp-tests/Resources/background.caf"; sourceTree = "<group>"; };
@ -2211,6 +2218,7 @@
1AC3592418CECF0A00F37B72 /* Classes */ = {
isa = PBXGroup;
children = (
B6DD2FF91B04972B00E47F5F /* NavMeshTest */,
B6CAB54B1AF9AA4B00B9B856 /* Physics3DTest */,
5046AB471AF2A8D80060550B /* MaterialSystemTest */,
6886696E1AE8E8A000C2CFD9 /* SpritePolygonTest */,
@ -3253,6 +3261,7 @@
1AC35CA818CED83500F37B72 /* Resources */ = {
isa = PBXGroup;
children = (
B61E90CA1B12B74B00BE69EA /* NavMesh */,
5046AB5A1AF2C4180060550B /* Materials */,
B603F1B31AC8FBFB00A9579C /* TerrainTest */,
B63993301A49359F00B07923 /* Particle3D */,
@ -4062,6 +4071,15 @@
name = Physics3DTest;
sourceTree = "<group>";
};
B6DD2FF91B04972B00E47F5F /* NavMeshTest */ = {
isa = PBXGroup;
children = (
B6DD2FFA1B04979C00E47F5F /* NavMeshTest.cpp */,
B6DD2FFB1B04979C00E47F5F /* NavMeshTest.h */,
);
name = NavMeshTest;
sourceTree = "<group>";
};
D0FD03611A3B543700825BB5 /* AllocatorTest */ = {
isa = PBXGroup;
children = (
@ -4274,8 +4292,8 @@
attributes = {
LastUpgradeCheck = 0600;
TargetAttributes = {
A07A517F1783A1D20073F6A7 = {
DevelopmentTeam = NQ596S94Q5;
1D6058900D05DD3D006BFB54 = {
DevelopmentTeam = U7E7529TA5;
};
};
};
@ -4572,6 +4590,7 @@
1AC35CDE18CED84500F37B72 /* components in Resources */,
1AC35D0818CED84500F37B72 /* TileMaps in Resources */,
1AC35CE218CED84500F37B72 /* effect1.raw in Resources */,
B61E90CB1B12B74B00BE69EA /* NavMesh in Resources */,
1AC35CF218CED84500F37B72 /* Hello.png in Resources */,
1AC35CA518CECF1E00F37B72 /* Icon.icns in Resources */,
5046AB5B1AF2C4180060550B /* Materials in Resources */,
@ -4670,6 +4689,7 @@
1AC35C8F18CECF1400F37B72 /* Icon-152.png in Resources */,
1AC35CE718CED84500F37B72 /* effect2.ogg in Resources */,
38FA2E77194AECF800FF2BE4 /* ActionTimeline in Resources */,
B61E90CC1B12B74B00BE69EA /* NavMesh in Resources */,
1AC35C9718CECF1400F37B72 /* Icon-80.png in Resources */,
1AC35CEB18CED84500F37B72 /* fileLookup.plist in Resources */,
527B1F3519EF9CF8000A1F82 /* Default-736h@3x.png in Resources */,
@ -4962,6 +4982,7 @@
1AC35BE718CECF0C00F37B72 /* CCControlScene.cpp in Sources */,
B609E67319C18DAD003D0074 /* BillBoardTest.cpp in Sources */,
292CF01419A1965E00E8E6A0 /* UIEditBoxTest.cpp in Sources */,
B6DD2FFC1B04979C00E47F5F /* NavMeshTest.cpp in Sources */,
D0FD03641A3B546400825BB5 /* AllocatorTest.cpp in Sources */,
29080DBF191B595E0066F8DF /* UIPageViewTest_Editor.cpp in Sources */,
1AC35B5F18CECF0C00F37B72 /* DataVisitorTest.cpp in Sources */,
@ -5272,6 +5293,7 @@
1AC35BFC18CECF0C00F37B72 /* NotificationCenterTest.cpp in Sources */,
29FBBBFF196A9ECD00E65826 /* CocostudioParserJsonTest.cpp in Sources */,
1AC35C3618CECF0C00F37B72 /* PerformanceSpriteTest.cpp in Sources */,
B6DD2FFD1B04979C00E47F5F /* NavMeshTest.cpp in Sources */,
B6C039DA19C95D83007207DC /* LightTest.cpp in Sources */,
1AC35C3C18CECF0C00F37B72 /* PerformanceTouchesTest.cpp in Sources */,
29080DA2191B595E0066F8DF /* GUIEditorTest.cpp in Sources */,

View File

@ -33,6 +33,7 @@
#include "renderer/CCGLProgramCache.h"
#include "renderer/ccGLStateCache.h"
#include "renderer/CCFrameBuffer.h"
#include "renderer/CCRenderState.h"
NS_CC_BEGIN
@ -409,14 +410,22 @@ void Camera::clearBackground(float depth)
{
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
glStencilMask(0);
RenderState::StateBlock::_defaultState->setStencilWrite(0);
oldDepthTest = glIsEnabled(GL_DEPTH_TEST);
glGetIntegerv(GL_DEPTH_FUNC, &oldDepthFunc);
glGetBooleanv(GL_DEPTH_WRITEMASK, &oldDepthMask);
glDepthMask(GL_TRUE);
RenderState::StateBlock::_defaultState->setDepthWrite(true);
glEnable(GL_DEPTH_TEST);
RenderState::StateBlock::_defaultState->setDepthTest(true);
glDepthFunc(GL_ALWAYS);
RenderState::StateBlock::_defaultState->setDepthFunction(RenderState::DEPTH_ALWAYS);
}
//draw
static V3F_C4B_T2F_Quad quad;
quad.bl.vertices = Vec3(-1,-1,0);
@ -461,14 +470,18 @@ void Camera::clearBackground(float depth)
if(GL_FALSE == oldDepthTest)
{
glDisable(GL_DEPTH_TEST);
RenderState::StateBlock::_defaultState->setDepthTest(false);
}
glDepthFunc(oldDepthFunc);
if(GL_FALSE == oldDepthMask)
{
glDepthMask(GL_FALSE);
RenderState::StateBlock::_defaultState->setDepthWrite(false);
}
glStencilMask(0xFFFFF);
RenderState::StateBlock::_defaultState->setStencilWrite(0xFFFFF);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
}
}

View File

@ -30,6 +30,7 @@
#include "renderer/CCGLProgramCache.h"
#include "renderer/ccGLStateCache.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCRenderState.h"
#include "base/CCDirector.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX)
@ -395,12 +396,15 @@ void ClippingNode::onBeforeVisit()
// enable stencil use
glEnable(GL_STENCIL_TEST);
RenderState::StateBlock::_defaultState->setStencilTest(true);
// check for OpenGL error while enabling stencil test
CHECK_GL_ERROR_DEBUG();
// all bits on the stencil buffer are readonly, except the current layer bit,
// this means that operation like glClear or glStencilOp will be masked with this value
glStencilMask(mask_layer);
RenderState::StateBlock::_defaultState->setStencilWrite(mask_layer);
// manually save the depth test state
@ -413,6 +417,7 @@ void ClippingNode::onBeforeVisit()
// it should never prevent something else to be drawn,
// only disabling depth buffer update should do
glDepthMask(GL_FALSE);
RenderState::StateBlock::_defaultState->setDepthWrite(false);
///////////////////////////////////
// CLEAR STENCIL BUFFER
@ -424,7 +429,13 @@ void ClippingNode::onBeforeVisit()
// if not in inverted mode: set the current layer value to 0 in the stencil buffer
// if in inverted mode: set the current layer value to 1 in the stencil buffer
glStencilFunc(GL_NEVER, mask_layer, mask_layer);
RenderState::StateBlock::_defaultState->setStencilFunction(RenderState::STENCIL_NEVER, mask_layer, mask_layer);
glStencilOp(!_inverted ? GL_ZERO : GL_REPLACE, GL_KEEP, GL_KEEP);
RenderState::StateBlock::_defaultState->setStencilOperation(
!_inverted ? RenderState::STENCIL_OP_ZERO : RenderState::STENCIL_OP_REPLACE,
RenderState::STENCIL_OP_KEEP,
RenderState::STENCIL_OP_KEEP);
// draw a fullscreen solid rectangle to clear the stencil buffer
//ccDrawSolidRect(Vec2::ZERO, ccpFromSize([[Director sharedDirector] winSize]), Color4F(1, 1, 1, 1));
@ -439,7 +450,14 @@ void ClippingNode::onBeforeVisit()
// if not in inverted mode: set the current layer value to 1 in the stencil buffer
// if in inverted mode: set the current layer value to 0 in the stencil buffer
glStencilFunc(GL_NEVER, mask_layer, mask_layer);
RenderState::StateBlock::_defaultState->setStencilFunction(RenderState::STENCIL_NEVER, mask_layer, mask_layer);
glStencilOp(!_inverted ? GL_REPLACE : GL_ZERO, GL_KEEP, GL_KEEP);
RenderState::StateBlock::_defaultState->setStencilOperation(
!_inverted ? RenderState::STENCIL_OP_REPLACE : RenderState::STENCIL_OP_ZERO,
RenderState::STENCIL_OP_KEEP,
RenderState::STENCIL_OP_KEEP);
// enable alpha test only if the alpha threshold < 1,
// indeed if alpha threshold == 1, every pixel will be drawn anyways
@ -480,6 +498,8 @@ void ClippingNode::onAfterDrawStencil()
// restore the depth test state
glDepthMask(_currentDepthWriteMask);
RenderState::StateBlock::_defaultState->setDepthWrite(_currentDepthWriteMask);
//if (currentDepthTestEnabled) {
// glEnable(GL_DEPTH_TEST);
//}
@ -494,7 +514,10 @@ void ClippingNode::onAfterDrawStencil()
// else
// do not draw the pixel but keep the current layer in the stencil buffer
glStencilFunc(GL_EQUAL, _mask_layer_le, _mask_layer_le);
RenderState::StateBlock::_defaultState->setStencilFunction(RenderState::STENCIL_EQUAL, _mask_layer_le, _mask_layer_le);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
RenderState::StateBlock::_defaultState->setStencilOperation(RenderState::STENCIL_OP_KEEP, RenderState::STENCIL_OP_KEEP, RenderState::STENCIL_OP_KEEP);
// draw (according to the stencil test func) this node and its childs
}
@ -507,11 +530,18 @@ void ClippingNode::onAfterVisit()
// manually restore the stencil state
glStencilFunc(_currentStencilFunc, _currentStencilRef, _currentStencilValueMask);
RenderState::StateBlock::_defaultState->setStencilFunction((RenderState::StencilFunction)_currentStencilFunc, _currentStencilRef, _currentStencilValueMask);
glStencilOp(_currentStencilFail, _currentStencilPassDepthFail, _currentStencilPassDepthPass);
RenderState::StateBlock::_defaultState->setStencilOperation((RenderState::StencilOperation)_currentStencilFail,
(RenderState::StencilOperation)_currentStencilPassDepthFail,
(RenderState::StencilOperation)_currentStencilPassDepthPass);
glStencilMask(_currentStencilWriteMask);
if (!_currentStencilEnabled)
{
glDisable(GL_STENCIL_TEST);
RenderState::StateBlock::_defaultState->setStencilTest(false);
}
// we are done using this layer, decrement

View File

@ -41,7 +41,7 @@ void ClippingRectangleNode::onBeforeVisitScissor()
{
if (_clippingEnabled) {
glEnable(GL_SCISSOR_TEST);
float scaleX = _scaleX;
float scaleY = _scaleY;
Node *parent = this->getParent();

View File

@ -42,8 +42,8 @@ FontCharMap * FontCharMap::create(const std::string& plistFile)
std::string textureFilename = relPathStr + dict["textureFilename"].asString();
unsigned int width = dict["itemWidth"].asInt() / CC_CONTENT_SCALE_FACTOR();
unsigned int height = dict["itemHeight"].asInt() / CC_CONTENT_SCALE_FACTOR();
unsigned int width = dict["itemWidth"].asInt();
unsigned int height = dict["itemHeight"].asInt();
unsigned int startChar = dict["firstChar"].asInt();
Texture2D *tempTexture = Director::getInstance()->getTextureCache()->addImage(textureFilename);
@ -102,19 +102,16 @@ int * FontCharMap::getHorizontalKerningForTextUTF16(const std::u16string& text,
{
outNumLetters = static_cast<int>(text.length());
if (!outNumLetters)
return 0;
if (outNumLetters <= 0)
return nullptr;
int *sizes = new int[outNumLetters];
if (!sizes)
return 0;
auto kernings = new int[outNumLetters];
if (!kernings)
return nullptr;
for (int c = 0; c < outNumLetters; ++c)
{
sizes[c] = 0;
}
memset(kernings, 0, outNumLetters * sizeof(int));
return sizes;
return kernings;
}
FontAtlas * FontCharMap::createFontAtlas()
@ -123,21 +120,22 @@ FontAtlas * FontCharMap::createFontAtlas()
if (!tempAtlas)
return nullptr;
Size s = _texture->getContentSize();
Size s = _texture->getContentSizeInPixels();
int itemsPerColumn = (int)(s.height / _itemHeight);
int itemsPerRow = (int)(s.width / _itemWidth);
tempAtlas->setCommonLineHeight(_itemHeight);
auto contentScaleFactor = CC_CONTENT_SCALE_FACTOR();
FontLetterDefinition tempDefinition;
tempDefinition.textureID = 0;
tempDefinition.offsetX = 0.0f;
tempDefinition.offsetY = 0.0f;
tempDefinition.validDefinition = true;
tempDefinition.width = _itemWidth;
tempDefinition.height = _itemHeight;
tempDefinition.xAdvance = _itemWidth * CC_CONTENT_SCALE_FACTOR();
tempDefinition.width = _itemWidth / contentScaleFactor;
tempDefinition.height = _itemHeight / contentScaleFactor;
tempDefinition.xAdvance = _itemWidth;
int charId = _mapStartChar;
for (int row = 0; row < itemsPerColumn; ++row)
@ -146,8 +144,8 @@ FontAtlas * FontCharMap::createFontAtlas()
{
tempDefinition.letteCharUTF16 = charId;
tempDefinition.U = _itemWidth * col;
tempDefinition.V = _itemHeight * row;
tempDefinition.U = _itemWidth * col / contentScaleFactor;
tempDefinition.V = _itemHeight * row / contentScaleFactor;
tempAtlas->addLetterDefinition(tempDefinition);
charId++;

View File

@ -33,6 +33,7 @@ THE SOFTWARE.
#include "renderer/CCGLProgramCache.h"
#include "renderer/ccGLStateCache.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCRenderState.h"
#include "renderer/CCTexture2D.h"
#include "platform/CCGL.h"
#include "2d/CCCamera.h"
@ -327,8 +328,12 @@ void Grid3D::beforeBlit()
glGetBooleanv(GL_DEPTH_WRITEMASK, &depthWriteMask);
_oldDepthWriteValue = depthWriteMask != GL_FALSE;
CHECK_GL_ERROR_DEBUG();
glEnable(GL_DEPTH_TEST);
RenderState::StateBlock::_defaultState->setDepthTest(true);
glDepthMask(true);
RenderState::StateBlock::_defaultState->setDepthWrite(true);
}
}
@ -340,8 +345,10 @@ void Grid3D::afterBlit()
glEnable(GL_DEPTH_TEST);
else
glDisable(GL_DEPTH_TEST);
RenderState::StateBlock::_defaultState->setDepthTest(_oldDepthTestValue);
glDepthMask(_oldDepthWriteValue);
RenderState::StateBlock::_defaultState->setDepthWrite(_oldDepthWriteValue);
}
}

View File

@ -682,6 +682,16 @@ void Label::updateQuads()
_reusedRect.size.width = letterDef.width;
_reusedRect.origin.x = letterDef.U;
_reusedRect.origin.y = letterDef.V;
if (_lettersInfo[ctr].position.y > _contentSize.height)
{
auto clipTop = _lettersInfo[ctr].position.y - _contentSize.height;
_reusedRect.origin.y += clipTop;
_lettersInfo[ctr].position.y -= clipTop;
}
if (_lettersInfo[ctr].position.y - letterDef.height < 0.f)
{
_reusedRect.size.height = _lettersInfo[ctr].position.y;
}
_reusedLetter->setTextureRect(_reusedRect,false,_reusedRect.size);
_reusedLetter->setPosition(_lettersInfo[ctr].position);

View File

@ -316,7 +316,7 @@ bool LabelTextFormatter::createStringSprites(Label *theLabel)
auto labelHeightPixel = theLabel->_labelHeight * contentScaleFactor;
if (totalHeight > labelHeightPixel)
{
int numLines = labelHeightPixel / theLabel->_commonLineHeight;
int numLines = MIN(ceil(labelHeightPixel / theLabel->_commonLineHeight), theLabel->_currNumLines);
totalHeight = numLines * theLabel->_commonLineHeight;
}
switch (theLabel->_vAlignment)
@ -379,7 +379,7 @@ bool LabelTextFormatter::createStringSprites(Label *theLabel)
nextFontPositionY -= theLabel->_commonLineHeight;
theLabel->recordPlaceholderInfo(i);
if(nextFontPositionY < theLabel->_commonLineHeight)
if(nextFontPositionY < 0.f)
break;
lineStart = true;

View File

@ -367,7 +367,7 @@ bool ParticleSystem::initWithDictionary(ValueMap& dictionary, const std::string&
Texture2D *tex = nullptr;
if (textureName.length() > 0)
if (!textureName.empty())
{
// set not pop-up message box when load image failed
bool notify = FileUtils::getInstance()->isPopupNotify();
@ -404,7 +404,7 @@ bool ParticleSystem::initWithDictionary(ValueMap& dictionary, const std::string&
CCASSERT(isOK, "CCParticleSystem: error init image with Data");
CC_BREAK_IF(!isOK);
setTexture(Director::getInstance()->getTextureCache()->addImage(image, textureName.c_str()));
setTexture(Director::getInstance()->getTextureCache()->addImage(image, _plistFile + textureName));
image->release();
}

View File

@ -43,6 +43,10 @@ THE SOFTWARE.
#include "physics3d/CCPhysics3DComponent.h"
#endif
#if CC_USE_NAVMESH
#include "navmesh/CCNavMesh.h"
#endif
NS_CC_BEGIN
Scene::Scene()
@ -53,6 +57,10 @@ Scene::Scene()
#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
_physics3DWorld = nullptr;
_physics3dDebugCamera = nullptr;
#endif
#if CC_USE_NAVMESH
_navMesh = nullptr;
_navMeshDebugCamera = nullptr;
#endif
_ignoreAnchorPointForPosition = true;
setAnchorPoint(Vec2(0.5f, 0.5f));
@ -75,11 +83,26 @@ Scene::~Scene()
#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
CC_SAFE_RELEASE(_physics3DWorld);
CC_SAFE_RELEASE(_physics3dDebugCamera);
#endif
#if CC_USE_NAVMESH
CC_SAFE_RELEASE(_navMesh);
#endif
Director::getInstance()->getEventDispatcher()->removeEventListener(_event);
CC_SAFE_RELEASE(_event);
}
#if CC_USE_NAVMESH
void Scene::setNavMesh(NavMesh* navMesh)
{
if (_navMesh != navMesh)
{
CC_SAFE_RETAIN(navMesh);
CC_SAFE_RELEASE(_navMesh);
_navMesh = navMesh;
}
}
#endif
bool Scene::init()
{
auto size = Director::getInstance()->getWinSize();
@ -169,6 +192,12 @@ void Scene::render(Renderer* renderer)
camera->clearBackground(1.0);
//visit the scene
visit(renderer, transform, 0);
#if CC_USE_NAVMESH
if (_navMesh && _navMeshDebugCamera == camera)
{
_navMesh->debugDraw(renderer);
}
#endif
renderer->render();
@ -213,6 +242,16 @@ void Scene::setPhysics3DDebugCamera(Camera* camera)
}
#endif
#if CC_USE_NAVMESH
void Scene::setNavMeshDebugCamera(Camera *camera)
{
CC_SAFE_RETAIN(camera);
CC_SAFE_RELEASE(_navMeshDebugCamera);
_navMeshDebugCamera = camera;
}
#endif
#if (CC_USE_PHYSICS || (CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION))
void Scene::addChild(Node* child, int zOrder, int tag)
{
@ -298,4 +337,28 @@ void Scene::addChildToPhysicsWorld(Node* child)
#endif
#if (CC_USE_PHYSICS || (CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION) || CC_USE_NAVMESH)
void Scene::stepPhysicsAndNavigation(float deltaTime)
{
#if CC_USE_PHYSICS
if (_physicsWorld && _physicsWorld->isAutoStep())
{
_physicsWorld->update(deltaTime, false);
}
#endif
#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
if (_physics3DWorld)
{
_physics3DWorld->stepSimulate(deltaTime);
}
#endif
#if CC_USE_NAVMESH
if (_navMesh)
{
_navMesh->update(deltaTime);
}
#endif
}
#endif
NS_CC_END

View File

@ -44,6 +44,10 @@ class PhysicsWorld;
#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
class Physics3DWorld;
#endif
#if CC_USE_NAVMESH
class NavMesh;
#endif
/**
* @addtogroup _2d
* @{
@ -90,7 +94,7 @@ public:
const std::vector<Camera*>& getCameras() const { return _cameras; }
/** Get the default camera.
* @js NA
* @js NA
* @return The default camera of scene.
*/
Camera* getDefaultCamera() const { return _defaultCamera; }
@ -186,6 +190,27 @@ protected:
Camera* _physics3dDebugCamera; //
#endif
#endif // (CC_USE_PHYSICS || CC_USE_3D_PHYSICS)
#if CC_USE_NAVMESH
public:
/** set navigation mesh */
void setNavMesh(NavMesh* navMesh);
/** get navigation mesh */
NavMesh* getNavMesh() const { return _navMesh; }
/**
* Set NavMesh debug draw camera.
*/
void setNavMeshDebugCamera(Camera *camera);
protected:
NavMesh* _navMesh;
Camera * _navMeshDebugCamera;
#endif
#if (CC_USE_PHYSICS || (CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION) || CC_USE_NAVMESH)
public:
void stepPhysicsAndNavigation(float deltaTime);
#endif
};
// end of _2d group

View File

@ -338,7 +338,7 @@ void SpriteFrameCache::removeUnusedSpriteFrames()
if( spriteFrame->getReferenceCount() == 1 )
{
toRemoveFrames.push_back(iter->first);
spriteFrame->getTexture()->removeSpriteFrameCapInset(spriteFrame);
spriteFrame->getTexture()->removeSpriteFrameCapInset(spriteFrame);
CCLOG("cocos2d: SpriteFrameCache: removing unused frame: %s", iter->first.c_str());
removed = true;
}

View File

@ -565,6 +565,11 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClCompile Include="..\math\Vec2.cpp" />
<ClCompile Include="..\math\Vec3.cpp" />
<ClCompile Include="..\math\Vec4.cpp" />
<ClCompile Include="..\navmesh\CCNavMesh.cpp" />
<ClCompile Include="..\navmesh\CCNavMeshAgent.cpp" />
<ClCompile Include="..\navmesh\CCNavMeshDebugDraw.cpp" />
<ClCompile Include="..\navmesh\CCNavMeshObstacle.cpp" />
<ClCompile Include="..\navmesh\CCNavMeshUtils.cpp" />
<ClCompile Include="..\network\HttpClient.cpp" />
<ClCompile Include="..\network\SocketIO.cpp" />
<ClCompile Include="..\network\WebSocket.cpp" />
@ -1153,6 +1158,11 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClInclude Include="..\math\Vec2.h" />
<ClInclude Include="..\math\Vec3.h" />
<ClInclude Include="..\math\Vec4.h" />
<ClInclude Include="..\navmesh\CCNavMesh.h" />
<ClInclude Include="..\navmesh\CCNavMeshAgent.h" />
<ClInclude Include="..\navmesh\CCNavMeshDebugDraw.h" />
<ClInclude Include="..\navmesh\CCNavMeshObstacle.h" />
<ClInclude Include="..\navmesh\CCNavMeshUtils.h" />
<ClInclude Include="..\network\HttpClient.h" />
<ClInclude Include="..\network\HttpRequest.h" />
<ClInclude Include="..\network\HttpResponse.h" />
@ -1338,6 +1348,9 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ProjectReference Include="..\..\external\bullet\proj.win32\libbullet.vcxproj">
<Project>{012dff48-a13f-4f52-b07b-f8b9d21ce95b}</Project>
</ProjectReference>
<ProjectReference Include="..\..\external\recast\proj.win32\librecast.vcxproj">
<Project>{41e34993-647e-4282-8384-4ab1ae31a452}</Project>
</ProjectReference>
<ProjectReference Include="..\editor-support\spine\proj.win32\libSpine.vcxproj">
<Project>{b7c2a162-dec9-4418-972e-240ab3cbfcae}</Project>
</ProjectReference>

View File

@ -273,6 +273,8 @@
</Filter>
<Filter Include="external\clipper">
<UniqueIdentifier>{ff65e340-b79d-4f87-9b4c-ed46bda5d20f}</UniqueIdentifier>
<Filter Include="navmesh">
<UniqueIdentifier>{0f3fa25d-9e2b-4a2e-a1df-834b796b3fb3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -1866,6 +1868,24 @@
<ClCompile Include="..\renderer\CCVertexAttribBinding.cpp">
<Filter>renderer</Filter>
</ClCompile>
<ClCompile Include="..\navmesh\CCNavMesh.cpp">
<Filter>navmesh</Filter>
</ClCompile>
<ClCompile Include="..\navmesh\CCNavMeshAgent.cpp">
<Filter>navmesh</Filter>
</ClCompile>
<ClCompile Include="..\navmesh\CCNavMeshDebugDraw.cpp">
<Filter>navmesh</Filter>
</ClCompile>
<ClCompile Include="..\navmesh\CCNavMeshObstacle.cpp">
<Filter>navmesh</Filter>
</ClCompile>
<ClCompile Include="..\navmesh\CCNavMeshUtils.cpp">
<Filter>navmesh</Filter>
</ClCompile>
<ClCompile Include="..\base\CCNinePatchImageParser.cpp">
<Filter>base</Filter>
</ClCompile>
<ClCompile Include="..\base\CCNinePatchImageParser.cpp" />
<ClCompile Include="..\renderer\CCFrameBuffer.cpp">
<Filter>renderer</Filter>
@ -3657,6 +3677,24 @@
<ClInclude Include="..\renderer\CCVertexAttribBinding.h">
<Filter>renderer</Filter>
</ClInclude>
<ClInclude Include="..\navmesh\CCNavMesh.h">
<Filter>navmesh</Filter>
</ClInclude>
<ClInclude Include="..\navmesh\CCNavMeshAgent.h">
<Filter>navmesh</Filter>
</ClInclude>
<ClInclude Include="..\navmesh\CCNavMeshDebugDraw.h">
<Filter>navmesh</Filter>
</ClInclude>
<ClInclude Include="..\navmesh\CCNavMeshObstacle.h">
<Filter>navmesh</Filter>
</ClInclude>
<ClInclude Include="..\navmesh\CCNavMeshUtils.h">
<Filter>navmesh</Filter>
</ClInclude>
<ClInclude Include="..\base\CCNinePatchImageParser.h">
<Filter>base</Filter>
</ClInclude>
<ClInclude Include="..\base\CCNinePatchImageParser.h" />
<ClInclude Include="..\renderer\CCFrameBuffer.h">
<Filter>renderer</Filter>

View File

@ -442,6 +442,11 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\math\Vec2.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\math\Vec3.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\math\Vec4.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMesh.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshAgent.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshDebugDraw.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshObstacle.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshUtils.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\network\HttpClient.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\network\HttpRequest.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\network\HttpResponse.h" />
@ -1034,6 +1039,11 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\math\Vec2.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\math\Vec3.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\math\Vec4.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMesh.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshAgent.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshDebugDraw.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshObstacle.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshUtils.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\network\HttpClient.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\network\SocketIO.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\network\WebSocket.cpp" />

View File

@ -1783,6 +1783,16 @@
<Filter>renderer</Filter>
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCNinePatchImageParser.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMesh.h">
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshAgent.h">
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshDebugDraw.h">
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshObstacle.h">
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshUtils.h">
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\audio\winrt\AudioCachePlayer.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\audio\winrt\AudioEngine-winrt.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\audio\winrt\AudioSourceReader.h" />
@ -3402,6 +3412,17 @@
<Filter>renderer</Filter>
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\base\CCNinePatchImageParser.cpp" />
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMesh.cpp">
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshAgent.cpp">
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshDebugDraw.cpp">
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshObstacle.cpp">
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\navmesh\CCNavMeshUtils.cpp">
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\audio\AudioEngine.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\audio\winrt\AudioCachePlayer.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\audio\winrt\AudioEngine-winrt.cpp" />

View File

@ -33,6 +33,9 @@
<ProjectReference Include="..\..\..\..\..\external\bullet\proj.win8.1-universal\libbullet.Windows\libbullet.Windows.vcxproj">
<Project>{ec2b1292-2d8c-4feb-a84b-2550b32c1ae7}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\external\recast\proj.win8.1-universal\librecast.Windows\librecast.Windows.vcxproj">
<Project>{19e35654-a3ec-48fa-bb21-082a2356c87c}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\..\editor-support\spine\proj.win8.1-universal\libSpine.Windows\libSpine.Windows.vcxproj">
<Project>{f3550fe0-c795-44f6-8feb-093eb68143ae}</Project>
</ProjectReference>

View File

@ -25,6 +25,9 @@
<ProjectReference Include="..\..\..\..\..\external\bullet\proj.win8.1-universal\libbullet.WindowsPhone\libbullet.WindowsPhone.vcxproj">
<Project>{e35634bd-b91b-4a6d-b957-96f56dd065f9}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\..\..\external\recast\proj.win8.1-universal\librecast.WindowsPhone\librecast.WindowsPhone.vcxproj">
<Project>{d3bcfc1a-94bd-43b7-9c15-3f48ac6a9fac}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\..\editor-support\spine\proj.win8.1-universal\libSpine.WindowsPhone\libSpine.WindowsPhone.vcxproj">
<Project>{cc1da216-a80d-4be4-b309-acb6af313aff}</Project>
</ProjectReference>

View File

@ -2123,14 +2123,36 @@ Reference* Bundle3D::seekToFirstType(unsigned int type, const std::string& id)
std::vector<Vec3> Bundle3D::getTrianglesList(const std::string& path)
{
std::vector<Vec3> trianglesList;
auto bundle = Bundle3D::createBundle();
if (!bundle->load(path))
{
Bundle3D::destroyBundle(bundle);
if (path.length() <= 4)
return trianglesList;
}
auto bundle = Bundle3D::createBundle();
std::string ext = path.substr(path.length() - 4, 4);
std::transform(ext.begin(), ext.end(), ext.begin(), tolower);
MeshDatas meshs;
bundle->loadMeshDatas(meshs);
if (ext == ".obj")
{
MaterialDatas materials;
NodeDatas nodes;
if (!Bundle3D::loadObj(meshs, materials, nodes, path))
{
Bundle3D::destroyBundle(bundle);
return trianglesList;
}
}
else
{
if (!bundle->load(path))
{
Bundle3D::destroyBundle(bundle);
return trianglesList;
}
bundle->loadMeshDatas(meshs);
}
Bundle3D::destroyBundle(bundle);
for (auto iter : meshs.meshDatas){
int preVertexSize = iter->getPerVertexSize() / sizeof(float);
@ -2140,6 +2162,7 @@ std::vector<Vec3> Bundle3D::getTrianglesList(const std::string& path)
}
}
}
return trianglesList;
}

View File

@ -273,6 +273,15 @@ void InitMaterial(ObjLoader::material_t& material)
material.unknown_parameter.clear();
}
static std::string& replacePathSeperator(std::string& path)
{
for (int i = 0; i < path.size(); i++) {
if (path[i] == '\\')
path[i] = '/';
}
return path;
}
std::string LoadMtl ( std::map<std::string, ObjLoader::material_t>& material_map, const char* filename, const char* mtl_basepath)
{
material_map.clear();
@ -451,6 +460,7 @@ std::string LoadMtl ( std::map<std::string, ObjLoader::material_t>& material_map
{
token += 7;
material.ambient_texname = trim(token);
replacePathSeperator(material.ambient_texname);
continue;
}
@ -459,6 +469,7 @@ std::string LoadMtl ( std::map<std::string, ObjLoader::material_t>& material_map
{
token += 7;
material.diffuse_texname = trim(token);
replacePathSeperator(material.diffuse_texname);
continue;
}
@ -467,6 +478,7 @@ std::string LoadMtl ( std::map<std::string, ObjLoader::material_t>& material_map
{
token += 7;
material.specular_texname = trim(token);
replacePathSeperator(material.specular_texname);
continue;
}
@ -475,6 +487,7 @@ std::string LoadMtl ( std::map<std::string, ObjLoader::material_t>& material_map
{
token += 7;
material.normal_texname = trim(token);
replacePathSeperator(material.normal_texname);
continue;
}

View File

@ -30,6 +30,7 @@
#include "renderer/CCGLProgramCache.h"
#include "renderer/CCGLProgramState.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCRenderState.h"
#include "3d/CCSkybox.h"
#include "3d/CCTextureCube.h"
@ -183,14 +184,21 @@ void Skybox::onDraw(const Mat4& transform, uint32_t flags)
glGetIntegerv(GL_DEPTH_FUNC, &depthFunc);
glEnable(GL_DEPTH_TEST);
RenderState::StateBlock::_defaultState->setDepthTest(true);
glDepthFunc(GL_LEQUAL);
RenderState::StateBlock::_defaultState->setDepthFunction(RenderState::DEPTH_LEQUAL);
GLboolean cullFlag = glIsEnabled(GL_CULL_FACE);
GLint cullMode;
glGetIntegerv(GL_CULL_FACE_MODE, &cullMode);
glEnable(GL_CULL_FACE);
RenderState::StateBlock::_defaultState->setCullFace(true);
glCullFace(GL_BACK);
RenderState::StateBlock::_defaultState->setCullFaceSide(RenderState::CULL_FACE_SIDE_BACK);
if (Configuration::getInstance()->supportsShareableVAO())
{

View File

@ -202,6 +202,11 @@ physics3d/CCPhysics3DObject.cpp \
physics3d/CCPhysics3DShape.cpp \
physics3d/CCPhysicsSprite3D.cpp \
physics3d/CCPhysics3DConstraint.cpp \
navmesh/CCNavMesh.cpp \
navmesh/CCNavMeshAgent.cpp \
navmesh/CCNavMeshDebugDraw.cpp \
navmesh/CCNavMeshObstacle.cpp \
navmesh/CCNavMeshUtils.cpp \
../external/ConvertUTF/ConvertUTFWrapper.cpp \
../external/ConvertUTF/ConvertUTF.c \
../external/tinyxml2/tinyxml2.cpp \
@ -260,6 +265,7 @@ LOCAL_STATIC_LIBRARIES += cocos_tiff_static
LOCAL_STATIC_LIBRARIES += cocos_webp_static
LOCAL_STATIC_LIBRARIES += cocos_chipmunk_static
LOCAL_STATIC_LIBRARIES += cocos_zlib_static
LOCAL_STATIC_LIBRARIES += recast_static
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dxandroid_static
@ -307,6 +313,7 @@ $(call import-module,ui)
$(call import-module,extensions)
$(call import-module,Box2D)
$(call import-module,bullet)
$(call import-module,recast)
$(call import-module,curl/prebuilt/android)
$(call import-module,websockets/prebuilt/android)
$(call import-module,flatbuffers)

View File

@ -37,6 +37,7 @@ include(platform/CMakeLists.txt)
include(physics/CMakeLists.txt)
include(physics3d/CMakeLists.txt)
include(math/CMakeLists.txt)
include(navmesh/CMakeLists.txt)
include(renderer/CMakeLists.txt)
include(base/CMakeLists.txt)
include(deprecated/CMakeLists.txt)
@ -70,6 +71,7 @@ set(COCOS_SRC cocos2d.cpp
${COCOS_PHYSICS_SRC}
${COCOS_PHYSICS3D_SRC}
${COCOS_MATH_SRC}
${COCOS_NAVMESH_SRC}
${COCOS_RENDERER_SRC}
${COCOS_BASE_SRC}
${COCOS_AUDIO_SRC}
@ -156,6 +158,10 @@ if(USE_BULLET)
cocos_use_pkg(cocos2d BULLET)
endif()
if(USE_RECAST)
cocos_use_pkg(cocos2d RECAST)
endif()
set_target_properties(cocos2d
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"

View File

@ -41,7 +41,7 @@
#endif // ERROR
/**
* @addtogroup core
* @addtogroup audio
* @{
*/

View File

@ -38,7 +38,7 @@ THE SOFTWARE.
#endif
/**
* @addtogroup core
* @addtogroup audio
* @{
*/

View File

@ -67,14 +67,6 @@ THE SOFTWARE.
#include "CCScriptSupport.h"
#endif
#if CC_USE_PHYSICS
#include "physics/CCPhysicsWorld.h"
#endif
#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
#include "physics3d/CCPhysics3DWorld.h"
#endif
/**
Position of the FPS
@ -292,19 +284,8 @@ void Director::drawScene()
if (_runningScene)
{
#if CC_USE_PHYSICS
auto physicsWorld = _runningScene->getPhysicsWorld();
if (physicsWorld && physicsWorld->isAutoStep())
{
physicsWorld->update(_deltaTime, false);
}
#endif
#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
auto physics3DWorld = _runningScene->getPhysics3DWorld();
if (physics3DWorld)
{
physics3DWorld->stepSimulate(_deltaTime);
}
#if (CC_USE_PHYSICS || (CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION) || CC_USE_NAVMESH)
_runningScene->stepPhysicsAndNavigation(_deltaTime);
#endif
//clear draw stats
_renderer->clearDrawStats();

View File

@ -260,6 +260,11 @@ THE SOFTWARE.
#endif
#endif
/** Use 3D navigation API */
#ifndef CC_USE_NAVMESH
#define CC_USE_NAVMESH 1
#endif
/** Use culling or not. */
#ifndef CC_USE_CULLING
#define CC_USE_CULLING 1

View File

@ -929,6 +929,8 @@ namespace cocostudio
Size contentSize(options->widgetOptions()->size()->width(), options->widgetOptions()->size()->height());
button->setContentSize(contentSize);
}
button->setBright(displaystate);
}
Node* ButtonReader::createNodeWithFlatBuffers(const flatbuffers::Table *buttonOptions)

View File

@ -32,7 +32,7 @@
#define SPINE_EXTENSION_H_
/* All allocation uses these. */
#define MALLOC(TYPE,COUNT) ((TYPE*)_malloc(sizeof(TYPE) * COUNT, __FILE__, __LINE__))
#define MALLOC(TYPE,COUNT) ((TYPE*)_malloc(sizeof(TYPE) * (COUNT), __FILE__, __LINE__))
#define CALLOC(TYPE,COUNT) ((TYPE*)_calloc(COUNT, sizeof(TYPE), __FILE__, __LINE__))
#define NEW(TYPE) CALLOC(TYPE,1)

637
cocos/navmesh/CCNavMesh.cpp Normal file
View File

@ -0,0 +1,637 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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 "navmesh/CCNavMesh.h"
#if CC_USE_NAVMESH
#include "platform/CCFileUtils.h"
#include "renderer/CCRenderer.h"
#include "recast/Detour/DetourCommon.h"
#include "recast/DebugUtils/DetourDebugDraw.h"
#include <sstream>
NS_CC_BEGIN
struct TileCacheSetHeader
{
int magic;
int version;
int numTiles;
dtNavMeshParams meshParams;
dtTileCacheParams cacheParams;
};
struct TileCacheTileHeader
{
dtCompressedTileRef tileRef;
int dataSize;
};
static unsigned char* parseRow(unsigned char* buf, unsigned char* bufEnd, char* row, int len)
{
bool start = true;
bool done = false;
int n = 0;
while (!done && buf < bufEnd)
{
char c = *buf;
buf++;
// multirow
switch (c)
{
case '\n':
if (start) break;
done = true;
break;
case '\r':
break;
case '\t':
case ' ':
if (start) break;
default:
start = false;
row[n++] = c;
if (n >= len - 1)
done = true;
break;
}
}
row[n] = '\0';
return buf;
}
static const int TILECACHESET_MAGIC = 'T' << 24 | 'S' << 16 | 'E' << 8 | 'T'; //'TSET';
static const int TILECACHESET_VERSION = 1;
static const int MAX_AGENTS = 128;
NavMesh* NavMesh::create(const std::string &navFilePath, const std::string &geomFilePath)
{
auto ref = new (std::nothrow) NavMesh();
if (ref && ref->initWithFilePath(navFilePath, geomFilePath))
{
ref->autorelease();
return ref;
}
CC_SAFE_DELETE(ref);
return nullptr;
}
NavMesh::NavMesh()
: _navMesh(nullptr)
, _navMeshQuery(nullptr)
, _crowed(nullptr)
, _tileCache(nullptr)
, _allocator(nullptr)
, _compressor(nullptr)
, _meshProcess(nullptr)
, _geomData(nullptr)
, _isDebugDrawEnabled(false)
{
}
NavMesh::~NavMesh()
{
dtFreeTileCache(_tileCache);
dtFreeCrowd(_crowed);
dtFreeNavMesh(_navMesh);
dtFreeNavMeshQuery(_navMeshQuery);
CC_SAFE_DELETE(_allocator);
CC_SAFE_DELETE(_compressor);
CC_SAFE_DELETE(_meshProcess);
CC_SAFE_DELETE(_geomData);
for (auto iter : _agentList){
CC_SAFE_RELEASE(iter);
}
_agentList.clear();
for (auto iter : _obstacleList){
CC_SAFE_RELEASE(iter);
}
_obstacleList.clear();
}
bool NavMesh::initWithFilePath(const std::string &navFilePath, const std::string &geomFilePath)
{
_navFilePath = navFilePath;
_geomFilePath = geomFilePath;
if (!read()) return false;
return true;
}
bool NavMesh::read()
{
if (!loadGeomFile()) return false;
if (!loadNavMeshFile()) return false;
return true;
}
bool NavMesh::loadNavMeshFile()
{
auto data = FileUtils::getInstance()->getDataFromFile(_navFilePath);
if (data.isNull()) return false;
// Read header.
unsigned int offset = 0;
TileCacheSetHeader header = *((TileCacheSetHeader*)(data.getBytes() + offset));
offset += sizeof(TileCacheSetHeader);
if (header.magic != TILECACHESET_MAGIC)
{
return false;
}
if (header.version != TILECACHESET_VERSION)
{
return false;
}
_navMesh = dtAllocNavMesh();
if (!_navMesh)
{
return false;
}
dtStatus status = _navMesh->init(&header.meshParams);
if (dtStatusFailed(status))
{
return false;
}
_tileCache = dtAllocTileCache();
if (!_tileCache)
{
return false;
}
_allocator = new LinearAllocator(32000);
_compressor = new FastLZCompressor;
_meshProcess = new MeshProcess(_geomData);
status = _tileCache->init(&header.cacheParams, _allocator, _compressor, _meshProcess);
if (dtStatusFailed(status))
{
return false;
}
// Read tiles.
for (int i = 0; i < header.numTiles; ++i)
{
TileCacheTileHeader tileHeader = *((TileCacheTileHeader*)(data.getBytes() + offset));
offset += sizeof(TileCacheTileHeader);
if (!tileHeader.tileRef || !tileHeader.dataSize)
break;
unsigned char* tileData = (unsigned char*)dtAlloc(tileHeader.dataSize, DT_ALLOC_PERM);
if (!tileData) break;
memcpy(tileData, (data.getBytes() + offset), tileHeader.dataSize);
offset += tileHeader.dataSize;
dtCompressedTileRef tile = 0;
_tileCache->addTile(tileData, tileHeader.dataSize, DT_COMPRESSEDTILE_FREE_DATA, &tile);
if (tile)
_tileCache->buildNavMeshTile(tile, _navMesh);
}
//create crowed
_crowed = dtAllocCrowd();
_crowed->init(MAX_AGENTS, header.cacheParams.walkableRadius, _navMesh);
//create NavMeshQuery
_navMeshQuery = dtAllocNavMeshQuery();
_navMeshQuery->init(_navMesh, 2048);
_agentList.assign(MAX_AGENTS, nullptr);
_obstacleList.assign(header.cacheParams.maxObstacles, nullptr);
//duDebugDrawNavMesh(&_debugDraw, *_navMesh, DU_DRAWNAVMESH_OFFMESHCONS);
return true;
}
bool NavMesh::loadGeomFile()
{
unsigned char* buf = 0;
auto data = FileUtils::getInstance()->getDataFromFile(_geomFilePath);
if (data.isNull()) return false;
buf = data.getBytes();
_geomData = new GeomData;
_geomData->offMeshConCount = 0;
unsigned char* src = buf;
unsigned char* srcEnd = buf + data.getSize();
char row[512];
while (src < srcEnd)
{
// Parse one row
row[0] = '\0';
src = parseRow(src, srcEnd, row, sizeof(row) / sizeof(char));
if (row[0] == 'c')
{
// Off-mesh connection
if (_geomData->offMeshConCount < GeomData::MAX_OFFMESH_CONNECTIONS)
{
float* v = &_geomData->offMeshConVerts[_geomData->offMeshConCount * 3 * 2];
int bidir, area = 0, flags = 0;
float rad;
sscanf(row + 1, "%f %f %f %f %f %f %f %d %d %d",
&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &rad, &bidir, &area, &flags);
_geomData->offMeshConRads[_geomData->offMeshConCount] = rad;
_geomData->offMeshConDirs[_geomData->offMeshConCount] = (unsigned char)bidir;
_geomData->offMeshConAreas[_geomData->offMeshConCount] = (unsigned char)area;
_geomData->offMeshConFlags[_geomData->offMeshConCount] = (unsigned short)flags;
_geomData->offMeshConCount++;
}
}
}
return true;
}
void NavMesh::dtDraw()
{
drawObstacles();
_debugDraw.depthMask(false);
duDebugDrawNavMeshWithClosedList(&_debugDraw, *_navMesh, *_navMeshQuery, DU_DRAWNAVMESH_OFFMESHCONS | DU_DRAWNAVMESH_CLOSEDLIST/* | DU_DRAWNAVMESH_COLOR_TILES*/);
drawAgents();
drawOffMeshConnections();
_debugDraw.depthMask(true);
}
void cocos2d::NavMesh::drawOffMeshConnections()
{
unsigned int conColor = duRGBA(192, 0, 128, 192);
unsigned int baseColor = duRGBA(0, 0, 0, 64);
_debugDraw.begin(DU_DRAW_LINES, 2.0f);
for (int i = 0; i < _geomData->offMeshConCount; ++i)
{
float* v = &_geomData->offMeshConVerts[i * 3 * 2];
_debugDraw.vertex(v[0], v[1], v[2], baseColor);
_debugDraw.vertex(v[0], v[1] + 0.2f, v[2], baseColor);
_debugDraw.vertex(v[3], v[4], v[5], baseColor);
_debugDraw.vertex(v[3], v[4] + 0.2f, v[5], baseColor);
duAppendCircle(&_debugDraw, v[0], v[1] + 0.1f, v[2], _geomData->offMeshConRads[i], baseColor);
duAppendCircle(&_debugDraw, v[3], v[4] + 0.1f, v[5], _geomData->offMeshConRads[i], baseColor);
if (/*hilight*/true)
{
duAppendArc(&_debugDraw, v[0], v[1], v[2], v[3], v[4], v[5], 0.25f,
(_geomData->offMeshConDirs[i] & 1) ? 0.6f : 0.0f, 0.6f, conColor);
}
}
_debugDraw.end();
}
void cocos2d::NavMesh::drawObstacles()
{
// Draw obstacles
for (auto iter : _obstacleList)
{
if (iter){
const dtTileCacheObstacle* ob = _tileCache->getObstacleByRef(iter->_obstacleID);
if (ob->state == DT_OBSTACLE_EMPTY) continue;
float bmin[3], bmax[3];
_tileCache->getObstacleBounds(ob, bmin, bmax);
unsigned int col = 0;
if (ob->state == DT_OBSTACLE_PROCESSING)
col = duRGBA(255, 255, 0, 128);
else if (ob->state == DT_OBSTACLE_PROCESSED)
col = duRGBA(255, 192, 0, 192);
else if (ob->state == DT_OBSTACLE_REMOVING)
col = duRGBA(220, 0, 0, 128);
duDebugDrawCylinder(&_debugDraw, bmin[0], bmin[1], bmin[2], bmax[0], bmax[1], bmax[2], col);
duDebugDrawCylinderWire(&_debugDraw, bmin[0], bmin[1], bmin[2], bmax[0], bmax[1], bmax[2], duDarkenCol(col), 2);
}
}
}
void cocos2d::NavMesh::drawAgents()
{
for (auto iter : _agentList)
{
if (iter){
auto agent = _crowed->getAgent(iter->_agentID);
float r = iter->getRadius();
float h = iter->getHeight();
unsigned int col = duRGBA(0, 0, 0, 32);
duDebugDrawCircle(&_debugDraw, agent->npos[0], agent->npos[1], agent->npos[2], r, col, 2.0f);
col = duRGBA(220, 220, 220, 128);
if (agent->targetState == DT_CROWDAGENT_TARGET_REQUESTING || agent->targetState == DT_CROWDAGENT_TARGET_WAITING_FOR_QUEUE)
col = duLerpCol(col, duRGBA(128, 0, 255, 128), 32);
else if (agent->targetState == DT_CROWDAGENT_TARGET_WAITING_FOR_PATH)
col = duLerpCol(col, duRGBA(128, 0, 255, 128), 128);
else if (agent->targetState == DT_CROWDAGENT_TARGET_FAILED)
col = duRGBA(255, 32, 16, 128);
else if (agent->targetState == DT_CROWDAGENT_TARGET_VELOCITY)
col = duLerpCol(col, duRGBA(64, 255, 0, 128), 128);
duDebugDrawCylinder(&_debugDraw, agent->npos[0] - r, agent->npos[1] + r*0.1f, agent->npos[2] - r,
agent->npos[0] + r, agent->npos[1] + h, agent->npos[2] + r, col);
}
}
// Velocity stuff.
for (auto iter : _agentList)
{
if (iter){
auto agent = _crowed->getAgent(iter->_agentID);
const float radius = agent->params.radius;
const float height = agent->params.height;
const float* pos = agent->npos;
const float* vel = agent->vel;
// const float* dvel = agent->dvel;
unsigned int col = duRGBA(220, 220, 220, 192);
if (agent->targetState == DT_CROWDAGENT_TARGET_REQUESTING || agent->targetState == DT_CROWDAGENT_TARGET_WAITING_FOR_QUEUE)
col = duLerpCol(col, duRGBA(128, 0, 255, 192), 32);
else if (agent->targetState == DT_CROWDAGENT_TARGET_WAITING_FOR_PATH)
col = duLerpCol(col, duRGBA(128, 0, 255, 192), 128);
else if (agent->targetState == DT_CROWDAGENT_TARGET_FAILED)
col = duRGBA(255, 32, 16, 192);
else if (agent->targetState == DT_CROWDAGENT_TARGET_VELOCITY)
col = duLerpCol(col, duRGBA(64, 255, 0, 192), 128);
duDebugDrawCircle(&_debugDraw, pos[0], pos[1] + height, pos[2], radius, col, 2.0f);
//duDebugDrawArrow(&_debugDraw, pos[0], pos[1] + height, pos[2],
// pos[0] + dvel[0], pos[1] + height + dvel[1], pos[2] + dvel[2],
// 0.0f, 0.4f, duRGBA(0, 192, 255, 192), 2.0f);
duDebugDrawArrow(&_debugDraw, pos[0], pos[1] + height, pos[2],
pos[0] + vel[0], pos[1] + height + vel[1], pos[2] + vel[2],
0.0f, 0.4f, duRGBA(0, 0, 0, 160), 2.0f);
}
}
}
void NavMesh::removeNavMeshObstacle(NavMeshObstacle *obstacle)
{
auto iter = std::find(_obstacleList.begin(), _obstacleList.end(), obstacle);
if (iter != _obstacleList.end()){
obstacle->removeFrom(_tileCache);
obstacle->release();
_obstacleList[iter - _obstacleList.begin()] = nullptr;
}
}
void NavMesh::addNavMeshObstacle(NavMeshObstacle *obstacle)
{
auto iter = std::find(_obstacleList.begin(), _obstacleList.end(), nullptr);
if (iter != _obstacleList.end()){
obstacle->addTo(_tileCache);
obstacle->retain();
_obstacleList[iter - _obstacleList.begin()] = obstacle;
}
}
void NavMesh::removeNavMeshAgent(NavMeshAgent *agent)
{
auto iter = std::find(_agentList.begin(), _agentList.end(), agent);
if (iter != _agentList.end()){
agent->removeFrom(_crowed);
agent->setNavMeshQuery(nullptr);
agent->release();
_agentList[iter - _agentList.begin()] = nullptr;
}
}
void NavMesh::addNavMeshAgent(NavMeshAgent *agent)
{
auto iter = std::find(_agentList.begin(), _agentList.end(), nullptr);
if (iter != _agentList.end()){
agent->addTo(_crowed);
agent->setNavMeshQuery(_navMeshQuery);
agent->retain();
_agentList[iter - _agentList.begin()] = agent;
}
}
bool NavMesh::isDebugDrawEnabled() const
{
return _isDebugDrawEnabled;
}
void NavMesh::setDebugDrawEnable(bool enable)
{
_isDebugDrawEnabled = enable;
}
void NavMesh::debugDraw(Renderer* renderer)
{
if (_isDebugDrawEnabled){
_debugDraw.clear();
dtDraw();
_debugDraw.draw(renderer);
}
}
void NavMesh::update(float dt)
{
for (auto iter : _agentList){
if (iter)
iter->preUpdate(dt);
}
for (auto iter : _obstacleList){
if (iter)
iter->preUpdate(dt);
}
if (_crowed)
_crowed->update(dt, nullptr);
if (_tileCache)
_tileCache->update(dt, _navMesh);
for (auto iter : _agentList){
if (iter)
iter->postUpdate(dt);
}
for (auto iter : _obstacleList){
if (iter)
iter->postUpdate(dt);
}
}
void cocos2d::NavMesh::findPath(const Vec3 &start, const Vec3 &end, std::vector<Vec3> &pathPoints)
{
static const int MAX_POLYS = 256;
static const int MAX_SMOOTH = 2048;
int pathIterNum = 0;
float ext[3];
ext[0] = 2; ext[1] = 4; ext[2] = 2;
dtQueryFilter filter;
dtPolyRef startRef, endRef;
dtPolyRef polys[MAX_POLYS];
int npolys = 0;
_navMeshQuery->findNearestPoly(&start.x, ext, &filter, &startRef, 0);
_navMeshQuery->findNearestPoly(&end.x, ext, &filter, &endRef, 0);
_navMeshQuery->findPath(startRef, endRef, &start.x, &end.x, &filter, polys, &npolys, MAX_POLYS);
if (npolys)
{
//// Iterate over the path to find smooth path on the detail mesh surface.
//dtPolyRef polys[MAX_POLYS];
//memcpy(polys, polys, sizeof(dtPolyRef)*npolys);
//int npolys = npolys;
float iterPos[3], targetPos[3];
_navMeshQuery->closestPointOnPoly(startRef, &start.x, iterPos, 0);
_navMeshQuery->closestPointOnPoly(polys[npolys - 1], &end.x, targetPos, 0);
static const float STEP_SIZE = 0.5f;
static const float SLOP = 0.01f;
int nsmoothPath = 0;
//dtVcopy(&m_smoothPath[m_nsmoothPath * 3], iterPos);
//m_nsmoothPath++;
pathPoints.push_back(Vec3(iterPos[0], iterPos[1], iterPos[2]));
nsmoothPath++;
// Move towards target a small advancement at a time until target reached or
// when ran out of memory to store the path.
while (npolys && nsmoothPath < MAX_SMOOTH)
{
// Find location to steer towards.
float steerPos[3];
unsigned char steerPosFlag;
dtPolyRef steerPosRef;
if (!getSteerTarget(_navMeshQuery, iterPos, targetPos, SLOP,
polys, npolys, steerPos, steerPosFlag, steerPosRef))
break;
bool endOfPath = (steerPosFlag & DT_STRAIGHTPATH_END) ? true : false;
bool offMeshConnection = (steerPosFlag & DT_STRAIGHTPATH_OFFMESH_CONNECTION) ? true : false;
// Find movement delta.
float delta[3], len;
dtVsub(delta, steerPos, iterPos);
len = dtMathSqrtf(dtVdot(delta, delta));
// If the steer target is end of path or off-mesh link, do not move past the location.
if ((endOfPath || offMeshConnection) && len < STEP_SIZE)
len = 1;
else
len = STEP_SIZE / len;
float moveTgt[3];
dtVmad(moveTgt, iterPos, delta, len);
// Move
float result[3];
dtPolyRef visited[16];
int nvisited = 0;
_navMeshQuery->moveAlongSurface(polys[0], iterPos, moveTgt, &filter,
result, visited, &nvisited, 16);
npolys = fixupCorridor(polys, npolys, MAX_POLYS, visited, nvisited);
npolys = fixupShortcuts(polys, npolys, _navMeshQuery);
float h = 0;
_navMeshQuery->getPolyHeight(polys[0], result, &h);
result[1] = h;
dtVcopy(iterPos, result);
// Handle end of path and off-mesh links when close enough.
if (endOfPath && inRange(iterPos, steerPos, SLOP, 1.0f))
{
// Reached end of path.
dtVcopy(iterPos, targetPos);
if (nsmoothPath < MAX_SMOOTH)
{
//dtVcopy(&m_smoothPath[m_nsmoothPath * 3], iterPos);
//m_nsmoothPath++;
pathPoints.push_back(Vec3(iterPos[0], iterPos[1], iterPos[2]));
nsmoothPath++;
}
break;
}
else if (offMeshConnection && inRange(iterPos, steerPos, SLOP, 1.0f))
{
// Reached off-mesh connection.
float startPos[3], endPos[3];
// Advance the path up to and over the off-mesh connection.
dtPolyRef prevRef = 0, polyRef = polys[0];
int npos = 0;
while (npos < npolys && polyRef != steerPosRef)
{
prevRef = polyRef;
polyRef = polys[npos];
npos++;
}
for (int i = npos; i < npolys; ++i)
polys[i - npos] = polys[i];
npolys -= npos;
// Handle the connection.
dtStatus status = _navMesh->getOffMeshConnectionPolyEndPoints(prevRef, polyRef, startPos, endPos);
if (dtStatusSucceed(status))
{
if (nsmoothPath < MAX_SMOOTH)
{
//dtVcopy(&m_smoothPath[m_nsmoothPath * 3], startPos);
//m_nsmoothPath++;
pathPoints.push_back(Vec3(startPos[0], startPos[1], startPos[2]));
nsmoothPath++;
// Hack to make the dotted path not visible during off-mesh connection.
if (nsmoothPath & 1)
{
//dtVcopy(&m_smoothPath[m_nsmoothPath * 3], startPos);
//m_nsmoothPath++;
pathPoints.push_back(Vec3(startPos[0], startPos[1], startPos[2]));
nsmoothPath++;
}
}
// Move position at the other side of the off-mesh link.
dtVcopy(iterPos, endPos);
float eh = 0.0f;
_navMeshQuery->getPolyHeight(polys[0], iterPos, &eh);
iterPos[1] = eh;
}
}
// Store results.
if (nsmoothPath < MAX_SMOOTH)
{
//dtVcopy(&m_smoothPath[m_nsmoothPath * 3], iterPos);
//m_nsmoothPath++;
pathPoints.push_back(Vec3(iterPos[0], iterPos[1], iterPos[2]));
nsmoothPath++;
}
}
}
}
NS_CC_END
#endif //CC_USE_NAVMESH

139
cocos/navmesh/CCNavMesh.h Normal file
View File

@ -0,0 +1,139 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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.
****************************************************************************/
#ifndef __CCNAV_MESH_H__
#define __CCNAV_MESH_H__
#include "base/ccConfig.h"
#if CC_USE_NAVMESH
#include "base/CCRef.h"
#include "math/Vec3.h"
#include "recast/Detour/DetourNavMesh.h"
#include "recast/Detour/DetourNavMeshQuery.h"
#include "recast/DetourCrowd/DetourCrowd.h"
#include "recast/DetourTileCache/DetourTileCache.h"
#include <string>
#include <vector>
#include "navmesh/CCNavMeshAgent.h"
#include "navmesh/CCNavMeshDebugDraw.h"
#include "navmesh/CCNavMeshObstacle.h"
#include "navmesh/CCNavMeshUtils.h"
NS_CC_BEGIN
/**
* @addtogroup 3d
* @{
*/
class Renderer;
/** @brief NavMesh: The NavMesh information container, include mesh, tileCache, and so on. */
class CC_DLL NavMesh : public Ref
{
public:
/**
Create navmesh
@param navFilePath The NavMesh File path.
@param geomFilePath The geometry File Path,include offmesh information,etc.
*/
static NavMesh* create(const std::string &navFilePath, const std::string &geomFilePath);
/** update navmesh. */
void update(float dt);
/** Internal method, the updater of debug drawing, need called each frame. */
void debugDraw(Renderer* renderer);
/** Enable debug draw or disable. */
void setDebugDrawEnable(bool enable);
/** Check enabled debug draw. */
bool isDebugDrawEnabled() const;
/** add a agent to navmesh. */
void addNavMeshAgent(NavMeshAgent *agent);
/** remove a agent from navmesh. */
void removeNavMeshAgent(NavMeshAgent *agent);
/** add a obstacle to navmesh. */
void addNavMeshObstacle(NavMeshObstacle *obstacle);
/** remove a obstacle from navmesh. */
void removeNavMeshObstacle(NavMeshObstacle *obstacle);
/**
find a path on navmesh
@param start The start search position in world coordinate system.
@param end The end search position in world coordinate system.
@param pathPoints the key points of path.
*/
void findPath(const Vec3 &start, const Vec3 &end, std::vector<Vec3> &pathPoints);
CC_CONSTRUCTOR_ACCESS:
NavMesh();
virtual ~NavMesh();
protected:
bool initWithFilePath(const std::string &navFilePath, const std::string &geomFilePath);
bool read();
bool loadNavMeshFile();
bool loadGeomFile();
void dtDraw();
void drawAgents();
void drawObstacles();
void drawOffMeshConnections();
protected:
dtNavMesh *_navMesh;
dtNavMeshQuery *_navMeshQuery;
dtCrowd *_crowed;
dtTileCache *_tileCache;
LinearAllocator *_allocator;
FastLZCompressor *_compressor;
MeshProcess *_meshProcess;
GeomData *_geomData;
std::vector<NavMeshAgent*> _agentList;
std::vector<NavMeshObstacle*> _obstacleList;
NavMeshDebugDraw _debugDraw;
std::string _navFilePath;
std::string _geomFilePath;
bool _isDebugDrawEnabled;
};
/** @} */
NS_CC_END
#endif //CC_USE_NAVMESH
#endif // __CCNAV_MESH_H__

View File

@ -0,0 +1,408 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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 "navmesh/CCNavMeshAgent.h"
#if CC_USE_NAVMESH
#include "navmesh/CCNavMesh.h"
#include "recast/DetourCrowd/DetourCrowd.h"
#include "2d/CCNode.h"
#include "2d/CCScene.h"
#include <algorithm>
NS_CC_BEGIN
NavMeshAgentParam::NavMeshAgentParam()
: radius(0.6f)
, height(2.0f)
, maxAcceleration(8.0f)
, maxSpeed(3.5f)
, collisionQueryRange(radius * 12.0f)
, pathOptimizationRange(radius * 30.0f)
, updateFlags(DT_CROWD_ANTICIPATE_TURNS | DT_CROWD_OPTIMIZE_VIS | DT_CROWD_OPTIMIZE_TOPO | DT_CROWD_OBSTACLE_AVOIDANCE)
, obstacleAvoidanceType(3)
, separationWeight(2.0f)
, queryFilterType(0)
{
}
NavMeshAgent* NavMeshAgent::create(const NavMeshAgentParam &param)
{
auto ref = new (std::nothrow) NavMeshAgent();
if (ref && ref->initWith(param))
{
ref->autorelease();
return ref;
}
CC_SAFE_DELETE(ref);
return nullptr;
}
const std::string& NavMeshAgent::getNavMeshAgentComponentName()
{
static std::string comName = "___NavMeshAgentComponent___";
return comName;
}
cocos2d::NavMeshAgent::NavMeshAgent()
: _agentID(-1)
, _needAutoOrientation(true)
, _crowd(nullptr)
, _needUpdateAgent(true)
, _needMove(false)
, _navMeshQuery(nullptr)
, _rotRefAxes(Vec3::UNIT_Z)
, _totalTimeAfterMove(0.0f)
, _userData(nullptr)
, _state(DT_CROWDAGENT_STATE_WALKING)
, _syncFlag(NODE_AND_NODE)
{
}
cocos2d::NavMeshAgent::~NavMeshAgent()
{
}
bool NavMeshAgent::initWith(const NavMeshAgentParam &param)
{
_param = param;
setName(getNavMeshAgentComponentName());
return true;
}
void cocos2d::NavMeshAgent::setNavMeshQuery(dtNavMeshQuery *query)
{
_navMeshQuery = query;
}
void cocos2d::NavMeshAgent::removeFrom(dtCrowd *crowed)
{
crowed->removeAgent(_agentID);
_crowd = nullptr;
_agentID = -1;
}
void cocos2d::NavMeshAgent::addTo(dtCrowd *crowed)
{
_crowd = crowed;
dtCrowdAgentParams ap;
convertTodtAgentParam(_param, ap);
Mat4 mat = _owner->getNodeToWorldTransform();
_agentID = _crowd->addAgent(&mat.m[12], &ap);
}
void cocos2d::NavMeshAgent::convertTodtAgentParam(const NavMeshAgentParam &inParam, dtCrowdAgentParams &outParam)
{
memset(&outParam, 0, sizeof(outParam));
outParam.collisionQueryRange = inParam.collisionQueryRange;
outParam.height = inParam.height;
outParam.maxAcceleration = inParam.maxAcceleration;
outParam.maxSpeed = inParam.maxSpeed;
outParam.obstacleAvoidanceType = inParam.obstacleAvoidanceType;
outParam.pathOptimizationRange = inParam.pathOptimizationRange;
outParam.queryFilterType = inParam.queryFilterType;
outParam.radius = inParam.radius;
outParam.separationWeight = inParam.separationWeight;
outParam.updateFlags = inParam.updateFlags;
}
void cocos2d::NavMeshAgent::onExit()
{
if (_agentID == -1) return;
Component::onExit();
auto scene = _owner->getScene();
if (scene && scene->getNavMesh()){
scene->getNavMesh()->removeNavMeshAgent(this);
}
}
void cocos2d::NavMeshAgent::onEnter()
{
if (_agentID != -1) return;
Component::onEnter();
auto scene = _owner->getScene();
if (scene && scene->getNavMesh()){
scene->getNavMesh()->addNavMeshAgent(this);
}
}
float NavMeshAgent::getMaxSpeed() const
{
return _param.maxSpeed;
}
void NavMeshAgent::setSeparationWeight(float weight)
{
_param.separationWeight = weight;
_needUpdateAgent = true;
}
float NavMeshAgent::getSeparationWeight() const
{
return _param.separationWeight;
}
void cocos2d::NavMeshAgent::setObstacleAvoidanceType(unsigned char type)
{
_param.obstacleAvoidanceType = type;
_needUpdateAgent = true;
}
unsigned char NavMeshAgent::getObstacleAvoidanceType() const
{
return _param.obstacleAvoidanceType;
}
Vec3 NavMeshAgent::getCurrentVelocity() const
{
if (_crowd){
auto agent = _crowd->getAgent(_agentID);
if (agent){
return Vec3(agent->vel[0], agent->vel[1], agent->vel[2]);
}
}
return Vec3::ZERO;
}
void NavMeshAgent::setMaxSpeed(float maxSpeed)
{
_param.maxSpeed = maxSpeed;
_needUpdateAgent = true;
}
float NavMeshAgent::getMaxAcceleration() const
{
return _param.maxAcceleration;
}
void NavMeshAgent::setMaxAcceleration(float maxAcceleration)
{
_param.maxAcceleration = maxAcceleration;
_needUpdateAgent = true;
}
float NavMeshAgent::getHeight() const
{
return _param.height;
}
void NavMeshAgent::setHeight(float height)
{
_param.height = height;
_needUpdateAgent = true;
}
float NavMeshAgent::getRadius() const
{
return _param.radius;
}
void NavMeshAgent::setRadius(float radius)
{
_param.radius = radius;
_needUpdateAgent = true;
}
void NavMeshAgent::move(const Vec3 &destination, const MoveCallback &callback)
{
_destination = destination;
_moveCallback = callback;
_needMove = true;
_needUpdateAgent = true;
}
OffMeshLinkData NavMeshAgent::getCurrentOffMeshLinkData()
{
OffMeshLinkData data;
if (_crowd && isOnOffMeshLink()){
auto agentAnim = _crowd->getEditableAgentAnim(_agentID);
if (agentAnim){
Mat4 mat;
if (_owner && _owner->getParent())
mat = _owner->getParent()->getWorldToNodeTransform();
mat.transformPoint(agentAnim->startPos, &data.startPosition);
mat.transformPoint(agentAnim->endPos, &data.endPosition);
}
}
return data;
}
bool NavMeshAgent::isOnOffMeshLink()
{
return _state == DT_CROWDAGENT_STATE_OFFMESH;
}
void cocos2d::NavMeshAgent::completeOffMeshLink()
{
if (_crowd && isOnOffMeshLink()){
_state = DT_CROWDAGENT_STATE_WALKING;
_needUpdateAgent = true;
}
}
void NavMeshAgent::setAutoTraverseOffMeshLink(bool isAuto)
{
if (_crowd && isOnOffMeshLink()){
auto agentAnim = _crowd->getEditableAgentAnim(_agentID);
if (agentAnim){
agentAnim->active = isAuto;
}
}
}
void NavMeshAgent::stop()
{
if (_state != DT_CROWDAGENT_STATE_INVALID) return;
_state = DT_CROWDAGENT_STATE_INVALID;
_needUpdateAgent = true;
}
void NavMeshAgent::setOrientationRefAxes(const Vec3 &rotRefAxes)
{
_rotRefAxes = rotRefAxes;
}
void cocos2d::NavMeshAgent::setAutoOrientation(bool isAuto)
{
_needAutoOrientation = isAuto;
}
void NavMeshAgent::resume()
{
if (_state != DT_CROWDAGENT_STATE_INVALID) return;
_state = DT_CROWDAGENT_STATE_WALKING;
_needUpdateAgent = true;
}
void NavMeshAgent::pause()
{
if (_state == DT_CROWDAGENT_STATE_INVALID) return;
_state = DT_CROWDAGENT_STATE_INVALID;
_needUpdateAgent = true;
}
void NavMeshAgent::preUpdate(float delta)
{
if (_state != DT_CROWDAGENT_STATE_INVALID)
_totalTimeAfterMove += delta;
if (_moveCallback && _state != DT_CROWDAGENT_STATE_INVALID)
_moveCallback(this, _totalTimeAfterMove);
if ((_syncFlag & NODE_TO_AGENT) != 0)
syncToAgent();
if (_needMove && _crowd && _navMeshQuery){
if (_state == DT_CROWDAGENT_STATE_OFFMESH) return;
_state = DT_CROWDAGENT_STATE_WALKING;
_totalTimeAfterMove = 0.0f;
dtPolyRef pRef = 0;
float nearestPos[3];
_navMeshQuery->findNearestPoly(&_destination.x, _crowd->getQueryExtents(), _crowd->getFilter(0), &pRef, nearestPos);
_crowd->requestMoveTarget(_agentID, pRef, nearestPos);
_needMove = false;
}
}
void NavMeshAgent::postUpdate(float delta)
{
if ((_syncFlag & AGENT_TO_NODE) != 0)
syncToNode();
}
void NavMeshAgent::syncToNode()
{
const dtCrowdAgent *agent = nullptr;
if (_crowd){
agent = _crowd->getAgent(_agentID);
}
if (agent){
Mat4 wtop;
Vec3 pos;
if (_owner->getParent())
wtop = _owner->getParent()->getWorldToNodeTransform();
wtop.transformPoint(Vec3(agent->npos[0], agent->npos[1], agent->npos[2]), &pos);
_owner->setPosition3D(pos);
_state = agent->state;
if (_needAutoOrientation){
if ( fabs(agent->vel[0]) > 0.3f || fabs(agent->vel[1]) > 0.3f || fabs(agent->vel[2]) > 0.3f)
{
Vec3 axes(_rotRefAxes);
axes.normalize();
Vec3 dir;
wtop.transformVector(Vec3(agent->vel[0], agent->vel[1], agent->vel[2]), &dir);
dir.normalize();
float cosTheta = Vec3::dot(axes, dir);
Vec3 rotAxes;
Vec3::cross(axes, dir, &rotAxes);
Quaternion rot = Quaternion(rotAxes, acosf(cosTheta));
_owner->setRotationQuat(rot);
}
}
}
}
void NavMeshAgent::syncToAgent()
{
if (_crowd){
auto agent = _crowd->getEditableAgent(_agentID);
Mat4 mat = _owner->getNodeToWorldTransform();
agent->npos[0] = mat.m[12];
agent->npos[1] = mat.m[13];
agent->npos[2] = mat.m[14];
//if (_needAutoOrientation){
// Vec3 vel = mat * _rotRefAxes;
// agent->vel[0] = vel.x;
// agent->vel[1] = vel.y;
// agent->vel[2] = vel.z;
//}
if (_needUpdateAgent){
dtCrowdAgentParams ap;
convertTodtAgentParam(_param, ap);
agent->params = ap;
agent->state = _state;
_needUpdateAgent = false;
}
}
}
Vec3 NavMeshAgent::getVelocity() const
{
const dtCrowdAgent *agent = nullptr;
if (_crowd){
agent = _crowd->getAgent(_agentID);
}
if (agent)
{
return Vec3(agent->vel[0], agent->vel[1], agent->vel[2]);
}
return Vec3::ZERO;
}
NS_CC_END
#endif //CC_USE_NAVMESH

View File

@ -0,0 +1,239 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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.
****************************************************************************/
#ifndef __CCNAV_MESH_AGENT_H__
#define __CCNAV_MESH_AGENT_H__
#include "base/ccConfig.h"
#if CC_USE_NAVMESH
#include "2d/CCComponent.h"
#include "base/CCRef.h"
#include "math/Vec3.h"
#include "recast/DetourCrowd/DetourCrowd.h"
class dtNavMeshQuery;
NS_CC_BEGIN
/**
* @addtogroup 3d
* @{
*/
struct CC_DLL NavMeshAgentParam
{
NavMeshAgentParam();
float radius; ///< Agent radius. [Limit: >= 0]
float height; ///< Agent height. [Limit: > 0]
float maxAcceleration; ///< Maximum allowed acceleration. [Limit: >= 0]
float maxSpeed; ///< Maximum allowed speed. [Limit: >= 0]
/// Defines how close a collision element must be before it is considered for steering behaviors. [Limits: > 0]
float collisionQueryRange;
float pathOptimizationRange; ///< The path visibility optimization range. [Limit: > 0]
/// How aggresive the agent manager should be at avoiding collisions with this agent. [Limit: >= 0]
float separationWeight;
/// Flags that impact steering behavior. (See: #UpdateFlags)
unsigned char updateFlags;
/// The index of the avoidance configuration to use for the agent.
/// [Limits: 0 <= value <= #DT_CROWD_MAX_OBSTAVOIDANCE_PARAMS]
unsigned char obstacleAvoidanceType;
/// The index of the query filter used by this agent.
unsigned char queryFilterType;
};
struct CC_DLL OffMeshLinkData
{
Vec3 startPosition;//position in local coordinate system.
Vec3 endPosition;//position in local coordinate system.
};
/** @brief NavMeshAgent: The code wrapping of dtCrowdAgent, use component mode. */
class CC_DLL NavMeshAgent : public Component
{
friend class NavMesh;
public:
enum NavMeshAgentSyncFlag
{
NONE = 0,
NODE_TO_AGENT = 1,
AGENT_TO_NODE = 2,
NODE_AND_NODE = NODE_TO_AGENT | AGENT_TO_NODE,
};
typedef std::function<void(NavMeshAgent *agent, float totalTimeAfterMove)> MoveCallback;
/**
Create agent
@param param The parameters of agent.
*/
static NavMeshAgent* create(const NavMeshAgentParam &param);
static const std::string& getNavMeshAgentComponentName();
virtual void onEnter() override;
virtual void onExit() override;
/** set agent radius */
void setRadius(float radius);
/** get agent radius */
float getRadius() const;
/** set agent height */
void setHeight(float height);
/** get agent height */
float getHeight() const;
/** set maximal acceleration of agent*/
void setMaxAcceleration(float maxAcceleration);
/** get maximal acceleration of agent*/
float getMaxAcceleration() const;
/** set maximal speed of agent */
void setMaxSpeed(float maxSpeed);
/** get maximal speed of agent */
float getMaxSpeed() const;
/** set separation weight */
void setSeparationWeight(float weight);
/** get separation weight */
float getSeparationWeight() const;
/** set obstacle avoidance type */
void setObstacleAvoidanceType(unsigned char type);
/** get obstacle avoidance type */
unsigned char getObstacleAvoidanceType() const;
/** get current velocity */
Vec3 getCurrentVelocity() const;
/**
Move agent to a destination
@param destination The position in world coordinate system.
@param callback Use this function can catch movement state.
*/
void move(const Vec3 &destination, const MoveCallback &callback = nullptr);
/** puase movement */
void pause();
/** resume movement */
void resume();
/** stop movement */
void stop();
/**
Set the reference axes of agent's orientation
@param rotRefAxes The value of reference axes in local coordinate system.
*/
void setOrientationRefAxes(const Vec3 &rotRefAxes);
/**Set automatic Orientation */
void setAutoOrientation(bool isAuto);
/**Set automatic Traverse OffMeshLink */
void setAutoTraverseOffMeshLink(bool isAuto);
/**Check agent arrived OffMeshLink */
bool isOnOffMeshLink();
/**Traverse OffMeshLink manually*/
void completeOffMeshLink();
/**Get current OffMeshLink information*/
OffMeshLinkData getCurrentOffMeshLinkData();
void setUserData(void *data) { _userData = data; };
void* getUserData() const { return _userData; };
/**
* synchronization between node and agent is time consuming, you can skip some synchronization using this function
*/
void setSyncFlag(const NavMeshAgentSyncFlag &flag) { _syncFlag = flag; }
NavMeshAgentSyncFlag getSyncFlag() const { return _syncFlag; }
/** synchronize parameter to agent. */
void syncToAgent();
/** synchronize parameter to node. */
void syncToNode();
/** get current velocity */
Vec3 getVelocity() const;
CC_CONSTRUCTOR_ACCESS:
NavMeshAgent();
virtual ~NavMeshAgent();
private:
bool initWith(const NavMeshAgentParam &param);
void addTo(dtCrowd *crowed);
void removeFrom(dtCrowd *crowed);
void setNavMeshQuery(dtNavMeshQuery *query);
void preUpdate(float delta);
void postUpdate(float delta);
static void convertTodtAgentParam(const NavMeshAgentParam &inParam, dtCrowdAgentParams &outParam);
private:
MoveCallback _moveCallback;
NavMeshAgentParam _param;
NavMeshAgentSyncFlag _syncFlag;
Vec3 _origination;
Vec3 _destination;
Vec3 _rotRefAxes;
unsigned char _state;
bool _needAutoOrientation;
int _agentID;
bool _needUpdateAgent;
bool _needMove;
float _totalTimeAfterMove;
void *_userData;
dtCrowd *_crowd;
dtNavMeshQuery *_navMeshQuery;
};
/** @} */
NS_CC_END
#endif //CC_USE_NAVMESH
#endif // __CCNAV_MESH_AGENT_H__

View File

@ -0,0 +1,183 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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 "navmesh/CCNavMeshDebugDraw.h"
#if CC_USE_NAVMESH
#include "renderer/CCGLProgramCache.h"
#include "renderer/ccGLStateCache.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCRenderState.h"
#include "base/CCDirector.h"
#include "base/ccMacros.h"
NS_CC_BEGIN
NavMeshDebugDraw::NavMeshDebugDraw()
: _primitiveType(GL_POINTS)
, _dirtyBuffer(true)
, _currentPrimitive(nullptr)
, _currentDepthMask(true)
{
_stateBlock = RenderState::StateBlock::create();
_stateBlock->setCullFace(true);
_stateBlock->setCullFaceSide(RenderState::CullFaceSide::CULL_FACE_SIDE_BACK);
_stateBlock->setDepthTest(true);
_stateBlock->setBlend(true);
_stateBlock->setBlendFunc(BlendFunc::ALPHA_NON_PREMULTIPLIED);
CC_SAFE_RETAIN(_stateBlock);
_customCmd.set3D(true);
_customCmd.setTransparent(true);
_program = GLProgramCache::getInstance()->getGLProgram(GLProgram::SHADER_NAME_POSITION_COLOR);
glGenBuffers(1, &_vbo);
}
void NavMeshDebugDraw::vertex(const float x, const float y, const float z, unsigned int color, const float u, const float v)
{
}
void NavMeshDebugDraw::vertex(const float* pos, unsigned int color, const float* uv)
{
vertex(pos[0], pos[1], pos[2], color, uv[0], uv[1]);
}
void NavMeshDebugDraw::vertex(const float x, const float y, const float z, unsigned int color)
{
if (!_currentPrimitive) return;
V3F_C4F vertex = { Vec3(x, y, z), getColor(color) };
_vertices.push_back(vertex);
_dirtyBuffer = true;
}
void NavMeshDebugDraw::vertex(const float* pos, unsigned int color)
{
vertex(pos[0], pos[1], pos[2], color);
}
NavMeshDebugDraw::~NavMeshDebugDraw()
{
CC_SAFE_RELEASE(_stateBlock);
for (auto iter : _primitiveList){
delete iter;
}
glDeleteBuffers(1, &_vbo);
}
void NavMeshDebugDraw::depthMask(bool state)
{
_currentDepthMask = state;
}
void NavMeshDebugDraw::begin(duDebugDrawPrimitives prim, float size /*= 1.0f*/)
{
if (_currentPrimitive) return;
_currentPrimitive = new Primitive;
_currentPrimitive->type = getPrimitiveType(prim);
_currentPrimitive->depthMask = _currentDepthMask;
_currentPrimitive->start = _vertices.size();
_currentPrimitive->size = size;
}
void NavMeshDebugDraw::end()
{
if (!_currentPrimitive) return;
_currentPrimitive->end = _vertices.size();
_primitiveList.push_back(_currentPrimitive);
_currentPrimitive = nullptr;
}
Vec4 NavMeshDebugDraw::getColor(unsigned int col)
{
const unsigned int r = col & 0xff;
const unsigned int g = (col >> 8) & 0xff;
const unsigned int b = (col >> 16) & 0xff;
const unsigned int a = (col >> 24) & 0xff;
float factor = 1.0f / 255.0f;
return Vec4(r, g, b, a) * factor;
}
GLenum NavMeshDebugDraw::getPrimitiveType(duDebugDrawPrimitives prim)
{
switch (prim)
{
case DU_DRAW_POINTS:
return GL_POINTS;
case DU_DRAW_LINES:
return GL_LINES;
case DU_DRAW_TRIS:
return GL_TRIANGLES;
default:
return GL_POINTS;
}
}
void NavMeshDebugDraw::drawImplement(const cocos2d::Mat4& transform, uint32_t flags)
{
_program->use();
_program->setUniformsForBuiltins(transform);
glBindBuffer(GL_ARRAY_BUFFER, _vbo);
GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POSITION | GL::VERTEX_ATTRIB_FLAG_COLOR);
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE, sizeof(V3F_C4F), (GLvoid *)offsetof(V3F_C4F, position));
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_FLOAT, GL_FALSE, sizeof(V3F_C4F), (GLvoid *)offsetof(V3F_C4F, color));
if (_dirtyBuffer){
glBufferData(GL_ARRAY_BUFFER, sizeof(V3F_C4F)* _vertices.size(), &_vertices[0], GL_STATIC_DRAW);
_dirtyBuffer = false;
}
for (auto &iter : _primitiveList){
_stateBlock->setDepthWrite(iter->depthMask);
if (iter->type == GL_POINTS){
//glPointSize(iter->size);
}
else if (iter->type == GL_LINES){
glLineWidth(iter->size);
}
_stateBlock->bind();
glDrawArrays(iter->type, iter->start, iter->end - iter->start);
CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1, iter->end - iter->start);
}
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
void NavMeshDebugDraw::draw(Renderer* renderer)
{
_customCmd.init(0, Mat4::IDENTITY, Node::FLAGS_RENDER_AS_3D);
_customCmd.func = CC_CALLBACK_0(NavMeshDebugDraw::drawImplement, this, Mat4::IDENTITY, 0);
renderer->addCommand(&_customCmd);
}
void NavMeshDebugDraw::clear()
{
_vertices.clear();
for (auto iter : _primitiveList){
delete iter;
}
_primitiveList.clear();
}
NS_CC_END
#endif //CC_USE_NAVMESH

View File

@ -0,0 +1,109 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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.
****************************************************************************/
#ifndef __CCNAV_MESH_DEBUG_DRAW_H__
#define __CCNAV_MESH_DEBUG_DRAW_H__
#include "base/ccConfig.h"
#if CC_USE_NAVMESH
#include "renderer/CCGLProgram.h"
#include "renderer/CCCustomCommand.h"
#include "renderer/CCRenderState.h"
#include "math/Vec3.h"
#include "recast/DebugUtils/DebugDraw.h"
#include <string>
#include <vector>
NS_CC_BEGIN
/**
* @addtogroup 3d
* @{
*/
class Renderer;
class NavMeshDebugDraw : public duDebugDraw
{
public:
NavMeshDebugDraw();
virtual ~NavMeshDebugDraw();
virtual void depthMask(bool state);
virtual void texture(bool state){};
virtual void begin(duDebugDrawPrimitives prim, float size = 1.0f) override;
virtual void vertex(const float* pos, unsigned int color) override;
virtual void vertex(const float x, const float y, const float z, unsigned int color) override;
virtual void vertex(const float* pos, unsigned int color, const float* uv) override;
virtual void vertex(const float x, const float y, const float z, unsigned int color, const float u, const float v) override;
virtual void end() override;
void draw(Renderer* renderer);
void clear();
private:
GLenum getPrimitiveType(duDebugDrawPrimitives prim);
void drawImplement(const cocos2d::Mat4& transform, uint32_t flags);
static Vec4 getColor(unsigned int col);
private:
struct V3F_C4F
{
Vec3 position;
Vec4 color;
};
struct Primitive
{
GLenum type;
bool depthMask;
unsigned short start;
unsigned short end;
float size;
};
std::vector<V3F_C4F> _vertices;
std::vector<Primitive*> _primitiveList;
Primitive *_currentPrimitive;
GLProgram *_program;
CustomCommand _customCmd;
RenderState::StateBlock* _stateBlock;
GLenum _primitiveType;
bool _currentDepthMask;
GLuint _vbo;
bool _dirtyBuffer;
};
/** @} */
NS_CC_END
#endif //CC_USE_NAVMESH
#endif // __CCNAV_MESH_DEBUG_DRAW_H__

View File

@ -0,0 +1,166 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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 "navmesh/CCNavMeshObstacle.h"
#if CC_USE_NAVMESH
#include "navmesh/CCNavMesh.h"
#include "2d/CCNode.h"
#include "2d/CCScene.h"
#include "recast/DetourTileCache/DetourTileCache.h"
NS_CC_BEGIN
NavMeshObstacle* NavMeshObstacle::create(float radius, float height)
{
auto ref = new (std::nothrow) NavMeshObstacle();
if (ref && ref->initWith(radius, height))
{
ref->autorelease();
return ref;
}
CC_SAFE_DELETE(ref);
return nullptr;
}
const std::string& NavMeshObstacle::getNavMeshObstacleComponentName()
{
static std::string comName = "___NavMeshObstacleComponent___";
return comName;
}
NavMeshObstacle::NavMeshObstacle()
: _radius(0.0f)
, _height(0.0f)
, _tileCache(nullptr)
, _obstacleID(-1)
, _syncFlag(NODE_AND_NODE)
{
}
cocos2d::NavMeshObstacle::~NavMeshObstacle()
{
}
bool NavMeshObstacle::initWith(float radius, float height)
{
_radius = radius;
_height = height;
setName(getNavMeshObstacleComponentName());
return true;
}
void cocos2d::NavMeshObstacle::removeFrom(dtTileCache *tileCache)
{
_tileCache->removeObstacle(_obstacleID);
_tileCache = nullptr;
_obstacleID = -1;
}
void cocos2d::NavMeshObstacle::addTo(dtTileCache *tileCache)
{
_tileCache = tileCache;
Mat4 mat = _owner->getNodeToWorldTransform();
_tileCache->addObstacle(&mat.m[12], _radius, _height, &_obstacleID);
}
void cocos2d::NavMeshObstacle::onExit()
{
if (_obstacleID == -1) return;
Component::onExit();
auto scene = _owner->getScene();
if (scene && scene->getNavMesh()){
scene->getNavMesh()->removeNavMeshObstacle(this);
}
}
void cocos2d::NavMeshObstacle::onEnter()
{
if (_obstacleID != -1) return;
Component::onEnter();
auto scene = _owner->getScene();
if (scene && scene->getNavMesh()){
scene->getNavMesh()->addNavMeshObstacle(this);
}
}
void cocos2d::NavMeshObstacle::postUpdate(float delta)
{
if ((_syncFlag & OBSTACLE_TO_NODE) != 0)
syncToNode();
}
void cocos2d::NavMeshObstacle::preUpdate(float delta)
{
if ((_syncFlag & NODE_TO_OBSTACLE) != 0)
syncToObstacle();
}
void NavMeshObstacle::syncToNode()
{
if (_tileCache){
auto obstacle = _tileCache->getObstacleByRef(_obstacleID);
if (obstacle){
Vec3 localPos = Vec3(obstacle->pos[0], obstacle->pos[1], obstacle->pos[2]);
if (_owner->getParent())
_owner->getParent()->getWorldToNodeTransform().transformPoint(localPos, &localPos);
_owner->setPosition3D(localPos);
_radius = obstacle->radius;
_height = obstacle->height;
}
}
}
void cocos2d::NavMeshObstacle::setRadius(float radius)
{
_radius = radius;
}
void cocos2d::NavMeshObstacle::setHeight(float height)
{
_height = height;
}
void NavMeshObstacle::syncToObstacle()
{
if (_tileCache){
auto obstacle = _tileCache->getObstacleByRef(_obstacleID);
if (obstacle){
Vec3 worldPos = Vec3(obstacle->pos[0], obstacle->pos[1], obstacle->pos[2]);
Mat4 mat = _owner->getNodeToWorldTransform();
if ((mat.m[12] != obstacle->pos[0] && mat.m[13] != obstacle->pos[1] && mat.m[14] != obstacle->pos[2])
|| obstacle->radius != _radius
|| obstacle->height != _height){
_tileCache->removeObstacle(_obstacleID);
_tileCache->addObstacle(&mat.m[12], _radius, _height, &_obstacleID);
}
}
}
}
NS_CC_END
#endif //CC_USE_NAVMESH

View File

@ -0,0 +1,123 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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.
****************************************************************************/
#ifndef __CCNAV_MESH_OBSTACLE_H__
#define __CCNAV_MESH_OBSTACLE_H__
#include "base/ccConfig.h"
#if CC_USE_NAVMESH
#include "2d/CCComponent.h"
#include "base/CCRef.h"
#include "math/Vec3.h"
#include "recast/Detour/DetourNavMesh.h"
#include "recast/DetourTileCache/DetourTileCache.h"
NS_CC_BEGIN
/**
* @addtogroup 3d
* @{
*/
/** @brief NavMeshObstacle: The code wrapping of dtTileCacheObstacle, use component mode. */
class CC_DLL NavMeshObstacle : public Component
{
friend class NavMesh;
public:
enum NavMeshObstacleSyncFlag
{
NONE = 0,
NODE_TO_OBSTACLE = 1,
OBSTACLE_TO_NODE = 2,
NODE_AND_NODE = NODE_TO_OBSTACLE | OBSTACLE_TO_NODE,
};
/**
Create obstacle, shape is cylinder
@param radius The radius of obstacle.
@param height The height of obstacle.
*/
static NavMeshObstacle* create(float radius, float height);
static const std::string& getNavMeshObstacleComponentName();
virtual void onEnter() override;
virtual void onExit() override;
/** Set radius of obstacle */
void setRadius(float radius);
/** Get radius of obstacle */
float getRadius() const { return _radius; }
/** Set height of obstacle */
void setHeight(float height);
/** Get height of obstacle */
float getHeight() const { return _height; }
/**
* synchronization between node and obstacle is time consuming, you can skip some synchronization using this function
*/
void setSyncFlag(const NavMeshObstacleSyncFlag &flag) { _syncFlag = flag; }
NavMeshObstacleSyncFlag getSyncFlag() const { return _syncFlag; }
/** synchronize parameter to obstacle. */
void syncToObstacle();
/** synchronize parameter to node. */
void syncToNode();
CC_CONSTRUCTOR_ACCESS:
NavMeshObstacle();
virtual ~NavMeshObstacle();
bool initWith(float radius, float height);
private:
void addTo(dtTileCache *tileCache);
void removeFrom(dtTileCache *tileCache);
void preUpdate(float delta);
void postUpdate(float delta);
private:
float _radius;
float _height;
NavMeshObstacleSyncFlag _syncFlag;
dtObstacleRef _obstacleID;
dtTileCache *_tileCache;
};
/** @} */
NS_CC_END
#endif //CC_USE_NAVMESH
#endif // __CCNAV_MESH_OBSTACLE_H__

View File

@ -0,0 +1,289 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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 "navmesh/CCNavMeshUtils.h"
#if CC_USE_NAVMESH
#include "recast/Detour/DetourCommon.h"
#include "recast/Detour/DetourNavMeshBuilder.h"
#include "recast/fastlz/fastlz.h"
NS_CC_BEGIN
LinearAllocator::LinearAllocator(const int cap)
: buffer(0)
, capacity(0)
, top(0)
, high(0)
{
resize(cap);
}
LinearAllocator::~LinearAllocator()
{
dtFree(buffer);
}
void LinearAllocator::free(void* /*ptr*/)
{
}
void* LinearAllocator::alloc(const int size)
{
if (!buffer)
return 0;
if (top + size > capacity)
return 0;
unsigned char* mem = &buffer[top];
top += size;
return mem;
}
void LinearAllocator::reset()
{
high = dtMax(high, top);
top = 0;
}
void LinearAllocator::resize(const int cap)
{
if (buffer) dtFree(buffer);
buffer = (unsigned char*)dtAlloc(cap, DT_ALLOC_PERM);
capacity = cap;
}
int FastLZCompressor::maxCompressedSize(const int bufferSize)
{
return (int)(bufferSize* 1.05f);
}
dtStatus cocos2d::FastLZCompressor::decompress(const unsigned char* compressed, const int compressedSize
, unsigned char* buffer, const int maxBufferSize, int* bufferSize)
{
*bufferSize = fastlz_decompress(compressed, compressedSize, buffer, maxBufferSize);
return *bufferSize < 0 ? DT_FAILURE : DT_SUCCESS;
}
dtStatus cocos2d::FastLZCompressor::compress(const unsigned char* buffer, const int bufferSize
, unsigned char* compressed, const int /*maxCompressedSize*/, int* compressedSize)
{
*compressedSize = fastlz_compress((const void *const)buffer, bufferSize, compressed);
return DT_SUCCESS;
}
MeshProcess::MeshProcess(const GeomData *geom)
: data(geom)
{
}
MeshProcess::~MeshProcess()
{
}
void MeshProcess::process(struct dtNavMeshCreateParams* params
, unsigned char* polyAreas, unsigned short* polyFlags)
{
// Update poly flags from areas.
for (int i = 0; i < params->polyCount; ++i)
{
if (polyAreas[i] == DT_TILECACHE_WALKABLE_AREA)
polyAreas[i] = 0;
if (polyAreas[i] == 0)
polyFlags[i] = 1;
//if (polyAreas[i] == SAMPLE_POLYAREA_GROUND ||
// polyAreas[i] == SAMPLE_POLYAREA_GRASS ||
// polyAreas[i] == SAMPLE_POLYAREA_ROAD)
//{
// polyFlags[i] = SAMPLE_POLYFLAGS_WALK;
//}
//else if (polyAreas[i] == SAMPLE_POLYAREA_WATER)
//{
// polyFlags[i] = SAMPLE_POLYFLAGS_SWIM;
//}
//else if (polyAreas[i] == SAMPLE_POLYAREA_DOOR)
//{
// polyFlags[i] = SAMPLE_POLYFLAGS_WALK | SAMPLE_POLYFLAGS_DOOR;
//}
}
// Pass in off-mesh connections.
params->offMeshConVerts = data->offMeshConVerts;
params->offMeshConRad = data->offMeshConRads;
params->offMeshConDir = data->offMeshConDirs;
params->offMeshConAreas = data->offMeshConAreas;
params->offMeshConFlags = data->offMeshConFlags;
params->offMeshConUserID = data->offMeshConId;
params->offMeshConCount = data->offMeshConCount;
}
bool getSteerTarget(dtNavMeshQuery* navQuery, const float* startPos, const float* endPos, const float minTargetDist, const dtPolyRef* path, const int pathSize, float* steerPos, unsigned char& steerPosFlag, dtPolyRef& steerPosRef, float* outPoints /*= 0*/, int* outPointCount /*= 0*/)
{
// Find steer target.
static const int MAX_STEER_POINTS = 3;
float steerPath[MAX_STEER_POINTS * 3];
unsigned char steerPathFlags[MAX_STEER_POINTS];
dtPolyRef steerPathPolys[MAX_STEER_POINTS];
int nsteerPath = 0;
navQuery->findStraightPath(startPos, endPos, path, pathSize,
steerPath, steerPathFlags, steerPathPolys, &nsteerPath, MAX_STEER_POINTS);
if (!nsteerPath)
return false;
if (outPoints && outPointCount)
{
*outPointCount = nsteerPath;
for (int i = 0; i < nsteerPath; ++i)
dtVcopy(&outPoints[i * 3], &steerPath[i * 3]);
}
// Find vertex far enough to steer to.
int ns = 0;
while (ns < nsteerPath)
{
// Stop at Off-Mesh link or when point is further than slop away.
if ((steerPathFlags[ns] & DT_STRAIGHTPATH_OFFMESH_CONNECTION) ||
!inRange(&steerPath[ns * 3], startPos, minTargetDist, 1000.0f))
break;
ns++;
}
// Failed to find good point to steer to.
if (ns >= nsteerPath)
return false;
dtVcopy(steerPos, &steerPath[ns * 3]);
steerPos[1] = startPos[1];
steerPosFlag = steerPathFlags[ns];
steerPosRef = steerPathPolys[ns];
return true;
}
int fixupShortcuts(dtPolyRef* path, int npath, dtNavMeshQuery* navQuery)
{
if (npath < 3)
return npath;
// Get connected polygons
static const int maxNeis = 16;
dtPolyRef neis[maxNeis];
int nneis = 0;
const dtMeshTile* tile = 0;
const dtPoly* poly = 0;
if (dtStatusFailed(navQuery->getAttachedNavMesh()->getTileAndPolyByRef(path[0], &tile, &poly)))
return npath;
for (unsigned int k = poly->firstLink; k != DT_NULL_LINK; k = tile->links[k].next)
{
const dtLink* link = &tile->links[k];
if (link->ref != 0)
{
if (nneis < maxNeis)
neis[nneis++] = link->ref;
}
}
// If any of the neighbour polygons is within the next few polygons
// in the path, short cut to that polygon directly.
static const int maxLookAhead = 6;
int cut = 0;
for (int i = dtMin(maxLookAhead, npath) - 1; i > 1 && cut == 0; i--) {
for (int j = 0; j < nneis; j++)
{
if (path[i] == neis[j]) {
cut = i;
break;
}
}
}
if (cut > 1)
{
int offset = cut - 1;
npath -= offset;
for (int i = 1; i < npath; i++)
path[i] = path[i + offset];
}
return npath;
}
int fixupCorridor(dtPolyRef* path, const int npath, const int maxPath, const dtPolyRef* visited, const int nvisited)
{
int furthestPath = -1;
int furthestVisited = -1;
// Find furthest common polygon.
for (int i = npath - 1; i >= 0; --i)
{
bool found = false;
for (int j = nvisited - 1; j >= 0; --j)
{
if (path[i] == visited[j])
{
furthestPath = i;
furthestVisited = j;
found = true;
}
}
if (found)
break;
}
// If no intersection found just return current path.
if (furthestPath == -1 || furthestVisited == -1)
return npath;
// Concatenate paths.
// Adjust beginning of the buffer to include the visited.
const int req = nvisited - furthestVisited;
const int orig = dtMin(furthestPath + 1, npath);
int size = dtMax(0, npath - orig);
if (req + size > maxPath)
size = maxPath - req;
if (size)
memmove(path + req, path + orig, size*sizeof(dtPolyRef));
// Store visited
for (int i = 0; i < req; ++i)
path[i] = visited[(nvisited - 1) - i];
return req + size;
}
bool inRange(const float* v1, const float* v2, const float r, const float h)
{
const float dx = v2[0] - v1[0];
const float dy = v2[1] - v1[1];
const float dz = v2[2] - v1[2];
return (dx*dx + dz*dz) < r*r && fabsf(dy) < h;
}
NS_CC_END
#endif //CC_USE_NAVMESH

View File

@ -0,0 +1,135 @@
/****************************************************************************
Copyright (c) 2015 Chukong Technologies Inc.
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.
****************************************************************************/
#ifndef __CCNAV_MESH_TOOL_H__
#define __CCNAV_MESH_TOOL_H__
#include "base/ccConfig.h"
#if CC_USE_NAVMESH
#include "platform/CCPlatformMacros.h"
#include "math/CCMath.h"
#include "recast/Detour/DetourCommon.h"
#include "recast/Detour/DetourNavMesh.h"
#include "recast/Detour/DetourNavMeshQuery.h"
#include "recast/DetourTileCache/DetourTileCache.h"
#include "recast/DetourTileCache/DetourTileCacheBuilder.h"
NS_CC_BEGIN
/**
* @addtogroup 3d
* @{
*/
struct LinearAllocator : public dtTileCacheAlloc
{
unsigned char* buffer;
int capacity;
int top;
int high;
LinearAllocator(const int cap);
~LinearAllocator();
void resize(const int cap);
virtual void reset();
virtual void* alloc(const int size);
virtual void free(void* /*ptr*/);
};
struct FastLZCompressor : public dtTileCacheCompressor
{
virtual int maxCompressedSize(const int bufferSize);
virtual dtStatus compress(const unsigned char* buffer, const int bufferSize,
unsigned char* compressed, const int /*maxCompressedSize*/, int* compressedSize);
virtual dtStatus decompress(const unsigned char* compressed, const int compressedSize,
unsigned char* buffer, const int maxBufferSize, int* bufferSize);
};
struct GeomData
{
static const int MAX_OFFMESH_CONNECTIONS = 256;
float offMeshConVerts[MAX_OFFMESH_CONNECTIONS * 3 * 2];
float offMeshConRads[MAX_OFFMESH_CONNECTIONS];
unsigned char offMeshConDirs[MAX_OFFMESH_CONNECTIONS];
unsigned char offMeshConAreas[MAX_OFFMESH_CONNECTIONS];
unsigned short offMeshConFlags[MAX_OFFMESH_CONNECTIONS];
unsigned int offMeshConId[MAX_OFFMESH_CONNECTIONS];
int offMeshConCount;
};
struct MeshProcess : public dtTileCacheMeshProcess
{
const GeomData *data;
MeshProcess(const GeomData *geom);
virtual ~MeshProcess();
//void init(InputGeom* geom)
//{
// m_geom = geom;
//}
virtual void process(struct dtNavMeshCreateParams* params,
unsigned char* polyAreas, unsigned short* polyFlags) override;
};
bool inRange(const float* v1, const float* v2, const float r, const float h);
int fixupCorridor(dtPolyRef* path, const int npath, const int maxPath,
const dtPolyRef* visited, const int nvisited);
// This function checks if the path has a small U-turn, that is,
// a polygon further in the path is adjacent to the first polygon
// in the path. If that happens, a shortcut is taken.
// This can happen if the target (T) location is at tile boundary,
// and we're (S) approaching it parallel to the tile edge.
// The choice at the vertex can be arbitrary,
// +---+---+
// |:::|:::|
// +-S-+-T-+
// |:::| | <-- the step can end up in here, resulting U-turn path.
// +---+---+
int fixupShortcuts(dtPolyRef* path, int npath, dtNavMeshQuery* navQuery);
bool getSteerTarget(dtNavMeshQuery* navQuery, const float* startPos, const float* endPos,
const float minTargetDist,
const dtPolyRef* path, const int pathSize,
float* steerPos, unsigned char& steerPosFlag, dtPolyRef& steerPosRef,
float* outPoints = 0, int* outPointCount = 0);
/** @} */
NS_CC_END
#endif //CC_USE_NAVMESH
#endif // __CCNAV_MESH_H__

View File

@ -0,0 +1,9 @@
set(COCOS_NAVMESH_SRC
navmesh/CCNavMesh.cpp
navmesh/CCNavMeshAgent.cpp
navmesh/CCNavMeshDebugDraw.cpp
navmesh/CCNavMeshObstacle.cpp
navmesh/CCNavMeshUtils.cpp
)

View File

@ -36,7 +36,7 @@
#include "network/HttpCookie.h"
/**
* @addtogroup core
* @addtogroup network
* @{
*/

View File

@ -32,7 +32,7 @@
#include "base/ccMacros.h"
/**
* @addtogroup core
* @addtogroup network
* @{
*/

View File

@ -29,7 +29,7 @@
#include "network/HttpRequest.h"
/**
* @addtogroup core
* @addtogroup network
* @{
*/

View File

@ -65,7 +65,7 @@ in the onClose method the pointer should be set to NULL or used to connect to a
#include <string>
/**
* @addtogroup core
* @addtogroup network
* @{
*/

View File

@ -41,7 +41,7 @@ struct libwebsocket_context;
struct libwebsocket_protocols;
/**
* @addtogroup core
* @addtogroup network
* @{
*/

View File

@ -48,7 +48,9 @@ typedef Vec2 Vect;
const PhysicsMaterial PHYSICSBODY_MATERIAL_DEFAULT(0.1f, 0.5f, 0.5f);
/**
* @addtogroup core
* @addtogroup physics
* @{
* @addtogroup physics_2d
* @{
*/
@ -560,6 +562,8 @@ protected:
};
/** @} */
/** @} */
NS_CC_END

View File

@ -55,7 +55,9 @@ typedef struct CC_DLL PhysicsContactData
}PhysicsContactData;
/**
* @addtogroup core
* @addtogroup physics
* @{
* @addtogroup physics_2d
* @{
*/
@ -307,6 +309,7 @@ protected:
virtual ~EventListenerPhysicsContactWithGroup();
};
/** @} */
/** @} */
NS_CC_END

View File

@ -35,7 +35,9 @@
NS_CC_BEGIN
/**
* @addtogroup core
* @addtogroup physics
* @{
* @addtogroup physics_2d
* @{
*/
@ -108,6 +110,7 @@ public:
}
};
/** @} */
/** @} */
NS_CC_END

View File

@ -40,7 +40,9 @@ class PhysicsBody;
class PhysicsWorld;
/**
* @addtogroup core
* @addtogroup physics
* @{
* @addtogroup physics_2d
* @{
*/
@ -567,6 +569,8 @@ protected:
};
/** @} */
/** @} */
NS_CC_END

View File

@ -59,8 +59,11 @@ typedef struct CC_DLL PhysicsMaterial
const PhysicsMaterial PHYSICSSHAPE_MATERIAL_DEFAULT;
/**
* @addtogroup core
* @addtogroup physics
* @{
* @addtogroup physics_2d
* @{
*/
/**
@ -718,6 +721,7 @@ protected:
friend class PhysicsBody;
};
/** @} */
/** @} */
NS_CC_END

View File

@ -80,7 +80,9 @@ typedef std::function<bool(PhysicsWorld&, PhysicsShape&, void*)> PhysicsQueryRec
typedef PhysicsQueryRectCallbackFunc PhysicsQueryPointCallbackFunc;
/**
* @addtogroup core
* @addtogroup physics
* @{
* @addtogroup physics_2d
* @{
*/
@ -415,6 +417,8 @@ protected:
extern const float CC_DLL PHYSICS_INFINITY;
/** @} */
/** @} */
NS_CC_END
#endif // CC_USE_PHYSICS

View File

@ -28,6 +28,7 @@
#include "base/CCDirector.h"
#include "renderer/CCGLProgram.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCRenderState.h"
#include "renderer/ccGLStateCache.h"
#include "renderer/CCGLProgramCache.h"
@ -131,6 +132,8 @@ void Physics3DDebugDrawer::drawImplementation( const Mat4 &transform, uint32_t f
_program->use();
_program->setUniformsForBuiltins(transform);
glEnable(GL_DEPTH_TEST);
RenderState::StateBlock::_defaultState->setDepthTest(true);
GL::blendFunc(_blendFunc.src, _blendFunc.dst);
if (_dirty)
@ -158,7 +161,9 @@ void Physics3DDebugDrawer::drawImplementation( const Mat4 &transform, uint32_t f
glBindBuffer(GL_ARRAY_BUFFER, 0);
CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1,_bufferCount);
glDisable(GL_DEPTH_TEST);
RenderState::StateBlock::_defaultState->setDepthTest(false);
}
void Physics3DDebugDrawer::init()

View File

@ -33,7 +33,7 @@ THE SOFTWARE.
NS_CC_BEGIN
/**
* @addtogroup core
* @addtogroup platform
* @{
*/

View File

@ -35,7 +35,7 @@ NS_CC_BEGIN
struct FontDefinition;
/**
* @addtogroup support
* @addtogroup platform
* @{
*/

View File

@ -37,7 +37,7 @@ THE SOFTWARE.
NS_CC_BEGIN
/**
* @addtogroup support
* @addtogroup platform
* @{
*/

View File

@ -87,7 +87,7 @@ struct GLContextAttrs
NS_CC_BEGIN
/**
* @addtogroup core
* @addtogroup platform
* @{
*/
/**

View File

@ -12,6 +12,7 @@ android {
}
sourceSets.main {
aidl.srcDir "../java/src"
java.srcDirs = ['../java/src','../ControllerManualAdapter/src']
manifest.srcFile "AndroidManifest.xml"
}

View File

@ -12,6 +12,7 @@ android {
}
sourceSets.main {
aidl.srcDir "../java/src"
java.srcDir "../java/src"
manifest.srcFile "AndroidManifest.xml"
}

View File

@ -28,7 +28,7 @@
#include "renderer/CCRenderCommand.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -29,7 +29,7 @@
#include "renderer/CCRenderCommand.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -40,7 +40,7 @@ THE SOFTWARE.
#include "math/CCMath.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -34,7 +34,7 @@ THE SOFTWARE.
#include "base/CCRef.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -36,7 +36,7 @@ THE SOFTWARE.
#include "math/Vec4.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -33,7 +33,7 @@ THE SOFTWARE.
#include "math/Vec4.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -33,7 +33,7 @@
#include "CCRenderCommand.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -28,7 +28,7 @@
#include "renderer/CCVertexIndexData.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -29,7 +29,7 @@
#include "renderer/CCRenderCommand.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -29,7 +29,7 @@
#include "renderer/CCGLProgramState.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -32,7 +32,7 @@
#include "base/ccTypes.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -37,25 +37,6 @@ NS_CC_BEGIN
RenderState::StateBlock* RenderState::StateBlock::_defaultState = nullptr;
// Render state override bits
enum
{
RS_BLEND = (1 << 0),
RS_BLEND_FUNC = (1 << 1),
RS_CULL_FACE = (1 << 2),
RS_DEPTH_TEST = (1 << 3),
RS_DEPTH_WRITE = (1 << 4),
RS_DEPTH_FUNC = (1 << 5),
RS_CULL_FACE_SIDE = (1 << 6),
RS_STENCIL_TEST = (1 << 7),
RS_STENCIL_WRITE = (1 << 8),
RS_STENCIL_FUNC = (1 << 9),
RS_STENCIL_OP = (1 << 10),
RS_FRONT_FACE = (1 << 11),
RS_ALL_ONES = 0xFFFFFFFF,
};
RenderState::RenderState()
: _texture(nullptr)
@ -731,6 +712,14 @@ uint32_t RenderState::StateBlock::getHash() const
return 0x12345678;
}
void RenderState::StateBlock::invalidate(long stateBits)
{
CCASSERT(_defaultState, "_default state not created yet. Cannot be invalidated");
_defaultState->_bits = stateBits;
_defaultState->restore(0);
}
void RenderState::StateBlock::setBlend(bool enabled)
{
_blendEnabled = enabled;

View File

@ -188,7 +188,7 @@ public:
* Defines a block of fixed-function render states that can be applied to a
* RenderState object.
*/
class StateBlock : public Ref
class CC_DLL StateBlock : public Ref
{
friend class RenderState;
friend class Pass;
@ -349,6 +349,37 @@ public:
uint32_t getHash() const;
bool isDirty() const;
/** StateBlock bits to be used with invalidate */
enum
{
RS_BLEND = (1 << 0),
RS_BLEND_FUNC = (1 << 1),
RS_CULL_FACE = (1 << 2),
RS_DEPTH_TEST = (1 << 3),
RS_DEPTH_WRITE = (1 << 4),
RS_DEPTH_FUNC = (1 << 5),
RS_CULL_FACE_SIDE = (1 << 6),
RS_STENCIL_TEST = (1 << 7),
RS_STENCIL_WRITE = (1 << 8),
RS_STENCIL_FUNC = (1 << 9),
RS_STENCIL_OP = (1 << 10),
RS_FRONT_FACE = (1 << 11),
RS_ALL_ONES = 0xFFFFFFFF,
};
/**
* Invalidates the default StateBlock.
*
* Only call it if you are calling GL calls directly. Invoke this function
* at the end of your custom draw call.
* This function restores the default render state its defaults values.
* Since this function might call GL calls, it must be called in a GL context is present.
*
* @param stateBits Bitwise-OR of the states that needs to be invalidated
*/
static void invalidate(long stateBits);
static StateBlock* _defaultState;
protected:

View File

@ -35,7 +35,7 @@
#include "platform/CCGL.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -29,7 +29,7 @@
#include "renderer/CCGLProgramState.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -30,7 +30,7 @@
#include "platform/CCGL.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -29,7 +29,7 @@
#include <map>
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -36,7 +36,7 @@ THE SOFTWARE.
NS_CC_BEGIN
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -32,7 +32,7 @@ THE SOFTWARE.
#include "platform/CCPlatformMacros.h"
/**
* @addtogroup support
* @addtogroup renderer
* @{
*/

View File

@ -2025,6 +2025,16 @@ renderer
{
},
/**
* @method stepPhysicsAndNavigation
* @param {float} arg0
*/
stepPhysicsAndNavigation : function (
float
)
{
},
/**
* @method onProjectionChanged
* @param {cc.EventCustom} arg0

View File

@ -1,3 +1,4 @@
#include "base/ccConfig.h"
#ifndef __cocos2dx_3d_h__
#define __cocos2dx_3d_h__
@ -241,5 +242,5 @@ bool js_cocos2dx_3d_Bundle3D_createBundle(JSContext *cx, uint32_t argc, jsval *v
bool js_cocos2dx_3d_Bundle3D_destroyBundle(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_3d_Bundle3D_loadObj(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_3d_Bundle3D_Bundle3D(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_3d_h__

View File

@ -1,3 +1,4 @@
#include "base/ccConfig.h"
#ifndef __cocos2dx_3d_extension_h__
#define __cocos2dx_3d_extension_h__
@ -70,5 +71,5 @@ bool js_cocos2dx_3d_extension_PUParticleSystem3D_removeAllListener(JSContext *cx
bool js_cocos2dx_3d_extension_PUParticleSystem3D_setDefaultDepth(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_3d_extension_PUParticleSystem3D_create(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_3d_extension_PUParticleSystem3D_PUParticleSystem3D(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_3d_extension_h__

View File

@ -5205,6 +5205,26 @@ bool js_cocos2dx_Scene_render(JSContext *cx, uint32_t argc, jsval *vp)
JS_ReportError(cx, "js_cocos2dx_Scene_render : wrong number of arguments: %d, was expecting %d", argc, 1);
return false;
}
bool js_cocos2dx_Scene_stepPhysicsAndNavigation(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
bool ok = true;
JS::RootedObject obj(cx, args.thisv().toObjectOrNull());
js_proxy_t *proxy = jsb_get_js_proxy(obj);
cocos2d::Scene* cobj = (cocos2d::Scene *)(proxy ? proxy->ptr : NULL);
JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_Scene_stepPhysicsAndNavigation : Invalid Native Object");
if (argc == 1) {
double arg0;
ok &= JS::ToNumber( cx, args.get(0), &arg0) && !isnan(arg0);
JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_Scene_stepPhysicsAndNavigation : Error processing arguments");
cobj->stepPhysicsAndNavigation(arg0);
args.rval().setUndefined();
return true;
}
JS_ReportError(cx, "js_cocos2dx_Scene_stepPhysicsAndNavigation : wrong number of arguments: %d, was expecting %d", argc, 1);
return false;
}
bool js_cocos2dx_Scene_onProjectionChanged(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
@ -5399,6 +5419,7 @@ void js_register_cocos2dx_Scene(JSContext *cx, JS::HandleObject global) {
static JSFunctionSpec funcs[] = {
JS_FN("setCameraOrderDirty", js_cocos2dx_Scene_setCameraOrderDirty, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("render", js_cocos2dx_Scene_render, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("stepPhysicsAndNavigation", js_cocos2dx_Scene_stepPhysicsAndNavigation, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("onProjectionChanged", js_cocos2dx_Scene_onProjectionChanged, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("initWithSize", js_cocos2dx_Scene_initWithSize, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("getDefaultCamera", js_cocos2dx_Scene_getDefaultCamera, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),

View File

@ -1,3 +1,4 @@
#include "base/ccConfig.h"
#ifndef __cocos2dx_h__
#define __cocos2dx_h__
@ -251,6 +252,7 @@ void js_register_cocos2dx_Scene(JSContext *cx, JS::HandleObject global);
void register_all_cocos2dx(JSContext* cx, JS::HandleObject obj);
bool js_cocos2dx_Scene_setCameraOrderDirty(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Scene_render(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Scene_stepPhysicsAndNavigation(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Scene_onProjectionChanged(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Scene_initWithSize(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Scene_getDefaultCamera(JSContext *cx, uint32_t argc, jsval *vp);
@ -3994,5 +3996,5 @@ bool js_cocos2dx_SpritePolygonCache_removeSpritePolygonCache(JSContext *cx, uint
bool js_cocos2dx_SpritePolygonCache_destroyInstance(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_SpritePolygonCache_printInfo(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_SpritePolygonCache_getInstance(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_h__

View File

@ -1,3 +1,4 @@
#include "base/ccConfig.h"
#ifndef __cocos2dx_builder_h__
#define __cocos2dx_builder_h__
@ -78,5 +79,5 @@ bool js_cocos2dx_builder_CCBReader_getAnimationManagersForNodes(JSContext *cx, u
bool js_cocos2dx_builder_CCBReader_getNodesWithAnimationManagers(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_builder_CCBReader_setResolutionScale(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_builder_CCBReader_CCBReader(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_builder_h__

View File

@ -1,3 +1,4 @@
#include "base/ccConfig.h"
#ifndef __cocos2dx_experimental_h__
#define __cocos2dx_experimental_h__
@ -20,5 +21,5 @@ bool js_cocos2dx_experimental_SpritePolygon_getArea(JSContext *cx, uint32_t argc
bool js_cocos2dx_experimental_SpritePolygon_initWithMarching(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_experimental_SpritePolygon_getVertCount(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_experimental_SpritePolygon_getTrianglesCount(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_experimental_h__

View File

@ -1,4 +1,5 @@
#include "jsb_cocos2dx_experimental_video_auto.hpp"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include "cocos2d_specifics.hpp"
#include "UIVideoPlayer.h"
@ -453,3 +454,4 @@ void register_all_cocos2dx_experimental_video(JSContext* cx, JS::HandleObject ob
js_register_cocos2dx_experimental_video_VideoPlayer(cx, ns);
}
#endif //#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

View File

@ -1,3 +1,5 @@
#include "base/ccConfig.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#ifndef __cocos2dx_experimental_video_h__
#define __cocos2dx_experimental_video_h__
@ -29,5 +31,6 @@ bool js_cocos2dx_experimental_video_VideoPlayer_isPlaying(JSContext *cx, uint32_
bool js_cocos2dx_experimental_video_VideoPlayer_seekTo(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_experimental_video_VideoPlayer_create(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_experimental_video_VideoPlayer_VideoPlayer(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_experimental_video_h__
#endif //#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

View File

@ -1,4 +1,5 @@
#include "jsb_cocos2dx_experimental_webView_auto.hpp"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include "cocos2d_specifics.hpp"
#include "UIWebView.h"
@ -482,3 +483,4 @@ void register_all_cocos2dx_experimental_webView(JSContext* cx, JS::HandleObject
js_register_cocos2dx_experimental_webView_WebView(cx, ns);
}
#endif //#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

View File

@ -1,3 +1,5 @@
#include "base/ccConfig.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#ifndef __cocos2dx_experimental_webView_h__
#define __cocos2dx_experimental_webView_h__
@ -30,5 +32,6 @@ bool js_cocos2dx_experimental_webView_WebView_setJavascriptInterfaceScheme(JSCon
bool js_cocos2dx_experimental_webView_WebView_getOnDidFinishLoading(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_experimental_webView_WebView_create(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_experimental_webView_WebView_WebView(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_experimental_webView_h__
#endif //#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

View File

@ -1,3 +1,4 @@
#include "base/ccConfig.h"
#ifndef __cocos2dx_extension_h__
#define __cocos2dx_extension_h__
@ -368,5 +369,5 @@ void register_all_cocos2dx_extension(JSContext* cx, JS::HandleObject obj);
bool js_cocos2dx_extension_EventListenerAssetsManagerEx_init(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_extension_EventListenerAssetsManagerEx_create(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_extension_EventListenerAssetsManagerEx_EventListenerAssetsManagerEx(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_extension_h__

View File

@ -1,4 +1,5 @@
#include "jsb_cocos2dx_physics3d_auto.hpp"
#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
#include "cocos2d_specifics.hpp"
#include "CCPhysics3D.h"
@ -6796,3 +6797,4 @@ void register_all_cocos2dx_physics3d(JSContext* cx, JS::HandleObject obj) {
js_register_cocos2dx_physics3d_Physics3DShape(cx, ns);
}
#endif //#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION

View File

@ -1,3 +1,5 @@
#include "base/ccConfig.h"
#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
#ifndef __cocos2dx_physics3d_h__
#define __cocos2dx_physics3d_h__
@ -341,5 +343,6 @@ bool js_cocos2dx_physics3d_Physics3D6DofConstraint_getAngularLowerLimit(JSContex
bool js_cocos2dx_physics3d_Physics3D6DofConstraint_setAngularUpperLimit(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_physics3d_Physics3D6DofConstraint_create(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_physics3d_Physics3D6DofConstraint_Physics3D6DofConstraint(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_physics3d_h__
#endif //#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION

View File

@ -1,3 +1,4 @@
#include "base/ccConfig.h"
#ifndef __cocos2dx_spine_h__
#define __cocos2dx_spine_h__
@ -61,5 +62,5 @@ bool js_cocos2dx_spine_SkeletonAnimation_clearTrack(JSContext *cx, uint32_t argc
bool js_cocos2dx_spine_SkeletonAnimation_onAnimationStateEvent(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_spine_SkeletonAnimation_createWithFile(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_spine_SkeletonAnimation_SkeletonAnimation(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_spine_h__

View File

@ -1,3 +1,4 @@
#include "base/ccConfig.h"
#ifndef __cocos2dx_studio_h__
#define __cocos2dx_studio_h__
@ -754,5 +755,5 @@ bool js_cocos2dx_studio_ObjectExtensionData_getCustomProperty(JSContext *cx, uin
bool js_cocos2dx_studio_ObjectExtensionData_getActionTag(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_studio_ObjectExtensionData_create(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_studio_ObjectExtensionData_ObjectExtensionData(JSContext *cx, uint32_t argc, jsval *vp);
#endif
#endif // __cocos2dx_studio_h__

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