private BoxDraft CreateDraft() { var result = BoxDraft.Create(); result.Parse(target); result.length = draftLength; result.height = draftHeight; result.depth = draftDepth; return(result); }
private bool IsDraftValid(BoxDraft draft) { if (!Utils.IsValid(draft)) { return(false); } if (Utils.NegativeOrZero(draft.height)) { return(false); } return(true); }
private static BoxDraft CreateRoofDraft(CapGenerationSettings settings) { var result = BoxDraft.Create(); result.length = settings.length; result.depth = settings.depth; result.height = settings.height; result.parent = settings.parent; result.pivot = settings.pivot; result.up = settings.up; result.right = settings.right; return(result); }
public void Build(BoxDraft draft) { if (!Utils.IsValid(this)) { return; } if (!Utils.IsValid(draft)) { return; } var settings = CreateSettings(parameters, draft); if (!Utils.IsValid(settings)) { return; } var action = GetGenerationAction(parameters.mode); action(prefab, settings); }
private void Build() { if (builder == null) { return; } if (draft.parent == null) { return; } Utils.DeleteChilds(draft.parent); var boxDraft = BoxDraft.Create(draft); boxDraft.Parse(draft.parent); (builder as IBoxBuilder).Build(boxDraft); if (isRunDecorators) { Utils.RunDecorators(boxDraft.parent); } }
public void Build(BoxDraft draft) { if (!IsValid()) { return; } if (!IsDraftValid(draft)) { return; } var boxSettings = CreateBoxSettings(this, draft); if (!Utils.IsValid(boxSettings)) { return; } // Front { var settings = CreateSideSettings(boxSettings); settings.length = boxSettings.length; settings.height = boxSettings.sidesHeight; settings.forwardScale = boxSettings.forwardScale; if (Utils.IsValid(settings)) { GenerateLine(front, settings); } } // Right { var settings = CreateSideSettings(boxSettings); settings.length = boxSettings.depth; settings.height = boxSettings.sidesHeight; settings.forwardScale = boxSettings.rightScale; settings.pivot = boxSettings.GetRightPivot(); settings.right = boxSettings.GetRotatedRightAxis(-90f); if (Utils.IsValid(settings)) { GenerateLine(right, settings); } } // Back { var settings = CreateSideSettings(boxSettings); settings.length = boxSettings.length; settings.height = boxSettings.sidesHeight; settings.forwardScale = boxSettings.forwardScale; settings.pivot = boxSettings.GetBackPivot(); settings.right = boxSettings.GetRotatedRightAxis(-180f); if (Utils.IsValid(settings)) { GenerateLine(back, settings); } } // Left { var settings = CreateSideSettings(boxSettings); settings.length = boxSettings.depth; settings.height = boxSettings.sidesHeight; settings.forwardScale = boxSettings.rightScale; settings.pivot = boxSettings.GetLeftPivot(); settings.right = boxSettings.GetRotatedRightAxis(-270f); if (Utils.IsValid(settings)) { GenerateLine(left, settings); } } // Roof { var settings = CreateCapSettings(boxSettings); var depthScale = boxSettings.forwardScale; var lengthScale = boxSettings.rightScale; settings.pivot = boxSettings.pivot + boxSettings.up * boxSettings.sidesHeight; settings.length -= (left.depth + right.depth) * lengthScale; settings.pivot += boxSettings.right * left.depth * lengthScale; settings.depth -= (front.depth + back.depth) * depthScale; settings.pivot += boxSettings.forward * front.depth * depthScale; if (Utils.IsValid(settings)) { if (Utils.IsValid(cap)) { GenerateRoof(cap, settings); } } } }
/// ====================================================================== private static BoxGenerationSettings CreateBoxSettings(StandardBoxBuilding builder, BoxDraft draft) { var result = BoxGenerationSettings.Create(); result.length = draft.length; result.depth = draft.depth; var capHeight = Utils.IsValid(builder.cap) ? builder.cap.height : 0f; var wallScaledHeight = draft.height - capHeight; var scale = builder.CalculateHeightScale(wallScaledHeight); var roofScaledHeigh = capHeight * scale; var totalScaledHeight = wallScaledHeight + roofScaledHeigh; if (!Utils.ApproximatelyZero(totalScaledHeight)) { scale = draft.height / totalScaledHeight; } else { scale = 0f; } result.capHeight = capHeight * scale; result.sidesHeight = draft.height - result.capHeight; result.rightScale = builder.front.CalculateLengthScale(result.length); result.forwardScale = builder.right.CalculateLengthScale(result.depth); result.parent = draft.parent; result.pivot = draft.pivot; result.up = draft.up; result.right = draft.right; result.forward = draft.forward; return(result); }
public void Build(BoxDraft draft) { return; }
/// ====================================================================== private static RoofGenerationSettings CreateSettings(RoofParameters parameters, BoxDraft draft) { var result = RoofGenerationSettings.Create(); result.itemLength = parameters.length; result.itemDepth = parameters.depth; result.targetLength = draft.length; result.targetDepth = draft.depth; result.parent = draft.parent; result.pivot = draft.pivot; result.up = draft.up; result.right = draft.right; result.forward = draft.forward; return(result); }