private void CreateTransferVector(Case_Load boxLoad, out float timeToTransfer, out Vector3 transferVector) { if ((CurrentTask.Source.Side() == RackSide.Right && !ParentMS.SwitchSides) || (CurrentTask.Source.Side() == RackSide.Left && ParentMS.SwitchSides)) { rackLoc = -shuttleAP_Zpos; } else { rackLoc = shuttleAP_Zpos; } int loadDepth = CurrentTask.Destination.LoadDepth(); //Get the depth in the rack timeToTransfer = ParentMS.TimeToPos1; if (loadDepth == -1) //-1 = IA = Inter Aisle Transfer { timeToTransfer = ParentMS.TimeToPos1 + ParentMS.TimeToPos2; rackLoc = rackLoc * 3; //dropoff into the other aisle } else if (loadDepth == 2) { rackLoc = rackLoc * 2; timeToTransfer = ParentMS.TimeToPos2; } Vector3 direction = Trigonometry.DirectionYaw(Trigonometry.Yaw(boxLoad.Route.Orientation)); transferVector = Trigonometry.CrossProduct(direction, new Vector3(0, rackLoc, 0)); }
private void StartInducting(SorterCarrier carrier, SorterElementFixPoint induction, Load load, float inductiontime, float distancetosorter) { Vector3 direction = Trigonometry.DirectionYaw(Trigonometry.Yaw(load.Route.Orientation)); load.Translate(() => Arrived(carrier, induction), direction * distancetosorter, inductiontime); }