ElderGuardianParticleGroup.java
net.minecraft.client.particle.ElderGuardianParticleGroup
信息
- 全限定名:net.minecraft.client.particle.ElderGuardianParticleGroup
- 类型:public class
- 包:net.minecraft.client.particle
- 源码路径:src/main/java/net/minecraft/client/particle/ElderGuardianParticleGroup.java
- 起始行号:L21
- 继承:ParticleGroup
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
-
net.minecraft.client.particle.ElderGuardianParticleGroup.ElderGuardianParticleRenderState- 类型:
record - 修饰符:
private - 源码定位:
L37 - 说明:
TODO
- 类型:
-
net.minecraft.client.particle.ElderGuardianParticleGroup.State- 类型:
record - 修饰符:
private - 源码定位:
L56 - 说明:
TODO
- 类型:
构造器
public ElderGuardianParticleGroup(ParticleEngine engine) @ L22
- 构造器名:ElderGuardianParticleGroup
- 源码定位:L22
- 修饰符:public
参数:
- engine: ParticleEngine
说明:
TODO
方法
下面的方法块按源码顺序生成。
public ParticleGroupRenderState extractRenderState(Frustum frustum, Camera camera, float partialTickTime) @ L26
- 方法名:extractRenderState
- 源码定位:L26
- 返回类型:ParticleGroupRenderState
- 修饰符:public
参数:
- frustum: Frustum
- camera: Camera
- partialTickTime: float
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class ElderGuardianParticleGroup extends ParticleGroup<ElderGuardianParticle> {
public ElderGuardianParticleGroup(ParticleEngine engine) {
super(engine);
}
@Override
public ParticleGroupRenderState extractRenderState(Frustum frustum, Camera camera, float partialTickTime) {
return new ElderGuardianParticleGroup.State(
this.particles
.stream()
.map(particle -> ElderGuardianParticleGroup.ElderGuardianParticleRenderState.fromParticle(particle, camera, partialTickTime))
.toList()
);
}
@OnlyIn(Dist.CLIENT)
private record ElderGuardianParticleRenderState(Model<Unit> model, PoseStack poseStack, RenderType renderType, int color) {
public static ElderGuardianParticleGroup.ElderGuardianParticleRenderState fromParticle(
ElderGuardianParticle particle, Camera camera, float partialTickTime
) {
float ageScale = (particle.age + partialTickTime) / particle.lifetime;
float alpha = 0.05F + 0.5F * Mth.sin(ageScale * (float) Math.PI);
int color = ARGB.colorFromFloat(alpha, 1.0F, 1.0F, 1.0F);
PoseStack poseStack = new PoseStack();
poseStack.pushPose();
poseStack.mulPose(camera.rotation());
poseStack.mulPose(Axis.XP.rotationDegrees(60.0F - 150.0F * ageScale));
float scale = 0.42553192F;
poseStack.scale(0.42553192F, -0.42553192F, -0.42553192F);
poseStack.translate(0.0F, -0.56F, 3.5F);
return new ElderGuardianParticleGroup.ElderGuardianParticleRenderState(particle.model, poseStack, particle.renderType, color);
}
}
@OnlyIn(Dist.CLIENT)
private record State(List<ElderGuardianParticleGroup.ElderGuardianParticleRenderState> states) implements ParticleGroupRenderState {
@Override
public void submit(SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
for (ElderGuardianParticleGroup.ElderGuardianParticleRenderState state : this.states) {
submitNodeCollector.submitModel(
state.model, Unit.INSTANCE, state.poseStack, state.renderType, 15728880, OverlayTexture.NO_OVERLAY, state.color, null, 0, null
);
}
}
}
}引用的其他类
-
- 引用位置:
构造调用 - 关联成员:
PoseStack()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ARGB.colorFromFloat()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.sin()
- 引用位置: