コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
        }