From abc4dc0cbf92aef81a627d2df2d3ec59cd17faae Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 3 May 2023 23:10:28 +0200 Subject: [PATCH] tram trom --- src/main/java/com/hbm/blocks/ModBlocks.java | 5 + .../hbm/blocks/rail/RailStandardStraight.java | 9 +- .../java/com/hbm/entity/EntityMappings.java | 3 + .../hbm/entity/train/EntityRailCarBase.java | 13 +- .../com/hbm/entity/train/TrainCargoTram.java | 16 +- src/main/java/com/hbm/main/ClientProxy.java | 2 + .../com/hbm/main/ModEventHandlerClient.java | 14 + .../java/com/hbm/main/ResourceManager.java | 1 + .../entity/item/RenderTrainCargoTram.java | 37 ++ .../assets/hbm/models/vehicles/tram.obj | 425 ++++++++++++++++++ 10 files changed, 517 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java create mode 100644 src/main/resources/assets/hbm/models/vehicles/tram.obj diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 3b4ee27cf..d806d1efc 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -11,6 +11,7 @@ import com.hbm.blocks.machine.*; import com.hbm.blocks.machine.pile.*; import com.hbm.blocks.machine.rbmk.*; import com.hbm.blocks.network.*; +import com.hbm.blocks.rail.RailStandardStraight; import com.hbm.blocks.siege.*; import com.hbm.blocks.test.*; import com.hbm.blocks.turret.*; @@ -1085,6 +1086,8 @@ public class ModBlocks { public static Block rail_highspeed; public static Block rail_booster; + public static Block rail_large_straight; + public static Block statue_elb; public static Block statue_elb_g; public static Block statue_elb_w; @@ -2109,6 +2112,7 @@ public class ModBlocks { rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow"); rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed"); rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster"); + rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel"); crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); @@ -3326,6 +3330,7 @@ public class ModBlocks { GameRegistry.registerBlock(rail_narrow, ItemBlockBase.class, rail_narrow.getUnlocalizedName()); GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName()); GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName()); + register(rail_large_straight); //Crate GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index d28329aca..91e51c8ca 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -15,8 +15,8 @@ import net.minecraftforge.common.util.ForgeDirection; public class RailStandardStraight extends BlockDummyable implements IRailNTM { - public RailStandardStraight(Material mat) { - super(mat); + public RailStandardStraight() { + super(Material.iron); } @Override @@ -24,6 +24,11 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { return null; } + @Override + public int getRenderType() { + return 0; + } + @Override public int[] getDimensions() { return new int[] {0, 0, 2, 2, 0, 0}; diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 4d56ebc9b..844c470e9 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -14,6 +14,7 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.entity.train.TrainCargoTram; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Quartet; @@ -205,6 +206,8 @@ public class EntityMappings { addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); addEntity(EntityMist.class, "entity_mist", 1000); + addEntity(TrainCargoTram.class, "entity_ntm_cargo_tram", 250, false); + addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); addMob(EntityCreeperTainted.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd); addMob(EntityCreeperPhosgene.class, "entity_mob_phosgene_creeper", 0xE3D398, 0xB8A06B); diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index 7099bebde..deefbf4db 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -75,7 +75,7 @@ public abstract class EntityRailCarBase extends Entity { anchor = this.getCurentAnchorPos(); //reset origin to new position Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan()); - Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan()); + Vec3 backPos = getRelPosAlongRail(anchor, this.getLengthSpan()); if(frontPos == null || backPos == null) { this.derail(); @@ -91,7 +91,7 @@ public abstract class EntityRailCarBase extends Entity { double overshoot = 0; float yaw = this.rotationYaw; - Vec3 next = null; + Vec3 next = Vec3.createVectorHelper(posX, posY, posZ); do { @@ -100,7 +100,7 @@ public abstract class EntityRailCarBase extends Entity { int z = anchor.getZ(); Block block = worldObj.getBlock(x, y, z); - Vec3 rot = Vec3.createVectorHelper(1, 0, 0); + Vec3 rot = Vec3.createVectorHelper(0, 0, 1); rot.rotateAroundY(yaw); if(block instanceof IRailNTM) { @@ -127,7 +127,10 @@ public abstract class EntityRailCarBase extends Entity { } public float generateYaw(Vec3 front, Vec3 back) { - return 0F; //TODO + double deltaX = front.xCoord - back.xCoord; + double deltaZ = front.zCoord - back.zCoord; + double radians = Math.atan(deltaZ / deltaX); + return (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI - 90); } /** Returns the amount of blocks that the train should move per tick */ @@ -144,6 +147,8 @@ public abstract class EntityRailCarBase extends Entity { public void derail() { isOnRail = false; + this.setDead(); + worldObj.createExplosion(this, posX, posY, posZ, 1F, false); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index 11c89263a..c8c7160e4 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -2,6 +2,8 @@ package com.hbm.entity.train; import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.DamageSource; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -22,11 +24,12 @@ public class TrainCargoTram extends EntityRailCarRidable { public TrainCargoTram(World world) { super(world); + this.setSize(2F, 1F); } @Override public double getCurrentSpeed() { - return 0; + return this.riddenByEntity instanceof EntityPlayer ? ((EntityPlayer) this.riddenByEntity).moveForward * 0.125D : 0; } @Override @@ -41,6 +44,15 @@ public class TrainCargoTram extends EntityRailCarRidable { @Override public Vec3 getRiderSeatPosition() { - return Vec3.createVectorHelper(1, 1, 0); + return Vec3.createVectorHelper(0.75, 1.75, 0.75); + } + + @Override + public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) { + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + } + + return true; } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index d366c31f2..04a912a51 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -60,6 +60,7 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.entity.train.*; import com.hbm.handler.CasingEjector; import com.hbm.handler.HbmKeybinds; import com.hbm.handler.ImpactWorldHandler; @@ -681,6 +682,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart()); RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart()); RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus()); + RenderingRegistry.registerEntityRenderingHandler(TrainCargoTram.class, new RenderTrainCargoTram()); //items RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 9e8872aec..9938c2ec9 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -127,6 +127,7 @@ import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.event.sound.PlaySoundEvent17; import net.minecraftforge.common.ForgeHooks; +import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.entity.player.ItemTooltipEvent; public class ModEventHandlerClient { @@ -200,6 +201,19 @@ public class ModEventHandlerClient { GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); }*/ + + List text = new ArrayList(); + text.add("YAW: " + player.rotationYaw); + text.add("PITCH: " + player.rotationPitch); + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + int j = 0; + if(i == 0) j = 2; + if(i == 1) j = 5; + if(i == 2) j = 3; + if(i == 3) j = 4; + ForgeDirection dir = ForgeDirection.getOrientation(j).getOpposite(); + text.add("x: " + dir.offsetX + " z: " + dir.offsetZ); + ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); } /// HANLDE ANIMATION BUSES /// diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c56c4ed0d..302a3523c 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1005,6 +1005,7 @@ public class ResourceManager { public static final IModelCustom cart = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart.obj")); public static final IModelCustom cart_destroyer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_destroyer.obj")); public static final IModelCustom cart_powder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_powder.obj")); + public static final IModelCustom train_cargo_tram = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram.obj")); ////Texture Entities diff --git a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java new file mode 100644 index 000000000..660340f0f --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java @@ -0,0 +1,37 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderTrainCargoTram extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float swing, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + GL11.glRotated(180 - entity.rotationYaw, 0, 1, 0); + GL11.glRotated(-entity.rotationPitch, 0, 0, 1); + + MainRegistry.proxy.displayTooltip("Yaw: " + entity.rotationYaw, 666); + MainRegistry.proxy.displayTooltip("Pitch: " + entity.rotationPitch, 667); + + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.universal); + ResourceManager.train_cargo_tram.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.universal; + } +} diff --git a/src/main/resources/assets/hbm/models/vehicles/tram.obj b/src/main/resources/assets/hbm/models/vehicles/tram.obj new file mode 100644 index 000000000..38a567ec5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/vehicles/tram.obj @@ -0,0 +1,425 @@ +# Blender v2.79 (sub 0) OBJ File: 'tram.blend' +# www.blender.org +o Plane +v -1.000000 0.500000 2.500000 +v 1.000000 0.500000 2.500000 +v -1.000000 0.500000 -2.500000 +v 1.000000 0.500000 -2.500000 +v -1.000000 0.250000 2.500000 +v 1.000000 0.250000 2.500000 +v -1.000000 0.250000 -2.500000 +v 1.000000 0.250000 -2.500000 +v -1.000000 0.000000 2.250000 +v 1.000000 0.000000 2.250000 +v -1.000000 0.000000 -2.250000 +v 1.000000 0.000000 -2.250000 +v -0.125000 0.500000 1.000000 +v 0.875000 0.500000 1.000000 +v -0.125000 1.500000 1.000000 +v 0.875000 1.500000 1.000000 +v 0.125000 0.500000 2.000000 +v -0.125000 0.500000 1.750000 +v 0.875000 0.500000 1.750000 +v 0.625000 0.500000 2.000000 +v -0.125000 1.500000 1.750000 +v 0.125000 1.500000 2.000000 +v 0.625000 1.500000 2.000000 +v 0.875000 1.500000 1.750000 +v -0.625000 0.750000 2.437500 +v -0.625000 0.750000 2.312500 +v 0.625000 0.750000 2.312500 +v 0.625000 0.750000 2.437500 +v 0.713388 0.713388 2.312500 +v 0.713388 0.713388 2.437500 +v 0.750000 0.625000 2.312500 +v 0.750000 0.625000 2.437500 +v 0.713388 0.536612 2.312500 +v 0.713388 0.536612 2.437500 +v 0.625000 0.500000 2.312500 +v 0.625000 0.500000 2.437500 +v 0.536612 0.536612 2.312500 +v 0.536612 0.536612 2.437500 +v 0.500000 0.625000 2.312500 +v 0.500000 0.625000 2.437500 +v 0.536612 0.713388 2.312500 +v 0.536612 0.713388 2.437500 +v -0.536612 0.713388 2.312500 +v -0.536612 0.713388 2.437500 +v -0.500000 0.625000 2.312500 +v -0.500000 0.625000 2.437500 +v -0.536612 0.536612 2.312500 +v -0.536612 0.536612 2.437500 +v -0.625000 0.500000 2.312500 +v -0.625000 0.500000 2.437500 +v -0.713388 0.536612 2.312500 +v -0.713388 0.536612 2.437500 +v -0.750000 0.625000 2.312500 +v -0.750000 0.625000 2.437500 +v -0.713388 0.713388 2.312500 +v -0.713388 0.713388 2.437500 +v 0.375000 0.500000 2.312500 +v 0.875000 0.500000 2.312500 +v 0.375000 0.500000 2.187500 +v 0.875000 0.500000 2.187500 +v 0.375000 0.750000 2.187500 +v 0.375000 0.750000 2.312500 +v 0.875000 0.750000 2.312500 +v 0.875000 0.750000 2.187500 +v -0.875000 0.500000 2.312500 +v -0.375000 0.500000 2.312500 +v -0.875000 0.500000 2.187500 +v -0.375000 0.500000 2.187500 +v -0.875000 0.750000 2.187500 +v -0.875000 0.750000 2.312500 +v -0.375000 0.750000 2.312500 +v -0.375000 0.750000 2.187500 +v -0.875000 0.500000 1.875000 +v -0.125000 0.500000 1.875000 +v -0.875000 0.500000 1.125000 +v -0.125000 0.500000 1.125000 +v -0.875000 1.000000 1.125000 +v -0.875000 1.000000 1.875000 +v -0.125000 1.000000 1.875000 +v -0.125000 1.000000 1.125000 +v -0.750000 0.500000 -2.250000 +v 0.750000 0.500000 -2.250000 +v -0.750000 0.500000 -1.750000 +v 0.750000 0.500000 -1.750000 +v -0.750000 1.000000 -2.250000 +v 0.750000 1.000000 -2.250000 +v -0.750000 1.000000 -1.750000 +v 0.750000 1.000000 -1.750000 +vt 0.000000 0.833333 +vt 0.320000 0.000000 +vt 0.320000 0.833333 +vt 0.840000 0.333333 +vt 0.800000 0.000000 +vt 0.840000 0.000000 +vt 0.720000 0.833333 +vt 0.720000 0.000000 +vt 0.800000 0.041667 +vt 0.880000 0.333333 +vt 0.880000 0.000000 +vt 0.920000 0.333333 +vt 0.880000 0.000000 +vt 0.920000 0.000000 +vt 0.320000 0.000000 +vt 0.640000 0.750000 +vt 0.320000 0.750000 +vt 0.320000 0.791666 +vt 0.640000 0.791667 +vt 0.640000 0.833333 +vt 0.640000 0.000000 +vt 0.720000 0.041667 +vt 0.800000 0.875000 +vt 0.880000 0.708333 +vt 0.880000 0.875000 +vt 0.640000 0.958333 +vt 0.480000 0.833333 +vt 0.640000 0.833333 +vt 0.280000 1.000000 +vt 0.160000 1.000000 +vt 0.160000 0.833333 +vt 0.160000 0.833333 +vt 0.000000 1.000000 +vt 0.000000 0.833333 +vt 0.640000 0.791667 +vt 0.480000 0.916667 +vt 0.320000 0.958333 +vt 0.320000 0.916667 +vt 0.320000 0.791667 +vt 0.480000 0.791667 +vt 0.760000 0.833333 +vt 0.800000 0.916666 +vt 0.760000 0.916667 +vt 0.906131 0.580162 +vt 0.880000 0.568887 +vt 0.890824 0.541667 +vt 0.400000 0.973065 +vt 0.420000 0.958333 +vt 0.420000 0.973065 +vt 0.320000 1.000000 +vt 0.340000 0.958333 +vt 0.340000 1.000000 +vt 0.460000 0.987796 +vt 0.480000 0.973065 +vt 0.480000 0.987796 +vt 0.360000 0.958333 +vt 0.340000 0.973065 +vt 0.340000 0.958333 +vt 0.760000 0.996828 +vt 0.780000 0.955161 +vt 0.780000 0.996828 +vt 0.380000 0.973065 +vt 0.400000 0.958333 +vt 0.400000 0.973065 +vt 0.360000 0.973065 +vt 0.340000 0.987796 +vt 0.780000 0.996828 +vt 0.800000 0.955161 +vt 0.800000 0.996828 +vt 0.380000 0.987796 +vt 0.400000 0.987796 +vt 0.380000 0.987796 +vt 0.360000 0.973065 +vt 0.380000 0.973065 +vt 0.940000 0.583333 +vt 0.960000 0.666667 +vt 0.940000 0.666667 +vt 0.440000 0.973065 +vt 0.460000 0.958333 +vt 0.460000 0.973065 +vt 0.380000 0.958333 +vt 0.420000 0.987796 +vt 0.440000 0.973065 +vt 0.440000 0.987796 +vt 0.440000 0.987796 +vt 0.460000 0.987796 +vt 0.916955 0.571129 +vt 0.936955 0.556398 +vt 0.936955 0.571129 +vt 0.770824 0.916666 +vt 0.796955 0.927941 +vt 0.786131 0.955161 +vt 0.420000 0.973065 +vt 0.440000 0.958333 +vt 0.916955 0.556398 +vt 0.936955 0.541667 +vt 0.920000 0.250000 +vt 0.960000 0.333333 +vt 0.920000 0.333333 +vt 0.460000 0.973065 +vt 0.480000 0.958333 +vt 0.400000 0.987796 +vt 0.420000 0.987796 +vt 0.920000 0.083333 +vt 0.960000 0.166667 +vt 0.920000 0.166667 +vt 0.940000 0.666667 +vt 0.920000 0.708333 +vt 0.920000 0.666667 +vt 0.920000 0.583333 +vt 0.940000 0.666667 +vt 0.920000 0.666667 +vt 0.960000 0.250000 +vt 0.920000 0.166667 +vt 0.960000 0.166667 +vt 0.800000 0.708333 +vt 0.920000 0.583333 +vt 0.920000 0.708333 +vt 0.640000 0.958333 +vt 0.760000 0.833333 +vt 0.760000 0.958333 +vt 0.960000 0.458333 +vt 0.880000 0.333333 +vt 0.960000 0.333333 +vt 0.960000 0.958333 +vt 0.880000 0.833333 +vt 0.960000 0.833333 +vt 0.880000 1.000000 +vt 0.800000 0.875000 +vt 0.880000 0.875000 +vt 0.880000 0.708333 +vt 0.960000 0.833333 +vt 0.880000 0.833333 +vt 1.000000 0.083333 +vt 0.920000 0.000000 +vt 1.000000 0.000000 +vt 0.880000 0.541667 +vt 0.960000 0.458333 +vt 0.960000 0.541667 +vt 0.800000 0.583333 +vt 0.880000 0.333333 +vt 0.880000 0.583333 +vt 0.000000 0.000000 +vt 0.800000 0.333333 +vt 0.760000 0.000000 +vt 0.800000 0.791666 +vt 0.760000 0.833333 +vt 0.880000 0.333333 +vt 0.640000 0.000000 +vt 0.680000 0.000000 +vt 0.720000 0.791667 +vt 0.680000 0.833333 +vt 0.800000 0.708333 +vt 0.480000 0.958333 +vt 0.280000 0.833333 +vt 0.320000 0.875000 +vt 0.320000 0.958333 +vt 0.160000 1.000000 +vt 0.480000 0.791667 +vt 0.480000 0.958333 +vt 0.800000 0.833333 +vt 0.916955 0.552942 +vt 0.916955 0.568887 +vt 0.890824 0.580162 +vt 0.880000 0.552942 +vt 0.906131 0.541667 +vt 0.400000 0.958333 +vt 0.320000 0.958333 +vt 0.760000 0.955161 +vt 0.380000 0.958333 +vt 0.360000 0.987796 +vt 0.780000 0.955161 +vt 0.960000 0.583333 +vt 0.440000 0.958333 +vt 0.360000 0.958333 +vt 0.760000 0.943886 +vt 0.760000 0.927941 +vt 0.786131 0.916666 +vt 0.796955 0.943886 +vt 0.770824 0.955161 +vt 0.420000 0.958333 +vt 0.916955 0.541667 +vt 0.960000 0.250000 +vt 0.460000 0.958333 +vt 0.960000 0.083333 +vt 0.940000 0.708333 +vt 0.940000 0.583333 +vt 0.920000 0.250000 +vt 0.800000 0.583333 +vt 0.640000 0.833333 +vt 0.880000 0.458333 +vt 0.880000 0.958333 +vt 0.800000 1.000000 +vt 0.960000 0.708333 +vt 0.920000 0.083333 +vt 0.880000 0.458333 +vt 0.800000 0.333333 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.3827 0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +s off +f 2/1/1 3/2/1 1/3/1 +f 8/4/2 11/5/2 7/6/2 +f 4/7/3 2/8/3 10/9/3 +f 4/10/4 7/6/4 3/11/4 +f 1/12/5 6/13/5 2/14/5 +f 11/15/6 10/16/6 9/17/6 +f 5/18/7 10/16/7 6/19/7 +f 1/20/8 3/21/8 11/22/8 +f 20/23/5 22/24/5 17/25/5 +f 14/26/3 24/27/3 19/28/3 +f 24/29/1 16/30/1 15/31/1 +f 13/32/4 16/33/4 14/34/4 +f 24/27/9 20/35/9 19/28/9 +f 18/36/10 22/37/10 21/38/10 +f 18/36/8 15/39/8 13/40/8 +f 58/41/5 62/42/5 57/43/5 +f 25/44/5 54/45/5 50/46/5 +f 28/47/11 29/48/11 27/49/11 +f 65/50/8 69/51/8 67/52/8 +f 52/53/12 53/54/12 51/55/12 +f 30/56/13 31/57/13 29/58/13 +f 57/59/8 61/60/8 59/61/8 +f 50/62/14 51/63/14 49/64/14 +f 32/65/15 33/66/15 31/57/15 +f 60/67/3 63/68/3 58/69/3 +f 48/70/16 49/64/16 47/71/16 +f 33/72/16 36/73/16 35/74/16 +f 63/75/1 61/76/1 62/77/1 +f 46/78/15 47/79/15 45/80/15 +f 36/73/14 37/81/14 35/74/14 +f 56/82/17 26/83/17 55/84/17 +f 44/85/13 45/80/13 43/86/13 +f 38/87/12 39/88/12 37/89/12 +f 28/90/5 40/91/5 36/92/5 +f 25/93/11 43/94/11 26/83/11 +f 40/95/18 41/96/18 39/88/18 +f 59/97/4 64/98/4 60/99/4 +f 54/100/18 55/101/18 53/54/18 +f 42/102/17 27/49/17 41/103/17 +f 66/104/5 70/105/5 65/106/5 +f 68/107/3 71/108/3 66/109/3 +f 71/110/1 69/111/1 70/112/1 +f 67/113/4 72/114/4 68/115/4 +f 75/116/6 74/117/6 73/118/6 +f 79/119/1 77/120/1 78/121/1 +f 76/122/3 79/123/3 74/124/3 +f 73/125/8 77/126/8 75/127/8 +f 75/128/4 80/129/4 76/130/4 +f 74/131/5 78/132/5 73/133/5 +f 86/134/3 84/135/3 82/136/3 +f 87/137/8 81/138/8 83/139/8 +f 85/140/4 82/141/4 81/142/4 +f 2/1/1 4/143/1 3/2/1 +f 8/4/2 12/144/2 11/5/2 +f 2/8/3 6/145/3 10/9/3 +f 10/9/3 12/146/3 4/7/3 +f 12/146/3 8/147/3 4/7/3 +f 4/10/4 8/4/4 7/6/4 +f 1/12/5 5/148/5 6/13/5 +f 11/15/6 12/149/6 10/16/6 +f 5/18/7 9/17/7 10/16/7 +f 3/21/8 7/150/8 11/22/8 +f 11/22/8 9/151/8 1/20/8 +f 9/151/8 5/152/8 1/20/8 +f 20/23/5 23/153/5 22/24/5 +f 14/26/3 16/154/3 24/27/3 +f 15/31/1 21/155/1 24/29/1 +f 21/155/1 22/156/1 24/29/1 +f 22/156/1 23/157/1 24/29/1 +f 13/32/4 15/158/4 16/33/4 +f 24/27/9 23/159/9 20/35/9 +f 18/36/10 17/160/10 22/37/10 +f 18/36/8 21/38/8 15/39/8 +f 58/41/5 63/161/5 62/42/5 +f 46/162/5 44/163/5 25/44/5 +f 25/44/5 56/164/5 54/45/5 +f 54/45/5 52/165/5 50/46/5 +f 50/46/5 48/166/5 46/162/5 +f 46/162/5 25/44/5 50/46/5 +f 28/47/11 30/167/11 29/48/11 +f 65/50/8 70/168/8 69/51/8 +f 52/53/12 54/100/12 53/54/12 +f 30/56/13 32/65/13 31/57/13 +f 57/59/8 62/169/8 61/60/8 +f 50/62/14 52/170/14 51/63/14 +f 32/65/15 34/171/15 33/66/15 +f 60/67/3 64/172/3 63/68/3 +f 48/70/16 50/62/16 49/64/16 +f 33/72/16 34/171/16 36/73/16 +f 63/75/1 64/173/1 61/76/1 +f 46/78/15 48/174/15 47/79/15 +f 36/73/14 38/175/14 37/81/14 +f 56/82/17 25/93/17 26/83/17 +f 44/85/13 46/78/13 45/80/13 +f 38/87/12 40/95/12 39/88/12 +f 32/176/5 30/177/5 28/90/5 +f 28/90/5 42/178/5 40/91/5 +f 40/91/5 38/179/5 36/92/5 +f 36/92/5 34/180/5 32/176/5 +f 32/176/5 28/90/5 36/92/5 +f 25/93/11 44/181/11 43/94/11 +f 40/95/18 42/182/18 41/96/18 +f 59/97/4 61/183/4 64/98/4 +f 54/100/18 56/184/18 55/101/18 +f 42/102/17 28/47/17 27/49/17 +f 66/104/5 71/185/5 70/105/5 +f 68/107/3 72/186/3 71/108/3 +f 71/110/1 72/187/1 69/111/1 +f 67/113/4 69/188/4 72/114/4 +f 75/116/6 76/189/6 74/117/6 +f 79/119/1 80/190/1 77/120/1 +f 76/122/3 80/191/3 79/123/3 +f 73/125/8 78/192/8 77/126/8 +f 75/128/4 77/193/4 80/129/4 +f 74/131/5 79/194/5 78/132/5 +f 86/134/3 88/195/3 84/135/3 +f 87/137/8 85/196/8 81/138/8 +f 85/140/4 86/197/4 82/141/4