Пример #1
0
        /// <summary>
        /// Updates the internal cached values for the modules based on the current tank settings for scale/volume/position;
        /// done separately from updating the actual models so that the values can be used without the models even being present
        /// </summary>
        private void updateModuleStats()
        {
            float diameterScale = currentTankDiameter / currentMainTankModule.modelDefinition.diameter;

            currentMainTankModule.updateScale(diameterScale, currentTankVerticalScale * diameterScale);
            currentNoseModule.updateScaleForDiameter(currentTankDiameter);
            currentMountModule.updateScaleForDiameter(currentTankDiameter);

            float totalHeight = currentMainTankModule.currentHeight + currentNoseModule.currentHeight + currentMountModule.currentHeight;
            float startY      = totalHeight * 0.5f;//start at the top of the first tank

            startY -= currentNoseModule.currentHeight;

            float offset = currentNoseModule.currentHeightScale * currentNoseModule.modelDefinition.verticalOffset;

            if (currentNoseModule.modelDefinition.invertForTop)
            {
                currentNoseModule.currentVerticalPosition = startY - offset;
            }
            else
            {
                currentNoseModule.currentVerticalPosition = startY + offset;
            }

            startY -= currentMainTankModule.currentHeight * 0.5f;
            currentMainTankModule.currentVerticalPosition = startY;

            startY -= currentMainTankModule.currentHeight * 0.5f;
            offset  = currentMountModule.currentHeightScale * currentMountModule.modelDefinition.verticalOffset;
            if (currentMountModule.modelDefinition.invertForBottom)
            {
                currentMountModule.currentVerticalPosition = startY - offset;
            }
            else
            {
                currentMountModule.currentVerticalPosition = startY + offset;
            }
        }