Prior to 8c00f6da88 the interpolation of fragment
shader inputs appears to not have been accounting for perspective. This broke
texturing due to the texture ids being interpolated for perspective which was
fixed in 47e0ac8032. The hsl values similarly
require not accounting for perspective, so the noperspective interpolation
qualifier has been added. It is unclear to me why the geometry shader removal
would affect the interpolation like this since it was emitting vertices with
the correct z values.
Originally this was fixed in d02ddfc1b2 but then
broken in d676542dc2. Preferred positions don't
make sense for either overlay type and for tooltips breaks them due to having
them offset from the mouse position.
Inline the body of pushFace() into uploadModel() and perform the loop hoisting
of the locals that this enables. This cuts off 10-20ms of scene load time on my machine.
Co-authored-by: Jonathon Reesor <jonathon.reesor@gmail.com>
Prevent unnecessary allocations by updating the ensureCapacity() methods to not
create intermediate buffers, just create a single new buffer with the final
size.
Co-authored-by: Jonathon Reesor <jonathon.reesor@gmail.com>
Instead we can just check the model scene id is correct and not have to be
concerned about reused Models from previous scenes having positive buffer
offsets
Co-authored-by: Jonathon Reesor <jonathon.reesor@gmail.com>
Due to JDK-4737788, maximizing an undecorated frame incorrectly covers the
taskbar. Substance attempts to correct this by computing its own maximized
bounds, but it does not account for DPI scaling. Since Substance automatically
calls setMaximizedBounds when the frame is resized to do this we simply
override it and replace the bounds with our own which includes the scaling of
the display.
This also fixes the frame maximizing to the incorrect display on 11.0.8 due to
JDK-8231564, which changes the coordinates setMaximizedBounds() expects to be
relative to the primary display instead of the current display. Previously,
Substance was always setting the bounds x/y to 0 due to this.
Co-authored-by: Runemoro <runemoro1@gmail.com>
Not sure where these original arguments come from, but it was
incorrectly noting the items and then attempting to adjust zoom to
account for that, which makes most item outlines slightly off
Mining dense essense doesn't have a chat message so this starts the mining session based on animation instead.
Co-authored-by: chasertw123 <henderson.chase@gmail.com>
The value cannot be more than MAX_VALUE so the previous condition was
never met. Additionally use MAX_QUANTITY constant instead of abusing
char max value which is completely unrelated.
It modifies various fields in the ui and should be running on edt.
Additionally add a clear listener to reset the search state when the
input is cleared.
This requires changing the hiscore client to be async so that the
response can be properly applied on the edt
The Discord invites requires the party size to be >0 for invites to work.
Previously this was not updating the presence with the 1 (local) member
after joining due to the plugin event handler running prior to the
service adding the member to the party.
This also changes the party id to always be null when not in a party instead of
set to the special local party id. This simplifies the checks in the
plugins trying to differentiate being in your own party vs not being in
a party.
The overlay was clobbering the plugins sorted xpglobe list when it
re-sorted it by skill instead, preventing the expire routine from
correctly expiring xpglobes. Instead keep the list in render order (by
skill) and just check the full list for expired orbs, since there are
not usually many to check.
Use the menu type instead of assuming if the param1 is a valid widget
then the menu is for a widget. The params are free form data which is
specific to the menu type, so it is possible for it to unintentionally be
a valid widget id even when it is something else.
This changes tag tabs to actually put the bank in search mode, still
without providing any search input, so that the bank tab builder will
draw tab separators (both the separator line and tab text label)
This fixes a lot of edge cases which required us to re-search for things
after input was re-used when a tag tab was open, and removes the
requirement of having the bank search text be in sync with the
currently selected tab.
This also no longer parses the tag tab out of the title during times
when the input is being re-used (like Withdraw-x) which was broken
earlier from the bank plugin changing the title to include the value of
searches.
A new tag tab title is being set now on all tag tab views so the old tag
tab tab title event can be removed.
The widget child array is filled with nulls to hide the sprites. It is also
valid for the child array to have null entries in it in general, but that does
not happen otherwise.
Previously the widget hidden event would not run until the next client
tick, due to it being on a timer, and the game tick event being deferred
until the next frame. Now that we are hooking to the script being
executed it fires prior to the game tick event being fired.
This has been here a long time, but as far as we can tell is no longer
necessary. It is causing double instantiation of classes which are only
injected a single place.
Collections.binarySearch() does not guarantee which element is found if
there are multiple that compare equal, leaving the order of infoboxes
not necessarily in insertion order. This was an unintended side effect of
ba9ffb1d60 and
406c2bc7db.
When pressed tag/untag will first check if the npc id is tagged via
npcTags, so the menu option should be based off of that, and not whether
or not the npc is highlighted generally
The correct way to compute ha price is floor(storePrice * 0.6f). This
was being computed incorrectly everywhere except for the bank plugin.
THis is now being computed centrally via the api.
This was not actually enabling/disabling shift click on config toggle,
nor was it respecting the config option when overwriting the shift click
indexes