Marx generator. It forms and breaks

Models for mirrored marx generators are broken
The IC2 cables drop as items due to missing IC2 API methods
This commit is contained in:
malte0811 2017-05-25 17:49:06 +02:00
parent 8e845ab100
commit 5a80b2626b
22 changed files with 2604 additions and 617 deletions

View file

@ -67,8 +67,8 @@ repositories {
}
dependencies {
deobfCompile "net.industrial-craft:industrialcraft-2:2.7.+:api"
deobfCompile "blusunrize:ImmersiveEngineering:0.11-+:deobf"
// deobfCompile "net.industrial-craft:industrialcraft-2:2.7.+:api"
// deobfCompile "blusunrize:ImmersiveEngineering:0.11-+:deobf"
}
jar {

View file

@ -17,9 +17,9 @@
*/
package malte0811.industrialWires;
import malte0811.industrialWires.blocks.TileEntityJacobsLadder;
import malte0811.industrialWires.blocks.controlpanel.TileEntityPanelCreator;
import malte0811.industrialWires.blocks.controlpanel.TileEntityRSPanelConn;
import malte0811.industrialWires.blocks.hv.TileEntityJacobsLadder;
import malte0811.industrialWires.containers.ContainerPanelComponent;
import malte0811.industrialWires.containers.ContainerPanelCreator;
import malte0811.industrialWires.containers.ContainerRSPanelConn;

View file

@ -17,8 +17,7 @@
*/
package malte0811.industrialWires;
import malte0811.industrialWires.blocks.BlockJacobsLadder;
import malte0811.industrialWires.blocks.TileEntityJacobsLadder;
import blusunrize.immersiveengineering.api.MultiblockHandler;
import malte0811.industrialWires.blocks.controlpanel.BlockPanel;
import malte0811.industrialWires.blocks.controlpanel.TileEntityPanel;
import malte0811.industrialWires.blocks.controlpanel.TileEntityPanelCreator;
@ -27,6 +26,7 @@ import malte0811.industrialWires.blocks.converter.BlockMechanicalConverter;
import malte0811.industrialWires.blocks.converter.TileEntityIEMotor;
import malte0811.industrialWires.blocks.converter.TileEntityMechICtoIE;
import malte0811.industrialWires.blocks.converter.TileEntityMechIEtoIC;
import malte0811.industrialWires.blocks.hv.*;
import malte0811.industrialWires.blocks.wire.*;
import malte0811.industrialWires.items.ItemIC2Coil;
import malte0811.industrialWires.items.ItemKey;
@ -58,7 +58,9 @@ public class IndustrialWires {
public static BlockIC2Connector ic2conn;
public static BlockMechanicalConverter mechConv;
public static BlockJacobsLadder jacobsLadder;
public static BlockHVMultiblocks hvMultiblocks;
public static BlockPanel panel;
public static ItemIC2Coil coil;
public static ItemPanelComponent panelComponent;
public static ItemKey key;
@ -82,6 +84,7 @@ public class IndustrialWires {
if (IWConfig.enableConversion)
mechConv = new BlockMechanicalConverter();
jacobsLadder = new BlockJacobsLadder();
hvMultiblocks = new BlockHVMultiblocks();
panel = new BlockPanel();
coil = new ItemIC2Coil();
@ -94,6 +97,7 @@ public class IndustrialWires {
GameRegistry.registerTileEntity(TileEntityIC2ConnectorHV.class, MODID + "ic2ConnectorHV");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorGlass.class, MODID + "ic2ConnectorGlass");
GameRegistry.registerTileEntity(TileEntityJacobsLadder.class, MODID + ":jacobsLadder");
GameRegistry.registerTileEntity(TileEntityMarx.class, MODID + ":marx_generator");
GameRegistry.registerTileEntity(TileEntityPanel.class, MODID + ":control_panel");
GameRegistry.registerTileEntity(TileEntityRSPanelConn.class, MODID + ":control_panel_rs");
GameRegistry.registerTileEntity(TileEntityPanelCreator.class, MODID + ":panel_creator");
@ -105,6 +109,7 @@ public class IndustrialWires {
if (IC2Wiretype.IC2_TYPES == null) {
throw new IllegalStateException("No IC2 wires registered");
}
MultiblockHandler.registerMultiblock(new MultiblockMarx());
proxy.preInit();
}

View file

@ -0,0 +1,60 @@
/*
* This file is part of Industrial Wires.
* Copyright (C) 2016-2017 malte0811
*
* Industrial Wires is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Industrial Wires is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Industrial Wires. If not, see <http://www.gnu.org/licenses/>.
*/
package malte0811.industrialWires.blocks;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nonnull;
public abstract class BlockIWMultiblock extends BlockIWBase {
public BlockIWMultiblock(Material mat, String name) {
super(mat, name);
}
@Override
public void breakBlock(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull IBlockState state) {
TileEntity te = world.getTileEntity(pos);
if(te instanceof TileEntityIWMultiblock)
((TileEntityIWMultiblock)te).disassemble();
super.breakBlock(world, pos, state);
}
@Override
public boolean isFullyOpaque(IBlockState state) {
return false;
}
@Override
public boolean isOpaqueCube(IBlockState state) {
return false;
}
@Override
public boolean isFullBlock(IBlockState state) {
return false;
}
@Override
public boolean isFullCube(IBlockState state) {
return false;
}
}

View file

@ -0,0 +1,38 @@
/*
* This file is part of Industrial Wires.
* Copyright (C) 2016-2017 malte0811
*
* Industrial Wires is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Industrial Wires is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Industrial Wires. If not, see <http://www.gnu.org/licenses/>.
*/
package malte0811.industrialWires.blocks;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.util.IStringSerializable;
public final class IWProperties {
private IWProperties() {}
public static PropertyEnum<MarxType> MARX_TYPE = PropertyEnum.create("marx_type", MarxType.class);
public enum MarxType implements IStringSerializable {
NO_MODEL,
BOTTOM,
STAGE,
TOP;
@Override
public String getName() {
return name().toLowerCase();
}
}
}

View file

@ -0,0 +1,111 @@
/*
* This file is part of Industrial Wires.
* Copyright (C) 2016-2017 malte0811
*
* Industrial Wires is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Industrial Wires is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Industrial Wires. If not, see <http://www.gnu.org/licenses/>.
*/
package malte0811.industrialWires.blocks;
import malte0811.industrialWires.util.MiscUtils;
import net.minecraft.block.state.IBlockState;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3i;
import net.minecraft.world.World;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.function.BiConsumer;
public abstract class TileEntityIWMultiblock extends TileEntityIWBase {
protected final static String OFFSET = "offset";
protected final static String FORMED = "formed";
protected final static String MIRRORED = "mirrored";
protected final static String FACING = "facing";
//HFR
protected Vec3i size;
public Vec3i offset = new Vec3i(0, 0, 0);
public boolean formed;
public boolean mirrored;
public long onlyLocalDissassembly;
public EnumFacing facing = EnumFacing.NORTH;
@Nonnull
protected abstract BlockPos getOrigin();
public abstract IBlockState getOriginalBlock();
public BiConsumer<World, BlockPos> getOriginalBlockPlacer() {
return (w, p)->w.setBlockState(p, getOriginalBlock());
}
@Nullable
public TileEntity master() {
if (offset.getX()==0&&offset.getY()==0&&offset.getZ()==0) {
return this;
}
TileEntity m = world.getTileEntity(pos.subtract(offset));
if (m!=null&&m.getClass().equals(this.getClass())) {
return m;
}
return null;
}
public void disassemble()
{
if(formed && !world.isRemote)
{
BlockPos startPos = getOrigin();
BlockPos masterPos = getPos().subtract(offset);
long time = world.getTotalWorldTime();
Vec3i size = getSize();
for(int up=0;up<size.getX();up++)
for(int forward=0;forward<size.getY();forward++)
for(int right=0;right<size.getZ();right++)
{
BlockPos pos = MiscUtils.offset(startPos, facing, mirrored, right, forward, up);
TileEntity te = world.getTileEntity(pos);
if(te instanceof TileEntityIWMultiblock)
{
TileEntityIWMultiblock part = (TileEntityIWMultiblock) te;
Vec3i diff = pos.subtract(masterPos);
if (part.offset.equals(diff)&&time!=part.onlyLocalDissassembly)
{
part.formed = false;
part.getOriginalBlockPlacer().accept(world, pos);
}
}
}
}
}
@Override
public void writeNBT(NBTTagCompound out, boolean updatePacket) {
out.setInteger(FACING, facing.getHorizontalIndex());
out.setIntArray(OFFSET, new int[]{offset.getX(), offset.getY(), offset.getZ()});
out.setBoolean(MIRRORED, mirrored);
out.setBoolean(FORMED, formed);
}
@Override
public void readNBT(NBTTagCompound in, boolean updatePacket) {
formed = in.getBoolean(FORMED);
mirrored = in.getBoolean(MIRRORED);
int[] offset = in.getIntArray(OFFSET);
this.offset = new Vec3i(offset[0], offset[1], offset[2]);
facing = EnumFacing.getHorizontal(in.getInteger(FACING));
}
public Vec3i getSize() {
return size;
}
}

View file

@ -0,0 +1,88 @@
/*
* This file is part of Industrial Wires.
* Copyright (C) 2016-2017 malte0811
*
* Industrial Wires is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Industrial Wires is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Industrial Wires. If not, see <http://www.gnu.org/licenses/>.
*/
package malte0811.industrialWires.blocks.hv;
import blusunrize.immersiveengineering.api.IEProperties;
import malte0811.industrialWires.blocks.BlockIWMultiblock;
import malte0811.industrialWires.blocks.IWProperties;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class BlockHVMultiblocks extends BlockIWMultiblock {
public static final PropertyEnum<BlockTypes_HVMultiblocks> type = PropertyEnum.create("type", BlockTypes_HVMultiblocks.class);
public BlockHVMultiblocks() {
super(Material.IRON, "hv_multiblock");
}
@Override
public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, NonNullList<ItemStack> list) {
// No MB's in the creative inventory!
}
@Override
protected IProperty[] getProperties() {
return new IProperty[]{type, IWProperties.MARX_TYPE, IEProperties.FACING_HORIZONTAL, IEProperties.BOOLEANS[0]};
}
@Override
public boolean hasTileEntity(IBlockState state) {
return true;
}
@Nullable
@Override
public TileEntity createTileEntity(@Nonnull World world, @Nonnull IBlockState state) {
switch (state.getValue(type)) {
case MARX:
return new TileEntityMarx(state.getValue(IEProperties.FACING_HORIZONTAL), state.getValue(IWProperties.MARX_TYPE), state.getValue(IEProperties.BOOLEANS[0]));
}
return null;
}
@Override
public int getMetaFromState(IBlockState state) {
return state.getValue(type).getMeta();
}
@Nonnull
@Override
public IBlockState getActualState(@Nonnull IBlockState state, IBlockAccess worldIn, BlockPos pos) {
IBlockState ret = super.getActualState(state, worldIn, pos);
TileEntity te = worldIn.getTileEntity(pos);
if (te instanceof TileEntityMarx) {
ret = ret.withProperty(IWProperties.MARX_TYPE, ((TileEntityMarx) te).type);
ret = ret.withProperty(IEProperties.FACING_HORIZONTAL, ((TileEntityMarx)te).facing);
ret = ret.withProperty(IEProperties.BOOLEANS[0], ((TileEntityMarx)te).mirrored);
}
return ret;
}
}

View file

@ -16,10 +16,12 @@
* along with Industrial Wires. If not, see <http://www.gnu.org/licenses/>.
*/
package malte0811.industrialWires.blocks;
package malte0811.industrialWires.blocks.hv;
import blusunrize.immersiveengineering.api.IEProperties;
import malte0811.industrialWires.blocks.TileEntityJacobsLadder.LadderSize;
import malte0811.industrialWires.blocks.BlockIWBase;
import malte0811.industrialWires.blocks.IMetaEnum;
import malte0811.industrialWires.blocks.IPlacementCheck;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
@ -43,7 +45,7 @@ import net.minecraft.world.World;
import javax.annotation.Nonnull;
public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacementCheck {
private static PropertyEnum<LadderSize> size_property = PropertyEnum.create("size", LadderSize.class);
private static PropertyEnum<TileEntityJacobsLadder.LadderSize> size_property = PropertyEnum.create("size", TileEntityJacobsLadder.LadderSize.class);
public BlockJacobsLadder() {
super(Material.IRON, "jacobs_ladder");
@ -75,19 +77,19 @@ public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacem
@Nonnull
@Override
public IBlockState getStateFromMeta(int meta) {
return super.getStateFromMeta(meta).withProperty(size_property, LadderSize.values()[meta]);
return super.getStateFromMeta(meta).withProperty(size_property, TileEntityJacobsLadder.LadderSize.values()[meta]);
}
@Override
public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, NonNullList<ItemStack> list) {
for (int i = 0; i < LadderSize.values().length; i++) {
for (int i = 0; i < TileEntityJacobsLadder.LadderSize.values().length; i++) {
list.add(new ItemStack(this, 1, i));
}
}
@Override
public Object[] getValues() {
return LadderSize.values();
return TileEntityJacobsLadder.LadderSize.values();
}
@Override
@ -163,7 +165,7 @@ public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacem
@Override
public boolean canPlaceBlockAt(World w, BlockPos pos, ItemStack stack) {
int dummyCount = LadderSize.values()[stack.getMetadata()].dummyCount;
int dummyCount = TileEntityJacobsLadder.LadderSize.values()[stack.getMetadata()].dummyCount;
for (int i = 1; i <= dummyCount; i++) {
if (!w.isAirBlock(pos.up(i))) {
return false;

View file

@ -0,0 +1,40 @@
/*
* This file is part of Industrial Wires.
* Copyright (C) 2016-2017 malte0811
*
* Industrial Wires is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Industrial Wires is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Industrial Wires. If not, see <http://www.gnu.org/licenses/>.
*/
package malte0811.industrialWires.blocks.hv;
import blusunrize.immersiveengineering.common.blocks.BlockIEBase;
public enum BlockTypes_HVMultiblocks implements BlockIEBase.IBlockEnum {
MARX;
@Override
public int getMeta() {
return ordinal();
}
@Override
public boolean listForCreative() {
return false;
}
@Override
public String getName() {
return name().toLowerCase();
}
}

View file

@ -0,0 +1,291 @@
/*
* This file is part of Industrial Wires.
* Copyright (C) 2016-2017 malte0811
*
* Industrial Wires is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Industrial Wires is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Industrial Wires. If not, see <http://www.gnu.org/licenses/>.
*/
package malte0811.industrialWires.blocks.hv;
import blusunrize.immersiveengineering.api.ApiUtils;
import blusunrize.immersiveengineering.api.IEProperties;
import blusunrize.immersiveengineering.api.MultiblockHandler.IMultiblock;
import blusunrize.immersiveengineering.api.crafting.IngredientStack;
import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler;
import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Connection;
import blusunrize.immersiveengineering.common.IEContent;
import blusunrize.immersiveengineering.common.blocks.metal.BlockTypes_Connector;
import blusunrize.immersiveengineering.common.blocks.metal.BlockTypes_MetalDecoration0;
import blusunrize.immersiveengineering.common.blocks.metal.BlockTypes_MetalDevice0;
import ic2.api.item.IC2Items;
import malte0811.industrialWires.IndustrialWires;
import malte0811.industrialWires.blocks.IWProperties;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.World;
import java.util.Set;
import java.util.function.BiPredicate;
import java.util.function.Function;
import java.util.function.Predicate;
import static blusunrize.immersiveengineering.common.blocks.metal.BlockTypes_Connector.CONNECTOR_HV;
import static blusunrize.immersiveengineering.common.blocks.metal.BlockTypes_Connector.CONNECTOR_REDSTONE;
import static malte0811.industrialWires.blocks.IWProperties.MarxType.*;
import static malte0811.industrialWires.blocks.hv.BlockTypes_HVMultiblocks.MARX;
import static malte0811.industrialWires.util.MiscUtils.offset;
public class MultiblockMarx implements IMultiblock {
public static final IBlockState[][][] structure = new IBlockState[2][5][5];
@Override
public String getUniqueName() {
return "iw:marx_generator";
}
@SuppressWarnings("unchecked")
@Override
public boolean isBlockTrigger(IBlockState state) {
return state.getBlock() == IEContent.blockMetalDevice0 && state.getValue(IEContent.blockMetalDevice0.property) == BlockTypes_MetalDevice0.CAPACITOR_HV;
}
private EnumFacing facing;
@SuppressWarnings("unchecked")
@Override
public boolean createStructure(World world, BlockPos pos, EnumFacing side, EntityPlayer player) {
facing = side.rotateY();
ItemStack hvCableStack = IC2Items.getItem("cable", "type:iron,insulation:0");
boolean mirrored = false;
Predicate<BlockPos> hvCap = (local) -> {
IBlockState b = world.getBlockState(local);
return b.getBlock() == IEContent.blockMetalDevice0 && b.getValue(IEContent.blockMetalDevice0.property) == BlockTypes_MetalDevice0.CAPACITOR_HV;
};
Predicate<BlockPos> heavyEng = (local) -> {
IBlockState b = world.getBlockState(local);
IBlockState state = world.getBlockState(local);
return b.getBlock() == IEContent.blockMetalDecoration0 && b.getValue(IEContent.blockMetalDecoration0.property) == BlockTypes_MetalDecoration0.HEAVY_ENGINEERING;
};
Predicate<BlockPos> steelBlock = (local) -> {
IBlockState b = world.getBlockState(local);
b = b.getBlock().getActualState(b, world, local);
ItemStack stack = new ItemStack(b.getBlock(), 1, b.getBlock().getMetaFromState(b));
return ApiUtils.compareToOreName(stack, "blockSteel");
};
Predicate<BlockPos> uninsHCCable = (local) -> {
IBlockState b = world.getBlockState(local);
return ItemStack.areItemStacksEqual(b.getBlock().getPickBlock(b, null, world, local, player), hvCableStack);
};
Function<BlockPos, Byte> hvRelayWith = (local) -> {
IBlockState state = world.getBlockState(local);
state = state.getBlock().getActualState(state, world, local);
if (state.getBlock() != IEContent.blockConnectors) {
return (byte)-1;
}
if (state.getValue(IEContent.blockConnectors.property)!= BlockTypes_Connector.RELAY_HV) {
return (byte)-1;
}
if (state.getValue(IEProperties.FACING_ALL)!=facing) {
return (byte)-1;
}
byte ret = 0;
Set<Connection> existingConns = ImmersiveNetHandler.INSTANCE.getConnections(world, local);
if (existingConns==null) {
return (byte)0;
}
for (Connection c:existingConns) {
if (c.end.equals(local.up())) {
ret |= 1;
} else if (c.end.equals(local.down())) {
ret |= 2;
} else {
return (byte) -1;
}
}
return ret;
};
BiPredicate<BlockPos, BlockTypes_Connector> connNoConns = (local, type) -> {
IBlockState state = world.getBlockState(local);
state = state.getBlock().getActualState(state, world, local);
if (state.getBlock() != IEContent.blockConnectors) {
return false;
}
if (state.getValue(IEContent.blockConnectors.property)!= type) {
return false;
}
if (state.getValue(IEProperties.FACING_ALL)!=(facing)) {
return false;
}
Set<Connection> existingConns = ImmersiveNetHandler.INSTANCE.getConnections(world, local);
return existingConns==null;
};
mirrorLoop:for (int fakeI = 0; fakeI < 2; fakeI++) {
mirrored = !mirrored;
facing = facing.getOpposite();
// PSU
if (!connNoConns.test(offset(pos, facing, mirrored, 0, -3, 0), CONNECTOR_REDSTONE)) {
continue;
}
if (!connNoConns.test(offset(pos, facing, mirrored, 1, -3, 0), CONNECTOR_HV)) {
continue;
}
for (int i = 0;i<2;i++) {
if (!heavyEng.test(offset(pos, facing, mirrored, i, -2, 0))) {
continue mirrorLoop;
}
}
//Ground discharge electrode
for (int i = 0;i<3;i++) {
if (!uninsHCCable.test(offset(pos, facing, mirrored, 0, i+2, 0))) {
continue mirrorLoop;
}
}
if (!steelBlock.test(offset(pos, facing, mirrored, 1, 4, 0))) {
continue;
}
// stage tower
int stages = 0;
while (pos.getY()+stages<=255) {
boolean end = false;
byte other = -1;
for (int i = 0;i<2;i++) {
if (!hvCap.test(offset(pos, facing, mirrored, i, 0, stages))) {
continue mirrorLoop;
}
if (!uninsHCCable.test(offset(pos, facing, mirrored, i, 1, stages))) {
continue mirrorLoop;
}
byte here = hvRelayWith.apply(offset(pos, facing, mirrored, i, -1, stages));
if (i==1&&here!=other) {
continue mirrorLoop;
}
if (stages!=0&&(here&2)==0) {
continue mirrorLoop;
}
if (here<=0) {
continue mirrorLoop;
}
if ((here&1)==0) {
end = true;
}
other = here;
}
stages++;
if (end) {
if (stages>=5) {
break;
} else {
continue mirrorLoop;
}
}
}
// Top electrode
for (int i = 0;i<3;i++) {
if (!uninsHCCable.test(offset(pos, facing, mirrored, 1, i+2, stages-1))) {
continue mirrorLoop;
}
}
player.sendMessage(new TextComponentString(stages+" stage Marx generator found. Forming..."));
//REPLACE STRUCTURE
if (!world.isRemote) {
IBlockState noModel = IndustrialWires.hvMultiblocks.getDefaultState().withProperty(BlockHVMultiblocks.type, MARX)
.withProperty(IWProperties.MARX_TYPE, NO_MODEL).withProperty(IEProperties.BOOLEANS[0], mirrored);
IBlockState stageModel = noModel.withProperty(IWProperties.MARX_TYPE, STAGE);
// Main tower
for (int s = 0; s < stages; s++) {
for (int f = -1; f < 2; f++) {
for (int r = 0; r < 2; r++) {
BlockPos p = offset(pos, facing, mirrored, r, f, s);
if (f==-1) {
ImmersiveNetHandler.INSTANCE.clearAllConnectionsFor(p, world, false);
}
if (f == 0 && r == 0) {
if (s != 0 && s != stages - 1) {
set(world, p, stageModel, stages, pos);
}
} else {
set(world, p, noModel, stages, pos);
}
}
}
}
//bottom electrode
for (int i = -3;i<5;i++) {
if (i>-2&&i<2) {
continue;
}
for (int j = 0;j<2;j++) {
if (j==1&&i>1&&i<4) {
continue;
}
set(world, offset(pos, facing, mirrored, j, i, 0), noModel, stages, pos);
}
}
set(world, pos, noModel.withProperty(IWProperties.MARX_TYPE, BOTTOM), stages, pos);
set(world, pos.up(stages-1), noModel.withProperty(IWProperties.MARX_TYPE, TOP), stages, pos);
for (int i = 0;i<3;i++) {
set(world, offset(pos, facing, mirrored, 1,2+i, stages-1), noModel, stages, pos);
}
}
return true;
}
player.sendMessage(new TextComponentString("NOT FOUND"));
return false;
}
private void set(World world, BlockPos p, IBlockState state, int stages, BlockPos origin) {
world.setBlockState(p, state);
TileEntity te = world.getTileEntity(p);
if (te instanceof TileEntityMarx) {
TileEntityMarx marx = (TileEntityMarx) te;
marx.stageCount = stages;
marx.offset = p.subtract(origin);
marx.formed = true;
marx.markDirty();
}
}
@Override
public ItemStack[][][] getStructureManual() {
return new ItemStack[0][][];
}
@Override
public IngredientStack[] getTotalMaterials() {
return new IngredientStack[0];
}
@Override
public boolean overwriteBlockRender(ItemStack stack, int iterator) {
return false;
}
@Override
public float getManualScale() {
return 0;
}
@Override
public boolean canRenderFormedStructure() {
return false;
}
@Override
public void renderFormedStructure() {
}
}

View file

@ -0,0 +1,148 @@
/*
* This file is part of Industrial Wires.
* Copyright (C) 2016-2017 malte0811
*
* Industrial Wires is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Industrial Wires is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Industrial Wires. If not, see <http://www.gnu.org/licenses/>.
*/
package malte0811.industrialWires.blocks.hv;
import blusunrize.immersiveengineering.api.IEProperties;
import blusunrize.immersiveengineering.common.IEContent;
import blusunrize.immersiveengineering.common.blocks.BlockTypes_MetalsIE;
import blusunrize.immersiveengineering.common.blocks.metal.*;
import ic2.api.item.IC2Items;
import malte0811.industrialWires.blocks.IWProperties;
import malte0811.industrialWires.blocks.TileEntityIWMultiblock;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3i;
import net.minecraft.world.World;
import javax.annotation.Nonnull;
import java.util.function.BiConsumer;
public class TileEntityMarx extends TileEntityIWMultiblock implements ITickable {
private static final String TYPE = "type";
private static final String STAGES = "stages";
public IWProperties.MarxType type = IWProperties.MarxType.NO_MODEL;
int stageCount = 0;
public TileEntityMarx(EnumFacing facing, IWProperties.MarxType type, boolean mirrored) {
this.facing = facing;
this.type = type;
this.mirrored = mirrored;
}
public TileEntityMarx() {}
@Override
public void writeNBT(NBTTagCompound out, boolean updatePacket) {
super.writeNBT(out, updatePacket);
out.setInteger(TYPE, type.ordinal());
out.setInteger(STAGES, stageCount);
}
@Override
public void readNBT(NBTTagCompound in, boolean updatePacket) {
super.readNBT(in, updatePacket);
type = IWProperties.MarxType.values()[in.getInteger(TYPE)];
stageCount = in.getInteger(STAGES);
}
@Nonnull
@Override
protected BlockPos getOrigin() {
return getPos().subtract(offset).offset(facing.getOpposite(), 3);
}
@SuppressWarnings("unchecked")
@Override
public IBlockState getOriginalBlock() {
int forward = dot(offset, facing.getDirectionVec());
int right = dot(offset, facing.rotateY().getDirectionVec())*(mirrored?-1:1);
int up = offset.getY();
if (forward==0) {
return IEContent.blockMetalDevice0.getDefaultState().withProperty(IEContent.blockMetalDevice0.property, BlockTypes_MetalDevice0.CAPACITOR_HV);
} else if (forward==-1) {
return IEContent.blockConnectors.getDefaultState().withProperty(IEContent.blockConnectors.property, BlockTypes_Connector.RELAY_HV)
.withProperty(IEProperties.FACING_ALL, facing);
} else if (forward==4&&up==0&&right==1) {
return IEContent.blockStorage.getDefaultState().withProperty(IEContent.blockStorage.property, BlockTypes_MetalsIE.STEEL);
} else if (forward>0) {
//NOP. handled by getOriginalBlockPlacer
} else if (forward==-2) {
return IEContent.blockMetalDecoration0.getDefaultState().withProperty(IEContent.blockMetalDecoration0.property, BlockTypes_MetalDecoration0.HEAVY_ENGINEERING);
} else if (right==0) {
return IEContent.blockConnectors.getDefaultState().withProperty(IEContent.blockConnectors.property, BlockTypes_Connector.CONNECTOR_REDSTONE)
.withProperty(IEProperties.FACING_ALL, facing);
} else {
return IEContent.blockConnectors.getDefaultState().withProperty(IEContent.blockConnectors.property, BlockTypes_Connector.CONNECTOR_HV)
.withProperty(IEProperties.FACING_ALL, facing);
}
return null;
}
@Override
public BiConsumer<World, BlockPos> getOriginalBlockPlacer() {
IBlockState original = getOriginalBlock();
if (original!=null) {
if (original.getBlock()==IEContent.blockConnectors) {
return (w, p)->{
w.setBlockState(p, original);
TileEntity te = w.getTileEntity(p);
if (te instanceof TileEntityConnectorLV) {
((TileEntityConnectorLV) te).facing = original.getValue(IEProperties.FACING_ALL);
te.markDirty();
} else if (te instanceof TileEntityConnectorRedstone) {
((TileEntityConnectorRedstone) te).facing = original.getValue(IEProperties.FACING_ALL);
te.markDirty();
}
};
} else {
return (w, p)->w.setBlockState(p, original);
}
} else {
ItemStack hv = IC2Items.getItem("cable", "type:iron,insulation:0");
return (w, p)->{
w.setBlockToAir(p);
EntityItem item = new EntityItem(w, p.getX(), p.getY(), p.getZ(), hv.copy());
w.spawnEntity(item);
};
}
}
private int dot(Vec3i a, Vec3i b) {
return a.getX()*b.getX()+a.getY()*b.getY()+a.getZ()*b.getZ();
}
@Override
public void update() {
if (!world.isRemote&&type== IWProperties.MarxType.BOTTOM) {
//TODO do stuff and things
}
}
@Override
public Vec3i getSize() {
return new Vec3i(stageCount, 8, 2);
}
}

View file

@ -30,10 +30,10 @@ import malte0811.industrialWires.CommonProxy;
import malte0811.industrialWires.IWConfig;
import malte0811.industrialWires.IndustrialWires;
import malte0811.industrialWires.blocks.IMetaEnum;
import malte0811.industrialWires.blocks.TileEntityJacobsLadder;
import malte0811.industrialWires.blocks.controlpanel.BlockTypes_Panel;
import malte0811.industrialWires.blocks.controlpanel.TileEntityPanelCreator;
import malte0811.industrialWires.blocks.controlpanel.TileEntityRSPanelConn;
import malte0811.industrialWires.blocks.hv.TileEntityJacobsLadder;
import malte0811.industrialWires.client.gui.GuiPanelComponent;
import malte0811.industrialWires.client.gui.GuiPanelCreator;
import malte0811.industrialWires.client.gui.GuiRSPanelConn;

View file

@ -18,8 +18,8 @@
package malte0811.industrialWires.client.render;
import malte0811.industrialWires.blocks.TileEntityJacobsLadder;
import malte0811.industrialWires.blocks.TileEntityJacobsLadder.LadderSize;
import malte0811.industrialWires.blocks.hv.TileEntityJacobsLadder;
import malte0811.industrialWires.blocks.hv.TileEntityJacobsLadder.LadderSize;
import malte0811.industrialWires.util.Beziers;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper;

View file

@ -84,4 +84,14 @@ public final class MiscUtils {
}
return ret;
}
/**
* @param mirror inverts right
*/
public static BlockPos offset(BlockPos p, EnumFacing f, boolean mirror, int right, int forward, int up) {
if (mirror) {
right *= -1;
}
return p.offset(f, forward).offset(f.rotateY(), right).add(0, up, 0);
}
}

View file

@ -0,0 +1,74 @@
{
"forge_marker": 1,
"defaults": {
"transform": "forge:default-block",
"custom": {
"flip-v": true
},
"textures": {
"particle": "immersiveengineering:blocks/storage_steel"
}
},
"variants": {
"type": {
"marx": {
}
},
"marx_type": {
"bottom": {
"model": "industrialwires:marx_bottom.obj"
},
"stage": {
"model": "industrialwires:marx_stage.obj"
},
"top": {
"model": "industrialwires:marx_top.obj"
},
"no_model": {
"model": "builtin/generated"
}
},
"facing": {
"north": {
"transform": {
"rotation": {
"y": 0
}
}
},
"south": {
"transform": {
"rotation": {
"y": 180
}
}
},
"west": {
"transform": {
"rotation": {
"y": 90
}
}
},
"east": {
"transform": {
"rotation": {
"y": -90
}
}
}
},
"boolean0": //Mirror
{
"false": {},
"true": {
"transform": {
"rotation": {
"y": 0
}
}
}
}
}
}

View file

@ -0,0 +1,20 @@
# Blender MTL File: 'NewMarx.blend'
# Material Count: 2
newmtl Material.003
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl None
Ns 0
Ka 0.000000 0.000000 0.000000
Kd 0.8 0.8 0.8
Ks 0.8 0.8 0.8
d 1
illum 2

View file

@ -0,0 +1,518 @@
# Blender v2.78 (sub 0) OBJ File: 'NewMarx.blend'
# www.blender.org
mtllib marx_bottom.mtl
o Cube.000_Cube.023
v 0.000000 0.000000 3.000000
v 0.000000 1.000000 3.000000
v 0.000000 0.000000 2.000000
v 0.000000 1.000000 2.000000
v 2.000000 0.000000 3.000000
v 2.000000 1.000000 3.000000
v 2.000000 0.000000 2.000000
v 2.000000 1.000000 2.000000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 1//1 2//1 4//1 3//1
f 3//2 4//2 8//2 7//2
f 7//3 8//3 6//3 5//3
f 5//4 6//4 2//4 1//4
f 3//5 7//5 5//5 1//5
f 8//6 4//6 2//6 6//6
o Cube.010_Cube.034
v 0.437500 0.187500 2.000000
v 0.437500 0.312500 2.000000
v 0.437500 0.187500 1.000000
v 0.437500 0.312500 1.000000
v 0.562500 0.187500 2.000000
v 0.562500 0.312500 2.000000
v 0.562500 0.187500 1.000000
v 0.562500 0.312500 1.000000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 9//7 10//7 12//7 11//7
f 11//8 12//8 16//8 15//8
f 15//9 16//9 14//9 13//9
f 13//10 14//10 10//10 9//10
f 11//11 15//11 13//11 9//11
f 16//12 12//12 10//12 14//12
o Cube.028_Cube.039
v 1.437500 0.187500 2.000000
v 1.437500 0.312500 2.000000
v 1.437500 0.187500 1.000000
v 1.437500 0.312500 1.000000
v 1.562500 0.187500 2.000000
v 1.562500 0.312500 2.000000
v 1.562500 0.187500 1.000000
v 1.562500 0.312500 1.000000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 17//13 18//13 20//13 19//13
f 19//14 20//14 24//14 23//14
f 23//15 24//15 22//15 21//15
f 21//16 22//16 18//16 17//16
f 19//17 23//17 21//17 17//17
f 24//18 20//18 18//18 22//18
o Cube.029_Cube.040
v 1.000000 0.000000 -3.000000
v 1.000000 0.750000 -3.000000
v 1.000000 0.000000 -4.000000
v 1.000000 0.750000 -4.000000
v 2.000000 0.000000 -3.000000
v 2.000000 0.750000 -3.000000
v 2.000000 0.000000 -4.000000
v 2.000000 0.750000 -4.000000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 25//19 26//19 28//19 27//19
f 27//20 28//20 32//20 31//20
f 31//21 32//21 30//21 29//21
f 29//22 30//22 26//22 25//22
f 27//23 31//23 29//23 25//23
f 32//24 28//24 26//24 30//24
o Cube.030_Cube.041
v 1.375000 0.750000 -3.375000
v 1.375000 1.000000 -3.375000
v 1.375000 0.750000 -3.625000
v 1.375000 1.000000 -3.625000
v 1.625000 0.750000 -3.375000
v 1.625000 1.000000 -3.375000
v 1.625000 0.750000 -3.625000
v 1.625000 1.000000 -3.625000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 33//25 34//25 36//25 35//25
f 35//26 36//26 40//26 39//26
f 39//27 40//27 38//27 37//27
f 37//28 38//28 34//28 33//28
f 35//29 39//29 37//29 33//29
f 40//30 36//30 34//30 38//30
o Cube.031_Cube.042
v 0.437500 0.000000 -0.375000
v 0.437500 0.187500 -0.375000
v 0.437500 0.000000 -0.625000
v 0.437500 0.187500 -0.625000
v 0.562500 0.000000 -0.375000
v 0.562500 0.187500 -0.375000
v 0.562500 0.000000 -0.625000
v 0.562500 0.187500 -0.625000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 41//31 42//31 44//31 43//31
f 43//32 44//32 48//32 47//32
f 47//33 48//33 46//33 45//33
f 45//34 46//34 42//34 41//34
f 43//35 47//35 45//35 41//35
f 48//36 44//36 42//36 46//36
o Cube.032_Cube.043
v 0.437500 0.000000 -1.375000
v 0.437500 0.187500 -1.375000
v 0.437500 0.000000 -1.625000
v 0.437500 0.187500 -1.625000
v 0.562500 0.000000 -1.375000
v 0.562500 0.187500 -1.375000
v 0.562500 0.000000 -1.625000
v 0.562500 0.187500 -1.625000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 49//37 50//37 52//37 51//37
f 51//38 52//38 56//38 55//38
f 55//39 56//39 54//39 53//39
f 53//40 54//40 50//40 49//40
f 51//41 55//41 53//41 49//41
f 56//42 52//42 50//42 54//42
o Cube.033_Cube.044
v 0.437500 0.000000 -2.375000
v 0.437500 0.187500 -2.375000
v 0.437500 0.000000 -2.625000
v 0.437500 0.187500 -2.625000
v 0.562500 0.000000 -2.375000
v 0.562500 0.187500 -2.375000
v 0.562500 0.000000 -2.625000
v 0.562500 0.187500 -2.625000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 57//43 58//43 60//43 59//43
f 59//44 60//44 64//44 63//44
f 63//45 64//45 62//45 61//45
f 61//46 62//46 58//46 57//46
f 59//47 63//47 61//47 57//47
f 64//48 60//48 58//48 62//48
o Cube.035_Cube.045
v 0.437500 0.000000 1.625000
v 0.437500 0.187500 1.625000
v 0.437500 0.000000 1.375000
v 0.437500 0.187500 1.375000
v 0.562500 0.000000 1.625000
v 0.562500 0.187500 1.625000
v 0.562500 0.000000 1.375000
v 0.562500 0.187500 1.375000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 65//49 66//49 68//49 67//49
f 67//50 68//50 72//50 71//50
f 71//51 72//51 70//51 69//51
f 69//52 70//52 66//52 65//52
f 67//53 71//53 69//53 65//53
f 72//54 68//54 66//54 70//54
o Cube.036_Cube.046
v 0.562500 0.187500 -3.437500
v 0.562500 0.312500 -3.437500
v 0.562500 0.187500 -3.562500
v 0.562500 0.312500 -3.562500
v 1.000000 0.187500 -3.437500
v 1.000000 0.312500 -3.437500
v 1.000000 0.187500 -3.562500
v 1.000000 0.312500 -3.562500
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 73//55 74//55 76//55 75//55
f 75//56 76//56 80//56 79//56
f 79//57 80//57 78//57 77//57
f 77//58 78//58 74//58 73//58
f 75//59 79//59 77//59 73//59
f 80//60 76//60 74//60 78//60
o Cube.067_Cube.047
v 0.437500 0.187500 0.000000
v 0.437500 0.312500 0.000000
v 0.437500 0.187500 -3.562500
v 0.437500 0.312500 -3.562500
v 0.562500 0.187500 0.000000
v 0.562500 0.312500 0.000000
v 0.562500 0.187500 -3.562500
v 0.562500 0.312500 -3.562500
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 81//61 82//61 84//61 83//61
f 83//62 84//62 88//62 87//62
f 87//63 88//63 86//63 85//63
f 85//64 86//64 82//64 81//64
f 83//65 87//65 85//65 81//65
f 88//66 84//66 82//66 86//66
o Cube.001_Cube.048
v 1.999999 -0.000001 0.000001
v 1.999999 -0.000001 1.000000
v 0.000000 0.000000 1.000000
v 0.000000 0.000000 0.000000
v 2.000000 0.499999 0.000001
v 1.999999 0.499999 1.000000
v -0.000000 0.500000 1.000000
v 0.000000 0.500000 0.000001
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 -0.0000
vn 1.0000 -0.0000 0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
usemtl Material.003
s off
f 89//67 90//67 91//67 92//67
f 93//68 96//68 95//68 94//68
f 89//69 93//69 94//69 90//69
f 90//70 94//70 95//70 91//70
f 91//71 95//71 96//71 92//71
f 93//72 89//72 92//72 96//72
o Cube.002_Cube.049
v 0.374998 0.500000 0.625000
v 0.374998 1.000000 0.625000
v 0.374998 0.500000 0.375000
v 0.374998 1.000000 0.375000
v 0.624998 0.500000 0.625000
v 0.624998 1.000000 0.625000
v 0.624998 0.500000 0.375000
v 0.624998 1.000000 0.375000
vn -1.0000 0.0000 0.0000
vn -0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 97//73 98//73 100//73 99//73
f 99//74 100//74 104//74 103//74
f 103//75 104//75 102//75 101//75
f 101//76 102//76 98//76 97//76
f 99//77 103//77 101//77 97//77
f 104//78 100//78 98//78 102//78
o Cube.004_Cube.050
v 1.374998 0.500000 0.625000
v 1.374998 1.000000 0.625000
v 1.374998 0.500000 0.375000
v 1.374998 1.000000 0.375000
v 1.624998 0.500000 0.625000
v 1.624998 1.000000 0.625000
v 1.624998 0.500000 0.375000
v 1.624998 1.000000 0.375000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 105//79 106//79 108//79 107//79
f 107//80 108//80 112//80 111//80
f 111//81 112//81 110//81 109//81
f 109//82 110//82 106//82 105//82
f 107//83 111//83 109//83 105//83
f 112//84 108//84 106//84 110//84
o Cube.005_Cube.051
v 0.250000 0.687500 0.750000
v 0.250000 0.812500 0.750000
v 0.250000 0.687500 0.250000
v 0.250000 0.812500 0.250000
v 0.750000 0.687500 0.750000
v 0.750000 0.812500 0.750000
v 0.750000 0.687500 0.250000
v 0.750000 0.812500 0.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 113//85 114//85 116//85 115//85
f 115//86 116//86 120//86 119//86
f 119//87 120//87 118//87 117//87
f 117//88 118//88 114//88 113//88
f 115//89 119//89 117//89 113//89
f 120//90 116//90 114//90 118//90
o Cube.006_Cube.052
v 1.250000 0.687500 0.750000
v 1.250000 0.812500 0.750000
v 1.250000 0.687500 0.250000
v 1.250000 0.812500 0.250000
v 1.750000 0.687500 0.750000
v 1.750000 0.812500 0.750000
v 1.750000 0.687500 0.250000
v 1.750000 0.812500 0.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 121//91 122//91 124//91 123//91
f 123//92 124//92 128//92 127//92
f 127//93 128//93 126//93 125//93
f 125//94 126//94 122//94 121//94
f 123//95 127//95 125//95 121//95
f 128//96 124//96 122//96 126//96
o Cube.007_Cube.053
v 1.437498 0.312500 1.375000
v 1.437498 1.187500 1.375000
v 1.437498 0.312500 1.250000
v 1.437498 1.187500 1.250000
v 1.562498 0.312500 1.375000
v 1.562498 1.187500 1.375000
v 1.562498 0.312500 1.250000
v 1.562498 1.187500 1.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 129//97 130//97 132//97 131//97
f 131//98 132//98 136//98 135//98
f 135//99 136//99 134//99 133//99
f 133//100 134//100 130//100 129//100
f 131//101 135//101 133//101 129//101
f 136//102 132//102 130//102 134//102
o Cube.008_Cube.054
v 1.374998 0.375000 1.437500
v 1.374998 1.125000 1.437500
v 1.374998 0.375000 1.187500
v 1.374998 1.125000 1.187500
v 1.624998 0.375000 1.437500
v 1.624998 1.125000 1.437500
v 1.624998 0.375000 1.187500
v 1.624998 1.125000 1.187500
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 137//103 138//103 140//103 139//103
f 139//104 140//104 144//104 143//104
f 143//105 144//105 142//105 141//105
f 141//106 142//106 138//106 137//106
f 139//107 143//107 141//107 137//107
f 144//108 140//108 138//108 142//108
o Cube.009_Cube.055
v 1.187498 0.385723 -0.187500
v 1.010721 0.562500 -0.187500
v 1.187498 0.385723 -0.437500
v 1.010721 0.562500 -0.437500
v 1.364275 0.562500 -0.187500
v 1.187498 0.739277 -0.187500
v 1.364275 0.562500 -0.437500
v 1.187498 0.739277 -0.437500
v 1.455804 0.205806 -0.250000
v 1.102251 0.559359 -0.250000
v 1.455804 0.205806 -0.375000
v 1.102250 0.559359 -0.375000
v 1.544192 0.294194 -0.250000
v 1.190639 0.647748 -0.250000
v 1.544192 0.294194 -0.375000
v 1.190639 0.647748 -0.375000
v 1.562498 0.312500 -0.375000
v 1.437498 0.312500 -0.375000
v 1.562498 0.312500 -0.000000
v 1.437498 0.312500 0.000000
v 1.562498 0.187500 -0.375000
v 1.437498 0.187500 -0.375000
v 1.562498 0.187500 -0.000000
v 1.437498 0.187500 0.000000
vn -0.7071 -0.7071 0.0000
vn -0.0000 0.0000 -1.0000
vn 0.7071 0.7071 -0.0000
vn 0.0000 -0.0000 1.0000
vn 0.7071 -0.7071 -0.0000
vn -0.7071 0.7071 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
usemtl None
s off
f 145//109 146//109 148//109 147//109
f 147//110 148//110 152//110 151//110
f 151//111 152//111 150//111 149//111
f 149//112 150//112 146//112 145//112
f 147//113 151//113 149//113 145//113
f 152//114 148//114 146//114 150//114
f 153//109 154//109 156//109 155//109
f 155//110 156//110 160//110 159//110
f 159//111 160//111 158//111 157//111
f 157//112 158//112 154//112 153//112
f 155//113 159//113 157//113 153//113
f 160//114 156//114 154//114 158//114
f 161//115 162//115 164//115 163//115
f 163//112 164//112 168//112 167//112
f 167//116 168//116 166//116 165//116
f 165//110 166//110 162//110 161//110
f 163//117 167//117 165//117 161//117
f 168//118 164//118 162//118 166//118
o Cube.011_Cube.056
v 0.437498 0.312500 1.375000
v 0.437499 1.187500 1.375000
v 0.437498 0.312500 1.250000
v 0.437499 1.187500 1.250000
v 0.562498 0.312500 1.375000
v 0.562499 1.187500 1.375000
v 0.562498 0.312500 1.250000
v 0.562499 1.187500 1.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 169//119 170//119 172//119 171//119
f 171//120 172//120 176//120 175//120
f 175//121 176//121 174//121 173//121
f 173//122 174//122 170//122 169//122
f 171//123 175//123 173//123 169//123
f 176//124 172//124 170//124 174//124
o Cube.012_Cube.057
v 0.374998 0.375000 1.437500
v 0.374998 1.125000 1.437500
v 0.374998 0.375000 1.187500
v 0.374998 1.125000 1.187500
v 0.624998 0.375000 1.437500
v 0.624998 1.125000 1.437500
v 0.624998 0.375000 1.187500
v 0.624998 1.125000 1.187500
vn -1.0000 0.0000 0.0000
vn -0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 177//125 178//125 180//125 179//125
f 179//126 180//126 184//126 183//126
f 183//127 184//127 182//127 181//127
f 181//128 182//128 178//128 177//128
f 179//129 183//129 181//129 177//129
f 184//130 180//130 178//130 182//130

View file

@ -0,0 +1,20 @@
# Blender MTL File: 'NewMarx.blend'
# Material Count: 2
newmtl Material.007
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl None
Ns 0
Ka 0.000000 0.000000 0.000000
Kd 0.8 0.8 0.8
Ks 0.8 0.8 0.8
d 1
illum 2

View file

@ -0,0 +1,366 @@
# Blender v2.78 (sub 0) OBJ File: 'NewMarx.blend'
# www.blender.org
mtllib marx_stage.mtl
o Cube.003_Cube.085
v 1.999999 -0.000001 0.000001
v 1.999999 -0.000001 1.000000
v 0.000000 0.000000 1.000000
v 0.000000 0.000000 0.000000
v 2.000000 0.499999 0.000001
v 1.999999 0.499999 1.000000
v -0.000000 0.500000 1.000000
v 0.000000 0.500000 0.000001
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 -0.0000
vn 1.0000 -0.0000 0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
usemtl Material.007
s off
f 1//1 2//1 3//1 4//1
f 5//2 8//2 7//2 6//2
f 1//3 5//3 6//3 2//3
f 2//4 6//4 7//4 3//4
f 3//5 7//5 8//5 4//5
f 5//6 1//6 4//6 8//6
o Cube.013_Cube.086
v 0.374998 0.500000 0.625000
v 0.374998 1.000000 0.625000
v 0.374998 0.500000 0.375000
v 0.374998 1.000000 0.375000
v 0.624998 0.500000 0.625000
v 0.624998 1.000000 0.625000
v 0.624998 0.500000 0.375000
v 0.624998 1.000000 0.375000
vn -1.0000 0.0000 0.0000
vn -0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 9//7 10//7 12//7 11//7
f 11//8 12//8 16//8 15//8
f 15//9 16//9 14//9 13//9
f 13//10 14//10 10//10 9//10
f 11//11 15//11 13//11 9//11
f 16//12 12//12 10//12 14//12
o Cube.014_Cube.087
v 1.374998 0.500000 0.625000
v 1.374998 1.000000 0.625000
v 1.374998 0.500000 0.375000
v 1.374998 1.000000 0.375000
v 1.624998 0.500000 0.625000
v 1.624998 1.000000 0.625000
v 1.624998 0.500000 0.375000
v 1.624998 1.000000 0.375000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 17//13 18//13 20//13 19//13
f 19//14 20//14 24//14 23//14
f 23//15 24//15 22//15 21//15
f 21//16 22//16 18//16 17//16
f 19//17 23//17 21//17 17//17
f 24//18 20//18 18//18 22//18
o Cube.016_Cube.088
v 0.250000 0.687500 0.750000
v 0.250000 0.812500 0.750000
v 0.250000 0.687500 0.250000
v 0.250000 0.812500 0.250000
v 0.750000 0.687500 0.750000
v 0.750000 0.812500 0.750000
v 0.750000 0.687500 0.250000
v 0.750000 0.812500 0.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 25//19 26//19 28//19 27//19
f 27//20 28//20 32//20 31//20
f 31//21 32//21 30//21 29//21
f 29//22 30//22 26//22 25//22
f 27//23 31//23 29//23 25//23
f 32//24 28//24 26//24 30//24
o Cube.017_Cube.089
v 1.250000 0.687500 0.750000
v 1.250000 0.812500 0.750000
v 1.250000 0.687500 0.250000
v 1.250000 0.812500 0.250000
v 1.750000 0.687500 0.750000
v 1.750000 0.812500 0.750000
v 1.750000 0.687500 0.250000
v 1.750000 0.812500 0.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 33//25 34//25 36//25 35//25
f 35//26 36//26 40//26 39//26
f 39//27 40//27 38//27 37//27
f 37//28 38//28 34//28 33//28
f 35//29 39//29 37//29 33//29
f 40//30 36//30 34//30 38//30
o Cube.018_Cube.090
v 1.437498 0.312500 1.375000
v 1.437498 1.187500 1.375000
v 1.437498 0.312500 1.250000
v 1.437498 1.187500 1.250000
v 1.562498 0.312500 1.375000
v 1.562498 1.187500 1.375000
v 1.562498 0.312500 1.250000
v 1.562498 1.187500 1.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 41//31 42//31 44//31 43//31
f 43//32 44//32 48//32 47//32
f 47//33 48//33 46//33 45//33
f 45//34 46//34 42//34 41//34
f 43//35 47//35 45//35 41//35
f 48//36 44//36 42//36 46//36
o Cube.019_Cube.091
v 1.437498 0.187500 1.375000
v 1.437498 0.312500 1.375000
v 1.437498 0.187500 1.000000
v 1.437498 0.312500 1.000000
v 1.562498 0.187500 1.375000
v 1.562498 0.312500 1.375000
v 1.562498 0.187500 1.000000
v 1.562498 0.312500 1.000000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn -0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 49//37 50//37 52//37 51//37
f 51//38 52//38 56//38 55//38
f 55//39 56//39 54//39 53//39
f 53//40 54//40 50//40 49//40
f 51//41 55//41 53//41 49//41
f 56//42 52//42 50//42 54//42
o Cube.020_Cube.092
v 1.374998 0.375000 1.437500
v 1.374998 1.125000 1.437500
v 1.374998 0.375000 1.187500
v 1.374998 1.125000 1.187500
v 1.624998 0.375000 1.437500
v 1.624998 1.125000 1.437500
v 1.624998 0.375000 1.187500
v 1.624998 1.125000 1.187500
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 57//43 58//43 60//43 59//43
f 59//44 60//44 64//44 63//44
f 63//45 64//45 62//45 61//45
f 61//46 62//46 58//46 57//46
f 59//47 63//47 61//47 57//47
f 64//48 60//48 58//48 62//48
o Cube.021_Cube.093
v 1.187498 0.385723 -0.187500
v 1.010721 0.562500 -0.187500
v 1.187498 0.385723 -0.437500
v 1.010721 0.562500 -0.437500
v 1.364275 0.562500 -0.187500
v 1.187498 0.739277 -0.187500
v 1.364275 0.562500 -0.437500
v 1.187498 0.739277 -0.437500
v 1.455804 0.205806 -0.250000
v 1.102251 0.559359 -0.250000
v 1.455804 0.205806 -0.375000
v 1.102250 0.559359 -0.375000
v 1.544192 0.294194 -0.250000
v 1.190639 0.647748 -0.250000
v 1.544192 0.294194 -0.375000
v 1.190639 0.647748 -0.375000
v 1.562498 0.312500 -0.375000
v 1.437498 0.312500 -0.375000
v 1.562498 0.312500 -0.000000
v 1.437498 0.312500 0.000000
v 1.562498 0.187500 -0.375000
v 1.437498 0.187500 -0.375000
v 1.562498 0.187500 -0.000000
v 1.437498 0.187500 0.000000
vn -0.7071 -0.7071 0.0000
vn -0.0000 0.0000 -1.0000
vn 0.7071 0.7071 -0.0000
vn 0.0000 -0.0000 1.0000
vn 0.7071 -0.7071 -0.0000
vn -0.7071 0.7071 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
usemtl None
s off
f 65//49 66//49 68//49 67//49
f 67//50 68//50 72//50 71//50
f 71//51 72//51 70//51 69//51
f 69//52 70//52 66//52 65//52
f 67//53 71//53 69//53 65//53
f 72//54 68//54 66//54 70//54
f 73//49 74//49 76//49 75//49
f 75//50 76//50 80//50 79//50
f 79//51 80//51 78//51 77//51
f 77//52 78//52 74//52 73//52
f 75//53 79//53 77//53 73//53
f 80//54 76//54 74//54 78//54
f 81//55 82//55 84//55 83//55
f 83//52 84//52 88//52 87//52
f 87//56 88//56 86//56 85//56
f 85//50 86//50 82//50 81//50
f 83//57 87//57 85//57 81//57
f 88//58 84//58 82//58 86//58
o Cube.022_Cube.094
v 0.437498 0.312500 1.375000
v 0.437499 1.187500 1.375000
v 0.437498 0.312500 1.250000
v 0.437499 1.187500 1.250000
v 0.562498 0.312500 1.375000
v 0.562499 1.187500 1.375000
v 0.562498 0.312500 1.250000
v 0.562499 1.187500 1.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 89//59 90//59 92//59 91//59
f 91//60 92//60 96//60 95//60
f 95//61 96//61 94//61 93//61
f 93//62 94//62 90//62 89//62
f 91//63 95//63 93//63 89//63
f 96//64 92//64 90//64 94//64
o Cube.023_Cube.095
v 0.437498 0.187500 1.375000
v 0.437498 0.312500 1.375000
v 0.437498 0.187500 1.000000
v 0.437498 0.312500 1.000000
v 0.562498 0.187500 1.375000
v 0.562498 0.312500 1.375000
v 0.562498 0.187500 1.000000
v 0.562498 0.312500 1.000000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn -0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 97//65 98//65 100//65 99//65
f 99//66 100//66 104//66 103//66
f 103//67 104//67 102//67 101//67
f 101//68 102//68 98//68 97//68
f 99//69 103//69 101//69 97//69
f 104//70 100//70 98//70 102//70
o Cube.024_Cube.096
v 0.374998 0.375000 1.437500
v 0.374998 1.125000 1.437500
v 0.374998 0.375000 1.187500
v 0.374998 1.125000 1.187500
v 0.624998 0.375000 1.437500
v 0.624998 1.125000 1.437500
v 0.624998 0.375000 1.187500
v 0.624998 1.125000 1.187500
vn -1.0000 0.0000 0.0000
vn -0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 105//71 106//71 108//71 107//71
f 107//72 108//72 112//72 111//72
f 111//73 112//73 110//73 109//73
f 109//74 110//74 106//74 105//74
f 107//75 111//75 109//75 105//75
f 112//76 108//76 106//76 110//76
o Cube.025_Cube.097
v 0.812498 0.114277 -0.187500
v 0.989275 -0.062500 -0.187500
v 0.812498 0.114277 -0.437500
v 0.989275 -0.062500 -0.437500
v 0.635722 -0.062500 -0.187500
v 0.812498 -0.239277 -0.187500
v 0.635722 -0.062500 -0.437500
v 0.812498 -0.239277 -0.437500
v 0.544192 0.294194 -0.250000
v 0.897746 -0.059359 -0.250000
v 0.544193 0.294194 -0.375000
v 0.897746 -0.059359 -0.375000
v 0.455804 0.205806 -0.250000
v 0.809358 -0.147748 -0.250000
v 0.455804 0.205806 -0.375000
v 0.809358 -0.147748 -0.375000
v 0.437498 0.187500 -0.375000
v 0.562498 0.187500 -0.375000
v 0.437498 0.187500 -0.000000
v 0.562498 0.187500 0.000000
v 0.437498 0.312500 -0.375000
v 0.562498 0.312500 -0.375000
v 0.437498 0.312500 -0.000000
v 0.562498 0.312500 0.000000
vn 0.7071 0.7071 0.0000
vn 0.0000 -0.0000 -1.0000
vn -0.7071 -0.7071 -0.0000
vn -0.0000 0.0000 1.0000
vn -0.7071 0.7071 -0.0000
vn 0.7071 -0.7071 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
usemtl None
s off
f 113//77 114//77 116//77 115//77
f 115//78 116//78 120//78 119//78
f 119//79 120//79 118//79 117//79
f 117//80 118//80 114//80 113//80
f 115//81 119//81 117//81 113//81
f 120//82 116//82 114//82 118//82
f 121//77 122//77 124//77 123//77
f 123//78 124//78 128//78 127//78
f 127//79 128//79 126//79 125//79
f 125//80 126//80 122//80 121//80
f 123//81 127//81 125//81 121//81
f 128//82 124//82 122//82 126//82
f 129//83 130//83 132//83 131//83
f 131//80 132//80 136//80 135//80
f 135//84 136//84 134//84 133//84
f 133//78 134//78 130//78 129//78
f 131//85 135//85 133//85 129//85
f 136//86 132//86 130//86 134//86

View file

@ -0,0 +1,20 @@
# Blender MTL File: 'NewMarx.blend'
# Material Count: 2
newmtl Material.004
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl None
Ns 0
Ka 0.000000 0.000000 0.000000
Kd 0.8 0.8 0.8
Ks 0.8 0.8 0.8
d 1
illum 2

View file

@ -0,0 +1,173 @@
# Blender v2.78 (sub 0) OBJ File: 'NewMarx.blend'
# www.blender.org
mtllib marx_top.mtl
o Cube.037_Cube.157
v 1.406250 0.062500 -3.406250
v 1.406250 0.187500 -3.406250
v 1.406250 0.062500 -3.593750
v 1.406250 0.187500 -3.593750
v 1.593750 0.062500 -3.406250
v 1.593750 0.187500 -3.406250
v 1.593750 0.062500 -3.593750
v 1.593750 0.187500 -3.593750
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 1//1 2//1 4//1 3//1
f 3//2 4//2 8//2 7//2
f 7//3 8//3 6//3 5//3
f 5//4 6//4 2//4 1//4
f 3//5 7//5 5//5 1//5
f 8//6 4//6 2//6 6//6
o Cube.027_Cube.115
v 1.437500 0.187500 0.000000
v 1.437500 0.312500 0.000000
v 1.437500 0.187500 -3.562500
v 1.437500 0.312500 -3.562500
v 1.562500 0.187500 0.000000
v 1.562500 0.312500 0.000000
v 1.562500 0.187500 -3.562500
v 1.562500 0.312500 -3.562500
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 9//7 10//7 12//7 11//7
f 11//8 12//8 16//8 15//8
f 15//9 16//9 14//9 13//9
f 13//10 14//10 10//10 9//10
f 11//11 15//11 13//11 9//11
f 16//12 12//12 10//12 14//12
o Cube.015_Cube.058
v 1.999999 -0.000001 0.000001
v 1.999999 -0.000001 1.000000
v 0.000000 0.000000 1.000000
v 0.000000 0.000000 0.000000
v 2.000000 0.499999 0.000001
v 1.999999 0.499999 1.000000
v -0.000000 0.500000 1.000000
v 0.000000 0.500000 0.000001
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 -0.0000
vn 1.0000 -0.0000 0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
usemtl Material.004
s off
f 17//13 18//13 19//13 20//13
f 21//14 24//14 23//14 22//14
f 17//15 21//15 22//15 18//15
f 18//16 22//16 23//16 19//16
f 19//17 23//17 24//17 20//17
f 21//18 17//18 20//18 24//18
o Cube.026_Cube.059
v 1.437498 0.187500 1.375000
v 1.437498 0.312500 1.375000
v 1.437498 0.187500 1.000000
v 1.437498 0.312500 1.000000
v 1.562498 0.187500 1.375000
v 1.562498 0.312500 1.375000
v 1.562498 0.187500 1.000000
v 1.562498 0.312500 1.000000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn -0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 25//19 26//19 28//19 27//19
f 27//20 28//20 32//20 31//20
f 31//21 32//21 30//21 29//21
f 29//22 30//22 26//22 25//22
f 27//23 31//23 29//23 25//23
f 32//24 28//24 26//24 30//24
o Cube.034_Cube.060
v 0.437498 0.187500 1.375000
v 0.437498 0.312500 1.375000
v 0.437498 0.187500 1.000000
v 0.437498 0.312500 1.000000
v 0.562498 0.187500 1.375000
v 0.562498 0.312500 1.375000
v 0.562498 0.187500 1.000000
v 0.562498 0.312500 1.000000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn -0.0000 0.0000 1.0000
vn -0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 33//25 34//25 36//25 35//25
f 35//26 36//26 40//26 39//26
f 39//27 40//27 38//27 37//27
f 37//28 38//28 34//28 33//28
f 35//29 39//29 37//29 33//29
f 40//30 36//30 34//30 38//30
o Cube.038_Cube.061
v 0.812498 0.114277 -0.187500
v 0.989275 -0.062500 -0.187500
v 0.812498 0.114277 -0.437500
v 0.989275 -0.062500 -0.437500
v 0.635722 -0.062500 -0.187500
v 0.812498 -0.239277 -0.187500
v 0.635722 -0.062500 -0.437500
v 0.812498 -0.239277 -0.437500
v 0.544192 0.294194 -0.250000
v 0.897746 -0.059359 -0.250000
v 0.544193 0.294194 -0.375000
v 0.897746 -0.059359 -0.375000
v 0.455804 0.205806 -0.250000
v 0.809358 -0.147748 -0.250000
v 0.455804 0.205806 -0.375000
v 0.809358 -0.147748 -0.375000
v 0.437498 0.187500 -0.375000
v 0.562498 0.187500 -0.375000
v 0.437498 0.187500 -0.000000
v 0.562498 0.187500 0.000000
v 0.437498 0.312500 -0.375000
v 0.562498 0.312500 -0.375000
v 0.437498 0.312500 -0.000000
v 0.562498 0.312500 0.000000
vn 0.7071 0.7071 0.0000
vn 0.0000 -0.0000 -1.0000
vn -0.7071 -0.7071 -0.0000
vn -0.0000 0.0000 1.0000
vn -0.7071 0.7071 -0.0000
vn 0.7071 -0.7071 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
usemtl None
s off
f 41//31 42//31 44//31 43//31
f 43//32 44//32 48//32 47//32
f 47//33 48//33 46//33 45//33
f 45//34 46//34 42//34 41//34
f 43//35 47//35 45//35 41//35
f 48//36 44//36 42//36 46//36
f 49//31 50//31 52//31 51//31
f 51//32 52//32 56//32 55//32
f 55//33 56//33 54//33 53//33
f 53//34 54//34 50//34 49//34
f 51//35 55//35 53//35 49//35
f 56//36 52//36 50//36 54//36
f 57//37 58//37 60//37 59//37
f 59//34 60//34 64//34 63//34
f 63//38 64//38 62//38 61//38
f 61//32 62//32 58//32 57//32
f 59//39 63//39 61//39 57//39
f 64//40 60//40 58//40 62//40