Interface SpriteFinder
public interface SpriteFinder
Indexes a texture atlas to allow fast lookup of Sprites from
baked vertex coordinates. Main use is for
Mesh
-based models
to generate vanilla quads on demand without tracking and retaining
the sprites that were baked into the mesh. In other words, this class
supplies the sprite parameter for QuadView.toBakedQuad(int, Sprite, boolean)
.-
Method Summary
Modifier and TypeMethodDescriptionnet.minecraft.client.texture.Sprite
find(float u, float v)
Alternative tofind(QuadView, int)
when vertex centroid is already known or unsuitable.net.minecraft.client.texture.Sprite
Finds the atlas sprite containing the vertex centroid of the quad.static SpriteFinder
get(net.minecraft.client.texture.SpriteAtlasTexture atlas)
Retrieves or creates the finder for the given atlas.
-
Method Details
-
get
Retrieves or creates the finder for the given atlas. Instances should not be retained as fields or they must be refreshed whenever there is a resource reload or other event that causes atlas textures to be re-stitched. -
find
Finds the atlas sprite containing the vertex centroid of the quad. Vertex centroid is essentially the mean u,v coordinate - the intent being to find a point that is unambiguously inside the sprite (vs on an edge.)Should be reliable for any convex quad or triangle. May fail for non-convex quads. Note that all the above refers to u,v coordinates. Geometric vertex does not matter, except to the extent it was used to determine u,v.
-
find
net.minecraft.client.texture.Sprite find(float u, float v)Alternative tofind(QuadView, int)
when vertex centroid is already known or unsuitable. Expects normalized (0-1) coordinates on the atlas texture, which should already be the case for u,v values in vanilla baked quads and inQuadView
after callingMutableQuadView.spriteBake(int, Sprite, int)
.Coordinates must be in the sprite interior for reliable results. Generally will be easier to use
find(QuadView, int)
unless you know the vertex centroid will somehow not be in the quad interior. This method will be slightly faster if you already have the centroid or another appropriate value.
-