From 1a691bc52315719427983f92906060052f7363e8 Mon Sep 17 00:00:00 2001 From: Atsuishio <842960157@qq.com> Date: Mon, 16 Jun 2025 16:12:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E9=83=A8=E5=88=86=E8=BD=BD=E5=85=B7?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0obb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/Bmp2Entity.java | 55 +++++++++++--- .../entity/vehicle/Lav150Entity.java | 72 +++++++++++++++++-- .../entity/vehicle/PrismTankEntity.java | 56 ++++++++++++++- .../entity/vehicle/Yx100Entity.java | 36 ++++++++-- 4 files changed, 196 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java index a60694fe0..e7ba55672 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java @@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.entity.vehicle; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.VehicleConfig; +import com.atsuishio.superbwarfare.entity.OBBEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.ContainerMobileVehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.LandArmorEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.ThirdPersonCameraPosition; @@ -17,10 +18,7 @@ import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.network.message.receive.ShakeClientMessage; -import com.atsuishio.superbwarfare.tools.Ammo; -import com.atsuishio.superbwarfare.tools.CustomExplosion; -import com.atsuishio.superbwarfare.tools.InventoryTool; -import com.atsuishio.superbwarfare.tools.ParticleTool; +import com.atsuishio.superbwarfare.tools.*; import com.mojang.math.Axis; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; @@ -54,8 +52,7 @@ import net.neoforged.neoforge.network.PacketDistributor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.joml.Math; -import org.joml.Matrix4f; -import org.joml.Vector4f; +import org.joml.*; import software.bernie.geckolib.animatable.GeoEntity; import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.animation.*; @@ -69,7 +66,7 @@ import java.util.List; import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle; -public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity { +public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity, OBBEntity { public static final EntityDataAccessor CANNON_FIRE_TIME = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT); public static final EntityDataAccessor LOADED_MISSILE = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT); @@ -77,9 +74,19 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public int reloadCoolDown; + public OBB obb; + public OBB obb2; + public OBB obb3; + public OBB obb4; + public OBB obbTurret; public Bmp2Entity(EntityType type, Level world) { super(type, world); + this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.1875f, 0.875f, 3.90625f), new Quaternionf(), false); + this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(2.1875f, 0.5f, 0.65625f), new Quaternionf(), false); + this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.375f, 0.78125f, 3.46875f), new Quaternionf(), false); + this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.375f, 0.78125f, 3.46875f), new Quaternionf(), false); + this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(1.5f, 0.34375f, 1.5f), new Quaternionf(), true); } @Override @@ -162,7 +169,7 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit @Override public void baseTick() { super.baseTick(); - + updateOBB(); if (getLeftTrack() < 0) { setLeftTrack(100); } @@ -783,4 +790,36 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit public @Nullable ResourceLocation getVehicleItemIcon() { return Mod.loc("textures/gui/vehicle/type/land.png"); } + + @Override + public List getOBBs() { + return List.of(this.obb, this.obb2, this.obb3, this.obb4, this.obbTurret); + } + + @Override + public void updateOBB() { + Matrix4f transform = getVehicleTransform(1); + + Vector4f worldPosition = transformPosition(transform, 0, 1.5f, -0.28125f); + this.obb.center().set(new Vector3f(worldPosition.x, worldPosition.y, worldPosition.z)); + this.obb.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition2 = transformPosition(transform, 0, 1.5625f, 4.28125f); + this.obb2.center().set(new Vector3f(worldPosition2.x, worldPosition2.y, worldPosition2.z)); + this.obb2.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition3 = transformPosition(transform, 1.9375f, 0.84375f, 0.15625f); + this.obb3.center().set(new Vector3f(worldPosition3.x, worldPosition3.y, worldPosition3.z)); + this.obb3.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition4 = transformPosition(transform, -1.9375f, 0.84375f, 0.15625f); + this.obb4.center().set(new Vector3f(worldPosition4.x, worldPosition4.y, worldPosition4.z)); + this.obb4.setRotation(VectorTool.combineRotations(1, this)); + + Matrix4f transformT = getTurretTransform(1); + + Vector4f worldPositionT = transformPosition(transformT, 0, 0.46875f, 0f); + this.obbTurret.center().set(new Vector3f(worldPositionT.x, worldPositionT.y, worldPositionT.z)); + this.obbTurret.setRotation(VectorTool.combineRotationsTurret(1, this)); + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java index e95eb7c77..8b0dd4eac 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java @@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.entity.vehicle; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.VehicleConfig; +import com.atsuishio.superbwarfare.entity.OBBEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.ContainerMobileVehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.LandArmorEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.ThirdPersonCameraPosition; @@ -16,10 +17,7 @@ import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.network.message.receive.ShakeClientMessage; -import com.atsuishio.superbwarfare.tools.Ammo; -import com.atsuishio.superbwarfare.tools.CustomExplosion; -import com.atsuishio.superbwarfare.tools.InventoryTool; -import com.atsuishio.superbwarfare.tools.ParticleTool; +import com.atsuishio.superbwarfare.tools.*; import com.mojang.math.Axis; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; @@ -50,8 +48,7 @@ import net.neoforged.neoforge.network.PacketDistributor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.joml.Math; -import org.joml.Matrix4f; -import org.joml.Vector4f; +import org.joml.*; import software.bernie.geckolib.animatable.GeoEntity; import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.animation.*; @@ -59,15 +56,32 @@ import software.bernie.geckolib.util.GeckoLibUtil; import javax.annotation.ParametersAreNonnullByDefault; import java.util.Comparator; +import java.util.List; import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle; -public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity { +public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity, OBBEntity { private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); + public OBB obb; + public OBB obb2; + public OBB obb3; + public OBB obb4; + public OBB obb5; + public OBB obb6; + public OBB obb7; + public OBB obbTurret; public Lav150Entity(EntityType type, Level world) { super(type, world); + this.obb = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf(), false); + this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf(), false); + this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf(), false); + this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.25f, 0.75f, 0.75f), new Quaternionf(), false); + this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(1.3125f, 0.90625f, 2.4375f), new Quaternionf(), false); + this.obb6 = new OBB(this.position().toVector3f(), new Vector3f(1.3125f, 0.53125f, 0.34375f), new Quaternionf(), false); + this.obb7 = new OBB(this.position().toVector3f(), new Vector3f(1.3125f, 0.625f, 0.53125f), new Quaternionf(), false); + this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(0.875f, 0.3625f, 1.25f), new Quaternionf(), true); } @Override @@ -134,6 +148,7 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt rightWheelRotO = this.getRightWheelRot(); super.baseTick(); + updateOBB(); if (this.level() instanceof ServerLevel) { this.handleAmmo(); @@ -646,4 +661,47 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt public @Nullable ResourceLocation getVehicleItemIcon() { return Mod.loc("textures/gui/vehicle/type/land.png"); } + + @Override + public List getOBBs() { + return List.of(this.obb, this.obb2, this.obb3, this.obb4, this.obb5, this.obb6, this.obb7, this.obbTurret); + } + + @Override + public void updateOBB() { + Matrix4f transform = getVehicleTransform(1); + + Vector4f worldPosition = transformPosition(transform, -1.140625f, 0.75f, 1.584375f); + this.obb.center().set(new Vector3f(worldPosition.x, worldPosition.y, worldPosition.z)); + this.obb.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition2 = transformPosition(transform, 1.140625f, 0.75f, 1.584375f); + this.obb2.center().set(new Vector3f(worldPosition2.x, worldPosition2.y, worldPosition2.z)); + this.obb2.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition3 = transformPosition(transform, 1.140625f, 0.75f, -1.571875f); + this.obb3.center().set(new Vector3f(worldPosition3.x, worldPosition3.y, worldPosition3.z)); + this.obb3.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition4 = transformPosition(transform, -1.140625f, 0.75f, -1.571875f); + this.obb4.center().set(new Vector3f(worldPosition4.x, worldPosition4.y, worldPosition4.z)); + this.obb4.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition5 = transformPosition(transform, 0, 1.53125f, -0.4375f); + this.obb5.center().set(new Vector3f(worldPosition5.x, worldPosition5.y, worldPosition5.z)); + this.obb5.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition6 = transformPosition(transform, 0, 1.90625f, -3.21875f); + this.obb6.center().set(new Vector3f(worldPosition6.x, worldPosition6.y, worldPosition6.z)); + this.obb6.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition7 = transformPosition(transform, 0, 1.4375f, 2.53125f); + this.obb7.center().set(new Vector3f(worldPosition7.x, worldPosition7.y, worldPosition7.z)); + this.obb7.setRotation(VectorTool.combineRotations(1, this)); + + Matrix4f transformT = getTurretTransform(1); + Vector4f worldPositionT = transformPosition(transformT, 0, 0.3625f, 0f); + this.obbTurret.center().set(new Vector3f(worldPositionT.x, worldPositionT.y, worldPositionT.z)); + this.obbTurret.setRotation(VectorTool.combineRotationsTurret(1, this)); + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java index b2f64728b..b30b34641 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java @@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.entity.vehicle; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.VehicleConfig; +import com.atsuishio.superbwarfare.entity.OBBEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.ContainerMobileVehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.LandArmorEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.ThirdPersonCameraPosition; @@ -55,8 +56,7 @@ import net.neoforged.neoforge.network.PacketDistributor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.joml.Math; -import org.joml.Matrix4f; -import org.joml.Vector4f; +import org.joml.*; import software.bernie.geckolib.animatable.GeoEntity; import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.animation.AnimatableManager; @@ -72,7 +72,7 @@ import static com.atsuishio.superbwarfare.client.RenderHelper.preciseBlit; import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle; import static com.atsuishio.superbwarfare.tools.SeekTool.baseFilter; -public class PrismTankEntity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity { +public class PrismTankEntity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity, OBBEntity { public static final EntityDataAccessor CANNON_FIRE_TIME = SynchedEntityData.defineId(PrismTankEntity.class, EntityDataSerializers.INT); public static final EntityDataAccessor LASER_LENGTH = SynchedEntityData.defineId(PrismTankEntity.class, EntityDataSerializers.FLOAT); @@ -80,9 +80,22 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo public static final EntityDataAccessor LASER_SCALE_O = SynchedEntityData.defineId(PrismTankEntity.class, EntityDataSerializers.FLOAT); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); + public OBB obb; + public OBB obb2; + public OBB obb3; + public OBB obb4; + public OBB obb5; + public OBB obbTurret; + public PrismTankEntity(EntityType 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(), false); + this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(2.5f, 0.5f, 0.375f), new Quaternionf(), false); + this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.46875f, 0.78125f, 3.3125f), new Quaternionf(), false); + this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.46875f, 0.78125f, 3.3125f), new Quaternionf(), false); + this.obb5 = new OBB(this.position().toVector3f(), new Vector3f(1.375f, 0.28125f, 1.375f), new Quaternionf(), false); + this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(0.4375f, 0.90625f, 1.21875f), new Quaternionf(), true); } @Override @@ -143,6 +156,7 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo public void baseTick() { this.entityData.set(LASER_SCALE_O, this.entityData.get(LASER_SCALE)); super.baseTick(); + updateOBB(); if (getLeftTrack() < 0) { setLeftTrack(100); @@ -826,4 +840,40 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo public @Nullable ResourceLocation getVehicleItemIcon() { return Mod.loc("textures/gui/vehicle/type/land.png"); } + + @Override + public List getOBBs() { + return List.of(this.obb, this.obb2, this.obb3, this.obb4, this.obb5, this.obbTurret); + } + + @Override + public void updateOBB() { + Matrix4f transform = getVehicleTransform(1); + + Vector4f worldPosition = transformPosition(transform, 0, 1.4375f, -0.21875f); + this.obb.center().set(new Vector3f(worldPosition.x, worldPosition.y, worldPosition.z)); + this.obb.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition2 = transformPosition(transform, 0, 1.4375f, 4.125f); + this.obb2.center().set(new Vector3f(worldPosition2.x, worldPosition2.y, worldPosition2.z)); + this.obb2.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition3 = transformPosition(transform, 2.09375f, 0.84375f, 0f); + this.obb3.center().set(new Vector3f(worldPosition3.x, worldPosition3.y, worldPosition3.z)); + this.obb3.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition4 = transformPosition(transform, -2.09375f, 0.84375f, 0f); + this.obb4.center().set(new Vector3f(worldPosition4.x, worldPosition4.y, worldPosition4.z)); + this.obb4.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition5 = transformPosition(transform, 0, 2.53125f, 0.765625f); + this.obb5.center().set(new Vector3f(worldPosition5.x, worldPosition5.y, worldPosition5.z)); + this.obb5.setRotation(VectorTool.combineRotations(1, this)); + + Matrix4f transformT = getTurretTransform(1); + + Vector4f worldPositionT = transformPosition(transformT, 0, 1.59375f, -0.390625f); + this.obbTurret.center().set(new Vector3f(worldPositionT.x, worldPositionT.y, worldPositionT.z)); + this.obbTurret.setRotation(VectorTool.combineRotationsTurret(1, this)); + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java index 42630e660..74a2abc04 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java @@ -89,12 +89,20 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti public int droneReloadCoolDown; public OBB obb; + public OBB obb2; + public OBB obb3; + public OBB obb4; public OBB obbTurret; + public OBB obbTurret2; public Yx100Entity(EntityType type, Level world) { super(type, world); - this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.53125f, 1.0625f, 4.75f), new Quaternionf(), false); - this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.5625f, 3f), new Quaternionf(), true); + this.obb = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.71875f, 4f), new Quaternionf(), false); + this.obb2 = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.59375f, 0.65625f), new Quaternionf(), false); + this.obb3 = new OBB(this.position().toVector3f(), new Vector3f(0.625f, 0.84375f, 3.875f), new Quaternionf(), false); + this.obb4 = new OBB(this.position().toVector3f(), new Vector3f(0.625f, 0.84375f, 3.875f), new Quaternionf(), false); + this.obbTurret = new OBB(this.position().toVector3f(), new Vector3f(2.375f, 0.5625f, 2.1875f), new Quaternionf(), true); + this.obbTurret2 = new OBB(this.position().toVector3f(), new Vector3f(1.625f, 0.40625f, 0.59375f), new Quaternionf(), true); } @Override @@ -1295,19 +1303,37 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti @Override public List getOBBs() { - return List.of(this.obb, this.obbTurret); + return List.of(this.obb, this.obb2, this.obb3, this.obb4, this.obbTurret, this.obbTurret2); } @Override public void updateOBB() { Matrix4f transform = getVehicleTransform(1); - Vector4f worldPosition = transformPosition(transform, 0, 1.125f, 0.25f); + + Vector4f worldPosition = transformPosition(transform, 0, 1.40625f, -0.375f); this.obb.center().set(new Vector3f(worldPosition.x, worldPosition.y, worldPosition.z)); this.obb.setRotation(VectorTool.combineRotations(1, this)); + Vector4f worldPosition2 = transformPosition(transform, 0, 1.28125f, 4.28125f); + this.obb2.center().set(new Vector3f(worldPosition2.x, worldPosition2.y, worldPosition2.z)); + this.obb2.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition3 = transformPosition(transform, 1.8125f, 0.84375f, 0.0625f); + this.obb3.center().set(new Vector3f(worldPosition3.x, worldPosition3.y, worldPosition3.z)); + this.obb3.setRotation(VectorTool.combineRotations(1, this)); + + Vector4f worldPosition4 = transformPosition(transform, -1.8125f, 0.84375f, 0.0625f); + this.obb4.center().set(new Vector3f(worldPosition4.x, worldPosition4.y, worldPosition4.z)); + this.obb4.setRotation(VectorTool.combineRotations(1, this)); + Matrix4f transformT = getTurretTransform(1); - Vector4f worldPositionT = transformPosition(transformT, 0, 0.5625f, -0.1875f); + + Vector4f worldPositionT = transformPosition(transformT, 0, 0.5625f, -1.125f); this.obbTurret.center().set(new Vector3f(worldPositionT.x, worldPositionT.y, worldPositionT.z)); this.obbTurret.setRotation(VectorTool.combineRotationsTurret(1, this)); + + Vector4f worldPositionT2 = transformPosition(transformT, 0, 0.40625f, 1.65625f); + this.obbTurret2.center().set(new Vector3f(worldPositionT2.x, worldPositionT2.y, worldPositionT2.z)); + this.obbTurret2.setRotation(VectorTool.combineRotationsTurret(1, this)); } }