优化激光效果,添加激光长度方法

This commit is contained in:
Atsuihsio 2024-12-05 05:02:54 +08:00
parent 562f24c3dd
commit f80a7325b2
9 changed files with 549 additions and 12 deletions

View file

@ -0,0 +1,29 @@
package com.atsuishio.superbwarfare.client.layer;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.ModRenderTypes;
import com.atsuishio.superbwarfare.entity.AnnihilatorEntity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoRenderer;
import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
public class AnnihilatorGlowLayer extends GeoRenderLayer<AnnihilatorEntity> {
private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/annihilator_glow_e.png");
public AnnihilatorGlowLayer(GeoRenderer<AnnihilatorEntity> entityRenderer) {
super(entityRenderer);
}
@Override
public void render(PoseStack poseStack, AnnihilatorEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
RenderType glowRenderType = ModRenderTypes.LASER.apply(LAYER);
getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1);
}
}

View file

@ -10,6 +10,8 @@ import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.model.GeoModel;
import software.bernie.geckolib.model.data.EntityModelData;
import static com.atsuishio.superbwarfare.entity.AnnihilatorEntity.*;
public class AnnihilatorModel extends GeoModel<AnnihilatorEntity> {
@Override
@ -50,12 +52,12 @@ public class AnnihilatorModel extends GeoModel<AnnihilatorEntity> {
EntityModelData entityData = animationState.getData(DataTickets.ENTITY_MODEL_DATA);
bone.setRotX((entityData.headPitch()) * Mth.DEG_TO_RAD);
CoreGeoBone laser1 = getAnimationProcessor().getBone("laser1");
CoreGeoBone laser2 = getAnimationProcessor().getBone("laser2");
CoreGeoBone laser3 = getAnimationProcessor().getBone("laser3");
CoreGeoBone laserLeft = getAnimationProcessor().getBone("laser1");
CoreGeoBone laserMiddle = getAnimationProcessor().getBone("laser2");
CoreGeoBone laserRight = getAnimationProcessor().getBone("laser3");
laser1.setScaleZ(512);
laser2.setScaleZ(512);
laser3.setScaleZ(512);
laserLeft.setScaleZ(animatable.getEntityData().get(LASER_LEFT_LENGTH) + 0.5f);
laserMiddle.setScaleZ(animatable.getEntityData().get(LASER_MIDDLE_LENGTH) + 0.5f);
laserRight.setScaleZ(animatable.getEntityData().get(LASER_RIGHT_LENGTH) + 0.5f);
}
}

View file

