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