ObjectPlacementPathAutomaticRandomHeightAdjuster.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. namespace O3DWB
  5. {
  6. public class ObjectPlacementPathAutomaticRandomHeightAdjuster
  7. {
  8. #region Public Methods
  9. public void AdjustSegmentHeight(ObjectPlacementBoxStackSegment segment, ObjectPlacementPathAutomaticRandomHeightAdjustmentSettings automaticRandomHeightAdjustmentSettings)
  10. {
  11. Range<int> randomValueRange = new Range<int>(automaticRandomHeightAdjustmentSettings.MinHeight, automaticRandomHeightAdjustmentSettings.MaxHeight);
  12. segment.SetHeightForAllStacks(RandomValueGeneration.GenerateIntRandomValuesInRange(randomValueRange, segment.NumberOfStacks));
  13. }
  14. public void AdjustHeightForSegments(List<ObjectPlacementBoxStackSegment> segments, ObjectPlacementPathAutomaticRandomHeightAdjustmentSettings automaticRandomHeightAdjustmentSettings)
  15. {
  16. foreach (ObjectPlacementBoxStackSegment segment in segments)
  17. {
  18. AdjustSegmentHeight(segment, automaticRandomHeightAdjustmentSettings);
  19. }
  20. }
  21. public void AdjustSegmentHeight(ObjectPlacementBoxStackSegment segment, int indexOfFirstStackToAdjust, ObjectPlacementPathAutomaticRandomHeightAdjustmentSettings automaticRandomHeightAdjustmentSettings)
  22. {
  23. Range<int> randomValueRange = new Range<int>(automaticRandomHeightAdjustmentSettings.MinHeight, automaticRandomHeightAdjustmentSettings.MaxHeight);
  24. int numberOfStacksToAdjust = segment.NumberOfStacks - indexOfFirstStackToAdjust;
  25. segment.SetHeightForStacksStartingAt(indexOfFirstStackToAdjust, RandomValueGeneration.GenerateIntRandomValuesInRange(randomValueRange, numberOfStacksToAdjust));
  26. }
  27. #endregion
  28. }
  29. }
  30. #endif