more plumbing, get your free toilet now

This commit is contained in:
Boblet 2025-10-08 16:58:32 +02:00
parent d1c5355362
commit 6304df71dd
7 changed files with 476 additions and 328 deletions

View File

@ -3,10 +3,11 @@ package com.hbm.blocks.network;
import java.util.List; import java.util.List;
import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ITooltipProvider;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.network.TileEntityPipeAnchor; import com.hbm.tileentity.network.TileEntityPipeAnchor;
import net.minecraft.block.BlockContainer; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -17,7 +18,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class FluidPipeAnchor extends BlockContainer implements ITooltipProvider { public class FluidPipeAnchor extends FluidDuctBase implements ITooltipProvider {
public FluidPipeAnchor() { public FluidPipeAnchor() {
super(Material.iron); super(Material.iron);
@ -51,8 +52,8 @@ public class FluidPipeAnchor extends BlockContainer implements ITooltipProvider
private void setBlockBounds(int meta) { private void setBlockBounds(int meta) {
float pixel = 0.0625F; float pixel = 0.0625F;
float min = pixel * 5F; float min = pixel * 4F;
float max = pixel * 11F; float max = pixel * 12F;
ForgeDirection dir = ForgeDirection.getOrientation(meta).getOpposite(); ForgeDirection dir = ForgeDirection.getOrientation(meta).getOpposite();
@ -71,4 +72,30 @@ public class FluidPipeAnchor extends BlockContainer implements ITooltipProvider
list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Single"); list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Single");
list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "10m"); list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "10m");
} }
@Override // didn't think this was overridable, that makes everything so much easier. good job martin
public void changeTypeRecursively(World world, int x, int y, int z, FluidType prevType, FluidType type, int loopsRemaining) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEntityPipeAnchor) {
TileEntityPipeAnchor pipe = (TileEntityPipeAnchor) te;
if(pipe.getType() == prevType && pipe.getType() != type) {
pipe.setType(type);
if(loopsRemaining > 0) {
ForgeDirection dir = ForgeDirection.getOrientation(pipe.getBlockMetadata()).getOpposite();
Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
if(b instanceof IBlockFluidDuct) ((IBlockFluidDuct) b).changeTypeRecursively(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, prevType, type, loopsRemaining - 1);
for(int[] pos : pipe.getConnected()) {
Block c = world.getBlock(pos[0], pos[1], pos[2]);
if(c instanceof IBlockFluidDuct) ((IBlockFluidDuct) c).changeTypeRecursively(world, pos[0], pos[1], pos[2], prevType, type, loopsRemaining - 1);
}
}
}
}
}
} }

View File

@ -24,7 +24,6 @@ import com.hbm.world.feature.BedrockOre.BedrockOreDefinition;
import com.hbm.world.generator.CellularDungeonFactory; import com.hbm.world.generator.CellularDungeonFactory;
import com.hbm.world.generator.DungeonToolbox; import com.hbm.world.generator.DungeonToolbox;
import cpw.mods.fml.common.IWorldGenerator; import cpw.mods.fml.common.IWorldGenerator;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntityChest; import net.minecraft.tileentity.TileEntityChest;

View File

@ -386,6 +386,7 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonMedium.class, new RenderPylonMedium()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonMedium.class, new RenderPylonMedium());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonLarge.class, new RenderPylonLarge()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonLarge.class, new RenderPylonLarge());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySubstation.class, new RenderSubstation()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySubstation.class, new RenderSubstation());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPipeAnchor.class, new RenderPipeAnchor());
//chargers //chargers
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCharger.class, new RenderCharger()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCharger.class, new RenderCharger());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRefueler.class, new RenderRefueler()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRefueler.class, new RenderRefueler());

View File

@ -388,15 +388,13 @@ public class ResourceManager {
public static final IModelCustom zirnox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox.obj")).asVBO(); public static final IModelCustom zirnox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox.obj")).asVBO();
public static final IModelCustom zirnox_destroyed = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox_destroyed.obj")).asVBO(); public static final IModelCustom zirnox_destroyed = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox_destroyed.obj")).asVBO();
//Belt
public static final IModelCustom arrow = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/arrow.obj"));
//Network //Network
public static final IModelCustom connector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/connector.obj")); public static final IModelCustom connector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/connector.obj"));
public static final IModelCustom pylon_medium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_medium.obj")); public static final IModelCustom pylon_medium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_medium.obj"));
public static final IModelCustom pylon_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_large.obj")); public static final IModelCustom pylon_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_large.obj"));
public static final IModelCustom substation = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/substation.obj")); public static final IModelCustom substation = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/substation.obj")).asVBO();
public static final IModelCustom fluid_pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/fluid_diode.obj")); public static final IModelCustom pipe_anchor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/pipe_anchor.obj")).asVBO();
public static final IModelCustom fluid_pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/fluid_diode.obj")).asVBO();
//Radiolysis //Radiolysis
public static final IModelCustom radiolysis = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radiolysis.obj")); public static final IModelCustom radiolysis = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radiolysis.obj"));
@ -831,6 +829,9 @@ public class ResourceManager {
public static final ResourceLocation substation_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/substation.png"); public static final ResourceLocation substation_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/substation.png");
public static final ResourceLocation wire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/wire.png"); public static final ResourceLocation wire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/wire.png");
public static final ResourceLocation wire_greyscale_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/wire_greyscale.png"); public static final ResourceLocation wire_greyscale_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/wire_greyscale.png");
//Pipes
public static final ResourceLocation pipe_anchor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pipe_anchor.png");
public static final ResourceLocation fluid_pump_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/fluid_diode.png"); public static final ResourceLocation fluid_pump_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/fluid_diode.png");
//Radiolysis //Radiolysis

