soiz1's picture
Upload folder using huggingface_hub
d46f4a3 verified
package net.minecraft.client.animation;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.util.Mth;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.joml.Vector3f;
@OnlyIn(Dist.CLIENT)
public record AnimationChannel(AnimationChannel.Target target, Keyframe... keyframes) {
@OnlyIn(Dist.CLIENT)
public interface Interpolation {
Vector3f apply(Vector3f p_253818_, float p_232224_, Keyframe[] p_232225_, int p_232226_, int p_232227_, float p_232228_);
}
@OnlyIn(Dist.CLIENT)
public static class Interpolations {
public static final AnimationChannel.Interpolation LINEAR = (p_253292_, p_253293_, p_253294_, p_253295_, p_253296_, p_253297_) -> {
Vector3f vector3f = p_253294_[p_253295_].target();
Vector3f vector3f1 = p_253294_[p_253296_].target();
return vector3f.lerp(vector3f1, p_253293_, p_253292_).mul(p_253297_);
};
public static final AnimationChannel.Interpolation CATMULLROM = (p_254076_, p_232235_, p_232236_, p_232237_, p_232238_, p_232239_) -> {
Vector3f vector3f = p_232236_[Math.max(0, p_232237_ - 1)].target();
Vector3f vector3f1 = p_232236_[p_232237_].target();
Vector3f vector3f2 = p_232236_[p_232238_].target();
Vector3f vector3f3 = p_232236_[Math.min(p_232236_.length - 1, p_232238_ + 1)].target();
p_254076_.set(
Mth.catmullrom(p_232235_, vector3f.x(), vector3f1.x(), vector3f2.x(), vector3f3.x()) * p_232239_,
Mth.catmullrom(p_232235_, vector3f.y(), vector3f1.y(), vector3f2.y(), vector3f3.y()) * p_232239_,
Mth.catmullrom(p_232235_, vector3f.z(), vector3f1.z(), vector3f2.z(), vector3f3.z()) * p_232239_
);
return p_254076_;
};
}
@OnlyIn(Dist.CLIENT)
public interface Target {
void apply(ModelPart p_232248_, Vector3f p_253771_);
}
@OnlyIn(Dist.CLIENT)
public static class Targets {
public static final AnimationChannel.Target POSITION = ModelPart::offsetPos;
public static final AnimationChannel.Target ROTATION = ModelPart::offsetRotation;
public static final AnimationChannel.Target SCALE = ModelPart::offsetScale;
}
}