大部分载具添加obb
This commit is contained in:
parent
a166421d5c
commit
1a691bc523
4 changed files with 196 additions and 23 deletions
|
@ -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<Integer> CANNON_FIRE_TIME = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT);
|
||||
public static final EntityDataAccessor<Integer> 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<Bmp2Entity> 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<OBB> 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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Lav150Entity> 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<OBB> 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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Integer> CANNON_FIRE_TIME = SynchedEntityData.defineId(PrismTankEntity.class, EntityDataSerializers.INT);
|
||||
public static final EntityDataAccessor<Float> LASER_LENGTH = SynchedEntityData.defineId(PrismTankEntity.class, EntityDataSerializers.FLOAT);
|
||||
|
@ -80,9 +80,22 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo
|
|||
public static final EntityDataAccessor<Float> 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<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(), 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<OBB> 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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Yx100Entity> 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<OBB> 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));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue