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); }
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); }
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); }