mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-13 07:34:45 +00:00
Merge pull request #1573 from Azaezel/navmeshtweaks
allows navmeshes to generate for most scene objects,
This commit is contained in:
commit
f427439457
3 changed files with 15 additions and 1 deletions
|
|
@ -145,6 +145,17 @@ DefineConsoleFunction(NavMeshUpdateAroundObject, void, (S32 objid, bool remove),
|
||||||
obj->enableCollision();
|
obj->enableCollision();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DefineConsoleFunction(NavMeshIgnore, void, (S32 objid, bool _ignore), (0, true),
|
||||||
|
"@brief Flag this object as not generating a navmesh result.")
|
||||||
|
{
|
||||||
|
SceneObject *obj;
|
||||||
|
if(!Sim::findObject(objid, obj))
|
||||||
|
return;
|
||||||
|
|
||||||
|
obj->mPathfindingIgnore = _ignore;
|
||||||
|
}
|
||||||
|
|
||||||
DefineConsoleFunction(NavMeshUpdateOne, void, (S32 meshid, S32 objid, bool remove), (0, 0, false),
|
DefineConsoleFunction(NavMeshUpdateOne, void, (S32 meshid, S32 objid, bool remove), (0, 0, false),
|
||||||
"@brief Update all tiles in a given NavMesh that intersect the given object's world box.")
|
"@brief Update all tiles in a given NavMesh that intersect the given object's world box.")
|
||||||
{
|
{
|
||||||
|
|
@ -839,6 +850,7 @@ void NavMesh::buildNextTile()
|
||||||
static void buildCallback(SceneObject* object,void *key)
|
static void buildCallback(SceneObject* object,void *key)
|
||||||
{
|
{
|
||||||
SceneContainer::CallbackInfo* info = reinterpret_cast<SceneContainer::CallbackInfo*>(key);
|
SceneContainer::CallbackInfo* info = reinterpret_cast<SceneContainer::CallbackInfo*>(key);
|
||||||
|
if (!object->mPathfindingIgnore)
|
||||||
object->buildPolyList(info->context,info->polyList,info->boundingBox,info->boundingSphere);
|
object->buildPolyList(info->context,info->polyList,info->boundingBox,info->boundingSphere);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -861,7 +873,7 @@ unsigned char *NavMesh::buildTileData(const Tile &tile, TileData &data, U32 &dat
|
||||||
data.geom.clear();
|
data.geom.clear();
|
||||||
info.polyList = &data.geom;
|
info.polyList = &data.geom;
|
||||||
info.key = this;
|
info.key = this;
|
||||||
getContainer()->findObjects(box, StaticShapeObjectType | TerrainObjectType, buildCallback, &info);
|
getContainer()->findObjects(box, StaticObjectType | DynamicShapeObjectType, buildCallback, &info);
|
||||||
|
|
||||||
// Parse water objects into the same list, but remember how much geometry was /not/ water.
|
// Parse water objects into the same list, but remember how much geometry was /not/ water.
|
||||||
U32 nonWaterVertCount = data.geom.getVertCount();
|
U32 nonWaterVertCount = data.geom.getVertCount();
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,7 @@ SceneObject::SceneObject()
|
||||||
mIsScopeAlways = false;
|
mIsScopeAlways = false;
|
||||||
|
|
||||||
mAccuTex = NULL;
|
mAccuTex = NULL;
|
||||||
|
mPathfindingIgnore = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -371,6 +371,7 @@ class SceneObject : public NetObject, private SceneContainer::Link, public Proce
|
||||||
|
|
||||||
SceneObject();
|
SceneObject();
|
||||||
virtual ~SceneObject();
|
virtual ~SceneObject();
|
||||||
|
bool mPathfindingIgnore;
|
||||||
|
|
||||||
/// Triggered when a SceneObject onAdd is called.
|
/// Triggered when a SceneObject onAdd is called.
|
||||||
static Signal< void( SceneObject* ) > smSceneObjectAdd;
|
static Signal< void( SceneObject* ) > smSceneObjectAdd;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue