Interface SpriteFinder


@NonExtendable public interface SpriteFinder
Indexes a texture atlas to allow fast lookup of Sprites from baked texture coordinates.

Example use cases include interpolating the textures of a submodel's quads in FabricBlockStateModel.emitQuads(QuadEmitter, BlockRenderView, BlockPos, BlockState, Random, Predicate) or finding the sprite for use in QuadView.toBakedQuad(Sprite).

A sprite finder can be retrieved from various vanilla objects. Always use FabricErrorCollectingSpriteGetter.spriteFinder(Identifier), FabricStitchResult.spriteFinder(), or FabricAtlasPreparation.spriteFinder() whenever an applicable instance is available. For example, model baking is supplied with a ErrorCollectingSpriteGetter, so it should be used to retrieve the sprite finder. In most other cases, it is safe to use FabricSpriteAtlasTexture.spriteFinder().

  • Method Details

    • find

      Sprite find(QuadView quad)
      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

      Sprite find(float u, float v)
      Alternative to find(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 in QuadView after calling MutableQuadView.spriteBake(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.

    • get

      Deprecated.
    • find

      @Deprecated default Sprite find(QuadView quad, int textureIndex)
      Deprecated.
      Use find(QuadView) instead.