尝试添加OBB部件
This commit is contained in:
parent
8ce0c5c9f8
commit
e32b3e4344
10 changed files with 60 additions and 53 deletions
|
@ -99,17 +99,17 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
|||
|
||||
public A10Entity(EntityType<A10Entity> type, Level world) {
|
||||
super(type, world);
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(0.6875f, 1.09375f, 3.65625f), new Quaternionf());
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(8.8125f, 0.3125f, 1.40625f), new Quaternionf());
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(3.1875f, 0.125f, 0.96875f), new Quaternionf());
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.0625f, 1.09375f, 0.84375f), new Quaternionf());
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(0.0625f, 1.09375f, 0.84375f), new Quaternionf());
|
||||
this.obb6 = new OBB(this.position().toVector3f(), new Vector3f(0.625f, 0.78125f, 1.09375f), new Quaternionf());
|
||||
this.obb7 = new OBB(this.position().toVector3f(), new Vector3f(0.6875f, 0.75f, 2.9375f), new Quaternionf());
|
||||
this.obb8 = new OBB(this.position().toVector3f(), new Vector3f(0.75f, 0.75f, 1.5625f), new Quaternionf());
|
||||
this.obb9 = new OBB(this.position().toVector3f(), new Vector3f(0.75f, 0.75f, 1.5625f), new Quaternionf());
|
||||
this.obb10 = new OBB(this.position().toVector3f(), new Vector3f(0.34375f, 0.359375f, 1.78125f), new Quaternionf());
|
||||
this.obb11 = new OBB(this.position().toVector3f(), new Vector3f(0.34375f, 0.359375f, 1.78125f), new Quaternionf());
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(0.6875f, 1.09375f, 3.65625f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(8.8125f, 0.3125f, 1.40625f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(3.1875f, 0.125f, 0.96875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.0625f, 1.09375f, 0.84375f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(0.0625f, 1.09375f, 0.84375f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb6 = new OBB(this.position().toVector3f(), new Vector3f(0.625f, 0.78125f, 1.09375f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb7 = new OBB(this.position().toVector3f(), new Vector3f(0.6875f, 0.75f, 2.9375f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb8 = new OBB(this.position().toVector3f(), new Vector3f(0.75f, 0.75f, 1.5625f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb9 = new OBB(this.position().toVector3f(), new Vector3f(0.75f, 0.75f, 1.5625f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb10 = new OBB(this.position().toVector3f(), new Vector3f(0.34375f, 0.359375f, 1.78125f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb11 = new OBB(this.position().toVector3f(), new Vector3f(0.34375f, 0.359375f, 1.78125f), new Quaternionf(), OBB.Part.BODY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -81,11 +81,11 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
|||
|
||||
public Ah6Entity(EntityType<Ah6Entity> type, Level world) {
|
||||
super(type, world);
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(1.0625f, 1.28125f, 1.625f), new Quaternionf());
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(0.875f, 0.6875f, 0.59375f), new Quaternionf());
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.3125f, 2.25f), new Quaternionf());
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.0625f, 1.15625f, 0.40625f), new Quaternionf());
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(1f, 0.25f, 0.21875f), new Quaternionf());
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(1.0625f, 1.28125f, 1.625f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(0.875f, 0.6875f, 0.59375f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.3125f, 2.25f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.0625f, 1.15625f, 0.40625f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(1f, 0.25f, 0.21875f), new Quaternionf(), OBB.Part.BODY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -79,11 +79,11 @@ public class AnnihilatorEntity extends EnergyVehicleEntity implements GeoEntity,
|
|||
|
||||
public AnnihilatorEntity(EntityType<AnnihilatorEntity> type, Level world) {
|
||||
super(type, world);
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(6.4375f, 1.84375f, 4.125f), new Quaternionf());
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(5.0625f, 1.40625f, 1.5f), new Quaternionf());
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(5.1875f, 1.84375f, 1.96875f), new Quaternionf());
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(4.125f, 1.84375f, 0.75f), new Quaternionf());
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(7.75f, 0.71875f, 1.46875f), new Quaternionf());
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(6.4375f, 1.84375f, 4.125f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(5.0625f, 1.40625f, 1.5f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(5.1875f, 1.84375f, 1.96875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(4.125f, 1.84375f, 0.75f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(7.75f, 0.71875f, 1.46875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.noCulling = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -78,11 +78,11 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
|||
|
||||
public Bmp2Entity(EntityType<Bmp2Entity> type, Level world) {
|
||||
super(type, world);
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.1875f, 0.875f, 3.90625f), new Quaternionf());
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(2.1875f, 0.5f, 0.65625f), new Quaternionf());
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.375f, 0.78125f, 3.46875f), new Quaternionf());
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.375f, 0.78125f, 3.46875f), new Quaternionf());
|
||||
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(1.5f, 0.34375f, 1.5f), new Quaternionf());
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.1875f, 0.875f, 3.90625f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(2.1875f, 0.5f, 0.65625f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.375f, 0.78125f, 3.46875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.375f, 0.78125f, 3.46875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(1.5f, 0.34375f, 1.5f), new Quaternionf(), OBB.Part.BODY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -69,14 +69,14 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
|||
|
||||
public Lav150Entity(EntityType<Lav150Entity> type, Level world) {
|
||||
super(type, world);
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf());
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf());
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf());
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf());
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(1.3125f, 0.90625f, 2.4375f), new Quaternionf());
|
||||
this.obb6 = new OBB(this.position().toVector3f(), new Vector3f(1.3125f, 0.53125f, 0.34375f), new Quaternionf());
|
||||
this.obb7 = new OBB(this.position().toVector3f(), new Vector3f(1.3125f, 0.625f, 0.53125f), new Quaternionf());
|
||||
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(0.875f, 0.3625f, 1.25f), new Quaternionf());
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(1.3125f, 0.90625f, 2.4375f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb6 = new OBB(this.position().toVector3f(), new Vector3f(1.3125f, 0.53125f, 0.34375f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb7 = new OBB(this.position().toVector3f(), new Vector3f(1.3125f, 0.625f, 0.53125f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(0.875f, 0.3625f, 1.25f), new Quaternionf(), OBB.Part.BODY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -89,12 +89,12 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo
|
|||
public PrismTankEntity(EntityType<PrismTankEntity> type, Level world) {
|
||||
super(type, world);
|
||||
this.noCulling = true;
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.5f, 0.8125f, 3.96875f), new Quaternionf());
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(2.5f, 0.5f, 0.375f), new Quaternionf());
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.46875f, 0.78125f, 3.3125f), new Quaternionf());
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.46875f, 0.78125f, 3.3125f), new Quaternionf());
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(1.375f, 0.28125f, 1.375f), new Quaternionf());
|
||||
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(0.4375f, 0.90625f, 1.21875f), new Quaternionf());
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.5f, 0.8125f, 3.96875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(2.5f, 0.5f, 0.375f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.46875f, 0.78125f, 3.3125f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.46875f, 0.78125f, 3.3125f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(1.375f, 0.28125f, 1.375f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(0.4375f, 0.90625f, 1.21875f), new Quaternionf(), OBB.Part.BODY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -54,8 +54,8 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
|||
|
||||
public SpeedboatEntity(EntityType<SpeedboatEntity> type, Level world) {
|
||||
super(type, world);
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(1.5625f, 0.75f, 3.1875f), new Quaternionf());
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(1.0625f, 0.5f, 1.90625f), new Quaternionf());
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(1.5625f, 0.75f, 3.1875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(1.0625f, 0.5f, 1.90625f), new Quaternionf(), OBB.Part.BODY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -94,12 +94,12 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
|||
|
||||
public Yx100Entity(EntityType<Yx100Entity> type, Level world) {
|
||||
super(type, world);
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.71875f, 4f), new Quaternionf());
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.59375f, 0.65625f), new Quaternionf());
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.625f, 0.84375f, 3.875f), new Quaternionf());
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.625f, 0.84375f, 3.875f), new Quaternionf());
|
||||
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.5625f, 2.1875f), new Quaternionf());
|
||||
this.obbTurret2 = new OBB(this.position().toVector3f(), new Vector3f(1.625f, 0.40625f, 0.59375f), new Quaternionf());
|
||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.71875f, 4f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.59375f, 0.65625f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.625f, 0.84375f, 3.875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.625f, 0.84375f, 3.875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.5625f, 2.1875f), new Quaternionf(), OBB.Part.BODY);
|
||||
this.obbTurret2 = new OBB(this.position().toVector3f(), new Vector3f(1.625f, 0.40625f, 0.59375f), new Quaternionf(), OBB.Part.BODY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -806,7 +806,7 @@ public abstract class VehicleEntity extends Entity {
|
|||
double cr = Math.cos(roll * 0.5 * Mth.DEG_TO_RAD);
|
||||
double sr = Math.sin(roll * 0.5 * Mth.DEG_TO_RAD);
|
||||
|
||||
Quaternionf q = new Quaternionf();
|
||||
Quaternionf q = new Quaternionf(), OBB.Part.BODY;
|
||||
q.w = (float) (cy * cp * cr + sy * sp * sr);
|
||||
q.x = (float) (cy * cp * sr - sy * sp * cr);
|
||||
q.y = (float) (sy * cp * sr + cy * sp * cr);
|
||||
|
|
|
@ -16,7 +16,7 @@ import java.util.Optional;
|
|||
* @param extents 三个轴向上的半长
|
||||
* @param rotation 旋转
|
||||
*/
|
||||
public record OBB(Vector3f center, Vector3f extents, Quaternionf rotation) {
|
||||
public record OBB(Vector3f center, Vector3f extents, Quaternionf rotation, Part part) {
|
||||
|
||||
public void setCenter(Vector3f center) {
|
||||
this.center.set(center);
|
||||
|
@ -214,17 +214,17 @@ public record OBB(Vector3f center, Vector3f extents, Quaternionf rotation) {
|
|||
|
||||
public OBB inflate(float amount) {
|
||||
Vector3f newExtents = new Vector3f(extents).add(amount, amount, amount);
|
||||
return new OBB(center, newExtents, rotation);
|
||||
return new OBB(center, newExtents, rotation, part);
|
||||
}
|
||||
|
||||
public OBB inflate(float x, float y, float z) {
|
||||
Vector3f newExtents = new Vector3f(extents).add(x, y, z);
|
||||
return new OBB(center, newExtents, rotation);
|
||||
return new OBB(center, newExtents, rotation, part);
|
||||
}
|
||||
|
||||
public OBB move(Vec3 vec3) {
|
||||
Vector3f newCenter = new Vector3f((float) (center.x + vec3.x), (float) (center.y + vec3.y), (float) (center.z + vec3.z));
|
||||
return new OBB(newCenter, extents, rotation);
|
||||
return new OBB(newCenter, extents, rotation, part);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -251,4 +251,11 @@ public record OBB(Vector3f center, Vector3f extents, Quaternionf rotation) {
|
|||
projY <= extents.y &&
|
||||
projZ <= extents.z;
|
||||
}
|
||||
|
||||
public enum Part {
|
||||
WHEEL(),
|
||||
TURRET(),
|
||||
ENGINE(),
|
||||
BODY();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue