private static void GenerateItem(ElementItem item, ElementGenerationSettings settings) { var go = Utils.Instantiate(item.prefab); if (go == null) { return; } go.transform.parent = settings.parent; go.transform.position = settings.position; go.transform.eulerAngles = settings.angles; go.transform.localScale = settings.scale; }
/// ====================================================================== 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); }