移除obb渲染框的平滑旋转
This commit is contained in:
parent
252ed5a86e
commit
a96cbcdd63
11 changed files with 65 additions and 77 deletions
|
@ -2,7 +2,6 @@ package com.atsuishio.superbwarfare.client.renderer.special;
|
||||||
|
|
||||||
import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity;
|
import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity;
|
||||||
import com.atsuishio.superbwarfare.tools.OBB;
|
import com.atsuishio.superbwarfare.tools.OBB;
|
||||||
import com.atsuishio.superbwarfare.tools.VectorTool;
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import net.minecraft.client.renderer.LevelRenderer;
|
import net.minecraft.client.renderer.LevelRenderer;
|
||||||
|
@ -24,14 +23,7 @@ public class OBBRenderer {
|
||||||
for (OBB obb : obbList) {
|
for (OBB obb : obbList) {
|
||||||
Vector3f center = obb.center();
|
Vector3f center = obb.center();
|
||||||
Vector3f halfExtents = obb.extents();
|
Vector3f halfExtents = obb.extents();
|
||||||
Quaternionf rotation;
|
Quaternionf rotation = obb.rotation();
|
||||||
if (obb.onlyHorizontal()) {
|
|
||||||
rotation = VectorTool.combineRotationsYaw(pPartialTicks, entity);
|
|
||||||
}else if (obb.isPart()) {
|
|
||||||
rotation = VectorTool.combineRotationsTurret(pPartialTicks, entity);
|
|
||||||
} else {
|
|
||||||
rotation = VectorTool.combineRotations(pPartialTicks, entity);
|
|
||||||
}
|
|
||||||
renderOBB(
|
renderOBB(
|
||||||
poseStack, buffer,
|
poseStack, buffer,
|
||||||
(float) (center.x() - position.x()), (float) (center.y() - position.y()), (float) (center.z() - position.z()),
|
(float) (center.x() - position.x()), (float) (center.y() - position.y()), (float) (center.z() - position.z()),
|
||||||
|
|
|
@ -231,6 +231,7 @@ public class ProjectileEntity extends Projectile implements IEntityWithComplexSp
|
||||||
}
|
}
|
||||||
|
|
||||||
hitPos = boundingBox.clip(startVec, endVec).orElse(null);
|
hitPos = boundingBox.clip(startVec, endVec).orElse(null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hitPos == null) {
|
if (hitPos == null) {
|
||||||
|
@ -248,6 +249,10 @@ public class ProjectileEntity extends Projectile implements IEntityWithComplexSp
|
||||||
legShot = true;
|
legShot = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (heLevel > 0) {
|
||||||
|
explosionBullet(this, this.damage, heLevel, monsterMultiplier + 1, hitPos);
|
||||||
|
}
|
||||||
|
|
||||||
return new EntityResult(entity, hitPos, headshot, legShot);
|
return new EntityResult(entity, hitPos, headshot, legShot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -406,7 +411,7 @@ public class ProjectileEntity extends Projectile implements IEntityWithComplexSp
|
||||||
|
|
||||||
this.onHitBlock(hitVec);
|
this.onHitBlock(hitVec);
|
||||||
if (heLevel > 0) {
|
if (heLevel > 0) {
|
||||||
explosionBulletBlock(this, this.damage, heLevel, monsterMultiplier + 1, hitVec);
|
explosionBullet(this, this.damage, heLevel, monsterMultiplier + 1, hitVec);
|
||||||
}
|
}
|
||||||
if (fireLevel > 0 && this.level() instanceof ServerLevel serverLevel) {
|
if (fireLevel > 0 && this.level() instanceof ServerLevel serverLevel) {
|
||||||
ParticleTool.sendParticle(serverLevel, ParticleTypes.LAVA, hitVec.x, hitVec.y, hitVec.z,
|
ParticleTool.sendParticle(serverLevel, ParticleTypes.LAVA, hitVec.x, hitVec.y, hitVec.z,
|
||||||
|
@ -537,10 +542,6 @@ public class ProjectileEntity extends Projectile implements IEntityWithComplexSp
|
||||||
this.damage *= (1.0f + 0.12f * jhpLevel) * ((float) (10 / (living.getAttributeValue(Attributes.ARMOR) + 10)) + 0.25f);
|
this.damage *= (1.0f + 0.12f * jhpLevel) * ((float) (10 / (living.getAttributeValue(Attributes.ARMOR) + 10)) + 0.25f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (heLevel > 0) {
|
|
||||||
explosionBulletEntity(this, entity, this.damage, heLevel, mMultiple);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fireLevel > 0) {
|
if (fireLevel > 0) {
|
||||||
if (!entity.level().isClientSide() && entity instanceof LivingEntity living) {
|
if (!entity.level().isClientSide() && entity instanceof LivingEntity living) {
|
||||||
living.addEffect(new MobEffectInstance(ModMobEffects.BURN, 60 + fireLevel * 20, fireLevel, false, false), this.shooter);
|
living.addEffect(new MobEffectInstance(ModMobEffects.BURN, 60 + fireLevel * 20, fireLevel, false, false), this.shooter);
|
||||||
|
@ -602,7 +603,7 @@ public class ProjectileEntity extends Projectile implements IEntityWithComplexSp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void explosionBulletBlock(Entity projectile, float damage, int heLevel, float monsterMultiple, Vec3 hitVec) {
|
protected void explosionBullet(Entity projectile, float damage, int heLevel, float monsterMultiple, Vec3 hitVec) {
|
||||||
CustomExplosion explosion = new CustomExplosion(projectile.level(), projectile,
|
CustomExplosion explosion = new CustomExplosion(projectile.level(), projectile,
|
||||||
ModDamageTypes.causeProjectileBoomDamage(projectile.level().registryAccess(), projectile, this.getShooter()), (float) ((0.9 * damage) * (1 + 0.1 * heLevel)),
|
ModDamageTypes.causeProjectileBoomDamage(projectile.level().registryAccess(), projectile, this.getShooter()), (float) ((0.9 * damage) * (1 + 0.1 * heLevel)),
|
||||||
hitVec.x, hitVec.y, hitVec.z, (float) ((1.5 + 0.02 * damage) * (1 + 0.05 * heLevel))).setDamageMultiplier(monsterMultiple).bulletExplode();
|
hitVec.x, hitVec.y, hitVec.z, (float) ((1.5 + 0.02 * damage) * (1 + 0.05 * heLevel))).setDamageMultiplier(monsterMultiple).bulletExplode();
|
||||||
|
@ -612,16 +613,6 @@ public class ProjectileEntity extends Projectile implements IEntityWithComplexSp
|
||||||
ParticleTool.spawnMiniExplosionParticles(this.level(), hitVec);
|
ParticleTool.spawnMiniExplosionParticles(this.level(), hitVec);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void explosionBulletEntity(Entity projectile, Entity target, float damage, int heLevel, float monsterMultiple) {
|
|
||||||
CustomExplosion explosion = new CustomExplosion(projectile.level(), projectile,
|
|
||||||
ModDamageTypes.causeProjectileBoomDamage(projectile.level().registryAccess(), projectile, this.getShooter()), (float) ((0.8 * damage) * (1 + 0.1 * heLevel)),
|
|
||||||
target.getX(), target.getY(), target.getZ(), (float) ((1.5 + 0.02 * damage) * (1 + 0.05 * heLevel))).setDamageMultiplier(monsterMultiple).bulletExplode();
|
|
||||||
explosion.explode();
|
|
||||||
EventHooks.onExplosionStart(projectile.level(), explosion);
|
|
||||||
explosion.finalizeExplosion(false);
|
|
||||||
ParticleTool.spawnMiniExplosionParticles(target.level(), target.position());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDamage(float damage) {
|
public void setDamage(float damage) {
|
||||||
this.damage = damage;
|
this.damage = damage;
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,17 +99,17 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
|
|
||||||
public A10Entity(EntityType<A10Entity> type, Level world) {
|
public A10Entity(EntityType<A10Entity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(0.6875f, 1.09375f, 3.65625f), new Quaternionf(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
this.obb11 = new OBB(this.position().toVector3f(), new Vector3f(0.34375f, 0.359375f, 1.78125f), new Quaternionf());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -81,11 +81,11 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
|
|
||||||
public Ah6Entity(EntityType<Ah6Entity> type, Level world) {
|
public Ah6Entity(EntityType<Ah6Entity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(1.0625f, 1.28125f, 1.625f), new Quaternionf(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(1f, 0.25f, 0.21875f), new Quaternionf());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -74,14 +74,16 @@ public class AnnihilatorEntity extends EnergyVehicleEntity implements GeoEntity,
|
||||||
public OBB obb2;
|
public OBB obb2;
|
||||||
public OBB obb3;
|
public OBB obb3;
|
||||||
public OBB obb4;
|
public OBB obb4;
|
||||||
|
public OBB obb5;
|
||||||
public Vec3 barrelLookAt;
|
public Vec3 barrelLookAt;
|
||||||
|
|
||||||
public AnnihilatorEntity(EntityType<AnnihilatorEntity> type, Level world) {
|
public AnnihilatorEntity(EntityType<AnnihilatorEntity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(6.4375f, 1.84375f, 4.125f), new Quaternionf(), false, true);
|
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(), false, true);
|
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(), false, true);
|
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(), false, true);
|
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.noCulling = true;
|
this.noCulling = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -606,7 +608,7 @@ public class AnnihilatorEntity extends EnergyVehicleEntity implements GeoEntity,
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<OBB> getOBBs() {
|
public List<OBB> getOBBs() {
|
||||||
return List.of(this.obb, this.obb2, this.obb3, this.obb4);
|
return List.of(this.obb, this.obb2, this.obb3, this.obb4, this.obb5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -628,5 +630,9 @@ public class AnnihilatorEntity extends EnergyVehicleEntity implements GeoEntity,
|
||||||
Vector4f worldPosition4 = transformPosition(transform, 0, 2.28125f, -7.9375f);
|
Vector4f worldPosition4 = transformPosition(transform, 0, 2.28125f, -7.9375f);
|
||||||
this.obb4.center().set(new Vector3f(worldPosition4.x, worldPosition4.y, worldPosition4.z));
|
this.obb4.center().set(new Vector3f(worldPosition4.x, worldPosition4.y, worldPosition4.z));
|
||||||
this.obb4.setRotation(VectorTool.combineRotationsYaw(1, this));
|
this.obb4.setRotation(VectorTool.combineRotationsYaw(1, this));
|
||||||
|
|
||||||
|
Vector4f worldPosition5 = transformPosition(transform, 0, 2.46875f, -5.28125f);
|
||||||
|
this.obb5.center().set(new Vector3f(worldPosition5.x, worldPosition5.y, worldPosition5.z));
|
||||||
|
this.obb5.setRotation(VectorTool.combineRotationsYaw(1, this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,11 +78,11 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
|
|
||||||
public Bmp2Entity(EntityType<Bmp2Entity> type, Level world) {
|
public Bmp2Entity(EntityType<Bmp2Entity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.1875f, 0.875f, 3.90625f), new Quaternionf(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), true, false);
|
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(1.5f, 0.34375f, 1.5f), new Quaternionf());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -69,14 +69,14 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
||||||
|
|
||||||
public Lav150Entity(EntityType<Lav150Entity> type, Level world) {
|
public Lav150Entity(EntityType<Lav150Entity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), true, false);
|
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(0.875f, 0.3625f, 1.25f), new Quaternionf());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -89,12 +89,12 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
public PrismTankEntity(EntityType<PrismTankEntity> type, Level world) {
|
public PrismTankEntity(EntityType<PrismTankEntity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
this.noCulling = true;
|
this.noCulling = true;
|
||||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.5f, 0.8125f, 3.96875f), new Quaternionf(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), true, false);
|
this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(0.4375f, 0.90625f, 1.21875f), new Quaternionf());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -54,8 +54,8 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
|
|
||||||
public SpeedboatEntity(EntityType<SpeedboatEntity> type, Level world) {
|
public SpeedboatEntity(EntityType<SpeedboatEntity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(1.5625f, 0.75f, 3.1875f), new Quaternionf(), false, false);
|
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(), false, false);
|
this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(1.0625f, 0.5f, 1.90625f), new Quaternionf());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -94,12 +94,12 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
|
|
||||||
public Yx100Entity(EntityType<Yx100Entity> type, Level world) {
|
public Yx100Entity(EntityType<Yx100Entity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.71875f, 4f), new Quaternionf(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), false, false);
|
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(), true, false);
|
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(), true, false);
|
this.obbTurret2 = new OBB(this.position().toVector3f(), new Vector3f(1.625f, 0.40625f, 0.59375f), new Quaternionf());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -15,9 +15,8 @@ import java.util.Optional;
|
||||||
* @param center 旋转中心
|
* @param center 旋转中心
|
||||||
* @param extents 三个轴向上的半长
|
* @param extents 三个轴向上的半长
|
||||||
* @param rotation 旋转
|
* @param rotation 旋转
|
||||||
* @param isPart 是否为子部件,一般用于炮塔
|
|
||||||
*/
|
*/
|
||||||
public record OBB(Vector3f center, Vector3f extents, Quaternionf rotation, boolean isPart, boolean onlyHorizontal) {
|
public record OBB(Vector3f center, Vector3f extents, Quaternionf rotation) {
|
||||||
|
|
||||||
public void setCenter(Vector3f center) {
|
public void setCenter(Vector3f center) {
|
||||||
this.center.set(center);
|
this.center.set(center);
|
||||||
|
@ -215,12 +214,12 @@ public record OBB(Vector3f center, Vector3f extents, Quaternionf rotation, boole
|
||||||
|
|
||||||
public OBB inflate(float amount) {
|
public OBB inflate(float amount) {
|
||||||
Vector3f newExtents = new Vector3f(extents).add(amount, amount, amount);
|
Vector3f newExtents = new Vector3f(extents).add(amount, amount, amount);
|
||||||
return new OBB(center, newExtents, rotation, false, false);
|
return new OBB(center, newExtents, rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OBB inflate(float x, float y, float z) {
|
public OBB inflate(float x, float y, float z) {
|
||||||
Vector3f newExtents = new Vector3f(extents).add(x, y, z);
|
Vector3f newExtents = new Vector3f(extents).add(x, y, z);
|
||||||
return new OBB(center, newExtents, rotation, false, false);
|
return new OBB(center, newExtents, rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue