优化激光效果,添加激光长度方法
This commit is contained in:
parent
562f24c3dd
commit
f80a7325b2
9 changed files with 549 additions and 12 deletions
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,6 +10,8 @@ import software.bernie.geckolib.core.animation.AnimationState;
|
||||||
import software.bernie.geckolib.model.GeoModel;
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
import software.bernie.geckolib.model.data.EntityModelData;
|
import software.bernie.geckolib.model.data.EntityModelData;
|
||||||
|
|
||||||
|
import static com.atsuishio.superbwarfare.entity.AnnihilatorEntity.*;
|
||||||
|
|
||||||
public class AnnihilatorModel extends GeoModel<AnnihilatorEntity> {
|
public class AnnihilatorModel extends GeoModel<AnnihilatorEntity> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -50,12 +52,12 @@ public class AnnihilatorModel extends GeoModel<AnnihilatorEntity> {
|
||||||
EntityModelData entityData = animationState.getData(DataTickets.ENTITY_MODEL_DATA);
|
EntityModelData entityData = animationState.getData(DataTickets.ENTITY_MODEL_DATA);
|
||||||
bone.setRotX((entityData.headPitch()) * Mth.DEG_TO_RAD);
|
bone.setRotX((entityData.headPitch()) * Mth.DEG_TO_RAD);
|
||||||
|
|
||||||
CoreGeoBone laser1 = getAnimationProcessor().getBone("laser1");
|
CoreGeoBone laserLeft = getAnimationProcessor().getBone("laser1");
|
||||||
CoreGeoBone laser2 = getAnimationProcessor().getBone("laser2");
|
CoreGeoBone laserMiddle = getAnimationProcessor().getBone("laser2");
|
||||||
CoreGeoBone laser3 = getAnimationProcessor().getBone("laser3");
|
CoreGeoBone laserRight = getAnimationProcessor().getBone("laser3");
|
||||||
|
|
||||||
laser1.setScaleZ(512);
|
laserLeft.setScaleZ(animatable.getEntityData().get(LASER_LEFT_LENGTH) + 0.5f);
|
||||||
laser2.setScaleZ(512);
|
laserMiddle.setScaleZ(animatable.getEntityData().get(LASER_MIDDLE_LENGTH) + 0.5f);
|
||||||
laser3.setScaleZ(512);
|
laserRight.setScaleZ(animatable.getEntityData().get(LASER_RIGHT_LENGTH) + 0.5f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.atsuishio.superbwarfare.client.renderer.entity;
|
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.layer.AnnihilatorLayer;
|
||||||
import com.atsuishio.superbwarfare.client.model.entity.AnnihilatorModel;
|
import com.atsuishio.superbwarfare.client.model.entity.AnnihilatorModel;
|
||||||
import com.atsuishio.superbwarfare.entity.AnnihilatorEntity;
|
import com.atsuishio.superbwarfare.entity.AnnihilatorEntity;
|
||||||
|
@ -18,9 +19,9 @@ public class AnnihilatorRenderer extends GeoEntityRenderer<AnnihilatorEntity> {
|
||||||
|
|
||||||
public AnnihilatorRenderer(EntityRendererProvider.Context renderManager) {
|
public AnnihilatorRenderer(EntityRendererProvider.Context renderManager) {
|
||||||
super(renderManager, new AnnihilatorModel());
|
super(renderManager, new AnnihilatorModel());
|
||||||
this.shadowRadius = 2f;
|
this.shadowRadius = 7.5f;
|
||||||
this.addRenderLayer(new AnnihilatorLayer(this));
|
this.addRenderLayer(new AnnihilatorLayer(this));
|
||||||
// this.addRenderLayer(new Mk42DamageLayer(this));
|
this.addRenderLayer(new AnnihilatorGlowLayer(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.client.screens;
|
||||||
import com.atsuishio.superbwarfare.ModUtils;
|
import com.atsuishio.superbwarfare.ModUtils;
|
||||||
import com.atsuishio.superbwarfare.client.RenderHelper;
|
import com.atsuishio.superbwarfare.client.RenderHelper;
|
||||||
import com.atsuishio.superbwarfare.config.server.CannonConfig;
|
import com.atsuishio.superbwarfare.config.server.CannonConfig;
|
||||||
|
import com.atsuishio.superbwarfare.entity.AnnihilatorEntity;
|
||||||
import com.atsuishio.superbwarfare.entity.ICannonEntity;
|
import com.atsuishio.superbwarfare.entity.ICannonEntity;
|
||||||
import com.atsuishio.superbwarfare.entity.Mk42Entity;
|
import com.atsuishio.superbwarfare.entity.Mk42Entity;
|
||||||
import com.atsuishio.superbwarfare.entity.Mle1934Entity;
|
import com.atsuishio.superbwarfare.entity.Mle1934Entity;
|
||||||
|
@ -120,6 +121,11 @@ public class CannonHudOverlay {
|
||||||
maxHealth = CannonConfig.MLE1934_HP.get();
|
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 guiGraphics = event.getGuiGraphics();
|
||||||
guiGraphics.pose().pushPose();
|
guiGraphics.pose().pushPose();
|
||||||
guiGraphics.blit(ARMOR, w - 96, h - 14, 0, 0, 12, 12, 12, 12);
|
guiGraphics.blit(ARMOR, w - 96, h - 14, 0, 0, 12, 12, 12, 12);
|
||||||
|
|
|
@ -31,6 +31,7 @@ import net.minecraft.world.entity.*;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.entity.projectile.ThrownPotion;
|
import net.minecraft.world.entity.projectile.ThrownPotion;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.level.ClipContext;
|
||||||
import net.minecraft.world.level.Explosion;
|
import net.minecraft.world.level.Explosion;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.phys.AABB;
|
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> COOL_DOWN = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.INT);
|
||||||
public static final EntityDataAccessor<Integer> TYPE = 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> 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);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
|
||||||
public static final float MAX_HEALTH = CannonConfig.ANNIHILATOR_HP.get();
|
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(COOL_DOWN, 0);
|
||||||
this.entityData.define(TYPE, 0);
|
this.entityData.define(TYPE, 0);
|
||||||
this.entityData.define(HEALTH, MAX_HEALTH);
|
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
|
@Override
|
||||||
|
@ -80,6 +87,9 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
|
||||||
compound.putInt("CoolDown", this.entityData.get(COOL_DOWN));
|
compound.putInt("CoolDown", this.entityData.get(COOL_DOWN));
|
||||||
compound.putInt("Type", this.entityData.get(TYPE));
|
compound.putInt("Type", this.entityData.get(TYPE));
|
||||||
compound.putFloat("Health", this.entityData.get(HEALTH));
|
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
|
@Override
|
||||||
|
@ -91,6 +101,9 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
|
||||||
} else {
|
} else {
|
||||||
this.entityData.set(HEALTH, MAX_HEALTH);
|
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
|
@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.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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -248,10 +261,49 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
|
||||||
destroy();
|
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();
|
travel();
|
||||||
this.refreshDimensions();
|
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() {
|
private void destroy() {
|
||||||
CustomExplosion explosion = new CustomExplosion(this.level(), this,
|
CustomExplosion explosion = new CustomExplosion(this.level(), this,
|
||||||
ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this), 140f,
|
ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this), 140f,
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"identifier": "geometry.annihilator",
|
"identifier": "geometry.annihilator",
|
||||||
"texture_width": 128,
|
"texture_width": 128,
|
||||||
"texture_height": 128,
|
"texture_height": 128,
|
||||||
"visible_bounds_width": 43,
|
"visible_bounds_width": 45,
|
||||||
"visible_bounds_height": 7.5,
|
"visible_bounds_height": 7.5,
|
||||||
"visible_bounds_offset": [0, 3.25, 0]
|
"visible_bounds_offset": [0, 3.25, 0]
|
||||||
},
|
},
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
{
|
{
|
||||||
"name": "PaoGuan",
|
"name": "PaoGuan",
|
||||||
"parent": "main",
|
"parent": "main",
|
||||||
"pivot": [0, 30, -66],
|
"pivot": [0, 36, -79.2],
|
||||||
"cubes": [
|
"cubes": [
|
||||||
{
|
{
|
||||||
"origin": [-50.4, 34.56, -80.64],
|
"origin": [-50.4, 34.56, -80.64],
|
||||||
|
@ -42,6 +42,453 @@
|
||||||
"parent": "PaoGuan",
|
"parent": "PaoGuan",
|
||||||
"pivot": [43.25, 36.0004, -275]
|
"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",
|
"name": "laser1",
|
||||||
"parent": "laser",
|
"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 |
Loading…
Add table
Reference in a new issue