View File

@ -0,0 +1,120 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ModBlocks;
import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase;
import com.hbm.tileentity.network.TileEntityPipeAnchor;
import com.hbm.util.ColorUtil;
import com.hbm.util.Compat;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Vec3;
import net.minecraftforge.client.IItemRenderer;
public class RenderPipeAnchor extends TileEntitySpecialRenderer implements IItemRendererProvider {
@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y + 0.5D, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glPushMatrix();
switch(te.getBlockMetadata()) {
case 0: GL11.glRotated(180, 1, 0, 0); break;
case 1: break;
case 2: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(180, 0, 0, 1); break;
case 3: GL11.glRotated(90, 1, 0, 0); break;
case 4: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(90, 0, 0, 1); break;
case 5: GL11.glRotated(90, 1, 0, 0); GL11.glRotated(270, 0, 0, 1); break;
}
GL11.glTranslated(0, -0.5F, 0);
bindTexture(ResourceManager.pipe_anchor_tex);
ResourceManager.pipe_anchor.renderPart("Anchor");
GL11.glPopMatrix();
TileEntityPipeAnchor anchor = (TileEntityPipeAnchor) te;
for(int[] pos : anchor.getConnected()) {
TileEntity tile = Compat.getTileStandard(te.getWorldObj(), pos[0], pos[1], pos[2]);
if(tile instanceof TileEntityPipeAnchor) {
TileEntityPipeAnchor other = (TileEntityPipeAnchor) tile;
if(anchor.getType() != other.getType()) continue;
Vec3 anchorPoint = anchor.getConnectionPoint();
Vec3 connectionPoint = other.getConnectionPoint();
if(isDominant(anchorPoint, connectionPoint)) {
double dX = connectionPoint.xCoord - anchorPoint.xCoord;
double dY = connectionPoint.yCoord - anchorPoint.yCoord;
double dZ = connectionPoint.zCoord - anchorPoint.zCoord;
double hyp = Math.sqrt(dX * dX + dZ * dZ);
double yaw = Math.toDegrees(Math.atan2(dX, dZ));
double pitch = Math.toDegrees(Math.atan2(dY, hyp));
double length = Math.sqrt(dX * dX + dY * dY + dZ * dZ);
GL11.glPushMatrix();
GL11.glRotated(yaw, 0, 1, 0);
GL11.glRotated(90 - pitch, 1, 0, 0);
GL11.glPushMatrix();
GL11.glScaled(1, length, 1);
GL11.glTranslated(0, -0.5, 0);
int color = ColorUtil.lightenColor(anchor.getType().getColor(), 0.25D);
GL11.glColor3f(ColorUtil.fr(color), ColorUtil.fg(color), ColorUtil.fb(color));
ResourceManager.pipe_anchor.renderPart("Pipe");
GL11.glColor3f(1F, 1F, 1F);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(0, length / 2D - 1.5, 0);
ResourceManager.pipe_anchor.renderPart("Ring");
GL11.glPopMatrix();
GL11.glPopMatrix();
}
}
}
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
}
/** Determines the "dominant" anchor, i.e. the one that should render the pipe (instead of rendering two half segments, gives marginally better performance) */
public static boolean isDominant(Vec3 first, Vec3 second) {
if(first.xCoord < second.xCoord) return true;
if(first.xCoord > second.xCoord) return false;
if(first.yCoord < second.yCoord) return true;
if(first.yCoord > second.yCoord) return false;
if(first.zCoord < second.zCoord) return true;
if(first.zCoord > second.zCoord) return false;
return false; // exact same pos? no need to render anything
}
@Override
public Item getItemForRenderer() {
return Item.getItemFromBlock(ModBlocks.pipe_anchor);
}
@Override
public IItemRenderer getRenderer() {
return new ItemRenderBase() {
public void renderInventory() {
GL11.glTranslated(0, -1.5, 0);
double scale = 5;
GL11.glScaled(scale, scale, scale);
}
public void renderCommon() {
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.pipe_anchor_tex);
ResourceManager.pipe_anchor.renderPart("Anchor");
GL11.glShadeModel(GL11.GL_FLAT);
}};
}
}

View File

