diff --git a/Engine/source/T3D/lightBase.cpp b/Engine/source/T3D/lightBase.cpp index 957149e93..3ef40f4ca 100644 --- a/Engine/source/T3D/lightBase.cpp +++ b/Engine/source/T3D/lightBase.cpp @@ -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 ) diff --git a/Engine/source/scene/sceneObject.cpp b/Engine/source/scene/sceneObject.cpp index c44746c88..7ed86de9c 100644 --- a/Engine/source/scene/sceneObject.cpp +++ b/Engine/source/scene/sceneObject.cpp @@ -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 ); } }