Ejemplo n.º 1
0
        public void AdjustHeightForAllSegmentsInPath(List <ObjectPlacementBoxStackSegment> allPathSegments, ObjectPlacementPathAutomaticPatternHeightAdjustmentSettings automaticPatternHeightAdjustmentSettings, ObjectPlacementPathHeightPattern heightPattern)
        {
            bool wrapPattern = automaticPatternHeightAdjustmentSettings.WrapPatterns;

            if (automaticPatternHeightAdjustmentSettings.ApplyPatternsContinuously)
            {
                int numberOfTraversedStacks = 0;
                foreach (ObjectPlacementBoxStackSegment segment in allPathSegments)
                {
                    for (int stackIndex = 0; stackIndex < segment.NumberOfStacks; ++stackIndex)
                    {
                        segment.GetStackByIndex(stackIndex).SetHeight(heightPattern.GetHeightValue(numberOfTraversedStacks + stackIndex, wrapPattern));
                    }

                    numberOfTraversedStacks += segment.NumberOfStacks;
                }
            }
            else
            {
                foreach (ObjectPlacementBoxStackSegment segment in allPathSegments)
                {
                    for (int stackIndex = 0; stackIndex < segment.NumberOfStacks; ++stackIndex)
                    {
                        segment.GetStackByIndex(stackIndex).SetHeight(heightPattern.GetHeightValue(stackIndex, wrapPattern));
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void AdjustSegmentHeight(ObjectPlacementBoxStackSegment segment, List <ObjectPlacementBoxStackSegment> allPathSegments,
                                        ObjectPlacementPathAutomaticPatternHeightAdjustmentSettings automaticPatternHeightAdjustmentSettings, ObjectPlacementPathHeightPattern heightPattern)
        {
            int initialHeightValueIndex = 0;

            if (automaticPatternHeightAdjustmentSettings.ApplyPatternsContinuously)
            {
                int indexOfSegmentToAdjust = allPathSegments.FindIndex(0, item => item == segment);
                if (indexOfSegmentToAdjust >= 0)
                {
                    initialHeightValueIndex = ObjectPlacementBoxStackSegmentQueries.GetTotalNumberOfStacksInSegments(allPathSegments, indexOfSegmentToAdjust - 1);
                }
            }

            bool wrapPattern = automaticPatternHeightAdjustmentSettings.WrapPatterns;

            for (int stackIndex = 0; stackIndex < segment.NumberOfStacks; ++stackIndex)
            {
                segment.GetStackByIndex(stackIndex).SetHeight(heightPattern.GetHeightValue(initialHeightValueIndex + stackIndex, wrapPattern));
            }
        }