Fixes de-selection logic in editor that caused special cases to permanently be selected such as mounted Lights

Shifted every-frame RT allocation to be stored in advancedLightBinManager
Remove deprecated references to dynamicShadowMap in light materials
Updated spotLight shaders to remove deprecated dynamic shadowmap reference which was causing a crash when spotlights had shadows turned on
Added GLSL version of Viz_SurfaceProperties so it works on both APIs
This commit is contained in:
Areloch 2020-08-28 01:57:06 -05:00
parent 31039de2cf
commit ae70cccfde
8 changed files with 125 additions and 44 deletions

View file

@ -2167,9 +2167,14 @@ void WorldEditor::on3DMouseUp( const Gui3DMouseEvent &event )
// this may actually cause things to disappear from mSelected so do the loop
// in reverse. This will make the loop work even if items are removed as
// we go along.
for( S32 i = mSelected->size() - 1; i >= 0; -- i )
Con::executef( this, "onUnSelect", ( *mSelected )[ i ]->getIdString() );
for (S32 i = mSelected->size() - 1; i >= 0; --i)
{
//We'll explicitly inform the object of being unmarked as selected in the editor as well for outlier cases potentially not being told, such as mounted objects
WorldEditor::markAsSelected((*mSelected)[i], false);
Con::executef(this, "onUnSelect", (*mSelected)[i]->getIdString());
}
mSelected->clear();
mSelected->addObject( mPossibleHitObject );
mSelected->storeCurrentCentroid();
@ -2894,8 +2899,13 @@ void WorldEditor::clearSelection()
// this may actually cause things to disappear from mSelected so do the loop
// in reverse. This will make the loop work even if items are removed as
// we go along.
for( S32 i = mSelected->size() - 1; i >= 0; -- i )
Con::executef( this, "onUnSelect", ( *mSelected )[ i ]->getIdString() );
for (S32 i = mSelected->size() - 1; i >= 0; --i)
{
//We'll explicitly inform the object of being unmarked as selected in the editor as well for outlier cases potentially not being told, such as mounted objects
WorldEditor::markAsSelected((*mSelected)[i], false);
Con::executef(this, "onUnSelect", (*mSelected)[i]->getIdString());
}
Con::executef(this, "onClearSelection");
mSelected->clear();

View file

@ -370,18 +370,16 @@ void AdvancedLightBinManager::render( SceneRenderState *state )
if (sceneColorTargetRef.isNull())
return;
GFXTextureTargetRef lightingTargetRef = GFX->allocRenderToTextureTarget();
if (lightingTargetRef.isNull())
return;
if (mLightingTargetRef.isNull())
mLightingTargetRef = GFX->allocRenderToTextureTarget();
//Do a quick pass to update our probes if they're dirty
//PROBEMGR->updateDirtyProbes();
lightingTargetRef->attachTexture(GFXTextureTarget::Color0, sceneColorTargetRef->getTexture());
mLightingTargetRef->attachTexture(GFXTextureTarget::Color0, sceneColorTargetRef->getTexture());
GFX->pushActiveRenderTarget();
GFX->setActiveRenderTarget(lightingTargetRef);
GFX->setActiveRenderTarget(mLightingTargetRef);
GFX->setViewport(sceneColorTargetRef->getViewport());

View file

@ -93,6 +93,8 @@ public:
NamedTexTargetRef mDiffuseLightingTarget;
GFXTexHandle mDiffuseLightingTex;
GFXTextureTargetRef mLightingTargetRef;
/// The shadow filter mode to use on shadowed light materials.
static ShadowFilterMode smShadowFilterMode;