public override CharacterTask.Task getCurrentTask(CharacterTaskTracker taskTracker) { if (travelAlongPath != null) { if (travelAlongPath.isUseable() && !travelAlongPath.isComplete()) { CharacterTask.Task task = travelAlongPath.getCurrentTask(taskTracker); if (task.taskType == CharacterTask.Type.StepToBlock) { CharacterTask.StepToBlock stepTask = (CharacterTask.StepToBlock)task; Vector3 stepGoal = stepTask.getGoalLoc().toWorldSpaceVector3() + new Vector3(.5f, 0, .5f); stepGoal.Y = boat.getFootLocation().Y; Vector3 newFootLoc = LinearLocationInterpolator.interpolate(boat.getFootLocation(), stepGoal, boat.getSpeed()); newFootLoc.Y = boat.getFootLocation().Y; boat.setFootLocation(newFootLoc); boat.setRotationWithGivenDeltaVec(stepGoal - boat.getFootLocation()); boat.setVelocity(new Vector3()); if (LinearLocationInterpolator.isLinearInterpolationComplete(boat.getFootLocation(), stepGoal, boat.getSpeed())) { stepTask.taskWasCompleted(); } } } else if (travelAlongPath.isComplete()) { travelAlongPath = null; } } return(new CharacterTask.CaptainBoat(boat)); }
public CompleteTaskJob(Character nWorker, CharacterTask.Task nTask) { task = nTask; workerCharacter = nWorker; }