mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
redid most train physics, pollution handling stuff
This commit is contained in:
parent
2d3217c96b
commit
ff473c51da
@ -2136,8 +2136,8 @@ public class ModBlocks {
|
||||
rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster");
|
||||
rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||
rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
|
||||
crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate");
|
||||
|
||||
@ -4,6 +4,7 @@ import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
@ -24,9 +25,11 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return 0;
|
||||
return renderID;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -12,23 +12,32 @@ import com.hbm.blocks.rail.IRailNTM.RailCheckType;
|
||||
import com.hbm.blocks.rail.IRailNTM.RailContext;
|
||||
import com.hbm.blocks.rail.IRailNTM.TrackGauge;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.PlayerInformPacket;
|
||||
import com.hbm.util.ChatBuilder;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
|
||||
public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
|
||||
public LogicalTrainUnit ltu;
|
||||
public int ltuIndex = 0;
|
||||
public boolean isOnRail = true;
|
||||
private int turnProgress;
|
||||
/* Clientside position that should be approached with smooth interpolation */
|
||||
@ -103,13 +112,16 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
if(this.ltu != null) this.ltu.dissolveTrain();
|
||||
if(neighbor.ltu != null) neighbor.ltu.dissolveTrain();
|
||||
player.swingItem();
|
||||
|
||||
player.addChatComponentMessage(new ChatComponentText("Coupled " + this.hashCode() + " (" + closestOwnCoupling.name() + ") to " + neighbor.hashCode() + " (" + closestNeighborCoupling.name() + ")"));
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//DEBUG
|
||||
/*if(this.ltu != null) {
|
||||
if(this.ltu != null) {
|
||||
|
||||
String id = Integer.toHexString(ltu.hashCode());
|
||||
|
||||
@ -122,7 +134,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
data.setString("text", id);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, train.posX, train.posY + 1, train.posZ), new TargetPoint(this.dimension, train.posX, train.posY + 1, train.posZ, 50));
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@ -152,7 +164,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
this.setRotation(this.rotationYaw, this.rotationPitch);
|
||||
}
|
||||
|
||||
BlockPos anchor = this.getCurentAnchorPos();
|
||||
BlockPos anchor = this.getCurrentAnchorPos();
|
||||
Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
@ -293,23 +305,51 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: rethink this entire concept
|
||||
/*
|
||||
* first, figure out which train is the "front" when moving
|
||||
* if the train is not in motion, reuse the contract ("combine") function we have now
|
||||
* move the first wagon until either it finishes or bumps into a buffer
|
||||
* if it derails, continue using the velocity
|
||||
* then take the second wagon and move it towards the first wagon's collision point, assuming it didn't derail
|
||||
* continue with all further wagons
|
||||
*
|
||||
* step 3 may also do collision checks for other trains, which is good because that's an issue we would have to solve sooner or later
|
||||
*/
|
||||
|
||||
/* Move carts together with links */
|
||||
for(LogicalTrainUnit ltu : ltus) ltu.combineWagons();
|
||||
//for(LogicalTrainUnit ltu : ltus) ltu.combineWagons();
|
||||
|
||||
/* Move carts with unified speed */
|
||||
for(LogicalTrainUnit ltu : ltus) ltu.moveTrain();
|
||||
//for(LogicalTrainUnit ltu : ltus) ltu.moveTrain();
|
||||
|
||||
for(LogicalTrainUnit ltu : ltus) {
|
||||
|
||||
double speed = ltu.getTotalSpeed();
|
||||
|
||||
if(Math.abs(speed) < 0.001) speed = 0;
|
||||
|
||||
if(ltu.trains.length == 1) {
|
||||
|
||||
EntityRailCarBase train = ltu.trains[0];
|
||||
|
||||
BlockPos anchor = new BlockPos(train.posX, train.posY, train.posZ);
|
||||
Vec3 newPos = train.getRelPosAlongRail(anchor, speed, new MoveContext(RailCheckType.CORE));
|
||||
if(newPos == null) {
|
||||
train.derail();
|
||||
ltu.dissolveTrain();
|
||||
continue;
|
||||
}
|
||||
train.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord);
|
||||
anchor = train.getCurrentAnchorPos();
|
||||
Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
if(frontPos == null || backPos == null) {
|
||||
train.derail();
|
||||
ltu.dissolveTrain();
|
||||
continue;
|
||||
} else {
|
||||
ltu.setRenderPos(train, frontPos, backPos);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(speed == 0) {
|
||||
ltu.combineWagons();
|
||||
} else {
|
||||
ltu.moveTrainByApproach(speed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the amount of blocks that the train should move per tick */
|
||||
@ -331,7 +371,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
}*/
|
||||
|
||||
/** Returns the "true" position of the train, i.e. the block it wants to snap to */
|
||||
public BlockPos getCurentAnchorPos() {
|
||||
public BlockPos getCurrentAnchorPos() {
|
||||
return new BlockPos(posX, posY, posZ);
|
||||
}
|
||||
|
||||
@ -363,7 +403,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
}
|
||||
|
||||
/** Invisible entities that make up the dynamic bounding structure of the train, moving as the train rotates. */
|
||||
public static class BoundingBoxDummyEntity extends Entity {
|
||||
public static class BoundingBoxDummyEntity extends Entity implements ILookOverlay {
|
||||
|
||||
private int turnProgress;
|
||||
private double trainX;
|
||||
@ -428,6 +468,13 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
this.trainZ = posZ;
|
||||
this.turnProgress = turnProg + 2;
|
||||
}
|
||||
@Override
|
||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||
Entity e = worldObj.getEntityByID(this.dataWatcher.getWatchableObjectInt(3));
|
||||
if(e instanceof EntityRailCarBase) {
|
||||
((EntityRailCarBase) e).printHook(event, world, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public DummyConfig[] getDummies() {
|
||||
@ -491,37 +538,36 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
public static LogicalTrainUnit generateTrain(EntityRailCarBase train) {
|
||||
List<EntityRailCarBase> links = new ArrayList();
|
||||
Set<EntityRailCarBase> brake = new HashSet();
|
||||
links.add(train);
|
||||
brake.add(train);
|
||||
LogicalTrainUnit ltu = new LogicalTrainUnit();
|
||||
|
||||
if(train.coupledFront == null && train.coupledFront == null) {
|
||||
if(train.coupledFront == null && train.coupledBack == null) {
|
||||
ltu.trains = new EntityRailCarBase[] {train};
|
||||
train.ltu = ltu;
|
||||
train.ltuIndex = 0;
|
||||
return ltu;
|
||||
}
|
||||
|
||||
EntityRailCarBase prevCar = train;
|
||||
EntityRailCarBase nextCar = train.coupledBack == null ? train.coupledFront : train.coupledBack;
|
||||
EntityRailCarBase current = train;
|
||||
EntityRailCarBase next = null;
|
||||
|
||||
while(nextCar != null) {
|
||||
links.add(nextCar);
|
||||
brake.add(nextCar);
|
||||
do {
|
||||
next = null;
|
||||
|
||||
if(current.coupledFront != null && !brake.contains(current.coupledFront)) next = current.coupledFront;
|
||||
if(current.coupledBack != null && !brake.contains(current.coupledBack)) next = current.coupledBack;
|
||||
|
||||
EntityRailCarBase currentCar = nextCar;
|
||||
nextCar = nextCar.coupledBack == prevCar ? nextCar.coupledFront : nextCar.coupledBack;
|
||||
prevCar = currentCar;
|
||||
links.add(current);
|
||||
brake.add(current);
|
||||
|
||||
if(brake.contains(nextCar)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
current = next;
|
||||
|
||||
} while(next != null);
|
||||
|
||||
ltu.trains = new EntityRailCarBase[links.size()];
|
||||
|
||||
for(int i = 0; i < ltu.trains.length; i++) {
|
||||
ltu.trains[i] = links.get(i);
|
||||
ltu.trains[i].ltu = ltu;
|
||||
ltu.trains[i].ltuIndex = i;
|
||||
}
|
||||
|
||||
return ltu;
|
||||
@ -531,6 +577,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
public void dissolveTrain() {
|
||||
for(EntityRailCarBase train : trains) {
|
||||
train.ltu = null;
|
||||
train.ltuIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -559,23 +606,34 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
}
|
||||
|
||||
/** Moves one wagon to ne next until the coupling points roughly touch */
|
||||
public static void moveWagonTo(EntityRailCarBase prev, EntityRailCarBase next) {
|
||||
TrainCoupling prevCouple = prev.getCouplingFrom(next);
|
||||
TrainCoupling nextCouple = next.getCouplingFrom(prev);
|
||||
Vec3 prevLoc = prev.getCouplingPos(prevCouple);
|
||||
Vec3 nextLoc = next.getCouplingPos(nextCouple);
|
||||
public void moveWagonTo(EntityRailCarBase moveTo, EntityRailCarBase moving) {
|
||||
TrainCoupling prevCouple = moveTo.getCouplingFrom(moving);
|
||||
TrainCoupling nextCouple = moving.getCouplingFrom(moveTo);
|
||||
Vec3 prevLoc = moveTo.getCouplingPos(prevCouple);
|
||||
Vec3 nextLoc = moving.getCouplingPos(nextCouple);
|
||||
Vec3 delta = Vec3.createVectorHelper(prevLoc.xCoord - nextLoc.xCoord, 0, prevLoc.zCoord - nextLoc.zCoord);
|
||||
double len = delta.lengthVector();
|
||||
len *= 0.25D; //suspension, causes movements to be less rigid
|
||||
BlockPos anchor = new BlockPos(next.posX, next.posY, next.posZ);
|
||||
Vec3 trainPos = Vec3.createVectorHelper(next.posX, next.posY, next.posZ);
|
||||
len *= 0.75; //suspension, causes movements to be less rigid
|
||||
BlockPos anchor = new BlockPos(moving.posX, moving.posY, moving.posZ);
|
||||
Vec3 trainPos = Vec3.createVectorHelper(moving.posX, moving.posY, moving.posZ);
|
||||
float yaw = EntityRailCarBase.generateYaw(prevLoc, nextLoc);
|
||||
Vec3 newPos = EntityRailCarBase.getRelPosAlongRail(anchor, len, next.getGauge(), next.worldObj, trainPos, yaw, new MoveContext(RailCheckType.CORE));
|
||||
next.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord);
|
||||
Vec3 newPos = EntityRailCarBase.getRelPosAlongRail(anchor, len, moving.getGauge(), moving.worldObj, trainPos, yaw, new MoveContext(RailCheckType.CORE));
|
||||
moving.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord);
|
||||
anchor = moving.getCurrentAnchorPos(); //reset origin to new position
|
||||
Vec3 frontPos = moving.getRelPosAlongRail(anchor, moving.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = moving.getRelPosAlongRail(anchor, -moving.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
if(frontPos == null || backPos == null) {
|
||||
moving.derail();
|
||||
this.dissolveTrain();
|
||||
return;
|
||||
} else {
|
||||
setRenderPos(moving, frontPos, backPos);
|
||||
}
|
||||
}
|
||||
|
||||
/** Generates the speed of the train, then moves the rain along the rail */
|
||||
public void moveTrain() {
|
||||
@Deprecated public void moveTrain() {
|
||||
|
||||
EntityRailCarBase prev = trains[0];
|
||||
TrainCoupling dir = prev.getCouplingFrom(null);
|
||||
@ -599,11 +657,11 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
}
|
||||
|
||||
/** Moves the entire train along the rail by a certain speed */
|
||||
public void moveTrainBy(double totalSpeed) {
|
||||
@Deprecated public void moveTrainBy(double totalSpeed) {
|
||||
|
||||
for(EntityRailCarBase train : this.trains) {
|
||||
|
||||
BlockPos anchor = train.getCurentAnchorPos();
|
||||
BlockPos anchor = train.getCurrentAnchorPos();
|
||||
Vec3 corePos = train.getRelPosAlongRail(anchor, totalSpeed, new MoveContext(RailCheckType.CORE));
|
||||
|
||||
if(corePos == null) {
|
||||
@ -612,7 +670,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
return;
|
||||
} else {
|
||||
train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord);
|
||||
anchor = train.getCurentAnchorPos(); //reset origin to new position
|
||||
anchor = train.getCurrentAnchorPos(); //reset origin to new position
|
||||
Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
@ -632,15 +690,110 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the total speed of the LTU, negative if it is backwards compared to the arbitrary "front" wagon */
|
||||
public double getTotalSpeed() {
|
||||
|
||||
EntityRailCarBase prev = trains[0];
|
||||
double totalSpeed = 0;
|
||||
double maxSpeed = Double.POSITIVE_INFINITY;
|
||||
//if the first car is in reverse, flip all subsequent cars as well
|
||||
boolean reverseTheReverse = prev.getCouplingFrom(null) == TrainCoupling.BACK;
|
||||
|
||||
if(trains.length == 1) {
|
||||
return prev.getCurrentSpeed();
|
||||
}
|
||||
|
||||
for(EntityRailCarBase train : this.trains) {
|
||||
//if the car's linked indices are the wrong way, it is in reverse and speed applies negatively
|
||||
boolean reverse = false;
|
||||
|
||||
EntityRailCarBase conFront = train.getCoupledTo(TrainCoupling.FRONT);
|
||||
EntityRailCarBase conBack = train.getCoupledTo(TrainCoupling.BACK);
|
||||
|
||||
if(conFront != null && conFront.ltuIndex > train.ltuIndex) reverse = true;
|
||||
if(conBack != null && conBack.ltuIndex < train.ltuIndex) reverse = true;
|
||||
|
||||
reverse ^= reverseTheReverse;
|
||||
|
||||
double speed = train.getCurrentSpeed();
|
||||
if(reverse) speed *= -1;
|
||||
totalSpeed += speed;
|
||||
maxSpeed = Math.min(maxSpeed, train.getMaxRailSpeed());
|
||||
prev = train;
|
||||
}
|
||||
|
||||
if(Math.abs(totalSpeed) > maxSpeed) {
|
||||
totalSpeed = maxSpeed * Math.signum(totalSpeed);
|
||||
}
|
||||
|
||||
return totalSpeed;
|
||||
}
|
||||
|
||||
/** Determines the "front" wagon based on the movement and moves it, then moves all other wagons towards that */
|
||||
public void moveTrainByApproach(double speed) {
|
||||
boolean forward = speed < 0;
|
||||
double origSpeed = speed;
|
||||
speed = Math.abs(speed);
|
||||
EntityRailCarBase previous = null;
|
||||
|
||||
EntityRailCarBase first = this.trains[0];
|
||||
|
||||
for(int i = forward ? 0 : this.trains.length - 1; forward ? i < this.trains.length : i >= 0; i += forward ? 1 : -1) {
|
||||
EntityRailCarBase current = this.trains[i];
|
||||
|
||||
if(previous == null) {
|
||||
PacketDispatcher.wrapper.sendToAllAround(new PlayerInformPacket(ChatBuilder.start("" + current.getClass() + " " + origSpeed).color(EnumChatFormatting.RED).flush(), 1),
|
||||
new TargetPoint(current.dimension, current.posX, current.posY + 1, current.posZ, 50));
|
||||
|
||||
boolean inReverse = first.getCouplingFrom(null) == current.getCouplingFrom(null);
|
||||
int sigNum = inReverse ? -1 : 1;
|
||||
BlockPos anchor = current.getCurrentAnchorPos();
|
||||
Vec3 corePos = current.getRelPosAlongRail(anchor, speed * sigNum, new MoveContext(RailCheckType.CORE));
|
||||
|
||||
if(corePos == null) {
|
||||
current.derail();
|
||||
this.dissolveTrain();
|
||||
return;
|
||||
} else {
|
||||
current.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord);
|
||||
anchor = current.getCurrentAnchorPos(); //reset origin to new position
|
||||
Vec3 frontPos = current.getRelPosAlongRail(anchor, current.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = current.getRelPosAlongRail(anchor, -current.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
if(frontPos == null || backPos == null) {
|
||||
current.derail();
|
||||
this.dissolveTrain();
|
||||
return;
|
||||
} else {
|
||||
setRenderPos(current, frontPos, backPos);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
this.moveWagonTo(previous, current);
|
||||
}
|
||||
|
||||
previous = current;
|
||||
}
|
||||
}
|
||||
|
||||
/** Uses the front and back bogey positions to set the render pos and angles of a wagon */
|
||||
public void setRenderPos(EntityRailCarBase current, Vec3 frontPos, Vec3 backPos) {
|
||||
current.renderX = (frontPos.xCoord + backPos.xCoord) / 2D;
|
||||
current.renderY = (frontPos.yCoord + backPos.yCoord) / 2D;
|
||||
current.renderZ = (frontPos.zCoord + backPos.zCoord) / 2D;
|
||||
current.prevRotationYaw = current.rotationYaw;
|
||||
current.rotationYaw = current.movementYaw = generateYaw(frontPos, backPos);
|
||||
current.motionX = current.rotationYaw / 360D; // hijacking this crap for easy syncing
|
||||
current.velocityChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) {
|
||||
/*List<String> text = new ArrayList();
|
||||
text.add("LTU: " + this.ltu);
|
||||
text.add("Front: " + this.coupledFront);
|
||||
text.add("Back: " + this.coupledBack);
|
||||
ILookOverlay.printGeneric(event, this.toString(), 0xffff00, 0x404000, text);*/ //none of this shit is going to work anyway
|
||||
List<String> text = new ArrayList();
|
||||
ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); //none of this shit is going to work anyway
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,6 +15,22 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
public EntityRailCarCargo(World world) {
|
||||
super(world);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void entityInit() {
|
||||
super.entityInit();
|
||||
this.dataWatcher.addObject(10, new Integer(0));
|
||||
}
|
||||
|
||||
public int countVacantSlots() {
|
||||
int slots = 0;
|
||||
|
||||
for(int i = 0; i < this.getSizeInventory(); i++) {
|
||||
if(this.getStackInSlot(i) != null) slots++;
|
||||
}
|
||||
|
||||
return slots;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStackInSlot(int slot) {
|
||||
@ -37,9 +53,11 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
this.slots[slot] = null;
|
||||
}
|
||||
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return itemstack;
|
||||
}
|
||||
} else {
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -49,8 +67,10 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
if(this.slots[slot] != null) {
|
||||
ItemStack itemstack = this.slots[slot];
|
||||
this.slots[slot] = null;
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return itemstack;
|
||||
} else {
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -119,6 +139,8 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
this.slots[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
|
||||
}
|
||||
}
|
||||
|
||||
this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -19,15 +19,17 @@ public abstract class EntityRailCarElectric extends EntityRailCarRidable {
|
||||
public int getChargeSlot() { return 0; }
|
||||
|
||||
@Override protected void entityInit() {
|
||||
super.entityInit();
|
||||
this.dataWatcher.addObject(3, new Integer(0));
|
||||
}
|
||||
|
||||
@Override public boolean canAccelerate() {
|
||||
return this.getPower() >= this.getPowerConsumption();
|
||||
return true;
|
||||
//return this.getPower() >= this.getPowerConsumption();
|
||||
}
|
||||
|
||||
@Override public void consumeFuel() {
|
||||
this.setPower(this.getPower() - this.getPowerConsumption());
|
||||
//this.setPower(this.getPower() - this.getPowerConsumption());
|
||||
}
|
||||
|
||||
public void setPower(int power) {
|
||||
|
||||
@ -5,7 +5,6 @@ import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -109,9 +108,14 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo {
|
||||
public int getNearestSeat(EntityPlayer player) {
|
||||
|
||||
double nearestDist = Double.POSITIVE_INFINITY;
|
||||
int nearestSeat = -2;
|
||||
int nearestSeat = -3;
|
||||
|
||||
Vec3[] seats = getPassengerSeats();
|
||||
Vec3 look = player.getLook(2);
|
||||
look.xCoord += player.posX;
|
||||
look.yCoord += player.posY + player.eyeHeight - player.yOffset;
|
||||
look.zCoord += player.posZ;
|
||||
|
||||
for(int i = 0; i < seats.length; i++) {
|
||||
|
||||
Vec3 seat = seats[i];
|
||||
@ -120,13 +124,11 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo {
|
||||
|
||||
seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180));
|
||||
double x = renderX + seat.xCoord;
|
||||
double y = renderY + seat.yCoord;
|
||||
double z = renderZ + seat.zCoord;
|
||||
|
||||
double deltaX = player.posX - x;
|
||||
double deltaZ = player.posZ - z;
|
||||
double radians = -Math.atan2(deltaX, deltaZ);
|
||||
double degrees = MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI - 90);
|
||||
double dist = Math.abs(BobMathUtil.angularDifference(degrees, player.rotationYaw));
|
||||
Vec3 delta = Vec3.createVectorHelper(look.xCoord - x, look.yCoord - y, look.zCoord - z);
|
||||
double dist = delta.lengthVector();
|
||||
|
||||
if(dist < nearestDist) {
|
||||
nearestDist = dist;
|
||||
@ -138,13 +140,11 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo {
|
||||
Vec3 seat = getRiderSeatPosition();
|
||||
seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180));
|
||||
double x = renderX + seat.xCoord;
|
||||
double y = renderY + seat.yCoord;
|
||||
double z = renderZ + seat.zCoord;
|
||||
|
||||
double deltaX = player.posX - x;
|
||||
double deltaZ = player.posZ - z;
|
||||
double radians = -Math.atan2(deltaX, deltaZ);
|
||||
double degrees = MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI - 90);
|
||||
double dist = Math.abs(BobMathUtil.angularDifference(degrees, player.rotationYaw));
|
||||
Vec3 delta = Vec3.createVectorHelper(look.xCoord - x, look.yCoord - y, look.zCoord - z);
|
||||
double dist = delta.lengthVector();
|
||||
|
||||
if(dist < nearestDist) {
|
||||
nearestDist = dist;
|
||||
@ -288,6 +288,6 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo {
|
||||
text.add("Front: " + this.coupledFront);
|
||||
text.add("Back: " + this.coupledBack);*/
|
||||
text.add("Nearest seat: " + this.getNearestSeat(MainRegistry.proxy.me()));
|
||||
ILookOverlay.printGeneric(event, this.toString(), 0xffff00, 0x404000, text);
|
||||
ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text);
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ public class TrainCargoTramTrailer extends EntityRailCarCargo implements IGUIPro
|
||||
this.train = train;
|
||||
for(int i = 0; i < 5; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(train, i * 7 + j, 8 + j * 18, 18 + i * 18));
|
||||
this.addSlotToContainer(new Slot(train, i * 9 + j, 8 + j * 18, 18 + i * 18));
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < 3; i++) {
|
||||
|
||||
139
src/main/java/com/hbm/handler/pollution/PollutionHandler.java
Normal file
139
src/main/java/com/hbm/handler/pollution/PollutionHandler.java
Normal file
@ -0,0 +1,139 @@
|
||||
package com.hbm.handler.pollution;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraft.nbt.CompressedStreamTools;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.world.ChunkCoordIntPair;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
|
||||
public class PollutionHandler {
|
||||
|
||||
public static final String fileName = "hbmpollution.dat";
|
||||
public static HashMap<World, PollutionPerWorld> perWorld = new HashMap();
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWorldLoad(WorldEvent.Load event) {
|
||||
if(!event.world.isRemote) {
|
||||
WorldServer world = (WorldServer) event.world;
|
||||
String dirPath = getDataDir(world);
|
||||
|
||||
try {
|
||||
File pollutionFile = new File(dirPath, fileName);
|
||||
|
||||
if(pollutionFile != null) {
|
||||
|
||||
if(pollutionFile.exists()) {
|
||||
FileInputStream io = new FileInputStream(pollutionFile);
|
||||
NBTTagCompound data = CompressedStreamTools.readCompressed(io);
|
||||
io.close();
|
||||
perWorld.put(event.world, new PollutionPerWorld(data));
|
||||
} else {
|
||||
perWorld.put(event.world, new PollutionPerWorld());
|
||||
}
|
||||
}
|
||||
} catch(Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWorldUnload(WorldEvent.Unload event) {
|
||||
if(!event.world.isRemote) perWorld.remove(event.world);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWorldSave(WorldEvent.Save event) {
|
||||
if(!event.world.isRemote) {
|
||||
WorldServer world = (WorldServer) event.world;
|
||||
String dirPath = getDataDir(world);
|
||||
|
||||
try {
|
||||
File pollutionFile = new File(dirPath, fileName);
|
||||
if(!pollutionFile.exists()) pollutionFile.createNewFile();
|
||||
NBTTagCompound data = perWorld.get(world).writeToNBT();
|
||||
CompressedStreamTools.writeCompressed(data, new FileOutputStream(pollutionFile));
|
||||
} catch(Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getDataDir(WorldServer world) {
|
||||
String dir = world.getSaveHandler().getWorldDirectory().getAbsolutePath();
|
||||
|
||||
if(world.provider.dimensionId != 0) {
|
||||
dir += File.separator + "DIM" + world.provider.dimensionId;
|
||||
}
|
||||
|
||||
dir += File.separator + "data";
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
public static class PollutionPerWorld {
|
||||
public HashMap<ChunkCoordIntPair, PollutionData> pollution = new HashMap();
|
||||
|
||||
public PollutionPerWorld() { }
|
||||
|
||||
public PollutionPerWorld(NBTTagCompound data) {
|
||||
|
||||
NBTTagList list = data.getTagList("entries", 10);
|
||||
|
||||
for(int i = 0; i < list.tagCount(); i++) {
|
||||
NBTTagCompound nbt = list.getCompoundTagAt(i);
|
||||
int chunkX = nbt.getInteger("chunkX");
|
||||
int chunkZ = nbt.getInteger("chunkZ");
|
||||
pollution.put(new ChunkCoordIntPair(chunkX, chunkZ), PollutionData.fromNBT(nbt));
|
||||
}
|
||||
}
|
||||
|
||||
public NBTTagCompound writeToNBT() {
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
|
||||
NBTTagList list = new NBTTagList();
|
||||
|
||||
for(Entry<ChunkCoordIntPair, PollutionData> entry : pollution.entrySet()) {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
nbt.setInteger("chunkX", entry.getKey().chunkXPos);
|
||||
nbt.setInteger("chunkZ", entry.getKey().chunkZPos);
|
||||
entry.getValue().toNBT(nbt);
|
||||
list.appendTag(nbt);
|
||||
}
|
||||
|
||||
data.setTag("entries", list);
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
public static class PollutionData {
|
||||
float soot;
|
||||
float poison;
|
||||
float heavyMetal;
|
||||
|
||||
public static PollutionData fromNBT(NBTTagCompound nbt) {
|
||||
PollutionData data = new PollutionData();
|
||||
data.soot = nbt.getFloat("soot");
|
||||
data.poison = nbt.getFloat("poison");
|
||||
data.heavyMetal = nbt.getFloat("heavyMetal");
|
||||
return data;
|
||||
}
|
||||
|
||||
public void toNBT(NBTTagCompound nbt) {
|
||||
nbt.setFloat("soot", soot);
|
||||
nbt.setFloat("poison", poison);
|
||||
nbt.setFloat("heavyMetal", heavyMetal);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -78,7 +78,7 @@ public class ItemTrain extends ItemEnumMulti {
|
||||
if(train != null && train.getGauge() == ((IRailNTM) b).getGauge(world, x, y, z)) {
|
||||
if(!world.isRemote) {
|
||||
train.setPosition(x + fx, y + fy, z + fz);
|
||||
BlockPos anchor = train.getCurentAnchorPos();
|
||||
BlockPos anchor = train.getCurrentAnchorPos();
|
||||
train.rotationYaw = entity.rotationYaw;
|
||||
Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE));
|
||||
train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord);
|
||||
|
||||
@ -787,6 +787,7 @@ public class ClientProxy extends ServerProxy {
|
||||
RenderingRegistry.registerBlockHandler(new RenderNarrowStraightRail());
|
||||
RenderingRegistry.registerBlockHandler(new RenderNarrowCurveRail());
|
||||
RenderingRegistry.registerBlockHandler(new RenderStandardStraightRail());
|
||||
RenderingRegistry.registerBlockHandler(new RenderStandardCurveRail());
|
||||
|
||||
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite));
|
||||
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4));
|
||||
|
||||
@ -58,6 +58,7 @@ import com.hbm.entity.logic.*;
|
||||
import com.hbm.entity.mob.siege.*;
|
||||
import com.hbm.handler.*;
|
||||
import com.hbm.handler.imc.*;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
import com.hbm.hazard.HazardRegistry;
|
||||
import com.hbm.inventory.*;
|
||||
@ -903,6 +904,10 @@ public class MainRegistry {
|
||||
ChunkRadiationManager radiationSystem = new ChunkRadiationManager();
|
||||
MinecraftForge.EVENT_BUS.register(radiationSystem);
|
||||
FMLCommonHandler.instance().bus().register(radiationSystem);
|
||||
|
||||
PollutionHandler pollution = new PollutionHandler();
|
||||
MinecraftForge.EVENT_BUS.register(pollution);
|
||||
FMLCommonHandler.instance().bus().register(pollution);
|
||||
|
||||
if(event.getSide() == Side.CLIENT) {
|
||||
HbmKeybinds.register();
|
||||
|
||||
@ -259,12 +259,12 @@ public class ModEventHandlerClient {
|
||||
boolean flip = distanceToCover < 0;
|
||||
|
||||
if(it == 1) {
|
||||
Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info);
|
||||
Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info, new MoveContext(RailCheckType.CORE));
|
||||
if(i == 0) world.spawnParticle("reddust", snap.xCoord, snap.yCoord + 0.25, snap.zCoord, 0.1, 1, 0.1);
|
||||
}
|
||||
|
||||
Vec3 prev = next;
|
||||
next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info);
|
||||
next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, new MoveContext(i == 0 ? RailCheckType.FRONT : RailCheckType.BACK));
|
||||
distanceToCover = info.overshoot;
|
||||
anchor = info.pos;
|
||||
if(i == 0) world.spawnParticle("reddust", next.xCoord, next.yCoord + 0.25, next.zCoord, 0, distanceToCover != 0 ? 0.5 : 0, 0);
|
||||
|
||||
@ -1332,6 +1332,7 @@ public class ResourceManager {
|
||||
public static final IModelCustom rail_narrow_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow.obj"));
|
||||
public static final IModelCustom rail_narrow_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow_bend.obj"));
|
||||
public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj"));
|
||||
public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj"));
|
||||
|
||||
public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj"));
|
||||
public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj"));
|
||||
|
||||
@ -0,0 +1,70 @@
|
||||
package com.hbm.render.block;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.rail.RailStandardCurve;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.util.ObjUtil;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
|
||||
public class RenderStandardCurveRail implements ISimpleBlockRenderingHandler {
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
GL11.glScaled(0.2, 0.2, 0.2);
|
||||
GL11.glTranslated(2.5, -0.0625, -1.5);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta < 12) return true;
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||
tessellator.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
float rotation = 0;
|
||||
|
||||
if(meta == 15)
|
||||
rotation = 90F / 180F * (float) Math.PI;
|
||||
if(meta == 12)
|
||||
rotation = 180F / 180F * (float) Math.PI;
|
||||
if(meta == 14)
|
||||
rotation = 270F / 180F * (float) Math.PI;
|
||||
|
||||
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, rotation, true);
|
||||
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int modelId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId() {
|
||||
return RailStandardCurve.renderID;
|
||||
}
|
||||
}
|
||||
@ -2,10 +2,15 @@ package com.hbm.render.entity.item;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.main.ResourceManager;
|
||||
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.client.renderer.entity.RenderItem;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class RenderTrainCargoTramTrailer extends Render {
|
||||
@ -31,6 +36,76 @@ public class RenderTrainCargoTramTrailer extends Render {
|
||||
ResourceManager.train_cargo_tram_trailer.renderAll();
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
|
||||
int slots = entity.getDataWatcher().getWatchableObjectInt(10);
|
||||
|
||||
if(slots > 0) {
|
||||
|
||||
EntityItem dummy = new EntityItem(entity.worldObj, 0, 0, 0, new ItemStack(ModBlocks.crate));
|
||||
dummy.hoverStart = 0.0F;
|
||||
|
||||
RenderItem.renderInFrame = true;
|
||||
double scale = 2;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
|
||||
if(slots <= 5) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
} else if(slots <= 10) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.1D, 0.375D, 0.25D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, -0.25D, 0.0F, 0.0F);
|
||||
} else if(slots <= 15) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.1D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, 0.375D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, -0.375D, 0.0F, 0.0F);
|
||||
} else if(slots <= 20) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.3D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.2D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.2D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.3D, 0.0F, 0.0F);
|
||||
} else if(slots <= 25) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.6D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.2D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.3D, 0.0F, 0.0F);
|
||||
} else if(slots <= 30) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.6D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.6D, 0.0F, 0.0F);
|
||||
} else if(slots <= 35) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F);
|
||||
} else if(slots <= 40) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, 0.15D, 0.0F, 0.0F);
|
||||
} else {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, 0.15D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, 0.8D, 0.0F, 0.0F);
|
||||
}
|
||||
|
||||
RenderItem.renderInFrame = false;
|
||||
}
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,982 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'rail_standard_curve.blend'
|
||||
# www.blender.org
|
||||
o Plane.001
|
||||
v -1.312500 0.062500 0.500000
|
||||
v -1.141243 0.062500 -2.858757
|
||||
v -1.312500 0.187500 0.500000
|
||||
v -1.141243 0.187500 -2.858757
|
||||
v -1.097049 0.062500 -2.902951
|
||||
v -1.097049 0.187500 -2.902951
|
||||
v -1.250000 0.062500 0.500000
|
||||
v -1.250000 0.187500 0.500000
|
||||
v -4.500000 0.062500 -2.687500
|
||||
v -4.500000 0.062500 -4.312500
|
||||
v -4.500000 0.187500 -2.687500
|
||||
v -4.500000 0.187500 -4.312500
|
||||
v -4.500000 0.062500 -4.250000
|
||||
v -4.500000 0.187500 -4.250000
|
||||
v -4.500000 0.062500 -2.750000
|
||||
v -4.500000 0.187500 -2.750000
|
||||
v -2.246097 0.062500 -1.753903
|
||||
v -0.550519 0.187500 -2.138958
|
||||
v -2.246097 0.187500 -1.753903
|
||||
v -0.498553 0.187500 -2.173681
|
||||
v -0.498553 0.062500 -2.173681
|
||||
v -0.550519 0.062500 -2.138958
|
||||
v -2.201903 0.062500 -1.798097
|
||||
v -2.201903 0.187500 -1.798097
|
||||
v -3.675014 0.062500 -2.578888
|
||||
v -3.675014 0.187500 -2.578888
|
||||
v -3.658838 0.062500 -2.639259
|
||||
v -3.658838 0.187500 -2.639259
|
||||
v -2.906250 0.062500 -2.260456
|
||||
v -2.906250 0.187500 -2.260456
|
||||
v -2.875000 0.062500 -2.314582
|
||||
v -2.875000 0.187500 -2.314582
|
||||
v -1.739544 0.062500 -1.093750
|
||||
v -1.739544 0.187500 -1.093750
|
||||
v -1.685418 0.062500 -1.125000
|
||||
v -1.685418 0.187500 -1.125000
|
||||
v -1.421111 0.062500 -0.324986
|
||||
v -1.421111 0.187500 -0.324986
|
||||
v -1.360741 0.062500 -0.341162
|
||||
v -1.360741 0.187500 -0.341162
|
||||
v -3.561128 0.187500 -4.220029
|
||||
v -3.561128 0.062500 -4.220029
|
||||
v -3.573321 0.187500 -4.158730
|
||||
v -3.573321 0.062500 -4.158730
|
||||
v -2.658336 0.187500 -3.946170
|
||||
v -2.658336 0.062500 -3.946170
|
||||
v -2.682254 0.187500 -3.888428
|
||||
v -2.682254 0.062500 -3.888428
|
||||
v -1.826319 0.187500 -3.501447
|
||||
v -1.826319 0.062500 -3.501447
|
||||
v -1.861041 0.187500 -3.449481
|
||||
v -1.861041 0.062500 -3.449481
|
||||
v -0.111573 0.062500 -1.317746
|
||||
v -0.053831 0.062500 -1.341664
|
||||
v -0.053831 0.187500 -1.341664
|
||||
v -0.111573 0.187500 -1.317746
|
||||
v 0.158730 0.062500 -0.426678
|
||||
v 0.220028 0.062500 -0.438872
|
||||
v 0.220028 0.187500 -0.438872
|
||||
v 0.158730 0.187500 -0.426678
|
||||
v 0.250000 0.062500 0.500000
|
||||
v 0.312499 0.062500 0.500000
|
||||
v 0.312499 0.187500 0.500000
|
||||
v 0.250000 0.187500 0.500000
|
||||
v -1.501192 0.000000 0.294317
|
||||
v 0.481698 0.000000 0.033265
|
||||
v -1.550139 0.000000 -0.077475
|
||||
v 0.432751 0.000000 -0.338527
|
||||
v -1.550139 0.062500 -0.077475
|
||||
v -1.501192 0.062500 0.294317
|
||||
v 0.481698 0.062500 0.033265
|
||||
v 0.432751 0.062500 -0.338527
|
||||
v -1.656608 0.000000 -0.474823
|
||||
v 0.191151 0.000000 -1.240190
|
||||
v -1.800115 0.000000 -0.821278
|
||||
v 0.047645 0.000000 -1.586645
|
||||
v -1.800115 0.062500 -0.821278
|
||||
v -1.656608 0.062500 -0.474823
|
||||
v 0.191151 0.062500 -1.240190
|
||||
v 0.047645 0.062500 -1.586645
|
||||
v -2.005797 0.000000 -1.177531
|
||||
v -0.419090 0.000000 -2.395053
|
||||
v -2.234083 0.000000 -1.475038
|
||||
v -0.647376 0.000000 -2.692561
|
||||
v -2.234083 0.062500 -1.475038
|
||||
v -2.005797 0.062500 -1.177531
|
||||
v -0.419090 0.062500 -2.395053
|
||||
v -0.647376 0.062500 -2.692561
|
||||
v -2.524962 0.000000 -1.765917
|
||||
v -1.307439 0.000000 -3.352624
|
||||
v -2.822469 0.000000 -1.994203
|
||||
v -1.604947 0.000000 -3.580910
|
||||
v -2.822469 0.062500 -1.994203
|
||||
v -2.524962 0.062500 -1.765917
|
||||
v -1.307439 0.062500 -3.352624
|
||||
v -1.604947 0.062500 -3.580910
|
||||
v -3.178722 0.000000 -2.199886
|
||||
v -2.413356 0.000000 -4.047645
|
||||
v -3.525177 0.000000 -2.343392
|
||||
v -2.759810 0.000000 -4.191151
|
||||
v -3.525177 0.062500 -2.343392
|
||||
v -3.178722 0.062500 -2.199886
|
||||
v -2.413356 0.062500 -4.047645
|
||||
v -2.759810 0.062500 -4.191151
|
||||
v -3.922526 0.000000 -2.449861
|
||||
v -3.661473 0.000000 -4.432751
|
||||
v -4.294317 0.000000 -2.498808
|
||||
v -4.033265 0.000000 -4.481698
|
||||
v -4.294317 0.062500 -2.498808
|
||||
v -3.922526 0.062500 -2.449861
|
||||
v -3.661473 0.062500 -4.432751
|
||||
v -4.033265 0.062500 -4.481698
|
||||
v 0.387101 0.125000 -0.206438
|
||||
v 0.077275 0.125000 -0.165649
|
||||
v 0.403417 0.125000 -0.082508
|
||||
v 0.093590 0.125000 -0.041718
|
||||
v 0.387101 0.062500 -0.206438
|
||||
v 0.077275 0.062500 -0.165649
|
||||
v 0.403417 0.062500 -0.082508
|
||||
v 0.093590 0.062500 -0.041718
|
||||
v -1.455542 0.062500 0.162229
|
||||
v -1.145715 0.062500 0.121439
|
||||
v -1.471858 0.062500 0.038298
|
||||
v -1.162031 0.062500 -0.002491
|
||||
v -1.455542 0.125000 0.162229
|
||||
v -1.145715 0.125000 0.121439
|
||||
v -1.471858 0.125000 0.038298
|
||||
v -1.162031 0.125000 -0.002491
|
||||
v 0.037737 0.125000 -1.447242
|
||||
v -0.250975 0.125000 -1.327653
|
||||
v 0.085573 0.125000 -1.331757
|
||||
v -0.203139 0.125000 -1.212168
|
||||
v 0.037737 0.062500 -1.447242
|
||||
v -0.250975 0.062500 -1.327653
|
||||
v 0.085573 0.062500 -1.331757
|
||||
v -0.203139 0.062500 -1.212168
|
||||
v -1.646701 0.062500 -0.614226
|
||||
v -1.357989 0.062500 -0.733814
|
||||
v -1.694537 0.062500 -0.729711
|
||||
v -1.405824 0.062500 -0.849299
|
||||
v -1.646701 0.125000 -0.614226
|
||||
v -1.357989 0.125000 -0.733814
|
||||
v -1.694537 0.125000 -0.729711
|
||||
v -1.405824 0.125000 -0.849299
|
||||
v -0.620866 0.125000 -2.555344
|
||||
v -0.868788 0.125000 -2.365106
|
||||
v -0.544770 0.125000 -2.456175
|
||||
v -0.792693 0.125000 -2.265937
|
||||
v -0.620866 0.062500 -2.555344
|
||||
v -0.868788 0.062500 -2.365106
|
||||
v -0.544770 0.062500 -2.456175
|
||||
v -0.792693 0.062500 -2.265937
|
||||
v -2.032308 0.062500 -1.314747
|
||||
v -1.784385 0.062500 -1.504985
|
||||
v -2.108403 0.062500 -1.413917
|
||||
v -1.860480 0.062500 -1.604154
|
||||
v -2.032308 0.125000 -1.314747
|
||||
v -1.784385 0.125000 -1.504985
|
||||
v -2.108403 0.125000 -1.413917
|
||||
v -1.860480 0.125000 -1.604154
|
||||
v -1.543825 0.125000 -3.455230
|
||||
v -1.734063 0.125000 -3.207307
|
||||
v -1.444656 0.125000 -3.379134
|
||||
v -1.634893 0.125000 -3.131212
|
||||
v -1.543825 0.062500 -3.455230
|
||||
v -1.734063 0.062500 -3.207307
|
||||
v -1.444656 0.062500 -3.379134
|
||||
v -1.634893 0.062500 -3.131212
|
||||
v -2.586083 0.062500 -1.891597
|
||||
v -2.395845 0.062500 -2.139520
|
||||
v -2.685253 0.062500 -1.967692
|
||||
v -2.495015 0.062500 -2.215615
|
||||
v -2.586083 0.125000 -1.891597
|
||||
v -2.395845 0.125000 -2.139520
|
||||
v -2.685253 0.125000 -1.967692
|
||||
v -2.495015 0.125000 -2.215615
|
||||
v -2.668243 0.125000 -4.085573
|
||||
v -2.787832 0.125000 -3.796861
|
||||
v -2.552758 0.125000 -4.037737
|
||||
v -2.672346 0.125000 -3.749025
|
||||
v -2.668243 0.062500 -4.085573
|
||||
v -2.787832 0.062500 -3.796861
|
||||
v -2.552758 0.062500 -4.037737
|
||||
v -2.672346 0.062500 -3.749025
|
||||
v -3.270289 0.062500 -2.305463
|
||||
v -3.150701 0.062500 -2.594176
|
||||
v -3.385775 0.062500 -2.353299
|
||||
v -3.266186 0.062500 -2.642011
|
||||
v -3.270289 0.125000 -2.305463
|
||||
v -3.150701 0.125000 -2.594176
|
||||
v -3.385775 0.125000 -2.353299
|
||||
v -3.266186 0.125000 -2.642011
|
||||
v -3.917492 0.125000 -4.403417
|
||||
v -3.958282 0.125000 -4.093591
|
||||
v -3.793562 0.125000 -4.387100
|
||||
v -3.834351 0.125000 -4.077275
|
||||
v -3.917492 0.062500 -4.403417
|
||||
v -3.958282 0.062500 -4.093591
|
||||
v -3.793562 0.062500 -4.387100
|
||||
v -3.834351 0.062500 -4.077275
|
||||
v -4.038298 0.062500 -2.528142
|
||||
v -3.997509 0.062500 -2.837969
|
||||
v -4.162229 0.062500 -2.544458
|
||||
v -4.121440 0.062500 -2.854284
|
||||
v -4.038298 0.125000 -2.528142
|
||||
v -3.997509 0.125000 -2.837969
|
||||
v -4.162229 0.125000 -2.544458
|
||||
v -4.121440 0.125000 -2.854284
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.718750
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.718750
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.187500 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.437500 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.500000 0.718750
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.718750
|
||||
vt 0.406250 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt -0.000000 0.000000
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vn 0.7730 0.0000 -0.6344
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.6344 0.0000 -0.7730
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn -0.1305 0.0000 0.9914
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.1305 0.0000 -0.9914
|
||||
vn 0.3827 0.0000 -0.9239
|
||||
vn -0.3827 0.0000 0.9239
|
||||
vn 0.6088 0.0000 -0.7934
|
||||
vn -0.6088 0.0000 0.7934
|
||||
vn 0.7934 0.0000 -0.6088
|
||||
vn -0.7934 0.0000 0.6088
|
||||
vn 0.9914 0.0000 -0.1305
|
||||
vn 0.9239 0.0000 -0.3827
|
||||
vn -0.9239 0.0000 0.3827
|
||||
vn -0.9914 0.0000 0.1305
|
||||
vn -0.0980 0.0000 0.9952
|
||||
vn 0.0980 0.0000 -0.9952
|
||||
vn 0.2903 0.0000 -0.9569
|
||||
vn -0.2903 0.0000 0.9569
|
||||
vn -0.4714 0.0000 0.8819
|
||||
vn 0.4714 0.0000 -0.8819
|
||||
vn -0.6344 0.0000 0.7730
|
||||
vn -0.7730 0.0000 0.6344
|
||||
vn 0.9569 0.0000 -0.2903
|
||||
vn 0.8819 0.0000 -0.4714
|
||||
vn -0.8819 0.0000 0.4714
|
||||
vn -0.9952 0.0000 0.0980
|
||||
vn -0.9569 0.0000 0.2903
|
||||
vn 0.9952 0.0000 -0.0980
|
||||
vn 0.1305 0.0000 0.9914
|
||||
vn -0.1305 0.0000 -0.9914
|
||||
vn 0.3827 0.0000 0.9239
|
||||
vn -0.3827 0.0000 -0.9239
|
||||
vn 0.6088 0.0000 0.7934
|
||||
vn -0.6088 0.0000 -0.7934
|
||||
vn 0.7934 0.0000 0.6088
|
||||
vn -0.7934 0.0000 -0.6088
|
||||
vn 0.9239 0.0000 0.3827
|
||||
vn -0.9239 0.0000 -0.3827
|
||||
vn 0.9914 0.0000 0.1305
|
||||
vn -0.9914 0.0000 -0.1305
|
||||
s off
|
||||
f 20/1/1 5/2/1 6/3/1
|
||||
f 7/4/2 3/5/2 1/6/2
|
||||
f 10/7/3 14/8/3 12/9/3
|
||||
f 11/10/3 15/11/3 9/12/3
|
||||
f 6/13/4 50/14/4 49/15/4
|
||||
f 35/16/5 17/17/5 23/18/5
|
||||
f 31/19/5 25/20/5 27/21/5
|
||||
f 25/22/6 11/23/6 9/24/6
|
||||
f 11/23/7 28/25/7 16/26/7
|
||||
f 27/27/5 9/28/5 15/29/5
|
||||
f 28/25/8 15/29/8 16/26/8
|
||||
f 23/30/5 29/31/5 31/32/5
|
||||
f 32/33/9 27/21/9 28/34/9
|
||||
f 30/35/7 28/34/7 26/36/7
|
||||
f 29/37/10 26/36/10 25/38/10
|
||||
f 23/30/11 32/39/11 24/40/11
|
||||
f 24/40/7 30/41/7 19/42/7
|
||||
f 30/41/12 17/43/12 19/42/12
|
||||
f 39/44/5 33/45/5 35/46/5
|
||||
f 36/47/13 23/18/13 24/48/13
|
||||
f 33/49/14 19/50/14 17/51/14
|
||||
f 19/50/7 36/47/7 24/48/7
|
||||
f 7/52/15 40/53/15 8/54/15
|
||||
f 40/55/16 35/46/16 36/56/16
|
||||
f 34/57/7 40/55/7 36/56/7
|
||||
f 37/58/17 34/57/17 33/59/17
|
||||
f 8/54/7 38/60/7 3/61/7
|
||||
f 38/60/18 1/62/18 3/61/18
|
||||
f 1/63/5 39/64/5 7/52/5
|
||||
f 43/65/7 45/66/7 41/67/7
|
||||
f 14/68/7 41/69/7 12/70/7
|
||||
f 42/71/5 13/72/5 10/73/5
|
||||
f 44/74/19 14/68/19 13/75/19
|
||||
f 41/69/20 10/73/20 12/70/20
|
||||
f 50/76/5 48/77/5 46/78/5
|
||||
f 45/66/21 42/79/21 41/67/21
|
||||
f 46/80/5 44/81/5 42/79/5
|
||||
f 48/82/22 43/65/22 44/83/22
|
||||
f 51/84/7 6/13/7 49/15/7
|
||||
f 52/85/23 47/86/23 48/87/23
|
||||
f 47/86/7 49/88/7 45/89/7
|
||||
f 49/88/24 46/78/24 45/89/24
|
||||
f 5/90/5 52/91/5 50/14/5
|
||||
f 2/92/25 51/84/25 52/93/25
|
||||
f 54/94/5 22/95/5 21/96/5
|
||||
f 4/97/7 20/1/7 6/3/7
|
||||
f 21/98/5 2/99/5 5/2/5
|
||||
f 22/100/26 4/97/26 2/101/26
|
||||
f 59/102/27 54/103/27 55/104/27
|
||||
f 55/105/28 21/96/28 20/106/28
|
||||
f 18/107/7 55/105/7 20/106/7
|
||||
f 53/108/29 18/107/29 22/109/29
|
||||
f 61/110/30 60/111/30 57/112/30
|
||||
f 56/113/7 59/102/7 55/104/7
|
||||
f 57/114/31 56/113/31 53/115/31
|
||||
f 58/116/5 53/117/5 54/103/5
|
||||
f 64/118/2 62/119/2 63/120/2
|
||||
f 62/121/5 57/122/5 58/123/5
|
||||
f 63/124/32 58/123/32 59/125/32
|
||||
f 60/111/7 63/124/7 59/125/7
|
||||
f 67/126/5 66/127/5 65/128/5
|
||||
f 71/129/7 69/130/7 70/131/7
|
||||
f 65/132/18 69/133/18 67/134/18
|
||||
f 66/135/33 70/136/33 65/137/33
|
||||
f 68/138/15 71/139/15 66/127/15
|
||||
f 67/126/34 72/140/34 68/141/34
|
||||
f 75/142/5 74/143/5 73/144/5
|
||||
f 79/145/7 77/146/7 78/147/7
|
||||
f 73/148/17 77/149/17 75/150/17
|
||||
f 74/151/35 78/152/35 73/153/35
|
||||
f 76/154/16 79/155/16 74/143/16
|
||||
f 75/142/36 80/156/36 76/157/36
|
||||
f 81/158/5 84/159/5 82/160/5
|
||||
f 87/161/7 85/162/7 86/163/7
|
||||
f 81/164/14 85/165/14 83/166/14
|
||||
f 82/167/37 86/168/37 81/169/37
|
||||
f 84/170/13 87/171/13 82/160/13
|
||||
f 83/172/38 88/173/38 84/159/38
|
||||
f 91/174/5 90/175/5 89/176/5
|
||||
f 95/177/7 93/178/7 94/179/7
|
||||
f 89/180/12 93/181/12 91/182/12
|
||||
f 90/183/39 94/184/39 89/185/39
|
||||
f 92/186/11 95/187/11 90/175/11
|
||||
f 91/174/40 96/188/40 92/189/40
|
||||
f 97/190/5 100/191/5 98/192/5
|
||||
f 102/193/7 104/194/7 101/195/7
|
||||
f 97/196/10 101/197/10 99/198/10
|
||||
f 98/199/41 102/200/41 97/201/41
|
||||
f 100/202/9 103/203/9 98/192/9
|
||||
f 99/204/42 104/194/42 100/191/42
|
||||
f 107/205/5 106/206/5 105/207/5
|
||||
f 111/208/7 109/209/7 110/210/7
|
||||
f 105/211/6 109/212/6 107/213/6
|
||||
f 106/214/43 110/215/43 105/216/43
|
||||
f 108/217/8 111/218/8 106/206/8
|
||||
f 107/205/44 112/219/44 108/220/44
|
||||
f 125/221/18 123/222/18 121/223/18
|
||||
f 114/224/7 115/225/7 113/226/7
|
||||
f 113/226/15 119/227/15 117/228/15
|
||||
f 115/225/33 120/229/33 119/230/33
|
||||
f 114/224/34 117/231/34 118/232/34
|
||||
f 116/233/18 118/234/18 120/235/18
|
||||
f 127/236/34 124/237/34 123/238/34
|
||||
f 126/239/33 121/240/33 122/241/33
|
||||
f 128/242/15 122/243/15 124/244/15
|
||||
f 125/221/7 128/242/7 127/236/7
|
||||
f 141/245/17 139/246/17 137/247/17
|
||||
f 130/248/7 131/249/7 129/250/7
|
||||
f 129/250/16 135/251/16 133/252/16
|
||||
f 131/249/35 136/253/35 135/254/35
|
||||
f 130/248/36 133/255/36 134/256/36
|
||||
f 132/257/17 134/258/17 136/259/17
|
||||
f 143/260/36 140/261/36 139/262/36
|
||||
f 142/263/35 137/264/35 138/265/35
|
||||
f 144/266/16 138/267/16 140/268/16
|
||||
f 141/245/7 144/266/7 143/260/7
|
||||
f 157/269/14 155/270/14 153/271/14
|
||||
f 148/272/7 145/273/7 146/274/7
|
||||
f 145/273/13 151/275/13 149/276/13
|
||||
f 147/277/37 152/278/37 151/279/37
|
||||
f 146/274/38 149/280/38 150/281/38
|
||||
f 148/272/14 150/282/14 152/283/14
|
||||
f 159/284/38 156/285/38 155/286/38
|
||||
f 158/287/37 153/288/37 154/289/37
|
||||
f 160/290/13 154/291/13 156/292/13
|
||||
f 157/269/7 160/290/7 159/284/7
|
||||
f 173/293/12 171/294/12 169/295/12
|
||||
f 162/296/7 163/297/7 161/298/7
|
||||
f 161/298/11 167/299/11 165/300/11
|
||||
f 163/297/39 168/301/39 167/302/39
|
||||
f 162/296/40 165/303/40 166/304/40
|
||||
f 164/305/12 166/306/12 168/307/12
|
||||
f 175/308/40 172/309/40 171/310/40
|
||||
f 174/311/39 169/312/39 170/313/39
|
||||
f 176/314/11 170/315/11 172/316/11
|
||||
f 173/293/7 176/314/7 175/308/7
|
||||
f 189/317/10 187/318/10 185/319/10
|
||||
f 178/320/7 179/321/7 177/322/7
|
||||
f 177/322/9 183/323/9 181/324/9
|
||||
f 179/321/41 184/325/41 183/326/41
|
||||
f 178/320/42 181/327/42 182/328/42
|
||||
f 180/329/10 182/330/10 184/331/10
|
||||
f 191/332/42 188/333/42 187/334/42
|
||||
f 190/335/41 185/336/41 186/337/41
|
||||
f 192/338/9 186/339/9 188/340/9
|
||||
f 191/332/7 190/335/7 192/338/7
|
||||
f 205/341/6 203/342/6 201/343/6
|
||||
f 194/344/7 195/345/7 193/346/7
|
||||
f 193/346/8 199/347/8 197/348/8
|
||||
f 195/345/43 200/349/43 199/350/43
|
||||
f 194/344/44 197/351/44 198/352/44
|
||||
f 196/353/6 198/354/6 200/355/6
|
||||
f 207/356/44 204/357/44 203/358/44
|
||||
f 206/359/43 201/360/43 202/361/43
|
||||
f 208/362/8 202/363/8 204/364/8
|
||||
f 207/356/7 206/359/7 208/362/7
|
||||
f 20/1/1 21/98/1 5/2/1
|
||||
f 7/4/2 8/365/2 3/5/2
|
||||
f 10/7/3 13/366/3 14/8/3
|
||||
f 11/10/3 16/367/3 15/11/3
|
||||
f 6/13/4 5/90/4 50/14/4
|
||||
f 35/16/5 33/368/5 17/17/5
|
||||
f 31/19/5 29/369/5 25/20/5
|
||||
f 25/22/6 26/370/6 11/23/6
|
||||
f 11/23/7 26/370/7 28/25/7
|
||||
f 27/27/5 25/371/5 9/28/5
|
||||
f 28/25/8 27/27/8 15/29/8
|
||||
f 23/30/5 17/372/5 29/31/5
|
||||
f 32/33/9 31/19/9 27/21/9
|
||||
f 30/35/7 32/33/7 28/34/7
|
||||
f 29/37/10 30/35/10 26/36/10
|
||||
f 23/30/11 31/32/11 32/39/11
|
||||
f 24/40/7 32/39/7 30/41/7
|
||||
f 30/41/12 29/373/12 17/43/12
|
||||
f 39/44/5 37/374/5 33/45/5
|
||||
f 36/47/13 35/16/13 23/18/13
|
||||
f 33/49/14 34/375/14 19/50/14
|
||||
f 19/50/7 34/375/7 36/47/7
|
||||
f 7/52/15 39/64/15 40/53/15
|
||||
f 40/55/16 39/44/16 35/46/16
|
||||
f 34/57/7 38/376/7 40/55/7
|
||||
f 37/58/17 38/376/17 34/57/17
|
||||
f 8/54/7 40/53/7 38/60/7
|
||||
f 38/60/18 37/377/18 1/62/18
|
||||
f 1/63/5 37/378/5 39/64/5
|
||||
f 43/65/7 47/379/7 45/66/7
|
||||
f 14/68/7 43/380/7 41/69/7
|
||||
f 42/71/5 44/381/5 13/72/5
|
||||
f 44/74/19 43/380/19 14/68/19
|
||||
f 41/69/20 42/71/20 10/73/20
|
||||
f 50/76/5 52/382/5 48/77/5
|
||||
f 45/66/21 46/80/21 42/79/21
|
||||
f 46/80/5 48/383/5 44/81/5
|
||||
f 48/82/22 47/379/22 43/65/22
|
||||
f 51/84/7 4/384/7 6/13/7
|
||||
f 52/85/23 51/385/23 47/86/23
|
||||
f 47/86/7 51/385/7 49/88/7
|
||||
f 49/88/24 50/76/24 46/78/24
|
||||
f 5/90/5 2/386/5 52/91/5
|
||||
f 2/92/25 4/384/25 51/84/25
|
||||
f 54/94/5 53/387/5 22/95/5
|
||||
f 4/97/7 18/388/7 20/1/7
|
||||
f 21/98/5 22/389/5 2/99/5
|
||||
f 22/100/26 18/388/26 4/97/26
|
||||
f 59/102/27 58/116/27 54/103/27
|
||||
f 55/105/28 54/94/28 21/96/28
|
||||
f 18/107/7 56/390/7 55/105/7
|
||||
f 53/108/29 56/390/29 18/107/29
|
||||
f 61/110/30 64/391/30 60/111/30
|
||||
f 56/113/7 60/392/7 59/102/7
|
||||
f 57/114/31 60/392/31 56/113/31
|
||||
f 58/116/5 57/393/5 53/117/5
|
||||
f 64/118/2 61/394/2 62/119/2
|
||||
f 62/121/5 61/395/5 57/122/5
|
||||
f 63/124/32 62/121/32 58/123/32
|
||||
f 60/111/7 64/391/7 63/124/7
|
||||
f 67/126/5 68/141/5 66/127/5
|
||||
f 71/129/7 72/140/7 69/130/7
|
||||
f 65/132/18 70/396/18 69/133/18
|
||||
f 66/135/33 71/397/33 70/136/33
|
||||
f 68/138/15 72/398/15 71/139/15
|
||||
f 67/126/34 69/130/34 72/140/34
|
||||
f 75/142/5 76/157/5 74/143/5
|
||||
f 79/145/7 80/156/7 77/146/7
|
||||
f 73/148/17 78/399/17 77/149/17
|
||||
f 74/151/35 79/400/35 78/152/35
|
||||
f 76/154/16 80/401/16 79/155/16
|
||||
f 75/142/36 77/146/36 80/156/36
|
||||
f 81/158/5 83/172/5 84/159/5
|
||||
f 87/161/7 88/173/7 85/162/7
|
||||
f 81/164/14 86/402/14 85/165/14
|
||||
f 82/167/37 87/403/37 86/168/37
|
||||
f 84/170/13 88/404/13 87/171/13
|
||||
f 83/172/38 85/162/38 88/173/38
|
||||
f 91/174/5 92/189/5 90/175/5
|
||||
f 95/177/7 96/188/7 93/178/7
|
||||
f 89/180/12 94/405/12 93/181/12
|
||||
f 90/183/39 95/406/39 94/184/39
|
||||
f 92/186/11 96/407/11 95/187/11
|
||||
f 91/174/40 93/178/40 96/188/40
|
||||
f 97/190/5 99/204/5 100/191/5
|
||||
f 102/193/7 103/408/7 104/194/7
|
||||
f 97/196/10 102/409/10 101/197/10
|
||||
f 98/199/41 103/410/41 102/200/41
|
||||
f 100/202/9 104/411/9 103/203/9
|
||||
f 99/204/42 101/195/42 104/194/42
|
||||
f 107/205/5 108/220/5 106/206/5
|
||||
f 111/208/7 112/219/7 109/209/7
|
||||
f 105/211/6 110/412/6 109/212/6
|
||||
f 106/214/43 111/413/43 110/215/43
|
||||
f 108/217/8 112/414/8 111/218/8
|
||||
f 107/205/44 109/209/44 112/219/44
|
||||
f 125/221/18 127/236/18 123/222/18
|
||||
f 114/224/7 116/233/7 115/225/7
|
||||
f 113/226/15 115/225/15 119/227/15
|
||||
f 115/225/33 116/233/33 120/229/33
|
||||
f 114/224/34 113/226/34 117/231/34
|
||||
f 116/233/18 114/224/18 118/234/18
|
||||
f 127/236/34 128/242/34 124/237/34
|
||||
f 126/239/33 125/221/33 121/240/33
|
||||
f 128/242/15 126/239/15 122/243/15
|
||||
f 125/221/7 126/239/7 128/242/7
|
||||
f 141/245/17 143/260/17 139/246/17
|
||||
f 130/248/7 132/257/7 131/249/7
|
||||
f 129/250/16 131/249/16 135/251/16
|
||||
f 131/249/35 132/257/35 136/253/35
|
||||
f 130/248/36 129/250/36 133/255/36
|
||||
f 132/257/17 130/248/17 134/258/17
|
||||
f 143/260/36 144/266/36 140/261/36
|
||||
f 142/263/35 141/245/35 137/264/35
|
||||
f 144/266/16 142/263/16 138/267/16
|
||||
f 141/245/7 142/263/7 144/266/7
|
||||
f 157/269/14 159/284/14 155/270/14
|
||||
f 148/272/7 147/277/7 145/273/7
|
||||
f 145/273/13 147/277/13 151/275/13
|
||||
f 147/277/37 148/272/37 152/278/37
|
||||
f 146/274/38 145/273/38 149/280/38
|
||||
f 148/272/14 146/274/14 150/282/14
|
||||
f 159/284/38 160/290/38 156/285/38
|
||||
f 158/287/37 157/269/37 153/288/37
|
||||
f 160/290/13 158/287/13 154/291/13
|
||||
f 157/269/7 158/287/7 160/290/7
|
||||
f 173/293/12 175/308/12 171/294/12
|
||||
f 162/296/7 164/305/7 163/297/7
|
||||
f 161/298/11 163/297/11 167/299/11
|
||||
f 163/297/39 164/305/39 168/301/39
|
||||
f 162/296/40 161/298/40 165/303/40
|
||||
f 164/305/12 162/296/12 166/306/12
|
||||
f 175/308/40 176/314/40 172/309/40
|
||||
f 174/311/39 173/293/39 169/312/39
|
||||
f 176/314/11 174/311/11 170/315/11
|
||||
f 173/293/7 174/311/7 176/314/7
|
||||
f 189/317/10 191/332/10 187/318/10
|
||||
f 178/320/7 180/329/7 179/321/7
|
||||
f 177/322/9 179/321/9 183/323/9
|
||||
f 179/321/41 180/329/41 184/325/41
|
||||
f 178/320/42 177/322/42 181/327/42
|
||||
f 180/329/10 178/320/10 182/330/10
|
||||
f 191/332/42 192/338/42 188/333/42
|
||||
f 190/335/41 189/317/41 185/336/41
|
||||
f 192/338/9 190/335/9 186/339/9
|
||||
f 191/332/7 189/317/7 190/335/7
|
||||
f 205/341/6 207/356/6 203/342/6
|
||||
f 194/344/7 196/353/7 195/345/7
|
||||
f 193/346/8 195/345/8 199/347/8
|
||||
f 195/345/43 196/353/43 200/349/43
|
||||
f 194/344/44 193/346/44 197/351/44
|
||||
f 196/353/6 194/344/6 198/354/6
|
||||
f 207/356/44 208/362/44 204/357/44
|
||||
f 206/359/43 205/341/43 201/360/43
|
||||
f 208/362/8 206/359/8 202/363/8
|
||||
f 207/356/7 205/341/7 206/359/7
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 467 B |
Binary file not shown.
|
Before Width: | Height: | Size: 183 B After Width: | Height: | Size: 204 B |
Loading…
x
Reference in New Issue
Block a user