handle mounted lights ghosting in and out

send a periodic corrective packet for mounted lights to ensure they stay mounted when moving in and out of ghosting
This commit is contained in:
AzaezelX 2025-02-08 10:58:50 -06:00
parent e77c4b3a18
commit 4d66ae37de
2 changed files with 15 additions and 3 deletions

View file

@ -147,7 +147,7 @@ bool LightBase::onAdd()
// Update the light parameters.
_conformLights();
addToScene();
setProcessTick(true);
return true;
}
@ -256,10 +256,22 @@ void LightBase::_onUnselected()
void LightBase::interpolateTick( F32 delta )
{
if (isMounted()) {
MatrixF mat;
mMount.object->getRenderMountTransform(delta, mMount.node, mMount.xfm, &mat);
mLight->setTransform(mat);
Parent::setTransform(mat);
}
}
void LightBase::processTick()
{
if (isMounted()) {
MatrixF mat;
mMount.object->getMountTransform(mMount.node, mMount.xfm, &mat);
mLight->setTransform(mat);
setTransform(mat);
}
}
void LightBase::advanceTime( F32 timeDelta )

View file

@ -1236,10 +1236,10 @@ bool SceneObject::_setMountPID( void* object, const char* index, const char* dat
void SceneObject::resolveMountPID()
{
if ( mMountPID && !mMount.object )
if ( mMountPID )
{
SceneObject *obj = dynamic_cast< SceneObject* >( mMountPID->getObject() );
if ( obj )
if ( obj != mMount.object)
obj->mountObject( this, mMount.node, mMount.xfm );
}
}