优化无人机音效,添加防御塔lod

This commit is contained in:
Atsuihsio 2025-02-15 16:08:28 +08:00
parent 8465600357
commit 5900131f86
8 changed files with 2362 additions and 35 deletions

View file

@ -2,7 +2,9 @@ package com.atsuishio.superbwarfare.client.model.entity;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.entity.vehicle.LaserTowerEntity; import com.atsuishio.superbwarfare.entity.vehicle.LaserTowerEntity;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;
import software.bernie.geckolib.core.animatable.model.CoreGeoBone; import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
import software.bernie.geckolib.core.animation.AnimationState; import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.model.GeoModel; import software.bernie.geckolib.model.GeoModel;
@ -18,7 +20,21 @@ public class LaserTowerModel extends GeoModel<LaserTowerEntity> {
@Override @Override
public ResourceLocation getModelResource(LaserTowerEntity entity) { public ResourceLocation getModelResource(LaserTowerEntity entity) {
Player player = Minecraft.getInstance().player;
int distance = 0;
if (player != null) {
distance = (int) player.position().distanceTo(entity.position());
}
if (distance < 24 || player.isScoping()) {
return ModUtils.loc("geo/laser_tower.geo.json"); return ModUtils.loc("geo/laser_tower.geo.json");
} else if (distance < 48) {
return ModUtils.loc("geo/laser_tower.lod1.geo.json");
} else {
return ModUtils.loc("geo/laser_tower.lod2.geo.json");
}
} }
@Override @Override

View file

@ -47,17 +47,19 @@ public class DroneRenderer extends GeoEntityRenderer<DroneEntity> {
@Override @Override
public void renderRecursively(PoseStack poseStack, DroneEntity animatable, GeoBone bone, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { public void renderRecursively(PoseStack poseStack, DroneEntity animatable, GeoBone bone, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
String name = bone.getName(); String name = bone.getName();
if (!animatable.onGround()) {
if (name.equals("wingFL")) { if (name.equals("wingFL")) {
bone.setRotY(bone.getRotY() + 2); bone.setRotY((System.currentTimeMillis() % 36000000) / 12f);
} }
if (name.equals("wingFR")) { if (name.equals("wingFR")) {
bone.setRotY(bone.getRotY() + 2); bone.setRotY((System.currentTimeMillis() % 36000000) / 12f);
} }
if (name.equals("wingBL")) { if (name.equals("wingBL")) {
bone.setRotY(bone.getRotY() + 2); bone.setRotY((System.currentTimeMillis() % 36000000) / 12f);
} }
if (name.equals("wingBR")) { if (name.equals("wingBR")) {
bone.setRotY(bone.getRotY() + 2); bone.setRotY((System.currentTimeMillis() % 36000000) / 12f);
}
} }
super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);
} }

View file

@ -26,6 +26,7 @@ import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
@ -190,9 +191,9 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity {
if (controller != null) { if (controller != null) {
handleSimulationDistance(controller); handleSimulationDistance(controller);
ItemStack stack = controller.getMainHandItem(); ItemStack stack = controller.getMainHandItem();
if (stack.is(ModItems.MONITOR.get())) { if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using")) {
if (stack.getOrCreateTag().getBoolean("Using") && controller.level().isClientSide) { if (controller.level().isClientSide) {
controller.playSound(ModSounds.DRONE_SOUND.get(), 32, 1); controller.playSound(ModSounds.DRONE_SOUND.get(), 114, 1);
} }
} else { } else {
upInputDown = false; upInputDown = false;
@ -202,9 +203,6 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity {
leftInputDown = false; leftInputDown = false;
rightInputDown = false; rightInputDown = false;
} }
if (!controller.level().isClientSide) {
this.level().playSound(null, this.getOnPos(), ModSounds.DRONE_SOUND.get(), SoundSource.AMBIENT, 3, 1);
}
if (tickCount % 5 == 0) { if (tickCount % 5 == 0) {
controller.getInventory().items.stream().filter(pStack -> pStack.getItem() == ModItems.MONITOR.get()) controller.getInventory().items.stream().filter(pStack -> pStack.getItem() == ModItems.MONITOR.get())
@ -416,22 +414,14 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity {
if (up) { if (up) {
holdTickY ++; holdTickY ++;
this.entityData.set(POWER, Math.min(this.entityData.get(POWER) + 0.06f * Math.min(holdTickY, 5), 0.5f)); this.entityData.set(POWER, Math.min(this.entityData.get(POWER) + 0.06f * Math.min(holdTickY, 5), 0.9f));
} else if (down) { } else if (down) {
holdTickY ++; holdTickY ++;
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - 0.06f * Math.min(holdTickY, 5), -0.5f)); this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - 0.06f * Math.min(holdTickY, 5), -0.9f));
} else { } else {
holdTickY = 0; holdTickY = 0;
} }
// if (!(up || down)) {
// if (this.getDeltaMovement().y() < 0) {
// this.entityData.set(POWER, this.entityData.get(POWER) + 0.01f);
// } else {
// this.entityData.set(POWER, this.entityData.get(POWER) - 0.01f);
// }
// }
this.entityData.set(POWER, this.entityData.get(POWER) * 0.7f); this.entityData.set(POWER, this.entityData.get(POWER) * 0.7f);
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) * 0.7f); this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) * 0.7f);
this.entityData.set(DELTA_X_ROT, this.entityData.get(DELTA_X_ROT) * 0.7f); this.entityData.set(DELTA_X_ROT, this.entityData.get(DELTA_X_ROT) * 0.7f);
@ -491,6 +481,11 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity {
} }
} }
@Override
public SoundEvent getEngineSound() {
return ModSounds.DRONE_SOUND.get();
}
@Override @Override
public void move(@NotNull MoverType movementType, @NotNull Vec3 movement) { public void move(@NotNull MoverType movementType, @NotNull Vec3 movement) {
super.move(movementType, movement); super.move(movementType, movement);
@ -498,8 +493,8 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity {
if (lastTickSpeed < 0.2 || collisionCoolDown > 0) return; if (lastTickSpeed < 0.2 || collisionCoolDown > 0) return;
if ((verticalCollision) && Mth.abs((float) lastTickVerticalSpeed) > 0.5) { if ((verticalCollision) && Mth.abs((float) lastTickVerticalSpeed) > 1) {
this.hurt(ModDamageTypes.causeCustomExplosionDamage(this.level().registryAccess(), this, controller == null ? this : controller), (float) (20 * ((Mth.abs((float) lastTickVerticalSpeed) - 0.5) * (lastTickSpeed - 0.2) * (lastTickSpeed - 0.2)))); this.hurt(ModDamageTypes.causeCustomExplosionDamage(this.level().registryAccess(), this, controller == null ? this : controller), (float) (20 * ((Mth.abs((float) lastTickVerticalSpeed) - 1) * (lastTickSpeed - 0.2) * (lastTickSpeed - 0.2))));
collisionCoolDown = 4; collisionCoolDown = 4;
} }

View file

@ -133,7 +133,7 @@ public class MobileVehicleEntity extends EnergyVehicleEntity {
public void move(@NotNull MoverType movementType, @NotNull Vec3 movement) { public void move(@NotNull MoverType movementType, @NotNull Vec3 movement) {
super.move(movementType, movement); super.move(movementType, movement);
if (level() instanceof ServerLevel) { if (level() instanceof ServerLevel) {
if (lastTickSpeed < 0.3 || collisionCoolDown > 0) return; if (lastTickSpeed < 0.3 || collisionCoolDown > 0 || this instanceof DroneEntity) return;
Entity driver = EntityFindUtil.findEntity(this.level(), this.entityData.get(LAST_DRIVER_UUID)); Entity driver = EntityFindUtil.findEntity(this.level(), this.entityData.get(LAST_DRIVER_UUID));
if ((verticalCollision)) { if ((verticalCollision)) {

View file

@ -1,9 +1,7 @@
package com.atsuishio.superbwarfare.event; package com.atsuishio.superbwarfare.event;
import com.atsuishio.superbwarfare.entity.vehicle.Ah6Entity; import com.atsuishio.superbwarfare.entity.vehicle.*;
import com.atsuishio.superbwarfare.entity.vehicle.Bmp2Entity; import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.entity.vehicle.Lav150Entity;
import com.atsuishio.superbwarfare.entity.vehicle.MobileVehicleEntity;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.tools.SeekTool; import com.atsuishio.superbwarfare.tools.SeekTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -12,6 +10,7 @@ import net.minecraft.core.BlockPos;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.TickEvent;
@ -73,6 +72,15 @@ public class ClientSoundHandler {
player.level().playLocalSound(BlockPos.containing(engineSoundPos), engineSound, mobileVehicle.getSoundSource(), 5 * (Mth.abs(mobileVehicle.getEntityData().get(POWER)) + Mth.abs(0.08f * mobileVehicle.getEntityData().get(DELTA_ROT)) - 0.004f) * distanceReduce * distanceReduce, (float) ((2 * Math.random() - 1) * 0.1f + 1), false); player.level().playLocalSound(BlockPos.containing(engineSoundPos), engineSound, mobileVehicle.getSoundSource(), 5 * (Mth.abs(mobileVehicle.getEntityData().get(POWER)) + Mth.abs(0.08f * mobileVehicle.getEntityData().get(DELTA_ROT)) - 0.004f) * distanceReduce * distanceReduce, (float) ((2 * Math.random() - 1) * 0.1f + 1), false);
} }
} }
if (e instanceof DroneEntity drone) {
distanceReduce = (float) Math.max((1 - distance / 64), 0);
ItemStack stack = player.getMainHandItem();
if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using")) {
player.playSound(engineSound, 1, (float) ((2 * Math.random() - 1) * 0.002f + 1.05));
} else {
player.level().playLocalSound(BlockPos.containing(engineSoundPos), engineSound, mobileVehicle.getSoundSource(), e.onGround() ? 0 : distanceReduce * distanceReduce, (float) ((2 * Math.random() - 1) * 0.002f + 1.05), false);
}
}
} }
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,613 @@
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.unknown",
"texture_width": 128,
"texture_height": 128,
"visible_bounds_width": 3,
"visible_bounds_height": 3.5,
"visible_bounds_offset": [0, 1.25, 0]
},
"bones": [
{
"name": "turret",
"pivot": [0, 10.5, 0]
},
{
"name": "barrel",
"parent": "turret",
"pivot": [0, 22.25, 0],
"cubes": [
{
"origin": [-2.20365, 18.49206, -6.4005],
"size": [4.40729, 1.29592, 0.57851],
"uv": {
"north": {"uv": [65, 19], "uv_size": [4, 1]},
"up": {"uv": [65, 26], "uv_size": [4, 1]}
}
},
{
"origin": [-2.5, 18.25, -4],
"size": [5, 8.25, 8],
"uv": {
"north": {"uv": [20.75, 3.75], "uv_size": [4.75, 3.75]},
"east": {"uv": [27, 0], "uv_size": [8, 7]},
"south": {"uv": [0, 46], "uv_size": [5, 7]},
"west": {"uv": [0, 28], "uv_size": [8, 7]},
"up": {"uv": [18.75, 5], "uv_size": [-3.25, -4.25]},
"down": {"uv": [20.25, 11.75], "uv_size": [-3.5, -4.25]}
}
},
{
"origin": [-2, 19.75, -6.1],
"size": [4, 5.6, 0.1],
"uv": {
"north": {"uv": [48, 16], "uv_size": [4, 6]},
"east": {"uv": [60, 28], "uv_size": [1, 6]},
"west": {"uv": [40, 60], "uv_size": [1, 6]},
"up": {"uv": [64, 54], "uv_size": [4, 1]},
"down": {"uv": [65, 10], "uv_size": [4, -1]}
}
},
{
"origin": [-0.605, 24.66641, -3.2209],
"size": [1.21, 3.335, 2.75],
"pivot": [0, 26.33391, -1.8459],
"rotation": [0, -22.5, -90],
"uv": {
"north": {"uv": [11, 66], "uv_size": [1, 3]},
"west": {"uv": [57, 0], "uv_size": [3, 3]},
"up": {"uv": [12, 66], "uv_size": [1, 3]},
"down": {"uv": [13, 69], "uv_size": [1, -3]}
}
},
{
"origin": [-2.5, 19.75, 4],
"size": [5, 6.75, 2.5],
"uv": {
"east": {"uv": [40, 53], "uv_size": [2, 5]},
"south": {"uv": [29, 46], "uv_size": [5, 5]},
"west": {"uv": [42, 53], "uv_size": [2, 5]},
"up": {"uv": [18.75, 5.75], "uv_size": [-2.5, -4.25]},
"down": {"uv": [54, 54], "uv_size": [5, -2]}
}
}
]
},
{
"name": "laser",
"parent": "barrel",
"pivot": [0, 22.2505, 0],
"cubes": [
{
"origin": [-0.3, 21.95024, -1.6],
"size": [0.6, 0.6, 1.6],
"uv": {
"north": {"uv": [69, 68], "uv_size": [1, 1]},
"east": {"uv": [69, 68], "uv_size": [1, 1]},
"south": {"uv": [69, 68], "uv_size": [1, 1]},
"west": {"uv": [69, 68], "uv_size": [1, 1]},
"up": {"uv": [70, 69], "uv_size": [-1, -1]},
"down": {"uv": [70, 69], "uv_size": [-1, -1]}
}
},
{
"origin": [-0.45, 21.80014, -1.6],
"size": [0.9, 0, 1.6],
"uv": {
"up": {"uv": [71, 69], "uv_size": [-1, -1]}
}
},
{
"origin": [-0.4503, 21.80044, -1.6],
"size": [0.9, 0, 1.6],
"pivot": [0, 22.25044, -1.2],
"rotation": [0, 0, 90],
"uv": {
"up": {"uv": [71, 69], "uv_size": [-1, -1]}
}
},
{
"origin": [-0.45, 21.80014, -1.6],
"size": [0.9, 0, 1.6],
"pivot": [0, 22.25044, -1.2],
"rotation": [0, 0, -180],
"uv": {
"up": {"uv": [71, 69], "uv_size": [-1, -1]}
}
},
{
"origin": [-0.4503, 21.80044, -1.6],
"size": [0.9, 0, 1.6],
"pivot": [0, 22.25044, -1.2],
"rotation": [0, 0, -90],
"uv": {
"up": {"uv": [71, 69], "uv_size": [-1, -1]}
}
},
{
"origin": [-0.4003, 21.80104, -0.85],
"size": [0.9, 0, 0.9],
"pivot": [0.05, 22.25104, -0.45],
"rotation": [90, 0, -90],
"uv": {
"up": {"uv": [71, 69], "uv_size": [-1, -1]}
}
},
{
"origin": [-0.45, 22.25074, -2.05],
"size": [0.9, 0, 0.9],
"pivot": [0, 22.25074, -1.6],
"rotation": [-90, 0, -90],
"uv": {
"up": {"uv": [71, 69], "uv_size": [-1, -1]}
}
}
]
},
{
"name": "bone11",
"parent": "barrel",
"pivot": [0, 22.25, -6],
"rotation": [0, 90, 0],
"cubes": [
{
"origin": [-1.65439, 22.00208, -6.2755],
"size": [0.65729, 0.49592, 0.37851],
"pivot": [0.13925, 22.25003, -6.01125],
"rotation": [-90, 0, 90],
"uv": {
"north": {"uv": [20, 68], "uv_size": [1, 1]},
"east": {"uv": [68, 20], "uv_size": [1, 1]},
"west": {"uv": [21, 68], "uv_size": [1, 1]},
"up": {"uv": [68, 21], "uv_size": [1, 1]},
"down": {"uv": [22, 69], "uv_size": [1, -1]}
}
},
{
"origin": [-1.65439, 22.00208, -6.2755],
"size": [0.65729, 0.49592, 0.37851],
"pivot": [0.13925, 22.25003, -6.01125],
"rotation": [-90, 45, 90],
"uv": {
"north": {"uv": [68, 22], "uv_size": [1, 1]},
"east": {"uv": [23, 68], "uv_size": [1, 1]},
"west": {"uv": [68, 23], "uv_size": [1, 1]},
"up": {"uv": [24, 68], "uv_size": [1, 1]},
"down": {"uv": [68, 25], "uv_size": [1, -1]}
}
},
{
"origin": [-1.65439, 22.00208, -6.2755],
"size": [0.65729, 0.49592, 0.37851],
"pivot": [0.13925, 22.25003, -6.01125],
"rotation": [90, 45, -90],
"uv": {
"north": {"uv": [28, 68], "uv_size": [1, 1]},
"east": {"uv": [68, 28], "uv_size": [1, 1]},
"west": {"uv": [29, 68], "uv_size": [1, 1]},
"up": {"uv": [68, 29], "uv_size": [1, 1]},
"down": {"uv": [30, 69], "uv_size": [1, -1]}
}
},
{
"origin": [-1.65439, 22.00208, -6.2755],
"size": [0.65729, 0.49592, 0.37851],
"pivot": [0.13925, 22.25003, -6.01125],
"rotation": [0, 90, 180],
"uv": {
"north": {"uv": [25, 68], "uv_size": [1, 1]},
"east": {"uv": [68, 25], "uv_size": [1, 1]},
"west": {"uv": [26, 68], "uv_size": [1, 1]},
"up": {"uv": [27, 68], "uv_size": [1, 1]},
"down": {"uv": [68, 28], "uv_size": [1, -1]}
}
},
{
"origin": [-0.23711, 21.86797, -6.1129],
"size": [0.75, 0.75, 0.37851],
"pivot": [0.13789, 22.24297, -5.92365],
"rotation": [-90, 45, 90],
"uv": {
"north": {"uv": [20.25, 68.25], "uv_size": [0.75, 0.5]},
"east": {"uv": [20.25, 68.25], "uv_size": [0.75, 0.5]},
"south": {"uv": [20.25, 68.25], "uv_size": [0.75, 0.5]},
"west": {"uv": [20.25, 68.25], "uv_size": [0.75, 0.5]},
"up": {"uv": [21, 68.75], "uv_size": [-0.75, -0.5]},
"down": {"uv": [21, 68.75], "uv_size": [-0.75, -0.5]}
}
},
{
"origin": [-1.65439, 22.00208, -6.2755],
"size": [0.65729, 0.49592, 0.37851],
"pivot": [0.13925, 22.25003, -6.01125],
"rotation": [90, -45, -90],
"uv": {
"north": {"uv": [33, 68], "uv_size": [1, 1]},
"east": {"uv": [68, 33], "uv_size": [1, 1]},
"west": {"uv": [34, 68], "uv_size": [1, 1]},
"up": {"uv": [68, 34], "uv_size": [1, 1]},
"down": {"uv": [35, 69], "uv_size": [1, -1]}
}
},
{
"origin": [-1.65439, 22.00208, -6.2755],
"size": [0.65729, 0.49592, 0.37851],
"pivot": [0.13925, 22.25003, -6.01125],
"rotation": [90, 0, -90],
"uv": {
"north": {"uv": [68, 30], "uv_size": [1, 1]},
"east": {"uv": [31, 68], "uv_size": [1, 1]},
"west": {"uv": [68, 31], "uv_size": [1, 1]},
"up": {"uv": [32, 68], "uv_size": [1, 1]},
"down": {"uv": [68, 33], "uv_size": [1, -1]}
}
},
{
"origin": [-1.65439, 22.00208, -6.2755],
"size": [0.65729, 0.49592, 0.37851],
"pivot": [0.13925, 22.25003, -6.01125],
"rotation": [-90, -45, 90],
"uv": {
"north": {"uv": [38, 68], "uv_size": [1, 1]},
"east": {"uv": [68, 38], "uv_size": [1, 1]},
"west": {"uv": [39, 68], "uv_size": [1, 1]},
"up": {"uv": [68, 39], "uv_size": [1, 1]},
"down": {"uv": [40, 69], "uv_size": [1, -1]}
}
},
{
"origin": [-1.65439, 22.00208, -6.2755],
"size": [0.65729, 0.49592, 0.37851],
"pivot": [0.13925, 22.25003, -6.01125],
"rotation": [0, -90, 0],
"uv": {
"north": {"uv": [68, 35], "uv_size": [1, 1]},
"east": {"uv": [36, 68], "uv_size": [1, 1]},
"west": {"uv": [68, 36], "uv_size": [1, 1]},
"up": {"uv": [37, 68], "uv_size": [1, 1]},
"down": {"uv": [68, 38], "uv_size": [1, -1]}
}
}
]
},
{
"name": "bone7",
"parent": "barrel",
"pivot": [0, 20.86444, 6.15],
"cubes": [
{
"origin": [-6.26733, 23.47194, 6.5],
"size": [6.76, 5.085, 0.5],
"pivot": [0, 26.01444, 6.75],
"rotation": [0, 0, -90],
"uv": {
"east": {"uv": [4, 64], "uv_size": [1, 4]},
"south": {"uv": [6, 42], "uv_size": [4.75, 4]},
"west": {"uv": [4, 64], "uv_size": [1, 4]},
"up": {"uv": [5, 68], "uv_size": [-1, -4]},
"down": {"uv": [5, 68], "uv_size": [-1, -4]}
}
}
]
},
{
"name": "bone8",
"parent": "barrel",
"pivot": [0, 19.86444, -5.65],
"cubes": [
{
"origin": [-6.99961, 22.75, -6],
"size": [5, 7.5, 2],
"pivot": [-2.24961, 24.25, -6.25],
"rotation": [0, 0, 180],
"uv": {
"east": {"uv": [29, 52], "uv_size": [2, 6]},
"west": {"uv": [46, 52], "uv_size": [2, 6]},
"up": {"uv": [23, 8.75], "uv_size": [-1.75, -4]},
"down": {"uv": [20.5, 7.25], "uv_size": [-3.75, -4.5]}
}
},
{
"origin": [0.23267, 22.97194, -6.5],
"size": [0.46, 5.085, 0.5],
"pivot": [0.25, 25.26444, -6],
"rotation": [0, 0, -90],
"uv": {
"north": {"uv": [65, 61], "uv_size": [1, 4]},
"east": {"uv": [64, 65], "uv_size": [1, 4]},
"west": {"uv": [65, 65], "uv_size": [1, 4]}
}
},
{
"origin": [1.99961, 22.8, -6.5],
"size": [0.5, 7.4, 0.5],
"pivot": [2.24961, 24.25, -6],
"rotation": [0, 0, -180],
"uv": {
"north": {"uv": [44, 60], "uv_size": [1, 6]},
"east": {"uv": [45, 60], "uv_size": [1, 6]},
"west": {"uv": [46, 60], "uv_size": [1, 6]}
}
},
{
"origin": [-2.49961, 22.8, -6.5],
"size": [0.5, 7.4, 0.5],
"pivot": [-2.24961, 24.25, -6],
"rotation": [0, 0, 180],
"uv": {
"north": {"uv": [41, 60], "uv_size": [1, 6]},
"east": {"uv": [42, 60], "uv_size": [1, 6]},
"west": {"uv": [43, 60], "uv_size": [1, 6]}
}
},
{
"origin": [0.23267, 15.94306, -6.5],
"size": [0.46, 5.085, 0.5],
"pivot": [0.25, 18.73556, -6],
"rotation": [0, 0, 90],
"uv": {
"north": {"uv": [56, 65], "uv_size": [1, 4]},
"east": {"uv": [57, 65], "uv_size": [1, 4]},
"west": {"uv": [58, 65], "uv_size": [1, 4]}
}
}
]
},
{
"name": "bone12",
"parent": "barrel",
"pivot": [0.6, 24.59, -6.19775],
"rotation": [0, 90, 0]
},
{
"name": "bone5",
"parent": "turret",
"pivot": [0, 10.5, 0]
},
{
"name": "bone2",
"parent": "bone5",
"pivot": [0, 10.5, 0],
"cubes": [
{
"origin": [-5, 13, -2.75],
"size": [10, 1.5, 5.5],
"uv": {
"north": {"uv": [37, 22], "uv_size": [10, 2]},
"east": {"uv": [52, 15], "uv_size": [6, 2]},
"south": {"uv": [38, 10], "uv_size": [10, 2]},
"west": {"uv": [17, 52], "uv_size": [6, 2]},
"up": {"uv": [26, 24], "uv_size": [10, 6]}
}
}
]
},
{
"name": "pan5",
"parent": "bone2",
"pivot": [0, 22.75, 0],
"cubes": [
{
"origin": [-1.34198, 21.32077, -4.625],
"size": [1.93396, 1.85842, 9.75],
"pivot": [0, 22.24998, 0.25],
"rotation": [-90, -45, 90],
"uv": {
"north": {"uv": [39, 63], "uv_size": [-1, -10]},
"east": {"uv": [39, 63], "uv_size": [-1, -10]},
"south": {"uv": [39, 63], "uv_size": [-1, -10]},
"west": {"uv": [39, 63], "uv_size": [-1, -10]},
"up": {"uv": [38, 53], "uv_size": [1, 10]},
"down": {"uv": [38, 53], "uv_size": [1, 10]}
}
}
]
},
{
"name": "bone3",
"parent": "bone2",
"pivot": [4.53002, 22.47613, 1.375],
"cubes": [
{
"origin": [3, 14.5, -2],
"size": [1.5, 13, 4],
"uv": {
"north": {"uv": [25, 52], "uv_size": [4, 3]},
"east": {"uv": [25, 52], "uv_size": [4, 3]},
"south": {"uv": [25, 52], "uv_size": [4, 3]},
"west": {"uv": [25, 52], "uv_size": [4, 3]},
"up": {"uv": [29, 55], "uv_size": [-4, -3]}
}
}
]
},
{
"name": "bone4",
"parent": "bone2",
"pivot": [-4.53002, 22.47613, 1.375],
"cubes": [
{
"origin": [-4.5, 14.5, -2],
"size": [1.5, 13, 4],
"uv": {
"north": {"uv": [29, 52], "uv_size": [-4, 3]},
"east": {"uv": [29, 52], "uv_size": [-4, 3]},
"south": {"uv": [29, 52], "uv_size": [-4, 3]},
"west": {"uv": [29, 52], "uv_size": [-4, 3]},
"up": {"uv": [25, 55], "uv_size": [4, -3]}
}
}
]
},
{
"name": "pan4",
"parent": "bone5",
"pivot": [-3.094, 11.75, 1.28157],
"cubes": [
{
"origin": [-5.23047, 6.51953, -1.25],
"size": [10.46093, 10.46094, 2.5],
"pivot": [0, 11.75, 0],
"rotation": [-90, 0, 0],
"uv": {
"north": {"uv": [36, 35], "uv_size": [11, 5]},
"east": {"uv": [36, 35], "uv_size": [11, 5]},
"west": {"uv": [36, 35], "uv_size": [11, 5]},
"up": {"uv": [47, 40], "uv_size": [-11, -5]},
"down": {"uv": [47, 40], "uv_size": [-11, -5]}
}
}
]
},
{
"name": "base",
"pivot": [0, 0, 0]
},
{
"name": "bone14",
"parent": "base",
"pivot": [0, 6.85458, 0],
"cubes": [
{
"origin": [-5.85, 8.6, -5.85],
"size": [11.7, 1.9, 11.7],
"uv": {
"north": {"uv": [47, 26], "uv_size": [12, 2]},
"east": {"uv": [48, 28], "uv_size": [12, 2]},
"south": {"uv": [48, 30], "uv_size": [12, 2]},
"west": {"uv": [48, 32], "uv_size": [12, 2]},
"up": {"uv": [14, 13], "uv_size": [12, 12]},
"down": {"uv": [14, 37], "uv_size": [12, -12]}
}
}
]
},
{
"name": "bone15",
"parent": "base",
"pivot": [0, 4.77114, 0]
},
{
"name": "bone16",
"parent": "base",
"pivot": [0, 4.77114, 0],
"rotation": [0, -90, 0],
"cubes": [
{
"origin": [3.8, 4.7875, 1.7125],
"size": [2, 2, 6.175],
"pivot": [4.8, 5.7875, 4.8],
"rotation": [-90, 0, 0],
"uv": {
"north": {"uv": [60, 57], "uv_size": [6, 1]},
"east": {"uv": [60, 57], "uv_size": [6, 1]},
"south": {"uv": [60, 57], "uv_size": [6, 1]},
"west": {"uv": [60, 57], "uv_size": [6, 1]},
"up": {"uv": [66, 58], "uv_size": [-6, -1]},
"down": {"uv": [66, 58], "uv_size": [-6, -1]}
}
},
{
"origin": [-5.8, 4.7875, 1.7125],
"size": [2, 2, 6.175],
"pivot": [-4.8, 5.7875, 4.8],
"rotation": [-90, 0, 0],
"uv": {
"north": {"uv": [66, 57], "uv_size": [-6, 1]},
"east": {"uv": [66, 57], "uv_size": [-6, 1]},
"south": {"uv": [66, 57], "uv_size": [-6, 1]},
"west": {"uv": [66, 57], "uv_size": [-6, 1]},
"up": {"uv": [60, 58], "uv_size": [6, -1]},
"down": {"uv": [60, 58], "uv_size": [6, -1]}
}
},
{
"origin": [3.8, 4.7875, -7.8875],
"size": [2, 2, 6.175],
"pivot": [4.8, 5.7875, -4.8],
"rotation": [90, 0, 0],
"uv": {
"north": {"uv": [66, 57], "uv_size": [-6, 1]},
"east": {"uv": [66, 57], "uv_size": [-6, 1]},
"south": {"uv": [66, 57], "uv_size": [-6, 1]},
"west": {"uv": [66, 57], "uv_size": [-6, 1]},
"up": {"uv": [66, 57], "uv_size": [-6, 1]},
"down": {"uv": [66, 57], "uv_size": [-6, 1]}
}
},
{
"origin": [-5.8, 4.7875, -7.8875],
"size": [2, 2, 6.175],
"pivot": [-4.8, 5.7875, -4.8],
"rotation": [90, 0, 0],
"uv": {
"north": {"uv": [60, 57], "uv_size": [6, 1]},
"east": {"uv": [60, 57], "uv_size": [6, 1]},
"south": {"uv": [60, 57], "uv_size": [6, 1]},
"west": {"uv": [60, 57], "uv_size": [6, 1]},
"up": {"uv": [60, 57], "uv_size": [6, 1]},
"down": {"uv": [60, 57], "uv_size": [6, 1]}
}
}
]
},
{
"name": "bone",
"parent": "base",
"pivot": [0, 0, 0],
"cubes": [
{
"origin": [-6.3, 1.35, -6.3],
"size": [12.6, 1.35, 12.6],
"uv": {
"north": {"uv": [52, 11], "uv_size": [13, 1]},
"east": {"uv": [52, 12], "uv_size": [13, 1]},
"south": {"uv": [52, 13], "uv_size": [13, 1]},
"west": {"uv": [52, 14], "uv_size": [13, 1]},
"up": {"uv": [14, 0], "uv_size": [13, 13]}
}
},
{
"origin": [-5.55, 2.7, -5.55],
"size": [11.1, 0.75, 11.1],
"uv": {
"north": {"uv": [41.75, 62], "uv_size": [6, 3]},
"east": {"uv": [41.75, 62], "uv_size": [6, 3]},
"south": {"uv": [41.75, 62], "uv_size": [6, 3]},
"west": {"uv": [41.75, 62], "uv_size": [6, 3]},
"up": {"uv": [47.75, 65], "uv_size": [-6, -3]},
"down": {"uv": [47.75, 65], "uv_size": [-6, -3]}
}
},
{
"origin": [-6.75, 0, -6.75],
"size": [13.5, 1.35, 13.5],
"uv": {
"north": {"uv": [46, 50], "uv_size": [14, 1]},
"east": {"uv": [17, 51], "uv_size": [14, 1]},
"south": {"uv": [46, 51], "uv_size": [14, 1]},
"west": {"uv": [52, 10], "uv_size": [14, 1]},
"up": {"uv": [0, 0], "uv_size": [14, 14]},
"down": {"uv": [0, 28], "uv_size": [14, -14]}
}
},
{
"origin": [-5.4, 3.375, -5.4],
"size": [10.8, 5.4, 10.8],
"uv": {
"north": {"uv": [37, 17], "uv_size": [11, 5]},
"east": {"uv": [37, 29], "uv_size": [11, 5]},
"south": {"uv": [38, 5], "uv_size": [11, 5]},
"west": {"uv": [36, 40], "uv_size": [11, 5]},
"up": {"uv": [26, 13], "uv_size": [11, 11]}
}
}
]
}
]
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB