private static void GenerateItems(List <ColumnItem> list, ColumnGenerationSettings settings)
        {
            var totalHeight = Utils.CalculateHeightSum(list);
            var heightscale = settings.height / totalHeight;

            var elementDraft = CreateElementDraft(settings);

            foreach (var item in list)
            {
                elementDraft.height = item.builder.height * heightscale;

                item.builder.Build(elementDraft);
                elementDraft.pivot += elementDraft.up * elementDraft.height;
            }
        }
        private static ElementDraft CreateElementDraft(ColumnGenerationSettings settings)
        {
            var result = ElementDraft.Create();

            result.length = settings.length;
            result.height = settings.height;

            result.isHorizontalMrror = settings.isHorizontalMrror;
            result.isVerticalMirror  = false;
            result.forwardScale      = settings.forwardScale;

            result.parent = settings.parent;
            result.pivot  = settings.pivot;

            result.up    = settings.up;
            result.right = settings.right;

            return(result);
        }
        /// ======================================================================

        private static ColumnGenerationSettings CreateSettings(ColumnDraft draft)
        {
            var result = ColumnGenerationSettings.Create();

            result.length = draft.length;
            result.height = draft.height;

            result.isHorizontalMrror = draft.isHorizontalMrror;
            result.forwardScale      = draft.forwardScale;

            result.parent = draft.parent;
            result.pivot  = draft.pivot;

            result.up      = draft.up;
            result.right   = draft.right;
            result.forward = draft.forward;

            return(result);
        }