mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-12 19:31:41 +00:00
NavPath::alwaysRender works the same as NavMesh::alwaysRender.
This commit is contained in:
parent
195e05dcfb
commit
2ae879ec70
2 changed files with 44 additions and 13 deletions
|
|
@ -44,7 +44,8 @@ NavPath::NavPath() :
|
|||
mFrom(0.0f, 0.0f, 0.0f),
|
||||
mTo(0.0f, 0.0f, 0.0f)
|
||||
{
|
||||
mTypeMask |= MarkerObjectType;
|
||||
mTypeMask |= StaticShapeObjectType | MarkerObjectType;
|
||||
mNetFlags.clear(Ghostable);
|
||||
|
||||
mMesh = NULL;
|
||||
mWaypoints = NULL;
|
||||
|
|
@ -162,6 +163,25 @@ const char *NavPath::getProtectedTo(void *obj, const char *data)
|
|||
return "";
|
||||
}
|
||||
|
||||
bool NavPath::setProtectedAlwaysRender(void *obj, const char *index, const char *data)
|
||||
{
|
||||
NavPath *path = static_cast<NavPath*>(obj);
|
||||
bool always = dAtob(data);
|
||||
if(always)
|
||||
{
|
||||
if(!gEditingMission)
|
||||
path->mNetFlags.set(Ghostable);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!gEditingMission)
|
||||
path->mNetFlags.clear(Ghostable);
|
||||
}
|
||||
path->mAlwaysRender = always;
|
||||
path->setMaskBits(PathMask);
|
||||
return true;
|
||||
}
|
||||
|
||||
static IRangeValidator NaturalNumber(1, S32_MAX);
|
||||
|
||||
void NavPath::initPersistFields()
|
||||
|
|
@ -188,9 +208,10 @@ void NavPath::initPersistFields()
|
|||
endGroup("NavPath");
|
||||
|
||||
addGroup("NavPath Render");
|
||||
|
||||
addField("alwaysRender", TypeBool, Offset(mAlwaysRender, NavPath),
|
||||
"Render this NavPath even when not selected.");
|
||||
|
||||
addProtectedField("alwaysRender", TypeBool, Offset(mAlwaysRender, NavMesh),
|
||||
&setProtectedAlwaysRender, &defaultProtectedGetFn,
|
||||
"Display this NavPath even outside the editor.");
|
||||
addField("xray", TypeBool, Offset(mXray, NavPath),
|
||||
"Render this NavPath through other objects.");
|
||||
|
||||
|
|
@ -204,8 +225,10 @@ bool NavPath::onAdd()
|
|||
if(!Parent::onAdd())
|
||||
return false;
|
||||
|
||||
addToScene();
|
||||
|
||||
// Ghost immediately if the editor's already open.
|
||||
if(gEditingMission)
|
||||
if(gEditingMission || mAlwaysRender)
|
||||
mNetFlags.set(Ghostable);
|
||||
|
||||
// Automatically find a path if we can.
|
||||
|
|
@ -215,18 +238,15 @@ bool NavPath::onAdd()
|
|||
// Set initial world bounds and stuff.
|
||||
resize();
|
||||
|
||||
// Finally, add us to the simulation.
|
||||
addToScene();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void NavPath::onRemove()
|
||||
{
|
||||
Parent::onRemove();
|
||||
|
||||
// Remove from simulation.
|
||||
removeFromScene();
|
||||
|
||||
Parent::onRemove();
|
||||
}
|
||||
|
||||
bool NavPath::init()
|
||||
|
|
@ -324,7 +344,9 @@ bool NavPath::plan()
|
|||
if(!init())
|
||||
return false;
|
||||
|
||||
visitNext();
|
||||
if(!visitNext())
|
||||
return false;
|
||||
|
||||
while(update());
|
||||
|
||||
if(!finalise())
|
||||
|
|
@ -476,11 +498,18 @@ S32 NavPath::getCount()
|
|||
void NavPath::onEditorEnable()
|
||||
{
|
||||
mNetFlags.set(Ghostable);
|
||||
if(isClientObject() && !mAlwaysRender)
|
||||
addToScene();
|
||||
}
|
||||
|
||||
void NavPath::onEditorDisable()
|
||||
{
|
||||
mNetFlags.clear(Ghostable);
|
||||
if(!mAlwaysRender)
|
||||
{
|
||||
mNetFlags.clear(Ghostable);
|
||||
if(isClientObject())
|
||||
removeFromScene();
|
||||
}
|
||||
}
|
||||
|
||||
void NavPath::inspectPostApply()
|
||||
|
|
@ -501,7 +530,7 @@ void NavPath::prepRenderImage(SceneRenderState *state)
|
|||
{
|
||||
ObjectRenderInst *ri = state->getRenderPass()->allocInst<ObjectRenderInst>();
|
||||
ri->renderDelegate.bind(this, &NavPath::renderSimple);
|
||||
ri->type = RenderPassManager::RIT_Editor;
|
||||
ri->type = RenderPassManager::RIT_Object;
|
||||
ri->translucentSort = true;
|
||||
ri->defaultKey = 1;
|
||||
state->getRenderPass()->addInst(ri);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue