UnbakedCuboidGeometry.java
net.minecraft.client.resources.model.cuboid.UnbakedCuboidGeometry
信息
- 全限定名:net.minecraft.client.resources.model.cuboid.UnbakedCuboidGeometry
- 类型:public record
- 包:net.minecraft.client.resources.model.cuboid
- 源码路径:src/main/java/net/minecraft/client/resources/model/cuboid/UnbakedCuboidGeometry.java
- 起始行号:L19
- 实现:UnbakedGeometry
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public QuadCollection bake(TextureSlots textures, ModelBaker modelBaker, ModelState modelState, ModelDebugName name) @ L20
- 方法名:bake
- 源码定位:L20
- 返回类型:QuadCollection
- 修饰符:public
参数:
- textures: TextureSlots
- modelBaker: ModelBaker
- modelState: ModelState
- name: ModelDebugName
说明:
TODO
public static QuadCollection bake(List<CuboidModelElement> elements, TextureSlots textures, ModelBaker modelBaker, ModelState modelState, ModelDebugName name) @ L25
- 方法名:bake
- 源码定位:L25
- 返回类型:QuadCollection
- 修饰符:public static
参数:
- elements: List
- textures: TextureSlots
- modelBaker: ModelBaker
- modelState: ModelState
- name: ModelDebugName
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public record UnbakedCuboidGeometry(List<CuboidModelElement> elements) implements UnbakedGeometry {
@Override
public QuadCollection bake(TextureSlots textures, ModelBaker modelBaker, ModelState modelState, ModelDebugName name) {
return bake(this.elements, textures, modelBaker, modelState, name);
}
public static QuadCollection bake(
List<CuboidModelElement> elements, TextureSlots textures, ModelBaker modelBaker, ModelState modelState, ModelDebugName name
) {
QuadCollection.Builder builder = new QuadCollection.Builder();
for (CuboidModelElement element : elements) {
boolean drawXFaces = true;
boolean drawYFaces = true;
boolean drawZFaces = true;
Vector3fc from = element.from();
Vector3fc to = element.to();
if (from.x() == to.x()) {
drawYFaces = false;
drawZFaces = false;
}
if (from.y() == to.y()) {
drawXFaces = false;
drawZFaces = false;
}
if (from.z() == to.z()) {
drawXFaces = false;
drawYFaces = false;
}
if (drawXFaces || drawYFaces || drawZFaces) {
for (Entry<Direction, CuboidFace> entry : element.faces().entrySet()) {
Direction facing = entry.getKey();
CuboidFace face = entry.getValue();
boolean shouldDrawFace = switch (facing.getAxis()) {
case X -> drawXFaces;
case Y -> drawYFaces;
case Z -> drawZFaces;
};
if (shouldDrawFace) {
Material.Baked material = modelBaker.materials().resolveSlot(textures, face.texture(), name);
BakedQuad quad = FaceBakery.bakeQuad(
modelBaker, from, to, face, material, facing, modelState, element.rotation(), element.shade(), element.lightEmission()
);
if (face.cullForDirection() == null) {
builder.addUnculledFace(quad);
} else {
builder.addCulledFace(Direction.rotate(modelState.transformation().getMatrix(), face.cullForDirection()), quad);
}
}
}
}
}
return builder.build();
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
FaceBakery.bakeQuad()
- 引用位置:
-
- 引用位置:
方法调用/构造调用/返回值 - 关联成员:
Builder(), QuadCollection.Builder()
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Direction.rotate()
- 引用位置: