From 9340287403688e4b92f1c30cd6ad1f3c72295d68 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Sun, 31 Dec 2023 15:56:09 -0500 Subject: [PATCH] caster is finished, woo! --- .../blocks/machine/MachineStrandCaster.java | 62 +- .../ContainerMachineStrandCaster.java | 104 +- .../inventory/gui/GUIMachineStrandCaster.java | 108 +- .../inventory/recipes/AssemblerRecipes.java | 9 + .../render/tileentity/RenderStrandCaster.java | 72 +- .../machine/TileEntityCrucible.java | 4 +- .../TileEntityMachineStrandCaster.java | 122 +- .../hbm/models/machines/strand_caster.obj | 1200 +++++++---------- 8 files changed, 760 insertions(+), 921 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java index 34b5b4384..ee6dab3a8 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java +++ b/src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java @@ -32,16 +32,19 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcceptor, ILookOverlay { +public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcceptor, ILookOverlay, IToolable { public MachineStrandCaster() { super(Material.iron); } + //reminder, if the machine is a solid brick, get dimensions will already handle it without the need to use fillSapce //the order is up, down, forward, backward, left, right //x is for left(-)/right(+), z is for forward(+)/backward(-), y you already know @Override - public int[] getDimensions() {return new int[]{0, 0, 6, 0, 1, 0};} + public int[] getDimensions() { + return new int[]{0, 0, 6, 0, 1, 0}; + } @Override public int getOffset() { @@ -51,8 +54,8 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce @Override public TileEntity createNewTileEntity(World world, int meta) { - if(meta >= 12) return new TileEntityMachineStrandCaster(); - if(meta >= 6) return new TileEntityProxyCombo(true, false, true).moltenMetal(); + if (meta >= 12) return new TileEntityMachineStrandCaster(); + if (meta >= 6) return new TileEntityProxyCombo(true, false, true).moltenMetal(); return null; } @@ -83,12 +86,12 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { TileEntity poured = world.getTileEntity(x, y, z); - if(!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo)poured).moltenMetal)) return false; + if (!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo) poured).moltenMetal)) return false; int[] pos = this.findCore(world, x, y, z); - if(pos == null) return false; + if (pos == null) return false; TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); - if(!(tile instanceof TileEntityMachineStrandCaster)) return false; + if (!(tile instanceof TileEntityMachineStrandCaster)) return false; TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) tile; return caster.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack); @@ -98,12 +101,12 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce public Mats.MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { TileEntity poured = world.getTileEntity(x, y, z); - if(!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo)poured).moltenMetal)) return stack; + if (!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo) poured).moltenMetal)) return stack; int[] pos = this.findCore(world, x, y, z); - if(pos == null) return stack; + if (pos == null) return stack; TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); - if(!(tile instanceof TileEntityMachineStrandCaster)) return stack; + if (!(tile instanceof TileEntityMachineStrandCaster)) return stack; TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) tile; return caster.pour(world, x, y, z, dX, dY, dZ, side, stack); @@ -121,13 +124,13 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) { + if (world.isRemote) { return true; } int[] coords = findCore(world, x, y, z); TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]); - if(cast != null) { + if (cast != null) { //insert mold if (player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.mold && cast.slots[0] == null) { cast.slots[0] = player.getHeldItem().copy(); @@ -164,7 +167,7 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce public void breakBlock(World world, int x, int y, int z, Block b, int i) { TileEntity te = world.getTileEntity(x, y, z); - if(te instanceof TileEntityMachineStrandCaster) { + if (te instanceof TileEntityMachineStrandCaster) { TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) te; if (cast.amount > 0) { @@ -179,12 +182,12 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { int[] coords = findCore(world, x, y, z); - if(coords == null) return; + if (coords == null) return; TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]); List text = new ArrayList(); - if(cast != null) { + if (cast != null) { if (cast.slots[0] == null) { text.add(EnumChatFormatting.RED + I18nUtil.resolveKey("foundry.noCast")); } else if (cast.slots[0].getItem() == ModItems.mold) { @@ -194,13 +197,40 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xFF4000, 0x401000, text); } + @Override protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { x += dir.offsetX * o; z += dir.offsetZ * o; - if(!MultiblockHandlerXR.checkSpace(world, x, y , z, getDimensions(), x, y, z, dir)) return false; + if (!MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir)) return false; return MultiblockHandlerXR.checkSpace(world, x, y, z, new int[]{2, 0, 1, 0, 1, 0}, x, y, z, dir); } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + if (tool != ToolType.SCREWDRIVER) + return false; + + TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); + + if (cast.slots[0] == null) + return false; + + if (!player.inventory.addItemStackToInventory(cast.slots[0].copy())) { + EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, cast.slots[0].copy()); + world.spawnEntityInWorld(item); + } else { + player.inventoryContainer.detectAndSendChanges(); + } + + cast.markDirty(); + world.markBlockForUpdate(x, y, z); + + cast.slots[0] = null; + cast.markDirty(); + + return true; + } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java index 1742c470c..bc9e89e46 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java @@ -11,65 +11,65 @@ import net.minecraft.item.ItemStack; public class ContainerMachineStrandCaster extends Container { - protected TileEntityMachineStrandCaster caster; + protected TileEntityMachineStrandCaster caster; - public ContainerMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster caster) { - this.caster = caster; - - //the wretched mold - this.addSlotToContainer(new SlotNonRetarded(this.caster, 0, 57, 62)); - - //output - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 2; j++) { - this.addSlotToContainer(new SlotNonRetarded(this.caster, j + i * 2 + 1, 125 + j * 18, 26 + i * 18)); - } - } + public ContainerMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster caster) { + this.caster = caster; - - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 132 + i * 18)); - } - } + //the wretched mold + this.addSlotToContainer(new SlotNonRetarded(this.caster, 0, 57, 62)); - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 190)); - } - } + //output + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 2; j++) { + this.addSlotToContainer(new SlotNonRetarded(this.caster, j + i * 2 + 1, 125 + j * 18, 26 + i * 18)); + } + } - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int index) { - ItemStack stack = null; - Slot slot = (Slot) this.inventorySlots.get(index); - if(slot != null && slot.getHasStack()) { - ItemStack originalStack = slot.getStack(); - stack = originalStack.copy(); + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 132 + i * 18)); + } + } - if(index <= 6) { - if(!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 7, this.inventorySlots.size(), true)) { - return null; - } - - slot.onSlotChange(originalStack, stack); - - } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 0, 7, false)) { - return null; - } + for (int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 190)); + } + } - if(originalStack.stackSize == 0) { - slot.putStack(null); - } else { - slot.onSlotChanged(); - } - } + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(index); - return stack; - } + if (slot != null && slot.getHasStack()) { + ItemStack originalStack = slot.getStack(); + stack = originalStack.copy(); - @Override - public boolean canInteractWith(EntityPlayer player) { - return caster.isUseableByPlayer(player); - } + if (index <= 6) { + if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 7, this.inventorySlots.size(), true)) { + return null; + } + + slot.onSlotChange(originalStack, stack); + + } else if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 0, 7, false)) { + return null; + } + + if (originalStack.stackSize == 0) { + slot.putStack(null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return caster.isUseableByPlayer(player); + } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java b/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java index 16a151207..a2e959621 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineStrandCaster.java @@ -21,80 +21,78 @@ import java.util.List; public class GUIMachineStrandCaster extends GuiInfoContainer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_strand_caster.png"); - private TileEntityMachineStrandCaster caster; + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_strand_caster.png"); + private TileEntityMachineStrandCaster caster; - public GUIMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) { - super(new ContainerMachineStrandCaster(invPlayer, tedf)); - caster = tedf; + public GUIMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) { + super(new ContainerMachineStrandCaster(invPlayer, tedf)); + caster = tedf; - this.xSize = 176; - this.ySize = 214; - } + this.xSize = 176; + this.ySize = 214; + } - @Override - public void drawScreen(int x, int y, float interp) { - super.drawScreen(x, y, interp); + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); - drawStackInfo(x, y, 16, 17); + drawStackInfo(x, y, 16, 17); - caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 14, 16, 24); - caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 64, 16, 24); - } + caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 14, 16, 24); + caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 64, 16, 24); + } - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.caster.hasCustomInventoryName() ? this.caster.getInventoryName() : I18n.format(this.caster.getInventoryName()); + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.caster.hasCustomInventoryName() ? this.caster.getInventoryName() : I18n.format(this.caster.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if (caster.amount != 0) { + if (caster.amount != 0) { - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - int targetHeight = (caster.amount) * 79 / caster.getCapacity(); + int targetHeight = Math.min((caster.amount) * 79 / caster.getCapacity(), 92); - int hex = caster.type.moltenColor; - //hex = 0xC18336; - Color color = new Color(hex); - GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); - drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); - GL11.glEnable(GL11.GL_BLEND); - GL11.glColor4f(1F, 1F, 1F, 0.3F); - drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); - GL11.glDisable(GL11.GL_BLEND); + int hex = caster.type.moltenColor; + //hex = 0xC18336; + Color color = new Color(hex); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); + GL11.glEnable(GL11.GL_BLEND); + GL11.glColor4f(1F, 1F, 1F, 0.3F); + drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight); + GL11.glDisable(GL11.GL_BLEND); - } - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor3f(255, 255, 255); + } + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor3f(255, 255, 255); - caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24); - caster.steam.renderTank(guiLeft + 82, guiTop + 90, this.zLevel, 16, 24); + caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24); + caster.steam.renderTank(guiLeft + 82, guiTop + 90, this.zLevel, 16, 24); - } + } - - protected void drawStackInfo(int mouseX, int mouseY, int x, int y) { - - List list = new ArrayList(); - - if(caster.type == null) list.add(EnumChatFormatting.RED + "Empty"); - else list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(caster.type.getUnlocalizedName()) + ": " + Mats.formatAmount(caster.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + protected void drawStackInfo(int mouseX, int mouseY, int x, int y) { - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + x, guiTop + y, 36, 81, mouseX, mouseY, list); - } - + List list = new ArrayList(); + + if (caster.type == null) list.add(EnumChatFormatting.RED + "Empty"); + else + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(caster.type.getUnlocalizedName()) + ": " + Mats.formatAmount(caster.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + x, guiTop + y, 36, 81, mouseX, mouseY, list); + } - } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index bb377f685..444f6cf72 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -445,6 +445,15 @@ public class AssemblerRecipes { new ComparableStack(ModItems.wire_red_copper, 24), new ComparableStack(ModItems.circuit_copper, 1) }, 300); + + makeRecipe(new ComparableStack(ModBlocks.machine_strand_caster, 1), new AStack[] { + new ComparableStack(ModItems.ingot_firebrick, 12), + new OreDictStack(STEEL.plateCast(), 6), + new OreDictStack(CU.plateWelded(), 2), + new ComparableStack(ModItems.tank_steel, 2), + new OreDictStack(ANY_CONCRETE.any(), 8) + }, 100); + makeRecipe(new ComparableStack(ModItems.piston_set, 1, EnumPistonType.STEEL.ordinal()), new AStack[] { new OreDictStack(STEEL.plate(), 16), new OreDictStack(CU.plate(), 4), diff --git a/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java index f7ec4d092..6d9579ab0 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java +++ b/src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java @@ -2,18 +2,34 @@ package com.hbm.render.tileentity; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; import org.lwjgl.opengl.GL11; +import java.awt.*; +import java.nio.DoubleBuffer; + public class RenderStrandCaster extends TileEntitySpecialRenderer implements IItemRendererProvider { + public static final ResourceLocation lava = new ResourceLocation(RefStrings.MODID, "textures/models/machines/lava_gray.png"); + private static DoubleBuffer buf = null; @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) te; + + if(buf == null){ + buf = GLAllocation.createDirectByteBuffer(8*4).asDoubleBuffer(); + } GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y, z + 0.5); @@ -31,8 +47,54 @@ public class RenderStrandCaster extends TileEntitySpecialRenderer implements IIt GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.strand_caster_tex); - ResourceManager.strand_caster.renderAll(); - + ResourceManager.strand_caster.renderPart("caster"); + + + if (caster.amount != 0 && caster.getInstalledMold() != null) { + + double level = ((double) caster.amount / (double) caster.getCapacity()) * 0.675D; + double offset = ((double) caster.amount / (double) caster.getInstalledMold().getCost()) * 0.375D; + + int color = caster.type.moltenColor; + + int r = color >> 16 & 0xFF; + int g = color >> 8 & 0xFF; + int b = color & 0xFF; + + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + + GL11.glPushMatrix(); + GL11.glColor3f( r/ 255F, g/ 255F, b/ 255F); + GL11.glEnable(GL11.GL_CLIP_PLANE0); + buf.put(new double[] { 0, 0, -1, 0.5} ); + buf.rewind(); + GL11.glClipPlane(GL11.GL_CLIP_PLANE0, buf); + GL11.glTranslated(0,0,-offset + 3.4); + ResourceManager.strand_caster.renderPart("plate"); + GL11.glDisable(GL11.GL_CLIP_PLANE0); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + Tessellator tess = Tessellator.instance; + tess.setNormal(0F, 1F, 0F); + tess.setColorOpaque_F(r / 255F, g / 255F, b / 255F); + bindTexture(lava); + tess.startDrawingQuads(); + tess.addVertexWithUV(-0.9, 2.3 + level, -0.999, 0, 0); + tess.addVertexWithUV(-0.9, 2.3 + level, 0.999, 0, 1); + tess.addVertexWithUV(0.9, 2.3 + level, 0.999, 1, 1); + tess.addVertexWithUV(0.9, 2.3 + level, -0.999, 1, 0); + tess.draw(); + + GL11.glPopMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + } + + GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); @@ -48,11 +110,11 @@ public class RenderStrandCaster extends TileEntitySpecialRenderer implements IIt public IItemRenderer getRenderer() { return new ItemRenderBase( ) { public void renderInventory() { - GL11.glTranslated(1, 1, 0); - GL11.glScaled(2.5, 2.5, 2.5); + GL11.glTranslated(2, 0, 2); + GL11.glScaled( 2, 2, 2); } public void renderCommon() { - GL11.glScaled(0.5, 0.5, 0.5); + GL11.glScaled(1, 1, 1); GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.strand_caster_tex); ResourceManager.strand_caster.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index a6ee9501c..e486b7a60 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -158,7 +158,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, this.wasteStack, MaterialShapes.NUGGET.q(2), impact); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, this.wasteStack, MaterialShapes.NUGGET.q(3), impact); if(didPour != null) { NBTTagCompound data = new NBTTagCompound(); @@ -198,7 +198,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro } Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, toCast, MaterialShapes.NUGGET.q(2), impact); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3), impact); if(didPour != null) { NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index f06552fcc..dc9e30c83 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -32,14 +32,16 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; //god thank you bob for this base class -public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor,ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver, IInventory { +public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor, ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver, IInventory { public FluidTank water; public FluidTank steam; + @Override public String getName() { return "container.machineStrandCaster"; } + @Override public String getInventoryName() { return getName(); @@ -64,12 +66,12 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } if (this.amount >= this.getCapacity()) { - if(amount > getCapacity()) { + if (amount > getCapacity()) { ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, amount)); EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord, zCoord + 0.5, scrap); worldObj.spawnEntityInWorld(item); } - this.amount = this.getCapacity(); + this.amount = this.getCapacity(); } @@ -83,61 +85,61 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase if (canProcess()) { - int itemsCasted = Math.min(amount / mold.getCost(), 9); + int itemsCasted = Math.min(amount / mold.getCost(), 9); - for (int j = 0; j < itemsCasted; j++) { - this.amount -= mold.getCost(); + for (int j = 0; j < itemsCasted; j++) { + this.amount -= mold.getCost(); - ItemStack out = mold.getOutput(type); - - for (int i = 1; i < 7; i++) { - if (slots[i] == null){ - slots[i] = out.copy(); - break; - } - - if (slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { - slots[i].stackSize += out.stackSize; - break; - } + ItemStack out = mold.getOutput(type); + for (int i = 1; i < 7; i++) { + if (slots[i] == null) { + slots[i] = out.copy(); + break; } + + if (slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { + slots[i].stackSize += out.stackSize; + break; + } + } - markChanged(); - - water.setFill(water.getFill() - getWaterRequired() * itemsCasted); - steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); } + markChanged(); + + water.setFill(water.getFill() - getWaterRequired() * itemsCasted); + steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); } - - NBTTagCompound data = new NBTTagCompound(); - - water.writeToNBT(data, "w"); - steam.writeToNBT(data, "s"); - - this.networkPack(data, 150); - } + NBTTagCompound data = new NBTTagCompound(); + + water.writeToNBT(data, "w"); + steam.writeToNBT(data, "s"); + + this.networkPack(data, 150); + + } + public boolean canProcess() { ItemMold.Mold mold = this.getInstalledMold(); - if(type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) { + if (type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) { for (int i = 1; i < 7; i++) { - - if (slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) - return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill();; + if (slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) + return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill(); } } return false; } + public DirPos[] getFluidConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - return new DirPos[] { + return new DirPos[]{ new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()), new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), @@ -150,23 +152,25 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - return new int[][] { + return new int[][]{ new int[]{xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ}, new int[]{xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ}, new int[]{xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ}, new int[]{xCoord, yCoord + 2, zCoord}, }; } + @Override public ItemMold.Mold getInstalledMold() { - if(slots[0] == null) return null; + if (slots[0] == null) return null; - if(slots[0].getItem() == ModItems.mold) { + if (slots[0].getItem() == ModItems.mold) { return ((ItemMold) slots[0].getItem()).getMold(slots[0]); } return null; } + @Override public int getMoldSize() { return getInstalledMold().size; @@ -175,9 +179,9 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) { - if(side != ForgeDirection.UP) return false; + if (side != ForgeDirection.UP) return false; for (int[] pos : getMetalPourPos()) { - if (pos[0]== x && pos[1] == y && pos[2] == z){ + if (pos[0] == x && pos[1] == y && pos[2] == z) { return this.standardCheck(world, x, y, z, side, stack); } } @@ -187,40 +191,42 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { - if(this.type != null && this.type != stack.material) return false; + if (this.type != null && this.type != stack.material) return false; return !(this.amount >= this.getCapacity() || getInstalledMold() == null); } + @Override public int getCapacity() { ItemMold.Mold mold = this.getInstalledMold(); - return mold == null ? 50000 : mold.getCost() * 50; + return mold == null ? 50000 : mold.getCost() * 10; } + private int getWaterRequired() { return getInstalledMold() != null ? 5 * getInstalledMold().getCost() : 50; } private void updateConnections() { - for(DirPos pos : getFluidConPos()) { + for (DirPos pos : getFluidConPos()) { this.trySubscribe(water.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - for(DirPos pos : getFluidConPos()) { + for (DirPos pos : getFluidConPos()) { sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @Override public FluidTank[] getSendingTanks() { - return new FluidTank[] { steam }; + return new FluidTank[]{steam}; } @Override public FluidTank[] getReceivingTanks() { - return new FluidTank[] { water }; + return new FluidTank[]{water}; } @Override public FluidTank[] getAllTanks() { - return new FluidTank[] { water, steam }; + return new FluidTank[]{water, steam}; } @Override @@ -235,16 +241,17 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } public void networkPack(NBTTagCompound nbt, int range) { - - if(!worldObj.isRemote) + if (!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } + @Override public void networkUnpack(NBTTagCompound nbt) { water.readFromNBT(nbt, "w"); steam.readFromNBT(nbt, "s"); } + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -258,10 +265,11 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase water.readFromNBT(nbt, "w"); steam.readFromNBT(nbt, "s"); } + @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(i == 0) { + if (i == 0) { return stack.getItem() == ModItems.mold; } @@ -276,15 +284,16 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override public int[] getAccessibleSlotsFromSide(int meta) { - return new int[] { 1, 2, 3, 4, 5, 6}; + return new int[]{1, 2, 3, 4, 5, 6}; } public void markChanged() { this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); } + @Override public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; } else { return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; @@ -301,25 +310,24 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public boolean canExtractItem(int slot, ItemStack itemStack, int side) { return !this.isItemValidForSlot(slot, itemStack); } + AxisAlignedBB bb = null; @Override public AxisAlignedBB getRenderBoundingBox() { - if(bb == null) { + if (bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, yCoord, zCoord - 1, - xCoord + 2, + xCoord + 6, yCoord + 3, - zCoord + 7 + zCoord + 6 ); } - return bb; } - } diff --git a/src/main/resources/assets/hbm/models/machines/strand_caster.obj b/src/main/resources/assets/hbm/models/machines/strand_caster.obj index 2a3ac8b78..2a009d538 100644 --- a/src/main/resources/assets/hbm/models/machines/strand_caster.obj +++ b/src/main/resources/assets/hbm/models/machines/strand_caster.obj @@ -1,10 +1,11 @@ -# Blender v2.79 (sub 0) OBJ File: 'strand_caster.blend' +# Blender 3.6.1 # www.blender.org -o Plane +mtllib strand_caster.mtl +o caster v -1.000000 0.000000 1.000000 v 1.000000 0.000000 1.000000 -v -1.000000 0.000000 -6.000000 -v 1.000000 0.000000 -6.000000 +v -1.000000 -0.000000 -6.000000 +v 1.000000 -0.000000 -6.000000 v -1.000000 0.750000 -6.000000 v -1.000000 0.750000 1.000000 v 1.000000 0.750000 1.000000 @@ -31,24 +32,14 @@ v -0.750000 2.000000 -0.750000 v 0.750000 2.000000 -0.750000 v -0.750000 0.500000 -1.500000 v -0.750000 0.500000 0.750000 -v 0.750000 0.500000 0.750000 v 0.750000 0.500000 -1.500000 v -0.750000 0.750000 -5.750000 v -0.750000 0.750000 0.750000 v 0.750000 0.750000 0.750000 v 0.750000 0.750000 -5.750000 v -0.750000 0.500000 -5.750000 -v -0.750000 0.500000 0.750000 v 0.750000 0.500000 0.750000 v 0.750000 0.500000 -5.750000 -v -0.500000 0.937500 -1.500000 -v 0.500000 0.937500 -1.500000 -v -0.500000 0.937500 -5.250000 -v 0.500000 0.937500 -5.250000 -v -0.500000 1.062500 -5.250000 -v -0.500000 1.062500 -1.500000 -v 0.500000 1.062500 -1.500000 -v 0.500000 1.062500 -5.250000 v 0.750000 1.250000 -1.500000 v -0.750000 1.250000 -1.500000 v 0.750000 0.812500 -3.125000 @@ -275,8 +266,8 @@ v 0.750000 0.750000 -0.125000 v 0.750000 2.000000 -0.125000 v 0.838388 0.750000 -0.088388 v 0.838388 2.000000 -0.088388 -v 0.875000 0.750000 0.000000 -v 0.875000 2.000000 0.000000 +v 0.875000 0.750000 -0.000000 +v 0.875000 2.000000 -0.000000 v 0.838388 0.750000 0.088388 v 0.838388 2.000000 0.088388 v 0.750000 0.750000 0.125000 @@ -307,8 +298,8 @@ v -0.750000 0.750000 0.125000 v -0.750000 2.000000 0.125000 v -0.838388 0.750000 0.088388 v -0.838388 2.000000 0.088388 -v -0.875000 0.750000 0.000000 -v -0.875000 2.000000 0.000000 +v -0.875000 0.750000 -0.000000 +v -0.875000 2.000000 -0.000000 v -0.838388 0.750000 -0.088388 v -0.838388 2.000000 -0.088388 v -0.750000 0.750000 0.375000 @@ -331,6 +322,49 @@ v -0.875000 0.750000 -0.500000 v -0.875000 2.000000 -0.500000 v -0.838388 0.750000 -0.588388 v -0.838388 2.000000 -0.588388 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 0.7071 -0.7071 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 -0.7071 -0.7071 +vn -0.0000 0.7071 0.7071 +vn -0.7311 0.2611 0.6303 +vn -0.9955 -0.0000 -0.0949 +vn -0.9947 -0.0393 -0.0948 +vn -0.6333 -0.2962 -0.7150 +vn -0.0000 -0.3827 -0.9239 +vn 0.6333 -0.2962 -0.7150 +vn 0.9955 -0.0000 -0.0949 +vn 0.7311 0.2611 0.6303 +vn 0.9947 -0.0393 -0.0948 +vn -0.6630 -0.0000 -0.7486 +vn 0.6630 -0.0000 -0.7486 +vn 0.6794 0.4063 -0.6110 +vn 0.9987 0.0196 -0.0473 +vn 0.7574 -0.0000 0.6530 +vn -0.9987 0.0196 -0.0473 +vn -0.7263 -0.3800 0.5728 +vn -0.7574 -0.0000 0.6530 +vn -0.6794 0.4063 -0.6110 +vn -0.0000 -0.5562 0.8311 +vn 0.7263 -0.3800 0.5728 +vn 0.7071 -0.5000 0.5000 +vn -0.7071 -0.5000 0.5000 +vn -0.0000 0.5628 -0.8266 +vn -0.7071 0.5000 -0.5000 +vn 0.3827 -0.0000 -0.9239 +vn 0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 0.7071 +vn 0.3827 -0.0000 0.9239 +vn -0.3827 -0.0000 0.9239 +vn -0.7071 -0.0000 0.7071 +vn -0.7071 -0.0000 -0.7071 +vn -0.3827 -0.0000 -0.9239 +vn 0.7071 0.5000 -0.5000 vt 0.484375 0.100000 vt 0.046875 0.366667 vt 0.046875 0.100000 @@ -345,34 +379,13 @@ vt 0.484375 -0.000000 vt 0.656250 0.600000 vt 0.531250 0.466667 vt 0.656250 0.466667 -vt 0.656250 0.466667 -vt 0.531250 0.600000 -vt 0.531250 0.466667 -vt 0.531250 0.466667 -vt 0.656250 0.600000 vt 0.531250 0.600000 vt 0.531250 0.200000 -vt 0.656250 0.466667 -vt 0.656250 0.600000 -vt 0.531250 0.466667 -vt 0.656250 0.466667 vt 0.539062 0.616667 -vt 0.531250 0.600000 vt 0.648438 0.616667 vt 0.539062 0.733333 -vt 0.539062 0.616667 -vt 0.656250 0.600000 -vt 0.539062 0.616667 -vt 0.539062 0.616667 -vt 0.531250 0.600000 -vt 0.539062 0.733333 vt 0.648438 0.966667 vt 0.539062 0.966667 -vt 0.648438 0.616667 -vt 0.539062 0.733333 -vt 0.648438 0.616667 -vt 0.648438 0.616667 -vt 0.539062 0.733333 vt 0.468750 0.733333 vt 0.062500 0.766667 vt 0.062500 0.733333 @@ -399,21 +412,6 @@ vt 0.468750 0.766667 vt 0.484375 0.766667 vt 0.046875 0.766667 vt 0.046875 0.966667 -vt 0.890625 0.566667 -vt 0.656250 0.700000 -vt 0.656250 0.566667 -vt 0.656250 0.566667 -vt 0.890625 0.700000 -vt 0.656250 0.700000 -vt 0.664062 0.700000 -vt 0.656250 0.566667 -vt 0.664062 0.566667 -vt 0.890625 0.683333 -vt 0.656250 0.700000 -vt 0.656250 0.683333 -vt 0.656250 0.583333 -vt 0.890625 0.566667 -vt 0.890625 0.583333 vt 0.671875 0.200000 vt 0.765625 0.200000 vt 0.695312 0.550000 @@ -427,7 +425,6 @@ vt 0.695312 0.450000 vt 0.687500 0.450000 vt 0.695312 0.466667 vt 0.679688 0.450000 -vt 0.695312 0.450000 vt 0.835938 0.550000 vt 0.851562 0.566667 vt 0.835938 0.566667 @@ -436,37 +433,10 @@ vt 0.656250 0.516667 vt 0.656250 0.500000 vt 0.695312 0.433333 vt 0.835938 0.450000 -vt 0.695312 0.450000 vt 0.835938 0.433333 vt 0.843750 0.450000 -vt 0.695312 0.466667 -vt 0.679688 0.500000 -vt 0.851562 0.500000 -vt 0.679688 0.450000 -vt 0.695312 0.450000 vt 0.835938 0.466667 vt 0.851562 0.450000 -vt 0.695312 0.433333 -vt 0.835938 0.450000 -vt 0.679688 0.516667 -vt 0.835938 0.550000 -vt 0.851562 0.566667 -vt 0.835938 0.566667 -vt 0.656250 0.516667 -vt 0.656250 0.500000 -vt 0.695312 0.550000 -vt 0.679688 0.566667 -vt 0.835938 0.466667 -vt 0.851562 0.450000 -vt 0.835938 0.433333 -vt 0.843750 0.450000 -vt 0.687500 0.433333 -vt 0.687500 0.450000 -vt 0.875000 0.500000 -vt 0.851562 0.516667 -vt 0.902344 0.391667 -vt 0.667969 0.408333 -vt 0.667969 0.391667 vt 0.902344 0.391667 vt 0.667969 0.408333 vt 0.667969 0.391667 @@ -475,42 +445,19 @@ vt 0.914062 0.408333 vt 0.902344 0.408333 vt 0.656250 0.391667 vt 0.667969 0.433333 -vt 0.902344 0.408333 -vt 0.667969 0.433333 -vt 0.914062 0.408333 -vt 0.656250 0.391667 -vt 0.902344 0.366667 vt 0.531250 0.100000 vt 0.000000 0.366667 vt 0.046875 -0.000000 vt 0.656250 0.200000 vt 0.648438 0.733333 -vt 0.648438 0.733333 -vt 0.648438 0.733333 -vt 0.648438 0.733333 vt 0.621094 0.200000 -vt 0.531250 0.200000 -vt 0.890625 0.700000 -vt 0.890625 0.566667 -vt 0.656250 0.700000 -vt 0.890625 0.700000 -vt 0.656250 0.566667 vt 0.695312 0.566667 vt 0.875000 0.516667 vt 0.843750 0.433333 -vt 0.835938 0.450000 -vt 0.695312 0.566667 -vt 0.835938 0.450000 -vt 0.843750 0.433333 -vt 0.875000 0.516667 vt 0.667969 0.366667 vt 0.914062 0.391667 vt 0.656250 0.408333 vt 0.902344 0.433333 -vt 0.902344 0.433333 -vt 0.914062 0.391667 -vt 0.656250 0.408333 -vt 0.667969 0.366667 vt 0.921875 0.200000 vt 0.929688 0.400000 vt 0.921875 0.400000 @@ -522,113 +469,11 @@ vt 0.945312 0.400000 vt 0.937500 0.400000 vt 0.968750 0.200000 vt 0.976562 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.937500 0.400000 -vt 0.929688 0.200000 -vt 0.929688 0.400000 -vt 0.914062 0.200000 -vt 0.921875 0.400000 -vt 0.914062 0.400000 -vt 0.921875 0.200000 -vt 0.921875 0.400000 -vt 0.921875 0.200000 -vt 0.929688 0.400000 -vt 0.914062 0.200000 -vt 0.914062 0.400000 -vt 0.929688 0.200000 -vt 0.937500 0.400000 -vt 0.953125 0.200000 -vt 0.960938 0.400000 -vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.960938 0.200000 -vt 0.945312 0.200000 -vt 0.953125 0.400000 -vt 0.929688 0.200000 -vt 0.945312 0.200000 -vt 0.953125 0.200000 -vt 0.914062 0.200000 -vt 0.914062 0.400000 -vt 0.953125 0.200000 -vt 0.960938 0.400000 -vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.960938 0.200000 -vt 0.945312 0.200000 -vt 0.921875 0.200000 -vt 0.929688 0.400000 -vt 0.921875 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.937500 0.400000 vt 0.929688 0.200000 vt 0.914062 0.200000 vt 0.914062 0.400000 vt 0.953125 0.200000 -vt 0.960938 0.400000 vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.960938 0.200000 -vt 0.945312 0.200000 -vt 0.921875 0.200000 -vt 0.929688 0.400000 -vt 0.921875 0.400000 -vt 0.960938 0.200000 -vt 0.968750 0.400000 -vt 0.960938 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.937500 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.937500 0.400000 -vt 0.929688 0.200000 -vt 0.929688 0.400000 -vt 0.914062 0.200000 -vt 0.921875 0.400000 -vt 0.914062 0.400000 -vt 0.921875 0.200000 -vt 0.921875 0.400000 -vt 0.921875 0.200000 -vt 0.929688 0.400000 -vt 0.914062 0.200000 -vt 0.914062 0.400000 -vt 0.929688 0.200000 -vt 0.937500 0.400000 -vt 0.953125 0.200000 -vt 0.960938 0.400000 -vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.937500 0.200000 -vt 0.945312 0.400000 -vt 0.960938 0.200000 -vt 0.945312 0.200000 -vt 0.953125 0.400000 -vt 0.929688 0.200000 -vt 0.945312 0.200000 -vt 0.953125 0.200000 -vt 0.914062 0.200000 -vt 0.914062 0.400000 -vt 0.953125 0.200000 -vt 0.960938 0.400000 -vt 0.953125 0.400000 -vt 0.968750 0.200000 -vt 0.976562 0.400000 -vt 0.968750 0.400000 -vt 0.960938 0.200000 vt 0.945312 0.200000 vt 0.695312 0.341667 vt 0.703125 0.333333 @@ -655,42 +500,6 @@ vt 0.742188 0.325000 vt 0.742188 0.200000 vt 0.750000 0.308333 vt 0.742188 0.308333 -vt 0.718750 0.358333 -vt 0.726562 0.333333 -vt 0.726562 0.358333 -vt 0.734375 0.200000 -vt 0.734375 0.308333 -vt 0.695312 0.200000 -vt 0.703125 0.308333 -vt 0.695312 0.308333 -vt 0.718750 0.200000 -vt 0.718750 0.308333 -vt 0.703125 0.200000 -vt 0.695312 0.341667 -vt 0.703125 0.333333 -vt 0.703125 0.350000 -vt 0.687500 0.200000 -vt 0.687500 0.308333 -vt 0.710938 0.333333 -vt 0.710938 0.358333 -vt 0.718750 0.333333 -vt 0.726562 0.308333 -vt 0.703125 0.316667 -vt 0.734375 0.333333 -vt 0.742188 0.341667 -vt 0.734375 0.350000 -vt 0.734375 0.316667 -vt 0.742188 0.333333 -vt 0.710938 0.200000 -vt 0.695312 0.333333 -vt 0.710938 0.308333 -vt 0.687500 0.333333 -vt 0.695312 0.325000 -vt 0.750000 0.333333 -vt 0.742188 0.325000 -vt 0.742188 0.200000 -vt 0.750000 0.308333 -vt 0.742188 0.308333 vt 0.734375 0.200000 vt 0.734375 0.308333 vt 0.695312 0.200000 @@ -704,511 +513,434 @@ vt 0.687500 0.308333 vt 0.710938 0.200000 vt 0.687500 0.366667 vt 0.679688 0.200000 -vt 0.687500 0.200000 vt 0.679688 0.366667 -vt 0.671875 0.200000 vt 0.671875 0.366667 vt 0.664062 0.200000 vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.679688 0.200000 -vt 0.687500 0.366667 -vt 0.687500 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.679688 0.200000 -vt 0.687500 0.366667 -vt 0.687500 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.687500 0.366667 -vt 0.679688 0.200000 -vt 0.687500 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.687500 0.366667 -vt 0.679688 0.200000 -vt 0.687500 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.687500 0.366667 -vt 0.679688 0.200000 -vt 0.687500 0.200000 -vt 0.679688 0.366667 -vt 0.671875 0.200000 -vt 0.671875 0.366667 -vt 0.664062 0.200000 -vt 0.664062 0.366667 -vt 0.656250 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 -vt 0.976562 0.200000 vt 0.976562 0.200000 vt 0.750000 0.200000 vt 0.726562 0.200000 -vt 0.750000 0.200000 -vt 0.726562 0.200000 vt 0.656250 0.366667 -vt 0.656250 0.366667 -vt 0.656250 0.366667 -vt 0.656250 0.366667 -vt 0.656250 0.366667 -vt 0.656250 0.366667 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 0.0000 1.0000 -vn 1.0000 0.0000 0.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.7071 -0.7071 -vn -0.0000 -0.7071 0.7071 -vn -0.0000 -0.7071 -0.7071 -vn -0.0000 0.7071 0.7071 -vn -0.7311 0.2611 0.6303 -vn -0.9955 -0.0000 -0.0949 -vn -0.9947 -0.0393 -0.0948 -vn -0.6333 -0.2962 -0.7150 -vn -0.0000 -0.3827 -0.9239 -vn 0.6333 -0.2962 -0.7150 -vn 0.9955 -0.0000 -0.0949 -vn 0.7311 0.2611 0.6303 -vn 0.9947 -0.0393 -0.0948 -vn -0.6630 -0.0000 -0.7486 -vn 0.6630 -0.0000 -0.7486 -vn 0.6794 0.4063 -0.6110 -vn 0.9987 0.0196 -0.0473 -vn 0.7574 -0.0000 0.6530 -vn -0.9987 0.0196 -0.0473 -vn -0.7263 -0.3800 0.5728 -vn -0.7574 -0.0000 0.6530 -vn -0.6794 0.4063 -0.6110 -vn 0.0000 -0.5562 0.8311 -vn 0.7263 -0.3800 0.5728 -vn 0.7071 -0.5000 0.5000 -vn -0.7071 -0.5000 0.5000 -vn 0.0000 0.5628 -0.8266 -vn -0.7071 0.5000 -0.5000 -vn 0.3827 0.0000 -0.9239 -vn 0.7071 0.0000 -0.7071 -vn 0.7071 0.0000 0.7071 -vn 0.3827 0.0000 0.9239 -vn -0.3827 0.0000 0.9239 -vn -0.7071 0.0000 0.7071 -vn -0.7071 0.0000 -0.7071 -vn -0.3827 0.0000 -0.9239 -vn 0.7071 0.5000 -0.5000 -s off +s 0 +usemtl f 3/1/1 2/2/1 1/3/1 -f 5/4/2 36/5/2 8/6/2 +f 5/4/2 35/5/2 8/6/2 f 3/1/3 8/7/3 4/8/3 f 2/2/4 6/9/4 1/3/4 f 4/8/5 7/10/5 2/2/5 f 1/3/6 5/11/6 3/1/6 f 12/12/4 9/13/4 10/14/4 -f 13/15/3 16/16/3 14/17/3 -f 10/18/5 16/19/5 12/20/5 -f 9/21/1 14/22/1 10/18/1 -f 11/23/6 13/24/6 9/25/6 -f 11/23/2 19/26/2 15/27/2 -f 17/28/5 23/29/5 19/26/5 -f 16/19/2 18/30/2 12/20/2 -f 15/31/2 20/32/2 16/16/2 -f 12/12/2 17/33/2 11/34/2 -f 22/35/2 23/36/2 21/37/2 -f 19/38/4 24/39/4 20/32/4 -f 20/40/6 22/35/6 18/30/6 -f 18/41/3 21/42/3 17/33/3 -f 36/43/6 39/44/6 35/45/6 -f 7/10/2 34/46/2 6/47/2 -f 31/48/5 32/49/5 49/50/5 -f 27/51/6 29/52/6 30/53/6 -f 49/50/3 29/52/3 50/54/3 -f 25/55/4 31/56/4 26/57/4 -f 8/6/2 35/58/2 7/10/2 -f 6/47/2 33/59/2 5/4/2 -f 39/44/2 37/60/2 38/61/2 -f 34/62/5 37/60/5 33/63/5 -f 33/64/4 40/65/4 36/66/4 -f 35/67/3 38/61/3 34/68/3 -f 43/69/1 42/70/1 41/71/1 -f 47/72/2 45/73/2 46/74/2 -f 43/75/3 48/76/3 44/77/3 -f 44/78/5 47/79/5 42/80/5 -f 41/81/6 45/82/6 43/83/6 -f 28/84/7 50/54/7 27/85/7 -f 167/86/6 163/87/6 172/88/6 -f 193/89/3 190/90/3 189/91/3 -f 165/92/3 170/93/3 166/94/3 -f 170/95/5 164/96/5 166/97/5 -f 188/98/6 194/99/6 192/100/6 -f 173/101/4 163/102/4 164/103/4 -f 174/104/1 187/105/1 171/106/1 -f 188/107/4 191/108/4 187/105/4 -f 171/109/5 189/91/5 168/110/5 -f 181/111/2 172/88/2 173/101/2 -f 171/109/5 179/112/5 177/113/5 -f 187/114/5 193/115/5 189/91/5 -f 167/116/1 175/117/1 170/93/1 -f 189/91/2 169/118/2 168/110/2 -f 176/119/6 186/120/6 184/121/6 -f 170/95/5 181/111/5 173/101/5 -f 172/88/6 176/119/6 167/86/6 -f 168/110/4 180/122/4 179/123/4 -f 169/118/6 188/98/6 174/124/6 -f 174/124/6 180/125/6 169/118/6 -f 175/126/5 185/127/5 181/111/5 -f 176/128/4 183/129/4 175/117/4 -f 178/130/3 171/106/3 177/131/3 -f 185/132/3 182/133/3 181/111/3 -f 201/134/2 198/135/2 197/136/2 -f 200/137/2 195/138/2 196/139/2 -f 197/136/5 210/140/5 201/134/5 -f 200/137/3 207/141/3 199/142/3 -f 195/138/4 204/143/4 196/139/4 -f 199/142/6 203/144/6 195/138/6 -f 202/145/6 205/146/6 198/135/6 -f 201/134/3 209/147/3 202/145/3 -f 198/135/4 206/148/4 197/136/4 -f 196/139/5 208/149/5 200/137/5 +f 13/14/3 16/15/3 14/13/3 +f 10/13/5 16/12/5 12/15/5 +f 9/16/1 14/14/1 10/13/1 +f 11/12/6 13/13/6 9/14/6 +f 11/12/2 19/17/2 15/15/2 +f 17/18/5 23/19/5 19/17/5 +f 16/12/2 18/17/2 12/15/2 +f 15/12/2 20/17/2 16/15/2 +f 12/12/2 17/17/2 11/15/2 +f 22/19/2 23/20/2 21/21/2 +f 19/18/4 24/19/4 20/17/4 +f 20/18/6 22/19/6 18/17/6 +f 18/18/3 21/19/3 17/17/3 +f 35/22/6 37/23/6 34/24/6 +f 7/10/2 33/25/2 6/26/2 +f 37/27/5 31/28/5 39/29/5 +f 27/30/6 29/31/6 30/32/6 +f 39/29/3 29/31/3 40/33/3 +f 25/34/4 37/35/4 26/36/4 +f 8/6/2 34/37/2 7/10/2 +f 6/26/2 32/38/2 5/4/2 +f 37/23/2 36/39/2 30/40/2 +f 33/41/5 36/39/5 32/42/5 +f 32/43/4 38/44/4 35/45/4 +f 34/46/3 30/40/3 33/47/3 +f 28/48/7 40/33/7 27/49/7 +f 157/50/6 153/51/6 162/52/6 +f 183/53/3 180/54/3 179/55/3 +f 155/56/3 160/57/3 156/58/3 +f 160/59/5 154/60/5 156/57/5 +f 178/61/6 184/62/6 182/63/6 +f 163/64/4 153/65/4 154/66/4 +f 164/67/1 177/68/1 161/57/1 +f 178/69/4 181/70/4 177/68/4 +f 161/59/5 179/55/5 158/64/5 +f 171/55/2 162/52/2 163/64/2 +f 161/59/5 169/60/5 167/57/5 +f 177/71/5 183/72/5 179/55/5 +f 157/67/1 165/68/1 160/57/1 +f 179/55/2 159/52/2 158/64/2 +f 166/61/6 176/62/6 174/63/6 +f 160/59/5 171/55/5 163/64/5 +f 162/52/6 166/61/6 157/50/6 +f 158/64/4 170/65/4 169/66/4 +f 159/52/6 178/61/6 164/50/6 +f 164/50/6 170/51/6 159/52/6 +f 165/71/5 175/72/5 171/55/5 +f 166/69/4 173/70/4 165/68/4 +f 168/56/3 161/57/3 167/58/3 +f 175/53/3 172/54/3 171/55/3 +f 191/73/2 188/74/2 187/75/2 +f 190/73/2 185/74/2 186/75/2 +f 187/75/5 200/76/5 191/73/5 +f 190/73/3 197/77/3 189/78/3 +f 185/74/4 194/79/4 186/75/4 +f 189/78/6 193/80/6 185/74/6 +f 192/78/6 195/80/6 188/74/6 +f 191/73/3 199/77/3 192/78/3 +f 188/74/4 196/79/4 187/75/4 +f 186/75/5 198/76/5 190/73/5 f 3/1/1 4/8/1 2/2/1 -f 5/4/2 33/59/2 36/5/2 -f 3/1/3 5/150/3 8/7/3 -f 2/2/4 7/151/4 6/9/4 +f 5/4/2 32/38/2 35/5/2 +f 3/1/3 5/81/3 8/7/3 +f 2/2/4 7/82/4 6/9/4 f 4/8/5 8/6/5 7/10/5 -f 1/3/6 6/152/6 5/11/6 -f 12/12/4 11/34/4 9/13/4 -f 13/15/3 15/31/3 16/16/3 -f 10/18/5 14/22/5 16/19/5 -f 9/21/1 13/153/1 14/22/1 -f 11/23/6 15/27/6 13/24/6 -f 11/23/2 17/28/2 19/26/2 -f 17/28/5 21/154/5 23/29/5 -f 16/19/2 20/40/2 18/30/2 -f 15/31/2 19/38/2 20/32/2 -f 12/12/2 18/41/2 17/33/2 -f 22/35/2 24/155/2 23/36/2 -f 19/38/4 23/156/4 24/39/4 -f 20/40/6 24/155/6 22/35/6 -f 18/41/3 22/157/3 21/42/3 -f 36/43/6 40/65/6 39/44/6 -f 7/10/2 35/58/2 34/46/2 -f 49/50/5 28/158/5 31/48/5 -f 28/158/5 26/159/5 31/48/5 -f 30/53/6 25/55/6 27/51/6 -f 27/51/6 50/54/6 29/52/6 -f 49/50/3 32/49/3 29/52/3 -f 25/55/4 30/53/4 31/56/4 -f 8/6/2 36/5/2 35/58/2 -f 6/47/2 34/46/2 33/59/2 -f 39/44/2 40/65/2 37/60/2 -f 34/62/5 38/61/5 37/60/5 -f 33/64/4 37/60/4 40/65/4 -f 35/67/3 39/44/3 38/61/3 -f 43/69/1 44/160/1 42/70/1 -f 47/72/2 48/161/2 45/73/2 -f 43/75/3 45/162/3 48/76/3 -f 44/78/5 48/163/5 47/79/5 -f 41/81/6 46/164/6 45/82/6 -f 28/84/7 49/50/7 50/54/7 -f 167/86/6 165/165/6 163/87/6 -f 193/89/3 194/166/3 190/90/3 -f 165/92/3 167/116/3 170/93/3 -f 170/95/5 173/101/5 164/96/5 -f 188/98/6 190/90/6 194/99/6 -f 173/101/4 172/88/4 163/102/4 -f 174/104/1 188/107/1 187/105/1 -f 188/107/4 192/167/4 191/108/4 -f 171/109/5 187/114/5 189/91/5 -f 181/111/2 182/133/2 172/88/2 -f 171/109/5 168/110/5 179/112/5 -f 187/114/5 191/168/5 193/115/5 -f 167/116/1 176/128/1 175/117/1 -f 189/91/2 190/90/2 169/118/2 -f 176/119/6 182/133/6 186/120/6 -f 170/95/5 175/126/5 181/111/5 -f 172/88/6 182/133/6 176/119/6 -f 168/110/4 169/118/4 180/122/4 -f 169/118/6 190/90/6 188/98/6 -f 174/124/6 178/169/6 180/125/6 -f 175/126/5 183/170/5 185/127/5 -f 176/128/4 184/171/4 183/129/4 -f 178/130/3 174/104/3 171/106/3 -f 185/132/3 186/172/3 182/133/3 -f 201/134/2 202/145/2 198/135/2 -f 200/137/2 199/142/2 195/138/2 -f 197/136/5 206/173/5 210/140/5 -f 200/137/3 208/174/3 207/141/3 -f 195/138/4 203/175/4 204/143/4 -f 199/142/6 207/176/6 203/144/6 -f 202/145/6 209/177/6 205/146/6 -f 201/134/3 210/178/3 209/147/3 -f 198/135/4 205/179/4 206/148/4 -f 196/139/5 204/180/5 208/149/5 +f 1/3/6 6/83/6 5/11/6 +f 12/12/4 11/15/4 9/13/4 +f 13/14/3 15/12/3 16/15/3 +f 10/13/5 14/14/5 16/12/5 +f 9/16/1 13/84/1 14/14/1 +f 11/12/6 15/15/6 13/13/6 +f 11/12/2 17/18/2 19/17/2 +f 17/18/5 21/85/5 23/19/5 +f 16/12/2 20/18/2 18/17/2 +f 15/12/2 19/18/2 20/17/2 +f 12/12/2 18/18/2 17/17/2 +f 22/19/2 24/85/2 23/20/2 +f 19/18/4 23/85/4 24/19/4 +f 20/18/6 24/85/6 22/19/6 +f 18/18/3 22/85/3 21/19/3 +f 35/22/6 38/44/6 37/23/6 +f 7/10/2 34/37/2 33/25/2 +f 39/29/5 28/86/5 37/27/5 +f 28/86/5 26/16/5 37/27/5 +f 30/32/6 25/34/6 27/30/6 +f 27/30/6 40/33/6 29/31/6 +f 39/29/3 31/28/3 29/31/3 +f 25/34/4 30/32/4 37/35/4 +f 8/6/2 35/5/2 34/37/2 +f 6/26/2 33/25/2 32/38/2 +f 37/23/2 38/44/2 36/39/2 +f 33/41/5 30/40/5 36/39/5 +f 32/43/4 36/39/4 38/44/4 +f 34/46/3 37/23/3 30/40/3 +f 28/48/7 39/29/7 40/33/7 +f 157/50/6 155/87/6 153/51/6 +f 183/53/3 184/88/3 180/54/3 +f 155/56/3 157/67/3 160/57/3 +f 160/59/5 163/64/5 154/60/5 +f 178/61/6 180/54/6 184/62/6 +f 163/64/4 162/52/4 153/65/4 +f 164/67/1 178/69/1 177/68/1 +f 178/69/4 182/89/4 181/70/4 +f 161/59/5 177/71/5 179/55/5 +f 171/55/2 172/54/2 162/52/2 +f 161/59/5 158/64/5 169/60/5 +f 177/71/5 181/68/5 183/72/5 +f 157/67/1 166/69/1 165/68/1 +f 179/55/2 180/54/2 159/52/2 +f 166/61/6 172/54/6 176/62/6 +f 160/59/5 165/71/5 171/55/5 +f 162/52/6 172/54/6 166/61/6 +f 158/64/4 159/52/4 170/65/4 +f 159/52/6 180/54/6 178/61/6 +f 164/50/6 168/87/6 170/51/6 +f 165/71/5 173/68/5 175/72/5 +f 166/69/4 174/89/4 173/70/4 +f 168/56/3 164/67/3 161/57/3 +f 175/53/3 176/88/3 172/54/3 +f 191/73/2 192/78/2 188/74/2 +f 190/73/2 189/78/2 185/74/2 +f 187/75/5 196/90/5 200/76/5 +f 190/73/3 198/91/3 197/77/3 +f 185/74/4 193/92/4 194/79/4 +f 189/78/6 197/93/6 193/80/6 +f 192/78/6 199/93/6 195/80/6 +f 191/73/3 200/91/3 199/77/3 +f 188/74/4 195/92/4 196/79/4 +f 186/75/5 194/90/5 198/76/5 s 1 -f 90/181/8 91/182/4 89/183/8 -f 54/184/3 55/185/9 53/186/3 -f 78/187/10 79/188/2 77/189/10 -f 56/190/9 57/191/1 55/185/9 -f 94/192/10 95/193/2 93/194/10 -f 76/195/4 77/189/10 75/196/4 -f 58/197/1 59/198/8 57/199/1 -f 74/200/8 75/196/4 73/201/8 -f 60/202/8 61/203/4 59/198/8 -f 72/204/1 73/201/8 71/205/1 -f 62/206/4 63/207/10 61/203/4 -f 82/208/7 52/209/3 81/210/7 -f 70/211/9 71/212/1 69/213/9 -f 64/214/10 65/215/2 63/207/10 -f 51/216/3 69/213/9 52/209/3 -f 66/217/2 67/218/7 65/215/2 -f 92/219/4 93/194/10 91/182/4 -f 80/220/2 81/210/7 79/188/2 -f 68/221/7 53/186/3 67/218/7 -f 88/222/1 89/183/8 87/223/1 -f 98/224/7 84/225/3 97/226/7 -f 86/227/9 87/228/1 85/229/9 -f 83/230/3 85/229/9 84/225/3 -f 96/231/2 97/226/7 95/193/2 -f 106/232/8 107/233/4 105/234/8 -f 110/235/10 111/236/2 109/237/10 -f 108/238/4 109/237/10 107/233/4 -f 104/239/1 105/234/8 103/240/1 -f 114/241/7 100/242/3 113/243/7 -f 102/244/9 103/245/1 101/246/9 -f 99/247/3 101/246/9 100/242/3 -f 112/248/2 113/243/7 111/236/2 -f 154/249/8 155/250/4 153/251/8 -f 118/252/3 119/253/9 117/254/3 -f 142/255/10 143/256/2 141/257/10 -f 120/258/9 121/259/1 119/253/9 -f 158/260/10 159/261/2 157/262/10 -f 140/263/4 141/257/10 139/264/4 -f 122/265/1 123/266/8 121/267/1 -f 138/268/8 139/264/4 137/269/8 -f 124/270/8 125/271/4 123/266/8 -f 136/272/1 137/269/8 135/273/1 -f 126/274/4 127/275/10 125/271/4 -f 146/276/7 116/277/3 145/278/7 -f 134/279/9 135/280/1 133/281/9 -f 128/282/10 129/283/2 127/275/10 -f 115/284/3 133/281/9 116/277/3 -f 130/285/2 131/286/7 129/283/2 -f 156/287/4 157/262/10 155/250/4 -f 144/288/2 145/278/7 143/256/2 -f 132/289/7 117/254/3 131/286/7 -f 152/290/1 153/251/8 151/291/1 -f 162/292/7 148/293/3 161/294/7 -f 150/295/9 151/296/1 149/297/9 -f 147/298/3 149/297/9 148/293/3 -f 160/299/2 161/294/7 159/261/2 -f 214/300/11 221/301/12 213/302/13 -f 212/303/14 219/304/3 211/305/15 -f 219/304/3 218/306/16 211/305/15 -f 224/307/17 216/308/18 217/309/19 -f 213/302/13 220/310/20 212/303/14 -f 225/311/21 217/309/19 218/306/16 -f 219/304/3 232/312/22 225/311/21 -f 231/313/23 223/314/24 224/307/17 -f 228/315/25 220/310/20 221/301/12 -f 225/311/21 231/313/23 224/307/17 -f 229/316/26 221/301/12 222/317/27 -f 227/318/28 219/304/3 220/310/20 -f 214/300/11 215/319/29 222/317/27 -f 222/317/27 215/319/29 229/316/26 -f 215/320/29 216/308/18 223/314/24 -f 223/314/24 230/321/30 215/320/29 -f 246/322/31 215/323/29 230/324/30 -f 240/325/15 255/326/21 233/327/16 -f 232/312/22 245/328/5 231/329/23 -f 244/330/32 228/331/25 229/332/26 -f 242/333/7 232/312/22 226/334/33 -f 245/328/5 230/324/30 231/329/23 -f 243/335/6 227/318/28 228/331/25 -f 237/336/11 251/337/12 238/338/13 -f 248/339/8 229/332/26 215/340/29 -f 238/338/13 250/341/20 239/342/14 -f 249/343/3 262/344/22 255/326/21 -f 258/345/25 250/341/20 251/337/12 -f 250/341/20 240/325/15 239/342/14 -f 254/346/17 235/347/18 234/348/19 -f 255/326/21 234/348/19 233/327/16 -f 261/349/23 253/350/24 254/346/17 -f 241/351/34 226/334/33 227/318/28 -f 255/326/21 261/349/23 254/346/17 -f 252/352/27 258/345/25 251/337/12 -f 257/353/28 249/343/3 250/341/20 -f 237/336/11 236/354/29 252/352/27 -f 252/352/27 236/354/29 259/355/26 -f 236/356/29 235/347/18 253/350/24 -f 253/350/24 260/357/30 236/356/29 -f 268/358/31 236/359/29 260/360/30 -f 262/344/22 267/361/5 261/362/23 -f 266/363/32 258/364/25 259/365/26 -f 264/366/7 262/344/22 256/367/33 -f 267/361/5 260/360/30 261/362/23 -f 265/368/6 257/353/28 258/364/25 -f 270/369/8 259/365/26 236/370/29 -f 263/371/34 256/367/33 257/353/28 -f 272/372/35 273/373/36 271/374/35 -f 274/375/36 275/376/5 273/373/36 -f 276/377/5 277/378/37 275/376/5 -f 278/379/37 279/380/38 277/378/37 -f 284/381/36 285/382/5 283/383/36 -f 282/384/35 283/383/36 281/385/35 -f 286/386/5 287/387/37 285/382/5 -f 288/388/37 289/389/38 287/387/37 -f 294/390/36 295/391/5 293/392/36 -f 292/393/35 293/392/36 291/394/35 -f 296/395/5 297/396/37 295/391/5 -f 298/397/37 299/398/38 297/396/37 -f 304/399/39 305/400/40 303/401/39 -f 306/402/40 307/403/6 305/400/40 -f 308/404/6 309/405/41 307/403/6 -f 310/406/41 301/407/42 309/405/41 -f 314/408/39 315/409/40 313/410/39 -f 316/411/40 317/412/6 315/409/40 -f 318/413/6 319/414/41 317/412/6 -f 320/415/41 311/416/42 319/414/41 -f 324/417/39 325/418/40 323/419/39 -f 326/420/40 327/421/6 325/418/40 -f 328/422/6 329/423/41 327/421/6 -f 330/424/41 321/425/42 329/423/41 -f 90/181/8 92/219/4 91/182/4 -f 54/184/3 56/190/9 55/185/9 -f 78/187/10 80/220/2 79/188/2 -f 56/190/9 58/426/1 57/191/1 -f 94/192/10 96/231/2 95/193/2 -f 76/195/4 78/187/10 77/189/10 -f 58/197/1 60/202/8 59/198/8 -f 74/200/8 76/195/4 75/196/4 -f 60/202/8 62/206/4 61/203/4 -f 72/204/1 74/200/8 73/201/8 -f 62/206/4 64/214/10 63/207/10 -f 82/208/7 51/216/3 52/209/3 -f 70/211/9 72/427/1 71/212/1 -f 64/214/10 66/217/2 65/215/2 -f 51/216/3 70/211/9 69/213/9 -f 66/217/2 68/221/7 67/218/7 -f 92/219/4 94/192/10 93/194/10 -f 80/220/2 82/208/7 81/210/7 -f 68/221/7 54/184/3 53/186/3 -f 88/222/1 90/181/8 89/183/8 -f 98/224/7 83/230/3 84/225/3 -f 86/227/9 88/428/1 87/228/1 -f 83/230/3 86/227/9 85/229/9 -f 96/231/2 98/224/7 97/226/7 -f 106/232/8 108/238/4 107/233/4 -f 110/235/10 112/248/2 111/236/2 -f 108/238/4 110/235/10 109/237/10 -f 104/239/1 106/232/8 105/234/8 -f 114/241/7 99/247/3 100/242/3 -f 102/244/9 104/429/1 103/245/1 -f 99/247/3 102/244/9 101/246/9 -f 112/248/2 114/241/7 113/243/7 -f 154/249/8 156/287/4 155/250/4 -f 118/252/3 120/258/9 119/253/9 -f 142/255/10 144/288/2 143/256/2 -f 120/258/9 122/430/1 121/259/1 -f 158/260/10 160/299/2 159/261/2 -f 140/263/4 142/255/10 141/257/10 -f 122/265/1 124/270/8 123/266/8 -f 138/268/8 140/263/4 139/264/4 -f 124/270/8 126/274/4 125/271/4 -f 136/272/1 138/268/8 137/269/8 -f 126/274/4 128/282/10 127/275/10 -f 146/276/7 115/284/3 116/277/3 -f 134/279/9 136/431/1 135/280/1 -f 128/282/10 130/285/2 129/283/2 -f 115/284/3 134/279/9 133/281/9 -f 130/285/2 132/289/7 131/286/7 -f 156/287/4 158/260/10 157/262/10 -f 144/288/2 146/276/7 145/278/7 -f 132/289/7 118/252/3 117/254/3 -f 152/290/1 154/249/8 153/251/8 -f 162/292/7 147/298/3 148/293/3 -f 150/295/9 152/432/1 151/296/1 -f 147/298/3 150/295/9 149/297/9 -f 160/299/2 162/292/7 161/294/7 -f 214/300/11 222/317/27 221/301/12 -f 212/303/14 220/310/20 219/304/3 -f 219/304/3 225/311/21 218/306/16 -f 224/307/17 223/314/24 216/308/18 -f 213/302/13 221/301/12 220/310/20 -f 225/311/21 224/307/17 217/309/19 -f 219/304/3 226/334/33 232/312/22 -f 231/313/23 230/321/30 223/314/24 -f 228/315/25 227/318/28 220/310/20 -f 225/311/21 232/312/22 231/313/23 -f 229/316/26 228/315/25 221/301/12 -f 227/318/28 226/334/33 219/304/3 -f 246/322/31 248/433/8 215/323/29 -f 240/325/15 249/343/3 255/326/21 -f 232/312/22 247/434/43 245/328/5 -f 244/330/32 243/335/6 228/331/25 -f 242/333/7 247/434/43 232/312/22 -f 245/328/5 246/322/31 230/324/30 -f 243/335/6 241/351/34 227/318/28 -f 237/336/11 252/352/27 251/337/12 -f 248/339/8 244/330/32 229/332/26 -f 238/338/13 251/337/12 250/341/20 -f 249/343/3 256/367/33 262/344/22 -f 258/345/25 257/353/28 250/341/20 -f 250/341/20 249/343/3 240/325/15 -f 254/346/17 253/350/24 235/347/18 -f 255/326/21 254/346/17 234/348/19 -f 261/349/23 260/357/30 253/350/24 -f 241/351/34 242/333/7 226/334/33 -f 255/326/21 262/344/22 261/349/23 -f 252/352/27 259/355/26 258/345/25 -f 257/353/28 256/367/33 249/343/3 -f 268/358/31 270/435/8 236/359/29 -f 262/344/22 269/436/43 267/361/5 -f 266/363/32 265/368/6 258/364/25 -f 264/366/7 269/436/43 262/344/22 -f 267/361/5 268/358/31 260/360/30 -f 265/368/6 263/371/34 257/353/28 -f 270/369/8 266/363/32 259/365/26 -f 263/371/34 264/366/7 256/367/33 -f 272/372/35 274/375/36 273/373/36 -f 274/375/36 276/377/5 275/376/5 -f 276/377/5 278/379/37 277/378/37 -f 278/379/37 280/437/38 279/380/38 -f 284/381/36 286/386/5 285/382/5 -f 282/384/35 284/381/36 283/383/36 -f 286/386/5 288/388/37 287/387/37 -f 288/388/37 290/438/38 289/389/38 -f 294/390/36 296/395/5 295/391/5 -f 292/393/35 294/390/36 293/392/36 -f 296/395/5 298/397/37 297/396/37 -f 298/397/37 300/439/38 299/398/38 -f 304/399/39 306/402/40 305/400/40 -f 306/402/40 308/404/6 307/403/6 -f 308/404/6 310/406/41 309/405/41 -f 310/406/41 302/440/42 301/407/42 -f 314/408/39 316/411/40 315/409/40 -f 316/411/40 318/413/6 317/412/6 -f 318/413/6 320/415/41 319/414/41 -f 320/415/41 312/441/42 311/416/42 -f 324/417/39 326/420/40 325/418/40 -f 326/420/40 328/422/6 327/421/6 -f 328/422/6 330/424/41 329/423/41 -f 330/424/41 322/442/42 321/425/42 +f 80/94/8 81/95/4 79/96/8 +f 44/97/3 45/98/9 43/99/3 +f 68/100/10 69/101/2 67/102/10 +f 46/103/9 47/104/1 45/98/9 +f 84/100/10 85/101/2 83/102/10 +f 66/105/4 67/102/10 65/95/4 +f 48/106/1 49/96/8 47/107/1 +f 64/94/8 65/95/4 63/96/8 +f 50/94/8 51/95/4 49/96/8 +f 62/106/1 63/96/8 61/107/1 +f 52/105/4 53/102/10 51/95/4 +f 72/108/7 42/99/3 71/109/7 +f 60/103/9 61/104/1 59/98/9 +f 54/100/10 55/101/2 53/102/10 +f 41/97/3 59/98/9 42/99/3 +f 56/110/2 57/109/7 55/101/2 +f 82/105/4 83/102/10 81/95/4 +f 70/110/2 71/109/7 69/101/2 +f 58/108/7 43/99/3 57/109/7 +f 78/106/1 79/96/8 77/107/1 +f 88/108/7 74/99/3 87/109/7 +f 76/103/9 77/104/1 75/98/9 +f 73/97/3 75/98/9 74/99/3 +f 86/110/2 87/109/7 85/101/2 +f 96/94/8 97/95/4 95/96/8 +f 100/100/10 101/101/2 99/102/10 +f 98/105/4 99/102/10 97/95/4 +f 94/106/1 95/96/8 93/107/1 +f 104/108/7 90/99/3 103/109/7 +f 92/103/9 93/104/1 91/98/9 +f 89/97/3 91/98/9 90/99/3 +f 102/110/2 103/109/7 101/101/2 +f 144/94/8 145/95/4 143/96/8 +f 108/97/3 109/98/9 107/99/3 +f 132/100/10 133/101/2 131/102/10 +f 110/103/9 111/104/1 109/98/9 +f 148/100/10 149/101/2 147/102/10 +f 130/105/4 131/102/10 129/95/4 +f 112/106/1 113/96/8 111/107/1 +f 128/94/8 129/95/4 127/96/8 +f 114/94/8 115/95/4 113/96/8 +f 126/106/1 127/96/8 125/107/1 +f 116/105/4 117/102/10 115/95/4 +f 136/108/7 106/99/3 135/109/7 +f 124/103/9 125/104/1 123/98/9 +f 118/100/10 119/101/2 117/102/10 +f 105/97/3 123/98/9 106/99/3 +f 120/110/2 121/109/7 119/101/2 +f 146/105/4 147/102/10 145/95/4 +f 134/110/2 135/109/7 133/101/2 +f 122/108/7 107/99/3 121/109/7 +f 142/106/1 143/96/8 141/107/1 +f 152/108/7 138/99/3 151/109/7 +f 140/103/9 141/104/1 139/98/9 +f 137/97/3 139/98/9 138/99/3 +f 150/110/2 151/109/7 149/101/2 +f 204/111/11 211/112/12 203/113/13 +f 202/114/14 209/115/3 201/116/15 +f 209/115/3 208/117/16 201/116/15 +f 214/118/17 206/119/18 207/120/19 +f 203/113/13 210/121/20 202/114/14 +f 215/122/21 207/120/19 208/117/16 +f 209/115/3 222/123/22 215/122/21 +f 221/124/23 213/125/24 214/118/17 +f 218/126/25 210/121/20 211/112/12 +f 215/122/21 221/124/23 214/118/17 +f 219/127/26 211/112/12 212/128/27 +f 217/129/28 209/115/3 210/121/20 +f 204/111/11 205/130/29 212/128/27 +f 212/128/27 205/130/29 219/127/26 +f 205/131/29 206/119/18 213/125/24 +f 213/125/24 220/132/30 205/131/29 +f 236/133/31 205/134/29 220/135/30 +f 230/116/15 245/122/21 223/117/16 +f 222/123/22 235/136/5 221/137/23 +f 234/138/32 218/139/25 219/140/26 +f 232/141/7 222/123/22 216/142/33 +f 235/136/5 220/135/30 221/137/23 +f 233/143/6 217/129/28 218/139/25 +f 227/111/11 241/112/12 228/113/13 +f 238/144/8 219/140/26 205/145/29 +f 228/113/13 240/121/20 229/114/14 +f 239/115/3 252/123/22 245/122/21 +f 248/126/25 240/121/20 241/112/12 +f 240/121/20 230/116/15 229/114/14 +f 244/118/17 225/119/18 224/120/19 +f 245/122/21 224/120/19 223/117/16 +f 251/124/23 243/125/24 244/118/17 +f 231/146/34 216/142/33 217/129/28 +f 245/122/21 251/124/23 244/118/17 +f 242/128/27 248/126/25 241/112/12 +f 247/129/28 239/115/3 240/121/20 +f 227/111/11 226/130/29 242/128/27 +f 242/128/27 226/130/29 249/127/26 +f 226/131/29 225/119/18 243/125/24 +f 243/125/24 250/132/30 226/131/29 +f 258/133/31 226/134/29 250/135/30 +f 252/123/22 257/136/5 251/137/23 +f 256/138/32 248/139/25 249/140/26 +f 254/141/7 252/123/22 246/142/33 +f 257/136/5 250/135/30 251/137/23 +f 255/143/6 247/129/28 248/139/25 +f 260/144/8 249/140/26 226/145/29 +f 253/146/34 246/142/33 247/129/28 +f 262/147/35 263/148/36 261/144/35 +f 264/149/36 265/48/5 263/148/36 +f 266/150/5 267/151/37 265/48/5 +f 268/152/37 269/84/38 267/151/37 +f 274/149/36 275/48/5 273/148/36 +f 272/147/35 273/148/36 271/144/35 +f 276/150/5 277/151/37 275/48/5 +f 278/152/37 279/84/38 277/151/37 +f 284/149/36 285/48/5 283/148/36 +f 282/147/35 283/148/36 281/144/35 +f 286/150/5 287/151/37 285/48/5 +f 288/152/37 289/84/38 287/151/37 +f 294/147/39 295/148/40 293/144/39 +f 296/149/40 297/48/6 295/148/40 +f 298/150/6 299/151/41 297/48/6 +f 300/152/41 291/84/42 299/151/41 +f 304/147/39 305/148/40 303/144/39 +f 306/149/40 307/48/6 305/148/40 +f 308/150/6 309/151/41 307/48/6 +f 310/152/41 301/84/42 309/151/41 +f 314/147/39 315/148/40 313/144/39 +f 316/149/40 317/48/6 315/148/40 +f 318/150/6 319/151/41 317/48/6 +f 320/152/41 311/84/42 319/151/41 +f 80/94/8 82/105/4 81/95/4 +f 44/97/3 46/103/9 45/98/9 +f 68/100/10 70/110/2 69/101/2 +f 46/103/9 48/153/1 47/104/1 +f 84/100/10 86/110/2 85/101/2 +f 66/105/4 68/100/10 67/102/10 +f 48/106/1 50/94/8 49/96/8 +f 64/94/8 66/105/4 65/95/4 +f 50/94/8 52/105/4 51/95/4 +f 62/106/1 64/94/8 63/96/8 +f 52/105/4 54/100/10 53/102/10 +f 72/108/7 41/97/3 42/99/3 +f 60/103/9 62/153/1 61/104/1 +f 54/100/10 56/110/2 55/101/2 +f 41/97/3 60/103/9 59/98/9 +f 56/110/2 58/108/7 57/109/7 +f 82/105/4 84/100/10 83/102/10 +f 70/110/2 72/108/7 71/109/7 +f 58/108/7 44/97/3 43/99/3 +f 78/106/1 80/94/8 79/96/8 +f 88/108/7 73/97/3 74/99/3 +f 76/103/9 78/153/1 77/104/1 +f 73/97/3 76/103/9 75/98/9 +f 86/110/2 88/108/7 87/109/7 +f 96/94/8 98/105/4 97/95/4 +f 100/100/10 102/110/2 101/101/2 +f 98/105/4 100/100/10 99/102/10 +f 94/106/1 96/94/8 95/96/8 +f 104/108/7 89/97/3 90/99/3 +f 92/103/9 94/153/1 93/104/1 +f 89/97/3 92/103/9 91/98/9 +f 102/110/2 104/108/7 103/109/7 +f 144/94/8 146/105/4 145/95/4 +f 108/97/3 110/103/9 109/98/9 +f 132/100/10 134/110/2 133/101/2 +f 110/103/9 112/153/1 111/104/1 +f 148/100/10 150/110/2 149/101/2 +f 130/105/4 132/100/10 131/102/10 +f 112/106/1 114/94/8 113/96/8 +f 128/94/8 130/105/4 129/95/4 +f 114/94/8 116/105/4 115/95/4 +f 126/106/1 128/94/8 127/96/8 +f 116/105/4 118/100/10 117/102/10 +f 136/108/7 105/97/3 106/99/3 +f 124/103/9 126/153/1 125/104/1 +f 118/100/10 120/110/2 119/101/2 +f 105/97/3 124/103/9 123/98/9 +f 120/110/2 122/108/7 121/109/7 +f 146/105/4 148/100/10 147/102/10 +f 134/110/2 136/108/7 135/109/7 +f 122/108/7 108/97/3 107/99/3 +f 142/106/1 144/94/8 143/96/8 +f 152/108/7 137/97/3 138/99/3 +f 140/103/9 142/153/1 141/104/1 +f 137/97/3 140/103/9 139/98/9 +f 150/110/2 152/108/7 151/109/7 +f 204/111/11 212/128/27 211/112/12 +f 202/114/14 210/121/20 209/115/3 +f 209/115/3 215/122/21 208/117/16 +f 214/118/17 213/125/24 206/119/18 +f 203/113/13 211/112/12 210/121/20 +f 215/122/21 214/118/17 207/120/19 +f 209/115/3 216/142/33 222/123/22 +f 221/124/23 220/132/30 213/125/24 +f 218/126/25 217/129/28 210/121/20 +f 215/122/21 222/123/22 221/124/23 +f 219/127/26 218/126/25 211/112/12 +f 217/129/28 216/142/33 209/115/3 +f 236/133/31 238/154/8 205/134/29 +f 230/116/15 239/115/3 245/122/21 +f 222/123/22 237/155/43 235/136/5 +f 234/138/32 233/143/6 218/139/25 +f 232/141/7 237/155/43 222/123/22 +f 235/136/5 236/133/31 220/135/30 +f 233/143/6 231/146/34 217/129/28 +f 227/111/11 242/128/27 241/112/12 +f 238/144/8 234/138/32 219/140/26 +f 228/113/13 241/112/12 240/121/20 +f 239/115/3 246/142/33 252/123/22 +f 248/126/25 247/129/28 240/121/20 +f 240/121/20 239/115/3 230/116/15 +f 244/118/17 243/125/24 225/119/18 +f 245/122/21 244/118/17 224/120/19 +f 251/124/23 250/132/30 243/125/24 +f 231/146/34 232/141/7 216/142/33 +f 245/122/21 252/123/22 251/124/23 +f 242/128/27 249/127/26 248/126/25 +f 247/129/28 246/142/33 239/115/3 +f 258/133/31 260/154/8 226/134/29 +f 252/123/22 259/155/43 257/136/5 +f 256/138/32 255/143/6 248/139/25 +f 254/141/7 259/155/43 252/123/22 +f 257/136/5 258/133/31 250/135/30 +f 255/143/6 253/146/34 247/129/28 +f 260/144/8 256/138/32 249/140/26 +f 253/146/34 254/141/7 246/142/33 +f 262/147/35 264/149/36 263/148/36 +f 264/149/36 266/150/5 265/48/5 +f 266/150/5 268/152/37 267/151/37 +f 268/152/37 270/156/38 269/84/38 +f 274/149/36 276/150/5 275/48/5 +f 272/147/35 274/149/36 273/148/36 +f 276/150/5 278/152/37 277/151/37 +f 278/152/37 280/156/38 279/84/38 +f 284/149/36 286/150/5 285/48/5 +f 282/147/35 284/149/36 283/148/36 +f 286/150/5 288/152/37 287/151/37 +f 288/152/37 290/156/38 289/84/38 +f 294/147/39 296/149/40 295/148/40 +f 296/149/40 298/150/6 297/48/6 +f 298/150/6 300/152/41 299/151/41 +f 300/152/41 292/156/42 291/84/42 +f 304/147/39 306/149/40 305/148/40 +f 306/149/40 308/150/6 307/48/6 +f 308/150/6 310/152/41 309/151/41 +f 310/152/41 302/156/42 301/84/42 +f 314/147/39 316/149/40 315/148/40 +f 316/149/40 318/150/6 317/48/6 +f 318/150/6 320/152/41 319/151/41 +f 320/152/41 312/156/42 311/84/42 +o plate +v -0.500000 0.937500 -1.500000 +v 0.500000 0.937500 -1.500000 +v -0.500000 0.937500 -5.250000 +v 0.500000 0.937500 -5.250000 +v -0.500000 1.062500 -5.250000 +v -0.500000 1.062500 -1.500000 +v 0.500000 1.062500 -1.500000 +v 0.500000 1.062500 -5.250000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vt 0.890625 0.566667 +vt 0.656250 0.700000 +vt 0.656250 0.566667 +vt 0.890625 0.700000 +vt 0.664062 0.700000 +vt 0.664062 0.566667 +vt 0.890625 0.683333 +vt 0.656250 0.683333 +vt 0.656250 0.583333 +vt 0.890625 0.583333 +s 0 +usemtl +f 323/157/44 322/158/44 321/159/44 +f 327/159/45 325/160/45 326/158/45 +f 323/161/46 328/159/46 324/162/46 +f 324/163/47 327/158/47 322/164/47 +f 321/165/48 325/157/48 323/166/48 +f 323/157/44 324/160/44 322/158/44 +f 327/159/45 328/157/45 325/160/45 +f 323/161/46 325/158/46 328/159/46 +f 324/163/47 328/160/47 327/158/47 +f 321/165/48 326/159/48 325/157/48