@ -1,264 +1,46 @@
# Blender v2.79 (sub 0) OBJ File: 'pipe_anchor.blend' # Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org # www.blender.org
o Pipe
v -0.000000 0.500000 -0.187500
v -0.000000 1.500000 -0.187500
v 0.132583 0.500000 -0.132583
v 0.132583 1.500000 -0.132583
v 0.187500 0.500000 0.000000
v 0.187500 1.500000 0.000000
v 0.132583 0.500000 0.132583
v 0.132583 1.500000 0.132583
v -0.000000 0.500000 0.187500
v -0.000000 1.500000 0.187500
v -0.132583 0.500000 0.132583
v -0.132583 1.500000 0.132583
v -0.187500 0.500000 -0.000000
v -0.187500 1.500000 -0.000000
v -0.132583 0.500000 -0.132583
v -0.132583 1.500000 -0.132583
vt 0.812500 0.062500
vt 0.625000 -0.000000
vt 0.812500 -0.000000
vt 1.000000 0.062500
vt 0.812500 -0.000000
vt 1.000000 -0.000000
vt 0.812500 0.062500
vt 0.625000 -0.000000
vt 1.000000 0.062500
vt 0.812500 -0.000000
vt 1.000000 -0.000000
vt 0.812500 0.062500
vt 0.625000 -0.000000
vt 1.000000 0.062500
vt 0.812500 0.000000
vt 1.000000 -0.000000
vt 0.812500 0.062500
vt 0.625000 0.000000
vt 1.000000 0.062500
vt 1.000000 -0.000000
vt 0.625000 0.062500
vt 0.625000 0.062500
vt 0.625000 0.062500
vt 0.625000 0.062500
vn 0.3827 0.0000 -0.9239
vn 0.9239 0.0000 -0.3827
vn 0.9239 0.0000 0.3827
vn 0.3827 0.0000 0.9239
vn -0.3827 0.0000 0.9239
vn -0.9239 0.0000 0.3827
vn -0.9239 0.0000 -0.3827
vn -0.3827 0.0000 -0.9239
s off
f 2/1/1 3/2/1 1/3/1
f 4/4/2 5/5/2 3/6/2
f 6/7/3 7/8/3 5/5/3
f 8/9/4 9/10/4 7/11/4
f 10/12/5 11/13/5 9/10/5
f 12/14/6 13/15/6 11/16/6
f 14/17/7 15/18/7 13/15/7
f 16/19/8 1/3/8 15/20/8
f 2/1/1 4/21/1 3/2/1
f 4/4/2 6/7/2 5/5/2
f 6/7/3 8/22/3 7/8/3
f 8/9/4 10/12/4 9/10/4
f 10/12/5 12/23/5 11/13/5
f 12/14/6 14/17/6 13/15/6
f 14/17/7 16/24/7 15/18/7
f 16/19/8 2/1/8 1/3/8
o Ring
v -0.000000 1.562500 -0.187500
v 0.132583 1.562500 -0.132583
v 0.187500 1.562500 0.000000
v 0.132583 1.562500 0.132583
v -0.000000 1.562500 0.187500
v -0.132583 1.562500 0.132583
v -0.187500 1.562500 -0.000000
v -0.132583 1.562500 -0.132583
v -0.132583 1.437500 -0.132583
v -0.187500 1.437500 -0.000000
v -0.132583 1.437500 0.132583
v -0.000000 1.437500 0.187500
v 0.132583 1.437500 0.132583
v 0.187500 1.437500 0.000000
v 0.132583 1.437500 -0.132583
v -0.000000 1.437500 -0.187500
v -0.000000 1.562500 -0.210938
v 0.149155 1.562500 -0.149155
v 0.210937 1.562500 0.000000
v 0.149155 1.562500 0.149155
v -0.000000 1.562500 0.210938
v -0.149155 1.562500 0.149155
v -0.210938 1.562500 -0.000000
v -0.149155 1.562500 -0.149155
v -0.149155 1.437500 -0.149155
v -0.210938 1.437500 -0.000000
v -0.149155 1.437500 0.149155
v -0.000000 1.437500 0.210938
v 0.149155 1.437500 0.149155
v 0.210937 1.437500 0.000000
v 0.149155 1.437500 -0.149155
v -0.000000 1.437500 -0.210938
vt 1.000000 0.062500
vt 0.812500 0.125000
vt 0.812500 0.062500
vt 0.625000 0.062500
vt 1.000000 0.125000
vt 0.812500 0.062500
vt 1.000000 0.062500
vt 0.812500 0.125000
vt 0.625000 0.062500
vt 1.000000 0.062500
vt 0.812500 0.125000
vt 0.812500 0.062500
vt 0.625000 0.062500
vt 1.000000 0.062500
vt 0.812500 0.125000
vt 0.812500 0.062500
vt 0.625000 0.062500
vt 1.000000 0.062500
vt 0.812500 0.125000
vt 0.812500 0.062500
vt 0.625000 0.062500
vt 1.000000 0.125000
vt 0.812500 0.062500
vt 1.000000 0.062500
vt 0.812500 0.125000
vt 0.625000 0.062500
vt 1.000000 0.125000
vt 0.812500 0.062500
vt 1.000000 0.062500
vt 0.812500 0.125000
vt 0.625000 0.062500
vt 1.000000 0.125000
vt 0.812500 0.062500
vt 1.000000 0.062500
vt 0.625000 0.125000
vt 0.625000 0.062500
vt 0.812500 0.125000
vt 1.000000 0.125000
vt 0.812500 0.125000
vt 1.000000 0.125000
vt 0.812500 0.125000
vt 1.000000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 0.812500 0.125000
vt 1.000000 0.125000
vt 1.000000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 1.000000 0.125000
vt 0.625000 0.125000
vt 1.000000 0.125000
vt 0.625000 0.125000
vt 1.000000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 0.812500 0.125000
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 -0.0000
vn 0.9239 0.0000 -0.3827
vn -0.3827 0.0000 -0.9239
vn -0.9239 0.0000 0.3827
vn 0.9239 0.0000 0.3827
vn 0.3827 0.0000 -0.9239
vn -0.9239 0.0000 -0.3827
vn -0.3827 0.0000 0.9239
vn 0.3827 0.0000 0.9239
s off
f 45/25/9 28/26/9 44/27/9
f 28/26/9 43/28/9 44/27/9
f 27/29/9 42/30/9 43/31/9
f 26/32/9 41/33/9 42/30/9
f 41/34/9 32/35/9 48/36/9
f 32/35/9 47/37/9 48/36/9
f 47/38/9 30/39/9 46/40/9
f 30/39/9 45/41/9 46/40/9
f 36/42/10 19/43/10 35/44/10
f 19/43/10 34/45/10 35/44/10
f 18/46/10 33/47/10 34/48/10
f 17/49/10 40/50/10 33/47/10
f 24/51/10 39/52/10 40/53/10
f 23/54/10 38/55/10 39/52/10
f 22/56/10 37/57/10 38/58/10
f 37/57/10 20/59/10 36/60/10
f 42/61/11 38/58/11 43/62/11
f 44/63/12 36/42/12 45/64/12
f 46/65/13 34/48/13 47/66/13
f 41/67/14 39/52/14 42/61/14
f 43/68/15 37/57/15 44/63/15
f 45/69/16 35/44/16 46/65/16
f 47/70/17 33/47/17 48/71/17
f 48/71/18 40/53/18 41/72/18
f 45/25/9 29/73/9 28/26/9
f 28/26/9 27/74/9 43/28/9
f 27/29/9 26/32/9 42/30/9
f 26/32/9 25/75/9 41/33/9
f 41/34/9 25/76/9 32/35/9
f 32/35/9 31/77/9 47/37/9
f 47/38/9 31/78/9 30/39/9
f 30/39/9 29/79/9 45/41/9
f 36/42/10 20/80/10 19/43/10
f 19/43/10 18/81/10 34/45/10
f 18/46/10 17/49/10 33/47/10
f 17/49/10 24/82/10 40/50/10
f 24/51/10 23/54/10 39/52/10
f 23/54/10 22/83/10 38/55/10
f 22/56/10 21/84/10 37/57/10
f 37/57/10 21/84/10 20/59/10
f 42/61/11 39/52/11 38/58/11
f 44/63/12 37/57/12 36/42/12
f 46/65/13 35/44/13 34/48/13
f 41/67/14 40/50/14 39/52/14
f 43/68/15 38/55/15 37/57/15
f 45/69/16 36/60/16 35/44/16
f 47/70/17 34/45/17 33/47/17
f 48/71/18 33/47/18 40/53/18
o Anchor o Anchor
v -0.187500 0.250000 0.187500 v 0.187500 0.687500 0.250000
v -0.187500 0.312500 0.250000 v -0.187500 0.312500 0.250000
v 0.187500 0.312500 0.250000
v 0.250000 0.687500 -0.187500
v 0.250000 0.312500 0.187500
v 0.250000 0.312500 -0.187500
v -0.187500 0.750000 -0.187500
v 0.187500 0.750000 0.187500
v 0.187500 0.750000 -0.187500
v -0.250000 0.687500 0.187500
v -0.250000 0.312500 -0.187500
v -0.250000 0.312500 0.187500 v -0.250000 0.312500 0.187500
v -0.187500 0.687500 -0.250000
v 0.187500 0.312500 -0.250000
v -0.187500 0.312500 -0.250000
v -0.187500 0.250000 0.187500
v -0.187500 0.687500 0.250000 v -0.187500 0.687500 0.250000
v -0.187500 0.750000 0.187500 v -0.187500 0.750000 0.187500
v -0.250000 0.687500 0.187500
v -0.187500 0.250000 -0.187500 v -0.187500 0.250000 -0.187500
v -0.250000 0.312500 -0.187500
v -0.187500 0.312500 -0.250000
v -0.187500 0.750000 -0.187500
v -0.187500 0.687500 -0.250000
v -0.250000 0.687500 -0.187500 v -0.250000 0.687500 -0.187500
v 0.187500 0.250000 0.187500 v 0.187500 0.250000 0.187500
v 0.250000 0.312500 0.187500
v 0.187500 0.312500 0.250000
v 0.187500 0.750000 0.187500
v 0.187500 0.687500 0.250000
v 0.250000 0.687500 0.187500 v 0.250000 0.687500 0.187500
v 0.187500 0.250000 -0.187500 v 0.187500 0.250000 -0.187500
v 0.187500 0.312500 -0.250000
v 0.250000 0.312500 -0.187500
v 0.187500 0.750000 -0.187500
v 0.250000 0.687500 -0.187500
v 0.187500 0.687500 -0.250000 v 0.187500 0.687500 -0.250000
v -0.187500 0.062500 -0.187500
v 0.187500 0.062500 -0.187500
v 0.187500 0.062500 0.187500
v -0.187500 0.062500 0.187500
v 0.187500 0.000000 -0.187500 v 0.187500 0.000000 -0.187500
v 0.187500 0.000000 0.187500 v 0.187500 0.062500 0.187500
v 0.187500 -0.000000 0.187500
v -0.187500 -0.000000 0.187500
v -0.187500 0.062500 -0.187500
v -0.187500 0.000000 -0.187500 v -0.187500 0.000000 -0.187500
v -0.187500 0.000000 0.187500 v -0.187500 0.062500 0.187500
v -0.125000 0.062500 0.125000 v 0.187500 0.062500 -0.187500
v 0.125000 0.062500 -0.125000
v 0.125000 0.250000 0.125000
v 0.125000 0.062500 0.125000 v 0.125000 0.062500 0.125000
v -0.125000 0.062500 -0.125000 v -0.125000 0.062500 -0.125000
v 0.125000 0.062500 -0.125000 v -0.125000 0.062500 0.125000
v -0.125000 0.250000 -0.125000 v -0.125000 0.250000 -0.125000
v -0.125000 0.250000 0.125000
v 0.125000 0.250000 0.125000
v 0.125000 0.250000 -0.125000 v 0.125000 0.250000 -0.125000
v -0.125000 0.250000 0.125000
vt 0.937500 0.937500 vt 0.937500 0.937500
vt 0.562500 0.562500 vt 0.562500 0.562500
vt 0.937500 0.562500 vt 0.937500 0.562500
@ -351,10 +133,10 @@ vt 0.312500 0.687500
vt 0.312500 0.687500 vt 0.312500 0.687500
vt 0.312500 0.687500 vt 0.312500 0.687500
vt 0.312500 0.687500 vt 0.312500 0.687500
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 1.0000 0.0000 vn 0.0000 1.0000 0.0000
vn -1.0000 0.0000 0.0000 vn -1.0000 -0.0000 0.0000
vn 0.0000 0.0000 -1.0000 vn 0.0000 0.0000 -1.0000
vn -0.5774 -0.5774 0.5774 vn -0.5774 -0.5774 0.5774
vn -0.5774 0.5774 0.5774 vn -0.5774 0.5774 0.5774
@ -365,7 +147,7 @@ vn 0.5774 0.5774 0.5774
vn 0.5774 -0.5774 -0.5774 vn 0.5774 -0.5774 -0.5774
vn 0.5774 0.5774 -0.5774 vn 0.5774 0.5774 -0.5774
vn -0.7071 -0.7071 0.0000 vn -0.7071 -0.7071 0.0000
vn -0.7071 0.0000 0.7071 vn -0.7071 -0.0000 0.7071
vn -0.7071 0.7071 0.0000 vn -0.7071 0.7071 0.0000
vn -0.7071 0.0000 -0.7071 vn -0.7071 0.0000 -0.7071
vn 0.0000 -0.7071 -0.7071 vn 0.0000 -0.7071 -0.7071
@ -373,78 +155,296 @@ vn 0.0000 0.7071 -0.7071
vn 0.7071 0.0000 -0.7071 vn 0.7071 0.0000 -0.7071
vn 0.7071 -0.7071 0.0000 vn 0.7071 -0.7071 0.0000
vn 0.7071 0.7071 0.0000 vn 0.7071 0.7071 0.0000
vn 0.7071 0.0000 0.7071 vn 0.7071 -0.0000 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.0000 0.7071 0.7071
vn 0.0000 -1.0000 -0.0000
s 1
f 1/1/1 2/2/1 3/3/1
f 4/4/2 5/5/2 6/6/2
f 7/7/3 8/8/3 9/9/3
f 10/10/4 11/11/4 12/12/4
f 13/13/5 14/14/5 15/15/5
f 16/16/6 2/17/6 12/18/6
f 17/19/7 18/20/7 10/10/7
f 19/21/8 11/22/8 15/23/8
f 7/24/9 13/13/9 20/25/9
f 21/26/10 5/27/10 3/28/10
f 8/29/11 1/1/11 22/30/11
f 23/31/12 14/32/12 6/33/12
f 9/34/13 4/4/13 24/35/13
f 16/16/14 11/36/14 19/37/14
f 17/19/15 12/12/15 2/38/15
f 7/39/16 10/10/16 18/20/16
f 15/15/17 20/25/17 13/13/17
f 19/21/18 14/40/18 23/41/18
f 9/42/19 13/13/19 7/24/19
f 6/6/20 24/35/20 4/4/20
f 23/31/21 5/43/21 21/44/21
f 8/45/22 4/4/22 9/34/22
f 3/3/23 22/30/23 1/1/23
f 21/26/24 2/46/24 16/47/24
f 18/48/25 1/1/25 8/29/25
f 23/31/26 16/49/26 19/50/26
f 25/51/2 26/52/2 27/53/2
f 28/54/4 29/55/4 30/56/4
f 27/57/1 31/58/1 28/59/1
f 30/60/5 32/61/5 25/62/5
f 33/63/3 26/52/3 32/64/3
f 25/51/26 28/65/26 30/66/26
f 33/63/2 34/67/2 35/68/2
f 36/69/3 32/61/3 29/70/3
f 37/71/3 29/55/3 31/72/3
f 35/73/3 31/58/3 26/74/3
f 37/71/4 38/75/4 36/76/4
f 36/69/5 39/77/5 33/78/5
f 35/73/1 40/79/1 37/80/1
f 1/1/1 17/81/1 2/2/1
f 4/4/2 22/82/2 5/5/2
f 7/7/3 18/83/3 8/8/3
f 10/10/4 20/84/4 11/11/4
f 13/13/5 24/85/5 14/14/5
f 16/16/14 12/18/14 11/36/14
f 17/19/15 10/10/15 12/12/15
f 7/39/16 20/84/16 10/10/16
f 15/15/17 11/86/17 20/25/17
f 19/21/18 15/23/18 14/40/18
f 9/42/19 24/85/19 13/13/19
f 6/6/20 14/87/20 24/35/20
f 23/31/21 6/33/21 5/43/21
f 8/45/22 22/82/22 4/4/22
f 3/3/23 5/88/23 22/30/23
f 21/26/24 3/28/24 2/46/24
f 18/48/25 17/81/25 1/1/25
f 23/31/26 21/44/26 16/49/26
f 25/51/2 32/64/2 26/52/2
f 28/54/4 31/72/4 29/55/4
f 27/57/1 26/74/1 31/58/1
f 30/60/5 29/70/5 32/61/5
f 33/63/3 35/68/3 26/52/3
f 25/51/26 27/53/26 28/65/26
f 33/63/2 39/89/2 34/67/2
f 36/69/3 33/78/3 32/61/3
f 37/71/3 36/76/3 29/55/3
f 35/73/3 37/80/3 31/58/3
f 37/71/4 40/90/4 38/75/4
f 36/69/5 38/91/5 39/77/5
f 35/73/1 34/92/1 40/79/1
o Ring
v 0.149155 1.437500 0.149155
v 0.000000 1.437500 0.187500
v 0.000000 1.437500 0.210938
v -0.149155 1.437500 0.149155
v -0.132583 1.437500 0.132583
v -0.210938 1.437500 0.000000
v -0.187500 1.437500 0.000000
v -0.149155 1.437500 -0.149155
v 0.000000 1.437500 -0.187500
v 0.000000 1.437500 -0.210938
v 0.149155 1.437500 -0.149155
v 0.187500 1.437500 0.000000
v 0.210937 1.437500 0.000000
v 0.149155 1.562500 0.149155
v 0.187500 1.562500 0.000000
v 0.210937 1.562500 0.000000
v 0.149155 1.562500 -0.149155
v 0.132583 1.562500 -0.132583
v 0.000000 1.562500 -0.210938
v 0.000000 1.562500 -0.187500
v -0.149155 1.562500 -0.149155
v -0.132583 1.562500 -0.132583
v -0.210938 1.562500 0.000000
v -0.187500 1.562500 0.000000
v -0.149155 1.562500 0.149155
v -0.132583 1.562500 0.132583
v 0.000000 1.562500 0.210938
v 0.132583 1.562500 0.132583
v 0.132583 1.437500 0.132583
v -0.132583 1.437500 -0.132583
v 0.132583 1.437500 -0.132583
v 0.000000 1.562500 0.187500
vt 0.812500 0.125000
vt 1.000000 0.062500
vt 0.812500 0.062500
vt 1.000000 0.125000
vt 0.812500 0.062500
vt 0.812500 0.125000
vt 0.812500 0.125000
vt 1.000000 0.062500
vt 0.812500 0.062500
vt 0.812500 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.625000 0.062500
vt 0.625000 0.062500
vt 0.812500 0.125000
vt 0.812500 0.062500
vt 0.812500 0.125000
vt 1.000000 0.062500
vt 0.812500 0.062500
vt 0.625000 0.125000
vt 0.812500 0.062500
vt 0.625000 0.062500
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.625000 0.062500
vt 1.000000 0.125000
vt 0.812500 0.125000
vt 0.625000 0.062500
vt 0.812500 0.125000
vt 0.812500 0.062500
vt 1.000000 0.062500
vt 0.625000 0.062500
vt 1.000000 0.062500
vt 0.812500 0.125000
vt 0.812500 0.125000
vt 0.812500 0.125000
vt 0.812500 0.125000
vt 0.812500 0.062500
vt 1.000000 0.062500
vt 1.000000 0.125000
vt 1.000000 0.125000
vt 1.000000 0.125000
vt 1.000000 0.062500
vt 1.000000 0.125000
vt 1.000000 0.125000
vt 1.000000 0.062500
vt 1.000000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 1.000000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 1.000000 0.125000
vt 0.625000 0.125000
vt 1.000000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 0.625000 0.125000
vt 1.000000 0.125000
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 0.0000 vn 0.0000 -1.0000 0.0000
s off vn 0.7071 -0.0000 0.7071
f 65/85/19 50/86/19 63/87/19 vn 1.0000 0.0000 -0.0000
f 71/88/20 62/89/20 69/90/20 vn 0.7071 0.0000 -0.7071
f 58/91/21 64/92/21 70/93/21 vn -0.0000 0.0000 -1.0000
f 54/94/22 56/95/22 51/96/22 vn -0.7071 0.0000 -0.7071
f 59/97/23 68/98/23 57/99/23 vn -1.0000 0.0000 -0.0000
f 49/100/24 50/101/24 51/102/24 vn -0.7071 -0.0000 0.7071
f 52/103/25 53/104/25 54/94/25 vn 0.0000 -0.0000 1.0000
f 55/105/26 56/106/26 57/107/26 s 1
f 58/108/27 59/97/27 60/109/27 f 60/93/27 57/94/27 59/95/27
f 61/110/28 62/111/28 63/112/28 f 71/96/28 53/97/28 52/98/28
f 64/113/29 65/85/29 66/114/29 f 64/99/27 61/100/27 63/101/27
f 67/115/30 68/116/30 69/117/30 f 72/102/27 54/103/27 68/104/27
f 70/118/31 71/88/31 72/119/31 f 61/105/27 60/93/27 59/95/27
f 49/100/32 56/120/32 55/121/32 f 48/106/28 47/107/28 46/108/28
f 52/103/33 51/96/33 50/122/33 f 42/109/28 41/110/28 43/111/28
f 58/123/34 54/94/34 53/104/34 f 58/112/27 56/113/27 57/114/27
f 57/99/35 60/109/35 59/97/35 f 44/115/28 42/109/28 43/111/28
f 55/105/36 68/124/36 67/125/36 f 69/116/28 53/97/28 41/117/28
f 70/126/37 59/97/37 58/108/37 f 68/118/27 56/113/27 55/119/27
f 69/90/38 72/119/38 71/88/38 f 51/120/28 49/121/28 50/122/28
f 67/115/39 62/127/39 61/128/39 f 47/107/28 44/123/28 46/108/28
f 64/129/40 71/88/40 70/118/40 f 65/124/27 64/99/27 63/101/27
f 63/87/41 66/114/41 65/85/41 f 49/121/28 48/125/28 50/122/28
f 61/110/42 50/130/42 49/131/42 f 54/103/29 53/126/30 56/113/30
f 53/132/43 65/85/43 64/113/43 f 57/114/31 50/127/32 59/95/32
f 67/115/44 49/133/44 55/134/44 f 61/105/33 46/128/34 63/101/34
f 77/135/20 75/136/20 78/137/20 f 65/124/35 43/129/36 67/130/36
f 80/138/22 73/139/22 79/140/22 f 72/102/27 65/131/27 67/130/27
f 78/141/19 76/142/19 80/143/19 f 56/113/30 51/132/31 57/94/31
f 79/144/23 74/145/23 77/146/23 f 63/101/34 44/133/35 65/131/35
f 84/147/21 75/136/21 74/148/21 f 67/130/36 41/134/29 54/135/29
f 77/135/44 80/149/44 79/150/44 f 59/95/32 48/136/33 61/100/33
f 84/147/20 87/151/20 82/152/20 f 60/93/27 58/137/27 57/94/27
f 83/153/21 74/145/21 73/154/21 f 71/96/28 51/138/28 53/97/28
f 81/155/21 73/139/21 76/156/21 f 64/99/27 62/139/27 61/100/27
f 82/157/21 76/142/21 75/158/21 f 72/102/27 67/130/27 54/103/27
f 81/155/22 85/159/22 83/160/22 f 61/105/27 62/140/27 60/93/27
f 83/153/23 88/161/23 84/162/23 f 48/106/28 70/141/28 47/107/28
f 82/157/19 86/163/19 81/164/19 f 42/109/28 69/142/28 41/110/28
f 65/85/19 52/165/19 50/86/19 f 58/112/27 55/119/27 56/113/27
f 71/88/20 66/166/20 62/89/20 f 44/115/28 45/143/28 42/109/28
f 58/91/21 53/167/21 64/92/21 f 69/116/28 52/98/28 53/97/28
f 54/94/22 60/168/22 56/95/22 f 68/118/27 54/135/27 56/113/27
f 59/97/23 72/169/23 68/98/23 f 51/120/28 71/144/28 49/121/28
f 49/100/32 51/102/32 56/120/32 f 47/107/28 45/145/28 44/123/28
f 52/103/33 54/94/33 51/96/33 f 65/124/27 66/146/27 64/99/27
f 58/123/34 60/168/34 54/94/34 f 49/121/28 70/147/28 48/125/28
f 57/99/35 56/170/35 60/109/35 f 54/103/29 41/148/29 53/126/30
f 55/105/36 57/107/36 68/124/36 f 57/114/31 51/149/31 50/127/32
f 70/126/37 72/169/37 59/97/37 f 61/105/33 48/150/33 46/128/34
f 69/90/38 68/171/38 72/119/38 f 65/124/35 44/151/35 43/129/36
f 67/115/39 69/117/39 62/127/39 f 72/102/27 66/152/27 65/131/27
f 64/129/40 66/166/40 71/88/40 f 56/113/30 53/126/30 51/132/31
f 63/87/41 62/172/41 66/114/41 f 63/101/34 46/128/34 44/133/35
f 61/110/42 63/112/42 50/130/42 f 67/130/36 43/129/36 41/134/29
f 53/132/43 52/165/43 65/85/43 f 59/95/32 50/127/32 48/136/33
f 67/115/44 61/128/44 49/133/44 o Pipe
f 77/135/20 74/148/20 75/136/20 v 0.000000 1.500000 -0.187500
f 80/138/22 76/156/22 73/139/22 v 0.132583 0.500000 -0.132583
f 78/141/19 75/158/19 76/142/19 v 0.000000 0.500000 -0.187500
f 79/144/23 73/154/23 74/145/23 v 0.132583 1.500000 -0.132583
f 84/147/21 82/152/21 75/136/21 v 0.187500 0.500000 0.000000
f 77/135/44 78/137/44 80/149/44 v 0.187500 1.500000 0.000000
f 84/147/20 88/173/20 87/151/20 v 0.132583 0.500000 0.132583
f 83/153/21 84/162/21 74/145/21 v 0.132583 1.500000 0.132583
f 81/155/21 83/160/21 73/139/21 v 0.000000 0.500000 0.187500
f 82/157/21 81/164/21 76/142/21 v 0.000000 1.500000 0.187500
f 81/155/22 86/174/22 85/159/22 v -0.132583 0.500000 0.132583
f 83/153/23 85/175/23 88/161/23 v -0.132583 1.500000 0.132583
f 82/157/19 87/176/19 86/163/19 v -0.187500 0.500000 0.000000
v -0.187500 1.500000 0.000000
v -0.132583 0.500000 -0.132583
v -0.132583 1.500000 -0.132583
vt 0.625000 0.062500
vt 0.812500 -0.000000
vt 0.812500 0.062500
vt 0.625000 0.062500
vt 0.812500 0.000000
vt 0.812500 0.062500
vt 1.000000 -0.000000
vt 1.000000 0.062500
vt 1.000000 -0.000000
vt 1.000000 0.062500
vt 0.625000 0.062500
vt 0.812500 -0.000000
vt 0.812500 0.062500
vt 0.812500 0.062500
vt 1.000000 -0.000000
vt 1.000000 0.062500
vt 0.625000 0.062500
vt 0.812500 -0.000000
vt 1.000000 -0.000000
vt 1.000000 0.062500
vt 0.625000 -0.000000
vt 0.625000 0.000000
vt 0.625000 -0.000000
vt 0.625000 -0.000000
vn 0.7071 -0.0000 0.7071
vn 1.0000 -0.0000 -0.0000
vn -0.7071 0.0000 -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.0000 -0.0000 1.0000
vn 0.0000 0.0000 -1.0000
s 1
f 80/153/37 77/154/38 78/155/38
f 88/156/39 85/157/40 86/158/40
f 86/158/40 83/159/41 84/160/41
f 78/155/38 74/161/42 76/162/42
f 84/163/41 81/164/43 82/165/43
f 73/166/44 87/167/39 88/168/39
f 76/169/42 75/170/44 73/166/44
f 82/165/43 79/171/37 80/172/37
f 80/153/37 79/173/37 77/154/38
f 88/156/39 87/174/39 85/157/40
f 86/158/40 85/157/40 83/159/41
f 78/155/38 77/154/38 74/161/42
f 84/163/41 83/175/41 81/164/43
f 73/166/44 75/170/44 87/167/39
f 76/169/42 74/176/42 75/170/44
f 82/165/43 81/164/43 79/171/37

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 B