diff --git a/src/engine/core/gui/uiComponent/layout/UiPositioner.cpp b/src/engine/core/gui/uiComponent/layout/UiPositioner.cpp index ce11cc4..905016e 100644 --- a/src/engine/core/gui/uiComponent/layout/UiPositioner.cpp +++ b/src/engine/core/gui/uiComponent/layout/UiPositioner.cpp @@ -38,18 +38,35 @@ void UiPositioner::compute(const Dimensions &parent) { // 3b JustifyContent-offset berechnen float remainingSpace = ((style.flexDirection == FlexDirection::Column) ? screenSpace.height : screenSpace.width) - totalChildrenMainSize; + float gap =0.0f; + + if (uiComponent.parent == nullptr) { + printf("Test"); + } + float justifyOffset = 0.0f; switch (style.justifyContent) { case JustifyContent::Start: justifyOffset = 0.0f; break; case JustifyContent::Center: justifyOffset = remainingSpace / 2.0f; break; case JustifyContent::End: justifyOffset = remainingSpace; break; + case JustifyContent::SpaceBetween: + justifyOffset = 0.0; + if (uiComponent.children.size() > 1) { + gap = remainingSpace / (static_cast(uiComponent.children.size()) - 1.0f); + } + break; default: break; // Space between later } // 3. Kinder rekursiv positionieren float currentMainOffset = justifyOffset; + bool first = true; for (auto& child : uiComponent.children) { + if (!first && style.justifyContent == JustifyContent::SpaceBetween) { + currentMainOffset += gap; + } + if (style.flexDirection == FlexDirection::Column) { child->uiPositioner.screenSpace.y += currentMainOffset; currentMainOffset += child->uiPositioner.screenSpace.height; @@ -59,6 +76,8 @@ void UiPositioner::compute(const Dimensions &parent) { currentMainOffset += child->uiPositioner.screenSpace.width; currentMainOffset += child->uiPositioner.resolve(child->uiPositioner.style.margin.left, parent.width, screenWidth); } + + first = false; } // AlignItems diff --git a/src/game/UILayer.cpp b/src/game/UILayer.cpp index a31b39d..bd6d36b 100644 --- a/src/game/UILayer.cpp +++ b/src/game/UILayer.cpp @@ -23,7 +23,7 @@ void UILayer::onAttach() { rootContainer = std::make_unique(); LayoutStyle& rootLayout = rootContainer->getLayoutStyle(); - rootLayout.justifyContent = JustifyContent::End; + rootLayout.justifyContent = JustifyContent::SpaceBetween; auto imageStyle = LayoutStyle(); imageStyle.width = SizeValue(0.25f, SizeUnit::Percent); @@ -49,6 +49,8 @@ void UILayer::onAttach() { font = std::make_unique(myFont); //auto text = std::make_unique(*font, "Hello World!", glm::vec2(0.5f, 0.5f), glm::vec3(1,1,1)); + auto text = std::make_unique(*font, "Hello World", imageStyle); + //rootContainer->addChild(std::move(text)); }