public void Build(ElementDraft draft)
        {
            if (!Utils.IsValid(this))
            {
                return;
            }

            if (!Utils.IsValid(draft))
            {
                return;
            }

            var item = items.GetRandomValidItem();

            if (!Utils.IsValid(item))
            {
                return;
            }

            var settings = CreateSettings(parameters, draft);

            if (!Utils.IsValid(settings))
            {
                return;
            }

            GenerateItem(item, settings);
        }
Ejemplo n.º 2
0
        private void Build()
        {
            if (builder == null)
            {
                return;
            }

            if (draft.parent == null)
            {
                return;
            }

            Utils.DeleteChilds(draft.parent);

            for (int y = 0; y < repeatUp; y++)
            {
                for (int x = 0; x < repeatRight; x++)
                {
                    var elementDraft = ElementDraft.Create(draft);
                    elementDraft.Parse(draft.parent);

                    elementDraft.pivot = elementDraft.pivot
                                         + elementDraft.right * elementDraft.length * x
                                         + elementDraft.up * elementDraft.height * y;

                    (builder as IElementBuilder).Build(elementDraft);

                    if (isRunDecorators)
                    {
                        Utils.RunDecorators(elementDraft.parent);
                    }
                }
            }
        }
        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);
        }
Ejemplo n.º 4
0
 public void Build(ElementDraft draft)
 {
     return;
 }
        /// ======================================================================

        private static ElementGenerationSettings CreateSettings(ElementParameters parameters, ElementDraft draft)
        {
            var result = ElementGenerationSettings.Create();

            var position = draft.pivot;
            var angles   = Quaternion.LookRotation(draft.forward, draft.up).eulerAngles;
            var scale    = Vector3.one;

            var isHorizontalMrror = parameters.isHorizontalMrror;

            if (draft.isHorizontalMrror)
            {
                isHorizontalMrror = !isHorizontalMrror;
            }

            var isVerticalMirror = parameters.isVerticalMirror;

            if (draft.isVerticalMirror)
            {
                isVerticalMirror = !isVerticalMirror;
            }

            if (Utils.ApproximatelyZero(parameters.length))
            {
                scale.x = 1f;
            }
            else if (Utils.ApproximatelyZero(draft.length))
            {
                scale.x = 0f;
            }
            else
            {
                scale.x = draft.length / parameters.length;
            }

            if (Utils.ApproximatelyZero(parameters.height))
            {
                scale.y = 1f;
            }
            else if (Utils.ApproximatelyZero(draft.height))
            {
                scale.y = 0f;
            }
            else
            {
                scale.y = draft.height / parameters.height;
            }

            if (Utils.ApproximatelyZero(draft.forwardScale))
            {
                scale.z = 1f;
            }
            else
            {
                scale.z = draft.forwardScale;
            }

            if (isHorizontalMrror)
            {
                scale.x  *= -1f;
                position -= draft.right * parameters.length * scale.x;
            }

            if (isVerticalMirror)
            {
                scale.y  *= -1f;
                position -= draft.up * parameters.height * scale.y;
            }

            result.parent   = draft.parent;
            result.position = position;
            result.angles   = angles;
            result.scale    = scale;

            return(result);
        }