ArrowGizmo.java

net.minecraft.gizmos.ArrowGizmo

信息

  • 全限定名:net.minecraft.gizmos.ArrowGizmo
  • 类型:public record
  • 包:net.minecraft.gizmos
  • 源码路径:src/main/java/net/minecraft/gizmos/ArrowGizmo.java
  • 起始行号:L9
  • 实现:Gizmo
  • 职责:

    TODO

字段/常量

  • DEFAULT_WIDTH
    • 类型: float
    • 修饰符: public static final
    • 源码定位: L10
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

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

public void emit(GizmoPrimitives primitives, float alphaMultiplier) @ L12

  • 方法名:emit
  • 源码定位:L12
  • 返回类型:void
  • 修饰符:public

参数:

  • primitives: GizmoPrimitives
  • alphaMultiplier: float

说明:

TODO

代码

public record ArrowGizmo(Vec3 start, Vec3 end, int color, float width) implements Gizmo {
    public static final float DEFAULT_WIDTH = 2.5F;
 
    @Override
    public void emit(GizmoPrimitives primitives, float alphaMultiplier) {
        int color = ARGB.multiplyAlpha(this.color, alphaMultiplier);
        primitives.addLine(this.start, this.end, color, this.width);
        Quaternionf rotation = new Quaternionf().rotationTo(new Vector3f(1.0F, 0.0F, 0.0F), this.end.subtract(this.start).toVector3f().normalize());
        float len = (float)Mth.clamp(this.end.distanceTo(this.start) * 0.1F, 0.1F, 1.0);
        Vector3f[] tips = new Vector3f[]{
            rotation.transform(-len, len, 0.0F, new Vector3f()),
            rotation.transform(-len, 0.0F, len, new Vector3f()),
            rotation.transform(-len, -len, 0.0F, new Vector3f()),
            rotation.transform(-len, 0.0F, -len, new Vector3f())
        };
 
        for (Vector3f tip : tips) {
            primitives.addLine(this.end.add(tip.x, tip.y, tip.z), this.end, color, this.width);
        }
    }
}

引用的其他类

  • Gizmo

    • 引用位置: 实现
  • GizmoPrimitives

    • 引用位置: 参数
  • ARGB

    • 引用位置: 方法调用
    • 关联成员: ARGB.multiplyAlpha()
  • Mth

    • 引用位置: 方法调用
    • 关联成员: Mth.clamp()