Merge pull request #265 from deathbeam/fix-broken-plugins
Fix overlay renderer cache
This commit is contained in:
@@ -95,6 +95,7 @@ public class OverlayRenderer
|
|||||||
|
|
||||||
if (event.getGameState().equals(GameState.LOGIN_SCREEN) || event.getGameState().equals(GameState.LOGGED_IN))
|
if (event.getGameState().equals(GameState.LOGIN_SCREEN) || event.getGameState().equals(GameState.LOGGED_IN))
|
||||||
{
|
{
|
||||||
|
refreshPlugins();
|
||||||
updateSurface();
|
updateSurface();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,10 +103,19 @@ public class OverlayRenderer
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onPluginChanged(PluginChanged event)
|
public void onPluginChanged(PluginChanged event)
|
||||||
{
|
{
|
||||||
|
if (event.isLoaded())
|
||||||
|
{
|
||||||
|
overlays.addAll(event.getPlugin().getOverlays());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
overlays.removeAll(event.getPlugin().getOverlays());
|
||||||
|
}
|
||||||
|
|
||||||
sortOverlays();
|
sortOverlays();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sortOverlays()
|
private void refreshPlugins()
|
||||||
{
|
{
|
||||||
overlays.clear();
|
overlays.clear();
|
||||||
overlays.addAll(Stream
|
overlays.addAll(Stream
|
||||||
@@ -114,25 +124,30 @@ public class OverlayRenderer
|
|||||||
.stream()
|
.stream()
|
||||||
.flatMap(plugin -> plugin.getOverlays().stream()),
|
.flatMap(plugin -> plugin.getOverlays().stream()),
|
||||||
Stream.of(infoBoxOverlay, tooltipOverlay))
|
Stream.of(infoBoxOverlay, tooltipOverlay))
|
||||||
.sorted((a, b) ->
|
|
||||||
{
|
|
||||||
if (a.getPosition() != b.getPosition())
|
|
||||||
{
|
|
||||||
// This is so non-dynamic overlays render after dynamic
|
|
||||||
// overlays, which are generally in the scene
|
|
||||||
return a.getPosition().compareTo(b.getPosition());
|
|
||||||
}
|
|
||||||
|
|
||||||
// For dynamic overlays, higher priority means to
|
|
||||||
// draw *later* so it is on top.
|
|
||||||
// For non-dynamic overlays, higher priority means
|
|
||||||
// draw *first* so that they are closer to their
|
|
||||||
// defined position.
|
|
||||||
return a.getPosition() == OverlayPosition.DYNAMIC
|
|
||||||
? a.getPriority().compareTo(b.getPriority())
|
|
||||||
: b.getPriority().compareTo(a.getPriority());
|
|
||||||
})
|
|
||||||
.collect(Collectors.toList()));
|
.collect(Collectors.toList()));
|
||||||
|
sortOverlays();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sortOverlays()
|
||||||
|
{
|
||||||
|
overlays.sort((a, b) ->
|
||||||
|
{
|
||||||
|
if (a.getPosition() != b.getPosition())
|
||||||
|
{
|
||||||
|
// This is so non-dynamic overlays render after dynamic
|
||||||
|
// overlays, which are generally in the scene
|
||||||
|
return a.getPosition().compareTo(b.getPosition());
|
||||||
|
}
|
||||||
|
|
||||||
|
// For dynamic overlays, higher priority means to
|
||||||
|
// draw *later* so it is on top.
|
||||||
|
// For non-dynamic overlays, higher priority means
|
||||||
|
// draw *first* so that they are closer to their
|
||||||
|
// defined position.
|
||||||
|
return a.getPosition() == OverlayPosition.DYNAMIC
|
||||||
|
? a.getPriority().compareTo(b.getPriority())
|
||||||
|
: b.getPriority().compareTo(a.getPriority());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateSurface()
|
private void updateSurface()
|
||||||
|
|||||||
Reference in New Issue
Block a user