working on animation stuff again, with pivot points
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
package net.halbear.hvf.Entity.Renderer;
|
||||||
|
|
||||||
|
public enum PivotOrigin {
|
||||||
|
PilotSeat,
|
||||||
|
RelativeToEntityCenter,
|
||||||
|
EntityPosition
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@ import net.minecraft.client.renderer.entity.EntityRendererManager;
|
|||||||
import net.minecraft.client.renderer.entity.model.EntityModel;
|
import net.minecraft.client.renderer.entity.model.EntityModel;
|
||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.util.math.vector.Vector3d;
|
||||||
import net.minecraft.util.math.vector.Vector3f;
|
import net.minecraft.util.math.vector.Vector3f;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
@@ -18,6 +19,8 @@ import java.util.Arrays;
|
|||||||
public class VehicleBaseRenderer<T extends VehicleBaseEntity, M extends EntityModel<VehicleBaseEntity>> extends EntityRenderer<T> {
|
public class VehicleBaseRenderer<T extends VehicleBaseEntity, M extends EntityModel<VehicleBaseEntity>> extends EntityRenderer<T> {
|
||||||
|
|
||||||
private Vector3f LastRotations = new Vector3f(0,0,0);
|
private Vector3f LastRotations = new Vector3f(0,0,0);
|
||||||
|
private PivotOrigin OriginType = PivotOrigin.RelativeToEntityCenter;
|
||||||
|
private Vector3d OriginOffset = new Vector3d(0,0,0);
|
||||||
|
|
||||||
|
|
||||||
private M[] models;
|
private M[] models;
|
||||||
@@ -28,16 +31,40 @@ public class VehicleBaseRenderer<T extends VehicleBaseEntity, M extends EntityMo
|
|||||||
this.models = models;
|
this.models = models;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public VehicleBaseRenderer SetPivotPoint(PivotOrigin OriginType, Vector3d Offset){
|
||||||
|
this.OriginOffset = Offset;
|
||||||
|
this.OriginType = OriginType;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PivotOrigin GetOriginType(){
|
||||||
|
return OriginType;
|
||||||
|
}
|
||||||
|
public Vector3d GetPivotOffset(){
|
||||||
|
return OriginOffset;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(T entity, float entityYaw, float partialTicks, MatrixStack matrixStack, IRenderTypeBuffer buffer, int packedLight) {
|
public void render(T entity, float entityYaw, float partialTicks, MatrixStack matrixStack, IRenderTypeBuffer buffer, int packedLight) {
|
||||||
matrixStack.push();
|
matrixStack.push();
|
||||||
|
|
||||||
|
Vector3d OriginPosition = OriginOffset;
|
||||||
|
switch(OriginType) {
|
||||||
|
case PilotSeat:
|
||||||
|
OriginPosition.add(entity.GetPilotSeat().x,-entity.GetPilotSeat().y,entity.GetPilotSeat().z);
|
||||||
|
break;
|
||||||
|
case EntityPosition:
|
||||||
|
break;
|
||||||
|
case RelativeToEntityCenter:
|
||||||
|
OriginPosition.add(new Vector3d(0, entity.getHeight()/2, 0));
|
||||||
|
break;
|
||||||
|
}
|
||||||
entity.SetPartialTick(partialTicks);
|
entity.SetPartialTick(partialTicks);
|
||||||
matrixStack.translate( entity.GetPilotSeat().x, -entity.GetPilotSeat().y, entity.GetPilotSeat().z);
|
matrixStack.translate( OriginPosition.x, OriginPosition.y, OriginPosition.z);
|
||||||
matrixStack.rotate(Vector3f.YP.rotationDegrees(180.0F - entity.GetVehicleYaw()));
|
matrixStack.rotate(Vector3f.YP.rotationDegrees(180.0F - entity.GetVehicleYaw()));
|
||||||
matrixStack.rotate(Vector3f.XP.rotationDegrees(entity.GetVehiclePitch()));
|
matrixStack.rotate(Vector3f.XP.rotationDegrees(entity.GetVehiclePitch()));
|
||||||
matrixStack.rotate(Vector3f.ZP.rotationDegrees(entity.GetVehicleRoll()));
|
matrixStack.rotate(Vector3f.ZP.rotationDegrees(entity.GetVehicleRoll()));
|
||||||
matrixStack.translate( -entity.GetPilotSeat().x, entity.GetPilotSeat().y, -entity.GetPilotSeat().z);
|
matrixStack.translate( -OriginPosition.x, -OriginPosition.y, -OriginPosition.z);
|
||||||
matrixStack.scale(-1.0F, -1.0F, 1.0F);
|
matrixStack.scale(-1.0F, -1.0F, 1.0F);
|
||||||
matrixStack.translate(0.0D, -1.5D, 0.0D);
|
matrixStack.translate(0.0D, -1.5D, 0.0D);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user