@ -1,5 +1,6 @@
package com.atsuishio.superbwarfare.client.renderer.entity;
import com.atsuishio.superbwarfare.client.layer.AnnihilatorGlowLayer;
import com.atsuishio.superbwarfare.client.layer.AnnihilatorLayer;
import com.atsuishio.superbwarfare.client.model.entity.AnnihilatorModel;
import com.atsuishio.superbwarfare.entity.AnnihilatorEntity;
@ -18,9 +19,9 @@ public class AnnihilatorRenderer extends GeoEntityRenderer<AnnihilatorEntity> {
public AnnihilatorRenderer(EntityRendererProvider.Context renderManager) {
super(renderManager, new AnnihilatorModel());
this.shadowRadius = 2f;
this.shadowRadius = 7.5f;
this.addRenderLayer(new AnnihilatorLayer(this));
// this.addRenderLayer(new Mk42DamageLayer(this));
this.addRenderLayer(new AnnihilatorGlowLayer(this));
}
@Override

View file

@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.client.screens;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.RenderHelper;
import com.atsuishio.superbwarfare.config.server.CannonConfig;
import com.atsuishio.superbwarfare.entity.AnnihilatorEntity;
import com.atsuishio.superbwarfare.entity.ICannonEntity;
import com.atsuishio.superbwarfare.entity.Mk42Entity;
import com.atsuishio.superbwarfare.entity.Mle1934Entity;
@ -120,6 +121,11 @@ public class CannonHudOverlay {
maxHealth = CannonConfig.MLE1934_HP.get();
}
if (cannon instanceof AnnihilatorEntity) {
health = cannon.getEntityData().get(AnnihilatorEntity.HEALTH);
maxHealth = CannonConfig.ANNIHILATOR_HP.get();
}
GuiGraphics guiGraphics = event.getGuiGraphics();
guiGraphics.pose().pushPose();
guiGraphics.blit(ARMOR, w - 96, h - 14, 0, 0, 12, 12, 12, 12);

View file

@ -31,6 +31,7 @@ import net.minecraft.world.entity.*;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.ThrownPotion;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.ClipContext;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.AABB;
@ -51,6 +52,9 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
public static final EntityDataAccessor<Integer> COOL_DOWN = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.INT);
public static final EntityDataAccessor<Integer> TYPE = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.INT);
public static final EntityDataAccessor<Float> HEALTH = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.FLOAT);
public static final EntityDataAccessor<Float> LASER_LEFT_LENGTH = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.FLOAT);
public static final EntityDataAccessor<Float> LASER_MIDDLE_LENGTH = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.FLOAT);
public static final EntityDataAccessor<Float> LASER_RIGHT_LENGTH= SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.FLOAT);
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static final float MAX_HEALTH = CannonConfig.ANNIHILATOR_HP.get();
@ -73,6 +77,9 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
this.entityData.define(COOL_DOWN, 0);
this.entityData.define(TYPE, 0);
this.entityData.define(HEALTH, MAX_HEALTH);
this.entityData.define(LASER_LEFT_LENGTH, 0f);
this.entityData.define(LASER_MIDDLE_LENGTH, 0f);
this.entityData.define(LASER_RIGHT_LENGTH, 0f);
}
@Override
@ -80,6 +87,9 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
compound.putInt("CoolDown", this.entityData.get(COOL_DOWN));
compound.putInt("Type", this.entityData.get(TYPE));
compound.putFloat("Health", this.entityData.get(HEALTH));
compound.putFloat("LaserLeftLength", this.entityData.get(LASER_LEFT_LENGTH));
compound.putFloat("LaserMiddleLength", this.entityData.get(LASER_MIDDLE_LENGTH));
compound.putFloat("LaserRightLength", this.entityData.get(LASER_RIGHT_LENGTH));
}
@Override
@ -91,6 +101,9 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
} else {
this.entityData.set(HEALTH, MAX_HEALTH);
}
this.entityData.set(LASER_LEFT_LENGTH, compound.getFloat("LaserLeftLength"));
this.entityData.set(LASER_MIDDLE_LENGTH, compound.getFloat("LaserMiddleLength"));
this.entityData.set(LASER_RIGHT_LENGTH, compound.getFloat("LaserRightLength"));
}
@Override
@ -153,7 +166,7 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
}
this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1);
this.entityData.set(HEALTH, this.entityData.get(HEALTH) - 0.5f * Math.max(amount - 150, 0));
this.entityData.set(HEALTH, this.entityData.get(HEALTH) - 0.5f * Math.max(amount - 40, 0));
return true;
}
@ -248,10 +261,49 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
destroy();
}
float yRot = this.getYRot();
if (yRot < 0) {
yRot += 360;
}
yRot = yRot + 90 % 360;
var BarrelRoot = new Vector3d(4.95, 2.25, 0);
BarrelRoot.rotateY(-yRot * Mth.DEG_TO_RAD);
Vec3 BarrelRootPos = new Vec3(this.getX() + BarrelRoot.x, this.getY() + BarrelRoot.y, this.getZ() + BarrelRoot.z);
var leftPos = new Vector3d(16, 0, -2.703125);
leftPos.rotateZ(-this.getXRot() * Mth.DEG_TO_RAD);
leftPos.rotateY(-yRot * Mth.DEG_TO_RAD);
Vec3 BarrelLeftPos = new Vec3(BarrelRootPos.x + leftPos.x, BarrelRootPos.y + leftPos.y, BarrelRootPos.z + leftPos.z);
var middlePos = new Vector3d(16, 0, 0);
middlePos.rotateZ(-this.getXRot() * Mth.DEG_TO_RAD);
middlePos.rotateY(-yRot * Mth.DEG_TO_RAD);
Vec3 BarrelMiddlePos = new Vec3(BarrelRootPos.x + middlePos.x, BarrelRootPos.y + middlePos.y, BarrelRootPos.z + middlePos.z);
var rightPos = new Vector3d(16, 0, 2.703125);
rightPos.rotateZ(-this.getXRot() * Mth.DEG_TO_RAD);
rightPos.rotateY(-yRot * Mth.DEG_TO_RAD);
Vec3 BarrelRightPos = new Vec3(BarrelRootPos.x + rightPos.x, BarrelRootPos.y + rightPos.y, BarrelRootPos.z + rightPos.z);
this.entityData.set(LASER_LEFT_LENGTH, laserLength(BarrelLeftPos ,this));
this.entityData.set(LASER_MIDDLE_LENGTH, laserLength(BarrelMiddlePos ,this));
this.entityData.set(LASER_RIGHT_LENGTH, laserLength(BarrelRightPos ,this));
travel();
this.refreshDimensions();
}
private float laserLength (Vec3 pos, Entity cannon) {
return (float) pos.distanceTo((Vec3.atLowerCornerOf(cannon.level().clip(
new ClipContext(pos, pos.add(cannon.getViewVector(1).scale(512)),
ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, cannon)).getBlockPos())));
}
private void destroy() {
CustomExplosion explosion = new CustomExplosion(this.level(), this,
ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this), 140f,

View file

@ -6,7 +6,7 @@
"identifier": "geometry.annihilator",
"texture_width": 128,
"texture_height": 128,
"visible_bounds_width": 43,
"visible_bounds_width": 45,
"visible_bounds_height": 7.5,
"visible_bounds_offset": [0, 3.25, 0]
},
@ -23,7 +23,7 @@
{
"name": "PaoGuan",
"parent": "main",
"pivot": [0, 30, -66],
"pivot": [0, 36, -79.2],
"cubes": [
{
"origin": [-50.4, 34.56, -80.64],
@ -42,6 +42,453 @@
"parent": "PaoGuan",
"pivot": [43.25, 36.0004, -275]
},
{
"name": "bone5",
"parent": "laser",
"pivot": [43.25, 35.2538, -330.9],
"cubes": [
{
"origin": [7.25, 35.2538, -366.9],
"size": [72, 0, 72],
"pivot": [43.25, 35.2538, -330.9],
"rotation": [90, 0, -90],
"uv": {
"up": {"uv": [115.75, 127.5], "uv_size": [-46, -46]}
}
},
{
"origin": [7.25, 35.2538, -366.9],
"size": [72, 0, 72],
"pivot": [43.25, 35.2538, -330.9],
"rotation": [0, -90, -90],
"uv": {
"up": {"uv": [115.75, 127.5], "uv_size": [-46, -46]}
}
},
{
"origin": [7.25, 35.2538, -366.9],
"size": [72, 0, 72],
"pivot": [43.25, 35.2538, -330.9],
"rotation": [0, -90, -180],
"uv": {
"up": {"uv": [115.75, 127.5], "uv_size": [-46, -46]}
}
}
]
},
{
"name": "bone7",
"parent": "bone5",
"pivot": [45.759, 35.33301, -305.2],
"cubes": [
{
"origin": [17.215, 37.877, -307.745],
"size": [36, 0, 5.09],
"pivot": [43.215, 37.877, -305.2],
"rotation": [0, -90, 0],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [17.215, 32.624, -307.745],
"size": [36, 0, 5.09],
"pivot": [43.215, 32.624, -305.2],
"rotation": [0, -90, -180],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [19.759, 35.25051, -307.8275],
"size": [36, 0, 5.255],
"pivot": [45.759, 35.25051, -305.2],
"rotation": [0, -90, 90],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [14.671, 35.2505, -307.8275],
"size": [36, 0, 5.255],
"pivot": [40.671, 35.2505, -305.2],
"rotation": [0, -90, -90],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [14.671, 35.2505, -307.8275],
"size": [36, 0, 5.255],
"pivot": [40.671, 35.2505, -305.2],
"rotation": [0, -90, -90],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [17.215, 37.877, -307.745],
"size": [36, 0, 5.09],
"pivot": [43.215, 37.877, -305.2],
"rotation": [0, -90, 0],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [17.215, 32.624, -307.745],
"size": [36, 0, 5.09],
"pivot": [43.215, 32.624, -305.2],
"rotation": [0, -90, -180],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [19.759, 35.25051, -307.8275],
"size": [36, 0, 5.255],
"pivot": [45.759, 35.25051, -305.2],
"rotation": [0, -90, 90],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [14.671, 35.2505, -307.8275],
"size": [36, 0, 5.255],
"pivot": [40.671, 35.2505, -305.2],
"rotation": [0, -90, -90],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [17.215, 37.877, -307.745],
"size": [36, 0, 5.09],
"pivot": [43.215, 37.877, -305.2],
"rotation": [0, -90, 0],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [17.215, 32.624, -307.745],
"size": [36, 0, 5.09],
"pivot": [43.215, 32.624, -305.2],
"rotation": [0, -90, -180],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
},
{
"origin": [19.759, 35.25051, -307.8275],
"size": [36, 0, 5.255],
"pivot": [45.759, 35.25051, -305.2],
"rotation": [0, -90, 90],
"uv": {
"up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]}
}
}
]
},
{
"name": "bone8",
"parent": "laser",
"pivot": [-43.25, 35.2538, -330.9],
"cubes": [
{
"origin": [-79.25, 35.2538, -366.9],
"size": [72, 0, 72],
"pivot": [-43.25, 35.2538, -330.9],
"rotation": [90, 0, 90],
"uv": {
"up": {"uv": [69.75, 127.5], "uv_size": [46, -46]}
}
},
{
"origin": [-79.25, 35.2538, -366.9],
"size": [72, 0, 72],
"pivot": [-43.25, 35.2538, -330.9],
"rotation": [0, 90, 90],
"uv": {
"up": {"uv": [69.75, 127.5], "uv_size": [46, -46]}
}
},
{
"origin": [-79.25, 35.2538, -366.9],
"size": [72, 0, 72],
"pivot": [-43.25, 35.2538, -330.9],
"rotation": [0, 90, 180],
"uv": {
"up": {"uv": [69.75, 127.5], "uv_size": [46, -46]}
}
}
]
},
{
"name": "bone9",
"parent": "bone8",
"pivot": [-45.759, 35.33301, -305.2],
"cubes": [
{
"origin": [-53.215, 37.877, -307.745],
"size": [36, 0, 5.09],
"pivot": [-43.215, 37.877, -305.2],
"rotation": [0, 90, 0],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-53.215, 32.624, -307.745],
"size": [36, 0, 5.09],
"pivot": [-43.215, 32.624, -305.2],
"rotation": [0, 90, 180],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-55.759, 35.25051, -307.8275],
"size": [36, 0, 5.255],
"pivot": [-45.759, 35.25051, -305.2],
"rotation": [0, 90, -90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-50.671, 35.2505, -307.8275],
"size": [36, 0, 5.255],
"pivot": [-40.671, 35.2505, -305.2],
"rotation": [0, 90, 90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-50.671, 35.2505, -307.8275],
"size": [36, 0, 5.255],
"pivot": [-40.671, 35.2505, -305.2],
"rotation": [0, 90, 90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-53.215, 37.877, -307.745],
"size": [36, 0, 5.09],
"pivot": [-43.215, 37.877, -305.2],
"rotation": [0, 90, 0],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-53.215, 32.624, -307.745],
"size": [36, 0, 5.09],
"pivot": [-43.215, 32.624, -305.2],
"rotation": [0, 90, 180],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-55.759, 35.25051, -307.8275],
"size": [36, 0, 5.255],
"pivot": [-45.759, 35.25051, -305.2],
"rotation": [0, 90, -90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-50.671, 35.2505, -307.8275],
"size": [36, 0, 5.255],
"pivot": [-40.671, 35.2505, -305.2],
"rotation": [0, 90, 90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-53.215, 37.877, -307.745],
"size": [36, 0, 5.09],
"pivot": [-43.215, 37.877, -305.2],
"rotation": [0, 90, 0],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-53.215, 32.624, -307.745],
"size": [36, 0, 5.09],
"pivot": [-43.215, 32.624, -305.2],
"rotation": [0, 90, 180],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-55.759, 35.25051, -307.8275],
"size": [36, 0, 5.255],
"pivot": [-45.759, 35.25051, -305.2],
"rotation": [0, 90, -90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
}
]
},
{
"name": "bone10",
"parent": "laser",
"pivot": [-0.035, 35.2538, -330.9],
"cubes": [
{
"origin": [-36.035, 35.2538, -366.9],
"size": [72, 0, 72],
"pivot": [-0.035, 35.2538, -330.9],
"rotation": [90, 0, 90],
"uv": {
"up": {"uv": [69.75, 127.5], "uv_size": [46, -46]}
}
},
{
"origin": [-36.035, 35.2538, -366.9],
"size": [72, 0, 72],
"pivot": [-0.035, 35.2538, -330.9],
"rotation": [0, 90, 90],
"uv": {
"up": {"uv": [69.75, 127.5], "uv_size": [46, -46]}
}
},
{
"origin": [-36.035, 35.2538, -366.9],
"size": [72, 0, 72],
"pivot": [-0.035, 35.2538, -330.9],
"rotation": [0, 90, 180],
"uv": {
"up": {"uv": [69.75, 127.5], "uv_size": [46, -46]}
}
}
]
},
{
"name": "bone11",
"parent": "bone10",
"pivot": [-2.544, 35.33301, -305.2],
"cubes": [
{
"origin": [-10, 37.877, -307.745],
"size": [36, 0, 5.09],
"pivot": [0, 37.877, -305.2],
"rotation": [0, 90, 0],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-10, 32.624, -307.745],
"size": [36, 0, 5.09],
"pivot": [0, 32.624, -305.2],
"rotation": [0, 90, 180],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-12.544, 35.25051, -307.8275],
"size": [36, 0, 5.255],
"pivot": [-2.544, 35.25051, -305.2],
"rotation": [0, 90, -90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-7.456, 35.2505, -307.8275],
"size": [36, 0, 5.255],
"pivot": [2.544, 35.2505, -305.2],
"rotation": [0, 90, 90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-7.456, 35.2505, -307.8275],
"size": [36, 0, 5.255],
"pivot": [2.544, 35.2505, -305.2],
"rotation": [0, 90, 90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-10, 37.877, -307.745],
"size": [36, 0, 5.09],
"pivot": [0, 37.877, -305.2],
"rotation": [0, 90, 0],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-10, 32.624, -307.745],
"size": [36, 0, 5.09],
"pivot": [0, 32.624, -305.2],
"rotation": [0, 90, 180],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-12.544, 35.25051, -307.8275],
"size": [36, 0, 5.255],
"pivot": [-2.544, 35.25051, -305.2],
"rotation": [0, 90, -90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-7.456, 35.2505, -307.8275],
"size": [36, 0, 5.255],
"pivot": [2.544, 35.2505, -305.2],
"rotation": [0, 90, 90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-10, 37.877, -307.745],
"size": [36, 0, 5.09],
"pivot": [0, 37.877, -305.2],
"rotation": [0, 90, 0],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-10, 32.624, -307.745],
"size": [36, 0, 5.09],
"pivot": [0, 32.624, -305.2],
"rotation": [0, 90, 180],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
},
{
"origin": [-12.544, 35.25051, -307.8275],
"size": [36, 0, 5.255],
"pivot": [-2.544, 35.25051, -305.2],
"rotation": [0, 90, -90],
"uv": {
"up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]}
}
}
]
},
{
"name": "laser1",
"parent": "laser",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB