mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 16:14:38 +00:00
Adds some console preference variables for object fade overriding on TSStatics
This commit is contained in:
parent
9e792845f7
commit
a257dc8399
2 changed files with 59 additions and 1 deletions
|
|
@ -100,6 +100,11 @@ ConsoleDocClass(TSStatic,
|
||||||
"@ingroup gameObjects\n"
|
"@ingroup gameObjects\n"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
bool TSStatic::smUseStaticObjectFade = false;
|
||||||
|
F32 TSStatic::smStaticObjectFadeStart = 50;
|
||||||
|
F32 TSStatic::smStaticObjectFadeEnd = 75;
|
||||||
|
F32 TSStatic::smStaticObjectUnfadeableSize = 75;
|
||||||
|
|
||||||
TSStatic::TSStatic()
|
TSStatic::TSStatic()
|
||||||
:
|
:
|
||||||
cubeDescId(0),
|
cubeDescId(0),
|
||||||
|
|
@ -271,6 +276,17 @@ void TSStatic::initPersistFields()
|
||||||
Parent::initPersistFields();
|
Parent::initPersistFields();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TSStatic::consoleInit()
|
||||||
|
{
|
||||||
|
Parent::consoleInit();
|
||||||
|
|
||||||
|
// Vars for debug rendering while the RoadEditor is open, only used if smEditorOpen is true.
|
||||||
|
Con::addVariable("$pref::useStaticObjectFade", TypeBool, &TSStatic::smUseStaticObjectFade, "Indicates if all statics should utilize the distance-based object fadeout logic.\n");
|
||||||
|
Con::addVariable("$pref::staticObjectFadeStart", TypeF32, &TSStatic::smStaticObjectFadeStart, "Distance at which static object fading begins if $pref::useStaticObjectFade is on.\n");
|
||||||
|
Con::addVariable("$pref::staticObjectFadeEnd", TypeF32, &TSStatic::smStaticObjectFadeEnd, "Distance at which static object fading should have fully faded if $pref::useStaticObjectFade is on.\n");
|
||||||
|
Con::addVariable("$pref::staticObjectUnfadeableSize", TypeF32, &TSStatic::smStaticObjectUnfadeableSize, "Size of object where if the bounds is at or bigger than this, it will be ignored in the $pref::useStaticObjectFade logic. Useful for very large, distance-important objects.\n");
|
||||||
|
}
|
||||||
|
|
||||||
bool TSStatic::_setShapeAsset(void* obj, const char* index, const char* data)
|
bool TSStatic::_setShapeAsset(void* obj, const char* index, const char* data)
|
||||||
{
|
{
|
||||||
TSStatic* ts = static_cast<TSStatic*>(obj);// ->setFile(FileName(data));
|
TSStatic* ts = static_cast<TSStatic*>(obj);// ->setFile(FileName(data));
|
||||||
|
|
@ -808,6 +824,35 @@ void TSStatic::prepRenderImage(SceneRenderState* state)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (smUseStaticObjectFade)
|
||||||
|
{
|
||||||
|
//todo, scale-adjust the fade via bounds sizing?
|
||||||
|
Box3F bounds = getObjBox();
|
||||||
|
bounds.scale(getScale());
|
||||||
|
|
||||||
|
F32 boundsLen = bounds.len();
|
||||||
|
|
||||||
|
if (boundsLen < smStaticObjectUnfadeableSize)
|
||||||
|
{
|
||||||
|
F32 distAdjust = (boundsLen) / (smStaticObjectUnfadeableSize);
|
||||||
|
distAdjust = 1 - distAdjust;
|
||||||
|
|
||||||
|
dist *= distAdjust;
|
||||||
|
|
||||||
|
mAlphaFade = 1.0f;
|
||||||
|
if ((smStaticObjectFadeStart < smStaticObjectFadeEnd) && smStaticObjectFadeStart > 0.1f)
|
||||||
|
{
|
||||||
|
if (dist >= smStaticObjectFadeEnd)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (dist > smStaticObjectFadeStart)
|
||||||
|
{
|
||||||
|
mAlphaFade -= ((dist - smStaticObjectFadeStart) / (smStaticObjectFadeEnd - smStaticObjectFadeStart));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
F32 invScale = (1.0f / getMax(getMax(mObjScale.x, mObjScale.y), mObjScale.z));
|
F32 invScale = (1.0f / getMax(getMax(mObjScale.x, mObjScale.y), mObjScale.z));
|
||||||
|
|
||||||
|
|
@ -880,7 +925,7 @@ void TSStatic::prepRenderImage(SceneRenderState* state)
|
||||||
mShapeInstance->animate();
|
mShapeInstance->animate();
|
||||||
if (mShapeInstance)
|
if (mShapeInstance)
|
||||||
{
|
{
|
||||||
if (mUseAlphaFade)
|
if (mUseAlphaFade || smUseStaticObjectFade)
|
||||||
{
|
{
|
||||||
mShapeInstance->setAlphaAlways(mAlphaFade);
|
mShapeInstance->setAlphaAlways(mAlphaFade);
|
||||||
S32 s = mShapeInstance->mMeshObjects.size();
|
S32 s = mShapeInstance->mMeshObjects.size();
|
||||||
|
|
|
||||||
|
|
@ -240,6 +240,7 @@ public:
|
||||||
|
|
||||||
DECLARE_CONOBJECT(TSStatic);
|
DECLARE_CONOBJECT(TSStatic);
|
||||||
static void initPersistFields();
|
static void initPersistFields();
|
||||||
|
static void consoleInit();
|
||||||
static bool _setShapeAsset(void* obj, const char* index, const char* data);
|
static bool _setShapeAsset(void* obj, const char* index, const char* data);
|
||||||
static bool _setShapeName(void* obj, const char* index, const char* data);
|
static bool _setShapeName(void* obj, const char* index, const char* data);
|
||||||
static bool _setFieldSkin(void* object, const char* index, const char* data);
|
static bool _setFieldSkin(void* object, const char* index, const char* data);
|
||||||
|
|
@ -288,6 +289,18 @@ private:
|
||||||
protected:
|
protected:
|
||||||
Vector<S32> mDecalDetails;
|
Vector<S32> mDecalDetails;
|
||||||
Vector<S32>* mDecalDetailsPtr;
|
Vector<S32>* mDecalDetailsPtr;
|
||||||
|
|
||||||
|
///Indicates if all statics should utilize the distance-based object fadeout logic
|
||||||
|
static bool smUseStaticObjectFade;
|
||||||
|
|
||||||
|
///Distance at which static object fading begins if smUseStaticObjectFade is on
|
||||||
|
static F32 smStaticObjectFadeStart;
|
||||||
|
|
||||||
|
///Distance at which static object fading should have fully faded if smUseStaticObjectFade is on
|
||||||
|
static F32 smStaticObjectFadeEnd;
|
||||||
|
|
||||||
|
///Size of object where if the bounds is at or bigger than this, it will be ignored in the smUseStaticObjectFade logic. Useful for very large, distance-important objects
|
||||||
|
static F32 smStaticObjectUnfadeableSize;
|
||||||
public:
|
public:
|
||||||
bool mIgnoreZodiacs;
|
bool mIgnoreZodiacs;
|
||||||
bool mHasGradients;
|
bool mHasGradients;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue