09bc9eb101
Change the entire navigation system. Remove editor prefix from nav mesh generator class. It is now used for baking at runtime as well. Navigation supports obstacle avoidance now with the RVO2 library. Nav system will also automatically link all nav meshes together to form one overall complete nav map.
63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
#!/usr/bin/env python
|
|
|
|
Import("env")
|
|
Import("env_modules")
|
|
|
|
env_navigation = env_modules.Clone()
|
|
|
|
# Thirdparty source files
|
|
|
|
thirdparty_obj = []
|
|
|
|
# Recast
|
|
if env["builtin_recast"]:
|
|
thirdparty_dir = "#thirdparty/recastnavigation/Recast/"
|
|
thirdparty_sources = [
|
|
"Source/Recast.cpp",
|
|
"Source/RecastAlloc.cpp",
|
|
"Source/RecastArea.cpp",
|
|
"Source/RecastAssert.cpp",
|
|
"Source/RecastContour.cpp",
|
|
"Source/RecastFilter.cpp",
|
|
"Source/RecastLayers.cpp",
|
|
"Source/RecastMesh.cpp",
|
|
"Source/RecastMeshDetail.cpp",
|
|
"Source/RecastRasterization.cpp",
|
|
"Source/RecastRegion.cpp",
|
|
]
|
|
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
|
|
|
env_navigation.Prepend(CPPPATH=[thirdparty_dir + "Include"])
|
|
|
|
env_thirdparty = env_navigation.Clone()
|
|
env_thirdparty.disable_warnings()
|
|
env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
|
|
env.modules_sources += thirdparty_obj
|
|
|
|
# RVO2
|
|
if env["builtin_rvo2"]:
|
|
thirdparty_dir = "#thirdparty/rvo2/"
|
|
thirdparty_sources = [
|
|
"Agent.cpp",
|
|
"KdTree.cpp",
|
|
]
|
|
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
|
|
|
env_navigation.Prepend(CPPPATH=[thirdparty_dir])
|
|
|
|
env_thirdparty = env_navigation.Clone()
|
|
env_thirdparty.disable_warnings()
|
|
env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
|
|
env.modules_sources += thirdparty_obj
|
|
|
|
|
|
# Godot source files
|
|
|
|
module_obj = []
|
|
|
|
env_navigation.add_source_files(module_obj, "*.cpp")
|
|
|
|
env.modules_sources += module_obj
|
|
|
|
# Needed to force rebuilding the module files when the thirdparty library is updated.
|
|
env.Depends(module_obj, thirdparty_obj)
|