soiz1's picture
Upload folder using huggingface_hub
d46f4a3 verified
package net.minecraft.client.particle;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.Camera;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.util.Mth;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.joml.Quaternionf;
import org.joml.Vector3f;
@OnlyIn(Dist.CLIENT)
public abstract class SingleQuadParticle extends Particle {
protected float quadSize = 0.1F * (this.random.nextFloat() * 0.5F + 0.5F) * 2.0F;
protected SingleQuadParticle(ClientLevel p_107665_, double p_107666_, double p_107667_, double p_107668_) {
super(p_107665_, p_107666_, p_107667_, p_107668_);
}
protected SingleQuadParticle(
ClientLevel p_107670_, double p_107671_, double p_107672_, double p_107673_, double p_107674_, double p_107675_, double p_107676_
) {
super(p_107670_, p_107671_, p_107672_, p_107673_, p_107674_, p_107675_, p_107676_);
}
public SingleQuadParticle.FacingCameraMode getFacingCameraMode() {
return SingleQuadParticle.FacingCameraMode.LOOKAT_XYZ;
}
@Override
public void render(VertexConsumer p_107678_, Camera p_107679_, float p_107680_) {
Quaternionf quaternionf = new Quaternionf();
this.getFacingCameraMode().setRotation(quaternionf, p_107679_, p_107680_);
if (this.roll != 0.0F) {
quaternionf.rotateZ(Mth.lerp(p_107680_, this.oRoll, this.roll));
}
this.renderRotatedQuad(p_107678_, p_107679_, quaternionf, p_107680_);
}
protected void renderRotatedQuad(VertexConsumer p_342045_, Camera p_344083_, Quaternionf p_342719_, float p_343457_) {
Vec3 vec3 = p_344083_.getPosition();
float f = (float)(Mth.lerp((double)p_343457_, this.xo, this.x) - vec3.x());
float f1 = (float)(Mth.lerp((double)p_343457_, this.yo, this.y) - vec3.y());
float f2 = (float)(Mth.lerp((double)p_343457_, this.zo, this.z) - vec3.z());
this.renderRotatedQuad(p_342045_, p_342719_, f, f1, f2, p_343457_);
}
protected void renderRotatedQuad(VertexConsumer p_345131_, Quaternionf p_343948_, float p_344896_, float p_343625_, float p_342312_, float p_342822_) {
float f = this.getQuadSize(p_342822_);
float f1 = this.getU0();
float f2 = this.getU1();
float f3 = this.getV0();
float f4 = this.getV1();
int i = this.getLightColor(p_342822_);
this.renderVertex(p_345131_, p_343948_, p_344896_, p_343625_, p_342312_, 1.0F, -1.0F, f, f2, f4, i);
this.renderVertex(p_345131_, p_343948_, p_344896_, p_343625_, p_342312_, 1.0F, 1.0F, f, f2, f3, i);
this.renderVertex(p_345131_, p_343948_, p_344896_, p_343625_, p_342312_, -1.0F, 1.0F, f, f1, f3, i);
this.renderVertex(p_345131_, p_343948_, p_344896_, p_343625_, p_342312_, -1.0F, -1.0F, f, f1, f4, i);
}
private void renderVertex(
VertexConsumer p_343555_,
Quaternionf p_344882_,
float p_343363_,
float p_344803_,
float p_345370_,
float p_343670_,
float p_345101_,
float p_342842_,
float p_342598_,
float p_344326_,
int p_345275_
) {
Vector3f vector3f = new Vector3f(p_343670_, p_345101_, 0.0F).rotate(p_344882_).mul(p_342842_).add(p_343363_, p_344803_, p_345370_);
p_343555_.addVertex(vector3f.x(), vector3f.y(), vector3f.z())
.setUv(p_342598_, p_344326_)
.setColor(this.rCol, this.gCol, this.bCol, this.alpha)
.setLight(p_345275_);
}
public float getQuadSize(float p_107681_) {
return this.quadSize;
}
@Override
public Particle scale(float p_107683_) {
this.quadSize *= p_107683_;
return super.scale(p_107683_);
}
protected abstract float getU0();
protected abstract float getU1();
protected abstract float getV0();
protected abstract float getV1();
@OnlyIn(Dist.CLIENT)
public interface FacingCameraMode {
SingleQuadParticle.FacingCameraMode LOOKAT_XYZ = (p_312026_, p_311956_, p_310043_) -> p_312026_.set(p_311956_.rotation());
SingleQuadParticle.FacingCameraMode LOOKAT_Y = (p_310770_, p_309904_, p_311153_) -> p_310770_.set(
0.0F, p_309904_.rotation().y, 0.0F, p_309904_.rotation().w
);
void setRotation(Quaternionf p_309893_, Camera p_309691_, float p_312801_);
}
}