Esempio n. 1
0
        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));
        }