Prevent content from overriding sprite shader (#9036)
This commit is contained in:
@@ -23,18 +23,20 @@ namespace Content.Client.Interactable.Components
|
||||
{
|
||||
_lastRenderScale = renderScale;
|
||||
_inRange = inInteractionRange;
|
||||
if (_entMan.TryGetComponent(Owner, out ISpriteComponent? sprite))
|
||||
if (_entMan.TryGetComponent(Owner, out SpriteComponent? sprite) && sprite.PostShader == null)
|
||||
{
|
||||
sprite.PostShader = MakeNewShader(inInteractionRange, renderScale);
|
||||
sprite.RenderOrder = _entMan.CurrentTick.Value;
|
||||
// TODO why is this creating a new instance of the outline shader every time the mouse enters???
|
||||
_shader = MakeNewShader(inInteractionRange, renderScale);
|
||||
sprite.PostShader = _shader;
|
||||
}
|
||||
}
|
||||
|
||||
public void OnMouseLeave()
|
||||
{
|
||||
if (_entMan.TryGetComponent(Owner, out ISpriteComponent? sprite))
|
||||
if (_entMan.TryGetComponent(Owner, out SpriteComponent? sprite))
|
||||
{
|
||||
sprite.PostShader = null;
|
||||
if (sprite.PostShader == _shader)
|
||||
sprite.PostShader = null;
|
||||
sprite.RenderOrder = 0;
|
||||
}
|
||||
|
||||
@@ -44,11 +46,13 @@ namespace Content.Client.Interactable.Components
|
||||
|
||||
public void UpdateInRange(bool inInteractionRange, int renderScale)
|
||||
{
|
||||
if (_entMan.TryGetComponent(Owner, out ISpriteComponent? sprite)
|
||||
if (_entMan.TryGetComponent(Owner, out SpriteComponent? sprite)
|
||||
&& sprite.PostShader == _shader
|
||||
&& (inInteractionRange != _inRange || _lastRenderScale != renderScale))
|
||||
{
|
||||
_inRange = inInteractionRange;
|
||||
_lastRenderScale = renderScale;
|
||||
|
||||
_shader = MakeNewShader(_inRange, _lastRenderScale);
|
||||
sprite.PostShader = _shader;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user