VertexSorting.java

com.mojang.blaze3d.vertex.VertexSorting

信息

  • 全限定名:com.mojang.blaze3d.vertex.VertexSorting
  • 类型:public interface
  • 包:com.mojang.blaze3d.vertex
  • 源码路径:src/main/java/com/mojang/blaze3d/vertex/VertexSorting.java
  • 起始行号:L11
  • 职责:

    TODO

字段/常量

  • DISTANCE_TO_ORIGIN

    • 类型: VertexSorting
    • 修饰符: package-private
    • 源码定位: L12
    • 说明:

      TODO

  • ORTHOGRAPHIC_Z

    • 类型: VertexSorting
    • 修饰符: package-private
    • 源码定位: L13
    • 说明:

      TODO

内部类/嵌套类型

  • com.mojang.blaze3d.vertex.VertexSorting.DistanceFunction
    • 类型: interface
    • 修饰符: public
    • 源码定位: L42
    • 说明:

      TODO

构造器

方法

下面的方法块按源码顺序生成。

static VertexSorting byDistance(float x, float y, float z) @ L15

  • 方法名:byDistance
  • 源码定位:L15
  • 返回类型:VertexSorting
  • 修饰符:static

参数:

  • x: float
  • y: float
  • z: float

说明:

TODO

static VertexSorting byDistance(Vector3fc origin) @ L19

  • 方法名:byDistance
  • 源码定位:L19
  • 返回类型:VertexSorting
  • 修饰符:static

参数:

  • origin: Vector3fc

说明:

TODO

static VertexSorting byDistance(VertexSorting.DistanceFunction function) @ L23

  • 方法名:byDistance
  • 源码定位:L23
  • 返回类型:VertexSorting
  • 修饰符:static

参数:

  • function: VertexSorting.DistanceFunction

说明:

TODO

int[] sort(CompactVectorArray points) @ L38

  • 方法名:sort
  • 源码定位:L38
  • 返回类型:int[]
  • 修饰符:package-private

参数:

  • points: CompactVectorArray

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public interface VertexSorting {
    VertexSorting DISTANCE_TO_ORIGIN = byDistance(0.0F, 0.0F, 0.0F);
    VertexSorting ORTHOGRAPHIC_Z = byDistance(point -> -point.z());
 
    static VertexSorting byDistance(float x, float y, float z) {
        return byDistance(new Vector3f(x, y, z));
    }
 
    static VertexSorting byDistance(Vector3fc origin) {
        return byDistance(origin::distanceSquared);
    }
 
    static VertexSorting byDistance(VertexSorting.DistanceFunction function) {
        return values -> {
            Vector3f scratch = new Vector3f();
            float[] keys = new float[values.size()];
            int[] indices = new int[values.size()];
 
            for (int i = 0; i < values.size(); indices[i] = i++) {
                keys[i] = function.apply(values.get(i, scratch));
            }
 
            IntArrays.mergeSort(indices, (o1, o2) -> Floats.compare(keys[o2], keys[o1]));
            return indices;
        };
    }
 
    int[] sort(CompactVectorArray points);
 
    @FunctionalInterface
    @OnlyIn(Dist.CLIENT)
    public interface DistanceFunction {
        float apply(Vector3f value);
    }
}

引用的其他类