public override void AdjustDimensionBounds() { if (float.IsPositiveInfinity(PPart.volumeMax)) { return; } if (CalculateVolume(Area, PPart.lengthMax) > PPart.volumeMax) { (Fields[nameof(length)].uiControlEditor as UI_FloatEdit).maxValue = PPart.volumeMax / Area; } SimPart sim = new SimPart { cornerCount = cornerCount, diameter = PPart.diameterMax, length = length, outerDiameter = OuterDiameter }; if (sim.VolumeCalculated > PPart.volumeMax) { float maxDiameter = sim.GetInnerDiameterFromArea(PPart.volumeMax / length); (Fields[nameof(diameter)].uiControlEditor as UI_FloatEdit).maxValue = maxDiameter; } }
public override void AdjustDimensionBounds() { float maxDiameter = PPart.diameterMax; float minDiameter = PPart.diameterMin; float maxLength = PPart.volumeMax / Area; float minLength = PPart.volumeMin / Area; SimPart sim = new SimPart { cornerCount = cornerCount, diameter = PPart.diameterMax, length = length, outerDiameter = OuterDiameter }; if (sim.VolumeCalculated > PPart.volumeMax) { maxDiameter = sim.GetInnerDiameterFromArea(PPart.volumeMax / length); } sim = new SimPart { cornerCount = cornerCount, diameter = PPart.diameterMin, length = length, outerDiameter = OuterDiameter }; if (sim.VolumeCalculated < PPart.volumeMin) { minDiameter = sim.GetInnerDiameterFromArea(PPart.volumeMin / length); } maxLength = Mathf.Clamp(maxLength, PPart.lengthMin, PPart.lengthMax); maxDiameter = Mathf.Clamp(maxDiameter, PPart.diameterMin, PPart.diameterMax); minLength = Mathf.Clamp(minLength, PPart.lengthMin, PPart.lengthMax - PPart.lengthSmallStep); minDiameter = Mathf.Clamp(minDiameter, PPart.diameterMin, PPart.diameterMax - PPart.diameterSmallStep); (Fields[nameof(length)].uiControlEditor as UI_FloatEdit).maxValue = maxLength; (Fields[nameof(length)].uiControlEditor as UI_FloatEdit).minValue = minLength; (Fields[nameof(diameter)].uiControlEditor as UI_FloatEdit).maxValue = maxDiameter; (Fields[nameof(diameter)].uiControlEditor as UI_FloatEdit).minValue = minDiameter; }