Make disks work on Armbot
This commit is contained in:
parent
f1cd1bf848
commit
af74b4230b
10 changed files with 180 additions and 202 deletions
|
@ -100,81 +100,52 @@ public class ModelArmbot extends ModelBase
|
|||
{
|
||||
super.render(entity, f, f1, f2, f3, f4, f5);
|
||||
this.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
this.render(f5, null);
|
||||
this.render(f5, entity.rotationYaw, entity.rotationPitch);
|
||||
}
|
||||
|
||||
public void render(float f5, TileEntityArmbot armBot)
|
||||
public void render(float f5, float rotationYaw, float rotationPitch)
|
||||
{
|
||||
|
||||
// set yaw from tileentity
|
||||
if (armBot != null)
|
||||
{
|
||||
/*armMountRight.setRotationPoint(baseRotation.rotationPointX, armMountRight.rotationPointY, baseRotation.rotationPointX);
|
||||
armMountLeft.setRotationPoint(baseRotation.rotationPointX, armMountLeft.rotationPointY, baseRotation.rotationPointX);
|
||||
armLower.setRotationPoint(baseRotation.rotationPointX, armLower.rotationPointY, baseRotation.rotationPointX);
|
||||
armUpper.setRotationPoint(baseRotation.rotationPointX, armUpper.rotationPointY, baseRotation.rotationPointX);
|
||||
baseRotation.setRotationPoint(baseRotation.rotationPointX, baseRotation.rotationPointY, baseRotation.rotationPointX);
|
||||
clampBody.setRotationPoint(baseRotation.rotationPointX, clampBody.rotationPointY, baseRotation.rotationPointX);
|
||||
clampBody2.setRotationPoint(baseRotation.rotationPointX, clampBody2.rotationPointY, baseRotation.rotationPointX);
|
||||
clampClawLower.setRotationPoint(baseRotation.rotationPointX, clampClawLower.rotationPointY, baseRotation.rotationPointX);
|
||||
clampClawLower2.setRotationPoint(baseRotation.rotationPointX, clampClawLower2.rotationPointY, baseRotation.rotationPointX);
|
||||
/*
|
||||
* armMountRight.setRotationPoint(baseRotation.rotationPointX, armMountRight.rotationPointY,
|
||||
* baseRotation.rotationPointX); armMountLeft.setRotationPoint(baseRotation.rotationPointX,
|
||||
* armMountLeft.rotationPointY, baseRotation.rotationPointX);
|
||||
* armLower.setRotationPoint(baseRotation.rotationPointX, armLower.rotationPointY,
|
||||
* baseRotation.rotationPointX); armUpper.setRotationPoint(baseRotation.rotationPointX,
|
||||
* armUpper.rotationPointY, baseRotation.rotationPointX);
|
||||
* baseRotation.setRotationPoint(baseRotation.rotationPointX, baseRotation.rotationPointY,
|
||||
* baseRotation.rotationPointX); clampBody.setRotationPoint(baseRotation.rotationPointX,
|
||||
* clampBody.rotationPointY, baseRotation.rotationPointX);
|
||||
* clampBody2.setRotationPoint(baseRotation.rotationPointX, clampBody2.rotationPointY,
|
||||
* baseRotation.rotationPointX);
|
||||
* clampClawLower.setRotationPoint(baseRotation.rotationPointX,
|
||||
* clampClawLower.rotationPointY, baseRotation.rotationPointX);
|
||||
* clampClawLower2.setRotationPoint(baseRotation.rotationPointX,
|
||||
* clampClawLower2.rotationPointY, baseRotation.rotationPointX);
|
||||
*
|
||||
* armMountRight.rotateAngleY = armBot.rotationYaw; armMountLeft.rotateAngleY =
|
||||
* armBot.rotationYaw; armLower.rotateAngleY = armBot.rotationYaw; armUpper.rotateAngleY =
|
||||
* armBot.rotationYaw; baseRotation.rotateAngleY = armBot.rotationYaw;
|
||||
* clampBody.rotateAngleY = armBot.rotationYaw; clampBody2.rotateAngleY =
|
||||
* armBot.rotationYaw; clampClawLower.rotateAngleY = armBot.rotationYaw;
|
||||
* clampClawLower2.rotateAngleY = armBot.rotationYaw;
|
||||
*/
|
||||
|
||||
BaseTop.render(f5);
|
||||
Base.render(f5);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef(rotationYaw, 0, 1, 0);
|
||||
armMountRight.render(f5);
|
||||
armMountLeft.render(f5);
|
||||
armLower.render(f5);
|
||||
armUpper.render(f5);
|
||||
baseRotation.render(f5);
|
||||
clampBody.render(f5);
|
||||
clampBody2.render(f5);
|
||||
clampClawLower.render(f5);
|
||||
clampClawLower2.render(f5);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
armMountRight.rotateAngleY = armBot.rotationYaw;
|
||||
armMountLeft.rotateAngleY = armBot.rotationYaw;
|
||||
armLower.rotateAngleY = armBot.rotationYaw;
|
||||
armUpper.rotateAngleY = armBot.rotationYaw;
|
||||
baseRotation.rotateAngleY = armBot.rotationYaw;
|
||||
clampBody.rotateAngleY = armBot.rotationYaw;
|
||||
clampBody2.rotateAngleY = armBot.rotationYaw;
|
||||
clampClawLower.rotateAngleY = armBot.rotationYaw;
|
||||
clampClawLower2.rotateAngleY = armBot.rotationYaw;*/
|
||||
BaseTop.render(f5);
|
||||
Base.render(f5);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef((float) (armBot.rotationYaw * (180f / Math.PI)), 0, 1, 0);
|
||||
armMountRight.render(f5);
|
||||
armMountLeft.render(f5);
|
||||
armLower.render(f5);
|
||||
armUpper.render(f5);
|
||||
baseRotation.render(f5);
|
||||
clampBody.render(f5);
|
||||
clampBody2.render(f5);
|
||||
clampClawLower.render(f5);
|
||||
clampClawLower2.render(f5);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
else
|
||||
{
|
||||
/*armMountRight.setRotationPoint(0F, 17F, 0F);
|
||||
setRotation(armMountRight, 0F, 0F, 0F);
|
||||
armMountLeft.setRotationPoint(0F, 17F, 0F);
|
||||
setRotation(armMountLeft, 0F, 0F, 0F);
|
||||
armLower.setRotationPoint(0F, 14F, 0F);
|
||||
setRotation(armLower, 0.5235988F, 0F, 0F);
|
||||
armUpper.setRotationPoint(0F, 2F, -7F);
|
||||
setRotation(armUpper, 2.007129F, 0F, 0F);
|
||||
baseRotation.setRotationPoint(0F, 17F, 0F);
|
||||
setRotation(baseRotation, 0F, 0F, 0F);
|
||||
clampBody.setRotationPoint(0F, 2F, -7F);
|
||||
setRotation(clampBody, 2.007129F, 0F, 0F);
|
||||
clampBody2.setRotationPoint(0F, 2F, -7F);
|
||||
setRotation(clampBody2, 2.007129F, 0F, 0F);
|
||||
clampClawLower.setRotationPoint(0F, 10F, -23F);
|
||||
setRotation(clampClawLower, 2.007129F, 0F, 0F);
|
||||
clampClawLower2.setRotationPoint(0F, 10F, -23F);
|
||||
setRotation(clampClawLower2, 2.007129F, 0F, 0F);*/
|
||||
BaseTop.render(f5);
|
||||
Base.render(f5);
|
||||
armMountRight.render(f5);
|
||||
armMountLeft.render(f5);
|
||||
armLower.render(f5);
|
||||
armUpper.render(f5);
|
||||
baseRotation.render(f5);
|
||||
clampBody.render(f5);
|
||||
clampBody2.render(f5);
|
||||
clampClawLower.render(f5);
|
||||
clampClawLower2.render(f5);
|
||||
}
|
||||
}
|
||||
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z)
|
||||
|
|
|
@ -71,7 +71,7 @@ public class BlockRenderingHandler implements ISimpleBlockRenderingHandler
|
|||
GL11.glScalef(0.7f, 0.7f, 0.7f);
|
||||
GL11.glRotatef(180f, 0f, 0f, 1f);
|
||||
GL11.glRotatef(-90f, 0f, 1f, 0f);
|
||||
RenderArmbot.MODEL.render(0.0625F, null);
|
||||
RenderArmbot.MODEL.render(0.0625F, 0, 0);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ public class RenderArmbot extends TileEntitySpecialRenderer
|
|||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
|
||||
GL11.glScalef(1.0F, -1F, -1F);
|
||||
MODEL.render(0.0625f, (TileEntityArmbot) tileEntity);
|
||||
MODEL.render(0.0625f, ((TileEntityArmbot) tileEntity).rotationYaw, ((TileEntityArmbot) tileEntity).rotationPitch);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,12 +38,12 @@ import cpw.mods.fml.relauncher.Side;
|
|||
|
||||
public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMultiBlock, IInventory, IPacketReceiver, IJouleStorage
|
||||
{
|
||||
private final CommandManager commandManager = new CommandManager();
|
||||
|
||||
/**
|
||||
* The items this container contains.
|
||||
*/
|
||||
protected ItemStack[] containingItems = new ItemStack[this.getSizeInventory()];
|
||||
|
||||
private CommandManager taskManager = new CommandManager();
|
||||
protected ItemStack disk = null;
|
||||
|
||||
public final double WATT_REQUEST = 20;
|
||||
|
||||
|
@ -52,10 +52,10 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
|
|||
private int playerUsing = 0;
|
||||
|
||||
/**
|
||||
* The rotation of the arms.
|
||||
* The rotation of the arms. In Degrees.
|
||||
*/
|
||||
public float rotationPitch = CommandIdle.IDLE_ROTATION_PITCH;
|
||||
public float rotationYaw = CommandIdle.IDLE_ROTATION_YAW;
|
||||
public float rotationPitch = 0;
|
||||
public float rotationYaw = 0;
|
||||
|
||||
/**
|
||||
* An entity that the armbot is grabbed onto.
|
||||
|
@ -80,30 +80,57 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
|
|||
}
|
||||
|
||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER)
|
||||
this.taskManager.onUpdate();
|
||||
|
||||
if (!this.taskManager.hasTasks())
|
||||
{
|
||||
this.taskManager.addTask(this, new CommandIdle(this));
|
||||
this.commandManager.onUpdate();
|
||||
}
|
||||
|
||||
System.out.println("RUNNNIN");
|
||||
if (this.disk != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!this.commandManager.hasTasks())
|
||||
{
|
||||
List<String> commands = ItemDisk.getCommands(this.disk);
|
||||
|
||||
// Give some slight random movement to the armbot.
|
||||
if (this.rotationPitch < 0)
|
||||
this.rotationPitch += (float) (Math.PI * 2);
|
||||
if (this.rotationPitch >= Math.PI * 2)
|
||||
this.rotationPitch -= (float) (Math.PI * 2);
|
||||
if (this.rotationYaw < 0)
|
||||
this.rotationYaw += (float) (Math.PI * 2);
|
||||
if (this.rotationYaw >= Math.PI * 2)
|
||||
this.rotationYaw -= (float) (Math.PI * 2);
|
||||
for (String commandString : commands)
|
||||
{
|
||||
Class<? extends Command> command = Command.getCommand(commandString);
|
||||
|
||||
if (command != null)
|
||||
{
|
||||
Command newCommand = command.newInstance();
|
||||
newCommand.world = this.worldObj;
|
||||
newCommand.tileEntity = this;
|
||||
newCommand.parameters = new String[5];
|
||||
newCommand.onTaskStart();
|
||||
this.commandManager.addTask(this, newCommand);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.commandManager.clearTasks();
|
||||
}
|
||||
|
||||
// Give some slight random movement to the Armbot.
|
||||
/*
|
||||
* if (this.rotationPitch < 0) this.rotationPitch += (float) (Math.PI * 2); if
|
||||
* (this.rotationPitch >= Math.PI * 2) this.rotationPitch -= (float) (Math.PI * 2); if
|
||||
* (this.rotationYaw < 0) this.rotationYaw += (float) (Math.PI * 2); if
|
||||
* (this.rotationYaw >= Math.PI * 2) this.rotationYaw -= (float) (Math.PI * 2);
|
||||
*/
|
||||
}
|
||||
|
||||
// Simulates smoothness on client side
|
||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT)
|
||||
{
|
||||
this.taskManager.onUpdate();
|
||||
this.commandManager.onUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -164,29 +191,29 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
|
|||
@Override
|
||||
public ItemStack getStackInSlot(int par1)
|
||||
{
|
||||
return this.containingItems[par1];
|
||||
return this.disk;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack decrStackSize(int par1, int par2)
|
||||
{
|
||||
if (this.containingItems[par1] != null)
|
||||
if (this.disk != null)
|
||||
{
|
||||
ItemStack var3;
|
||||
|
||||
if (this.containingItems[par1].stackSize <= par2)
|
||||
if (this.disk.stackSize <= par2)
|
||||
{
|
||||
var3 = this.containingItems[par1];
|
||||
this.containingItems[par1] = null;
|
||||
var3 = this.disk;
|
||||
this.disk = null;
|
||||
return var3;
|
||||
}
|
||||
else
|
||||
{
|
||||
var3 = this.containingItems[par1].splitStack(par2);
|
||||
var3 = this.disk.splitStack(par2);
|
||||
|
||||
if (this.containingItems[par1].stackSize == 0)
|
||||
if (this.disk.stackSize == 0)
|
||||
{
|
||||
this.containingItems[par1] = null;
|
||||
this.disk = null;
|
||||
}
|
||||
|
||||
return var3;
|
||||
|
@ -201,10 +228,10 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
|
|||
@Override
|
||||
public ItemStack getStackInSlotOnClosing(int par1)
|
||||
{
|
||||
if (this.containingItems[par1] != null)
|
||||
if (this.disk != null)
|
||||
{
|
||||
ItemStack var2 = this.containingItems[par1];
|
||||
this.containingItems[par1] = null;
|
||||
ItemStack var2 = this.disk;
|
||||
this.disk = null;
|
||||
return var2;
|
||||
}
|
||||
else
|
||||
|
@ -216,7 +243,7 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
|
|||
@Override
|
||||
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
|
||||
{
|
||||
this.containingItems[par1] = par2ItemStack;
|
||||
this.disk = par2ItemStack;
|
||||
|
||||
if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit())
|
||||
{
|
||||
|
@ -257,21 +284,15 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
|
|||
super.readFromNBT(nbt);
|
||||
|
||||
NBTTagList var2 = nbt.getTagList("Items");
|
||||
this.containingItems = new ItemStack[this.getSizeInventory()];
|
||||
|
||||
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
||||
{
|
||||
NBTTagCompound var4 = (NBTTagCompound) var2.tagAt(var3);
|
||||
byte var5 = var4.getByte("Slot");
|
||||
|
||||
if (var5 >= 0 && var5 < this.containingItems.length)
|
||||
{
|
||||
this.containingItems[var5] = ItemStack.loadItemStackFromNBT(var4);
|
||||
}
|
||||
this.disk = ItemStack.loadItemStackFromNBT(var4);
|
||||
}
|
||||
|
||||
rotationYaw = nbt.getFloat("yaw");
|
||||
rotationPitch = nbt.getFloat("pitch");
|
||||
this.rotationYaw = nbt.getFloat("yaw");
|
||||
this.rotationPitch = nbt.getFloat("pitch");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -282,19 +303,17 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
|
|||
{
|
||||
super.writeToNBT(nbt);
|
||||
NBTTagList var2 = new NBTTagList();
|
||||
for (int var3 = 0; var3 < this.containingItems.length; ++var3)
|
||||
|
||||
if (this.disk != null)
|
||||
{
|
||||
if (this.containingItems[var3] != null)
|
||||
{
|
||||
NBTTagCompound var4 = new NBTTagCompound();
|
||||
var4.setByte("Slot", (byte) var3);
|
||||
this.containingItems[var3].writeToNBT(var4);
|
||||
var2.appendTag(var4);
|
||||
}
|
||||
NBTTagCompound var4 = new NBTTagCompound();
|
||||
this.disk.writeToNBT(var4);
|
||||
var2.appendTag(var4);
|
||||
}
|
||||
|
||||
nbt.setTag("Items", var2);
|
||||
nbt.setFloat("yaw", rotationYaw);
|
||||
nbt.setFloat("pitch", rotationPitch);
|
||||
nbt.setFloat("yaw", this.rotationYaw);
|
||||
nbt.setFloat("pitch", this.rotationPitch);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -353,18 +372,6 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
|
|||
@Override
|
||||
public void onInventoryChanged()
|
||||
{
|
||||
super.onInventoryChanged();
|
||||
ItemStack disk = this.getStackInSlot(0);
|
||||
|
||||
if (disk != null)
|
||||
{
|
||||
this.taskManager = new CommandManager();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.taskManager = new CommandManager();
|
||||
this.taskManager.addTask(this, new CommandIdle(this));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -40,22 +40,15 @@ public abstract class Command
|
|||
/**
|
||||
* The amount of ticks this command has been running for.
|
||||
*/
|
||||
protected int ticks;
|
||||
protected int ticks = 0;
|
||||
|
||||
protected World world;
|
||||
protected TileEntityArmbot tileEntity;
|
||||
public World world;
|
||||
public TileEntityArmbot tileEntity;
|
||||
|
||||
/**
|
||||
* The parameters this command has, or the properties. Entered by the player in the disk.
|
||||
*/
|
||||
protected String[] parameters;
|
||||
|
||||
public Command(TileEntityArmbot arm, String... parameters)
|
||||
{
|
||||
this.tileEntity = arm;
|
||||
this.world = tileEntity.worldObj;
|
||||
this.parameters = parameters;
|
||||
}
|
||||
public String[] parameters;
|
||||
|
||||
/**
|
||||
* Called by the TaskManager to propagate tick updates
|
||||
|
|
|
@ -25,14 +25,6 @@ public class CommandGrab extends Command
|
|||
|
||||
private Entity foundEntity;
|
||||
|
||||
public CommandGrab(TileEntityArmbot arm, Class<? extends Entity> entityToInclude, double radius, float searchSpeed)
|
||||
{
|
||||
super(arm);
|
||||
this.entityToInclude = entityToInclude;
|
||||
this.radius = radius;
|
||||
this.searchSpeed = searchSpeed;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean doTask()
|
||||
{
|
||||
|
|
|
@ -2,45 +2,14 @@ package assemblyline.common.machine.command;
|
|||
|
||||
import assemblyline.common.machine.armbot.TileEntityArmbot;
|
||||
|
||||
|
||||
public class CommandIdle extends Command
|
||||
{
|
||||
public static final float IDLE_ROTATION_PITCH = 0;
|
||||
public static final float IDLE_ROTATION_YAW = 0;
|
||||
|
||||
public CommandIdle(TileEntityArmbot arm)
|
||||
{
|
||||
super(arm);
|
||||
}
|
||||
|
||||
protected boolean doTask()
|
||||
{
|
||||
/**
|
||||
* Move the arm rotation to idle position if the machine is not idling
|
||||
*/
|
||||
if (Math.abs(this.tileEntity.rotationPitch - IDLE_ROTATION_PITCH) > 0.001 || Math.abs(this.tileEntity.rotationYaw - IDLE_ROTATION_YAW) > 0.001)
|
||||
{
|
||||
if (Math.abs(IDLE_ROTATION_PITCH - this.tileEntity.rotationPitch) > 0.125)
|
||||
this.tileEntity.rotationPitch += (IDLE_ROTATION_PITCH - this.tileEntity.rotationPitch) * 0.05;
|
||||
else
|
||||
this.tileEntity.rotationPitch += Math.signum(IDLE_ROTATION_PITCH - this.tileEntity.rotationPitch) * (0.125 * 0.05);
|
||||
if (Math.abs(this.tileEntity.rotationPitch - IDLE_ROTATION_PITCH) < 0.0125)
|
||||
this.tileEntity.rotationPitch = IDLE_ROTATION_PITCH;
|
||||
|
||||
if (Math.abs(IDLE_ROTATION_YAW - this.tileEntity.rotationYaw) > 0.125)
|
||||
this.tileEntity.rotationYaw += (IDLE_ROTATION_YAW - this.tileEntity.rotationYaw) * 0.05;
|
||||
else
|
||||
this.tileEntity.rotationYaw += Math.signum(IDLE_ROTATION_YAW - this.tileEntity.rotationYaw) * (0.125 * 0.05);
|
||||
if (Math.abs(this.tileEntity.rotationYaw - IDLE_ROTATION_YAW) < 0.0125)
|
||||
this.tileEntity.rotationYaw = IDLE_ROTATION_YAW;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Randomly move the arm to simulate life in the arm if the arm is powered
|
||||
*/
|
||||
//this.tileEntity.rotationYaw *= 0.98 * this.world.rand.nextFloat();
|
||||
this.tileEntity.rotationPitch *= 0.98 * this.world.rand.nextFloat();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ public class CommandManager
|
|||
{
|
||||
Command task;
|
||||
Iterator<Command> iter = tasks.iterator();
|
||||
|
||||
while (iter.hasNext())
|
||||
{
|
||||
task = iter.next();
|
||||
|
@ -70,9 +71,14 @@ public class CommandManager
|
|||
{
|
||||
return !tasks.isEmpty();
|
||||
}
|
||||
|
||||
|
||||
public List<Command> getCommands()
|
||||
{
|
||||
return tasks;
|
||||
}
|
||||
|
||||
public void clearTasks()
|
||||
{
|
||||
this.tasks.clear();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package assemblyline.common.machine.command;
|
||||
|
||||
import assemblyline.common.machine.armbot.TileEntityArmbot;
|
||||
|
||||
public class CommandReturn extends Command
|
||||
{
|
||||
public static final float IDLE_ROTATION_PITCH = 0;
|
||||
public static final float IDLE_ROTATION_YAW = 0;
|
||||
|
||||
protected boolean doTask()
|
||||
{
|
||||
/**
|
||||
* Move the arm rotation to idle position if the machine is not idling
|
||||
*/
|
||||
if (Math.abs(this.tileEntity.rotationPitch - IDLE_ROTATION_PITCH) > 0.001 || Math.abs(this.tileEntity.rotationYaw - IDLE_ROTATION_YAW) > 0.001)
|
||||
{
|
||||
if (Math.abs(IDLE_ROTATION_PITCH - this.tileEntity.rotationPitch) > 0.125)
|
||||
this.tileEntity.rotationPitch += (IDLE_ROTATION_PITCH - this.tileEntity.rotationPitch) * 0.05;
|
||||
else
|
||||
this.tileEntity.rotationPitch += Math.signum(IDLE_ROTATION_PITCH - this.tileEntity.rotationPitch) * (0.125 * 0.05);
|
||||
if (Math.abs(this.tileEntity.rotationPitch - IDLE_ROTATION_PITCH) < 0.0125)
|
||||
this.tileEntity.rotationPitch = IDLE_ROTATION_PITCH;
|
||||
|
||||
if (Math.abs(IDLE_ROTATION_YAW - this.tileEntity.rotationYaw) > 0.125)
|
||||
this.tileEntity.rotationYaw += (IDLE_ROTATION_YAW - this.tileEntity.rotationYaw) * 0.05;
|
||||
else
|
||||
this.tileEntity.rotationYaw += Math.signum(IDLE_ROTATION_YAW - this.tileEntity.rotationYaw) * (0.125 * 0.05);
|
||||
if (Math.abs(this.tileEntity.rotationYaw - IDLE_ROTATION_YAW) < 0.0125)
|
||||
this.tileEntity.rotationYaw = IDLE_ROTATION_YAW;
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -13,12 +13,18 @@ import assemblyline.common.machine.armbot.TileEntityArmbot;
|
|||
*/
|
||||
public class CommandRotate extends Command
|
||||
{
|
||||
public static final float ROTATION_SPEED = 1f;
|
||||
float targetRotation = 0;
|
||||
|
||||
public CommandRotate(TileEntityArmbot arm, String...parameters)
|
||||
@Override
|
||||
public void onTaskStart()
|
||||
{
|
||||
super(arm, parameters);
|
||||
this.targetRotation = arm.rotationYaw + (float) (Math.PI / 2);
|
||||
this.targetRotation = this.tileEntity.rotationYaw + 90;
|
||||
|
||||
while (this.targetRotation > 360)
|
||||
{
|
||||
this.targetRotation -= 360;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -26,19 +32,17 @@ public class CommandRotate extends Command
|
|||
{
|
||||
super.doTask();
|
||||
|
||||
if (this.tileEntity.rotationYaw != this.targetRotation)
|
||||
if (this.tileEntity.rotationYaw > this.targetRotation)
|
||||
{
|
||||
if (Math.abs(this.targetRotation - this.tileEntity.rotationYaw) > 0.125)
|
||||
this.tileEntity.rotationYaw += (this.targetRotation - this.tileEntity.rotationYaw) * 0.05;
|
||||
else
|
||||
this.tileEntity.rotationYaw += Math.signum(this.targetRotation - this.tileEntity.rotationYaw) * (0.125 * 0.05);
|
||||
if (Math.abs(this.tileEntity.rotationYaw - this.targetRotation) < 0.0125)
|
||||
this.tileEntity.rotationYaw = this.targetRotation;
|
||||
return true;
|
||||
this.tileEntity.rotationYaw -= ROTATION_SPEED;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.tileEntity.rotationYaw += ROTATION_SPEED;
|
||||
}
|
||||
if (ticks < 80)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
if (Math.abs(this.targetRotation - this.tileEntity.rotationYaw) < 0.125) { return false; }
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue