Merge pull request #435 from Unity-UI-Extensions/fix/resolveflowoverflow

Resolve FlowLayoutGroup overflow issue
pull/436/head^2
Simon (Darkside) Jackson 2023-03-12 12:12:52 +00:00 committed by GitHub
commit a45509ee55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 597 additions and 285 deletions

View File

@ -1,10 +1,10 @@
name: Build and test UPM packages for platforms on all available Unity Versions name: Build and test UPM packages for platforms, all branches except main
on: on:
pull_request: pull_request:
branches-ignore: branches-ignore:
- 'release' - 'release'
# Ignore PRs targetting main # Ignore PRs targeting main
# Allows you to run this workflow manually from the Actions tab # Allows you to run this workflow manually from the Actions tab
workflow_dispatch: workflow_dispatch:
@ -14,6 +14,7 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
# Check Unity version required by the package
# Run Unity build unit tests defined in the package for a single version for feature branches # Run Unity build unit tests defined in the package for a single version for feature branches
Run-Partial-Unit-Tests: Run-Partial-Unit-Tests:
name: Run Unity Unit Tests name: Run Unity Unit Tests
@ -26,12 +27,4 @@ jobs:
Run-Full-Unit-Tests: Run-Full-Unit-Tests:
name: Run Unity Unit Tests name: Run Unity Unit Tests
if: github.ref == 'refs/heads/development' if: github.ref == 'refs/heads/development'
uses: ./.github/workflows/rununitybuildmultiversion.yml uses: ./.github/workflows/rununitybuildmultiversion.yml
# Update the package release version
Update-Version:
name: Update Package Version
uses: ./.github/workflows/tagrelease.yml
with:
build-target: windows
secrets: inherit

View File

@ -0,0 +1,26 @@
name: Publish development branch on Merge
on:
pull_request:
types:
- closed
branches:
- development
# On close of PR targeting development
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
release_on_merge:
if: github.event.pull_request.merged == true
name: Tag and Publish UPM package
uses: ./.github/workflows/upversionandtagrelease.yml
with:
build-host: ubuntu-latest
build-type: pre-release
secrets: inherit

91
.github/workflows/main-publish.yml vendored Normal file
View File

@ -0,0 +1,91 @@
name: Publish main branch and increment version
on:
pull_request:
types:
- closed
branches:
- main
jobs:
# Get Version to tag and release the branch, no up-version - [no-ver] included in PR title
validate-environment:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.title, 'no-ver')
name: Get Version from UPM package
uses: ./.github/workflows/getpackageversionfrompackage.yml
with:
build-host: ubuntu-latest
# Perform tagging
release-Package-only:
needs: validate-environment
name: Release package only, no upversion
uses: ./.github/workflows/tagrelease.yml
with:
build-host: ubuntu-latest
version: ${{ needs.validate-environment.outputs.packageversion }}
secrets: inherit
# Up version the release and publish major release
upversion-major-Package:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.title, 'no-ver') == false && contains(github.event.pull_request.title, 'major-release')
name: Major Version package and release
uses: ./.github/workflows/upversionandtagrelease.yml
with:
build-host: ubuntu-latest
build-type: major
secrets: inherit
# Up version the release and publish minor release
upversion-minor-Package:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.title, 'no-ver') == false && contains(github.event.pull_request.title, 'minor-release')
name: Minor Version package and release
uses: ./.github/workflows/upversionandtagrelease.yml
with:
build-host: ubuntu-latest
build-type: minor
secrets: inherit
# Up version the release and publish patch release (default)
upversion-patch-Package:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.title, 'no-ver') == false && contains(github.event.pull_request.title, 'minor-release') == false && contains(github.event.pull_request.title, 'major-release') == false
name: Patch Version package and release
uses: ./.github/workflows/upversionandtagrelease.yml
with:
build-host: ubuntu-latest
build-type: patch-release
secrets: inherit
release-Complete:
if: ${{ always() }}
needs: [upversion-major-Package, upversion-minor-Package, upversion-patch-Package, release-Package-only]
name: Release complete
runs-on: ubuntu-latest
steps:
- name: Script Version
run: echo "Release done, updating Development"
# Refresh the development branch with the main publish
refresh-development:
if: ${{ always() }}
needs: [release-Complete]
name: Refresh development branch
uses: ./.github/workflows/refreshbranch.yml
with:
build-host: ubuntu-latest
target-branch: development
source-branch: main
secrets: inherit
# Up version the development branch ready for future development
upversion-development:
if: ${{ always() }}
needs: [refresh-development]
name: UpVersion the development branch for the next release
uses: ./.github/workflows/upversionandtagrelease.yml
with:
build-host: ubuntu-latest
build-type: patch
target-branch: development
createTag: false
secrets: inherit

43
.github/workflows/refreshbranch.yml vendored Normal file
View File

@ -0,0 +1,43 @@
name: Refresh branch
on:
workflow_call:
inputs:
build-host:
required: true
type: string
target-branch:
required: true
type: string
source-branch:
required: true
type: string
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
packageRelease:
name: Refresh ${{ inputs.target-branch }} branch from ${{ inputs.source-branch }} branch
runs-on: ${{ inputs.build-host }}
steps:
- name: Script Version
run: |
echo "::group::Script Versioning"
$scriptVersion = "1.0.1"
echo "Build Script Version: $scriptVersion"
echo "::endgroup::"
shell: pwsh
- uses: actions/checkout@v3
with:
ref: ${{ inputs.target-branch }}
clean: true
token: ${{ secrets.GIT_PAT }}
- name: Refresh from Source Branch
run: |
git pull origin ${{ inputs.source-branch }}
git commit -m "Branch ${{ inputs.target-branch }} updated with changes from ${{ inputs.source-branch }} [skip ci]"
git push origin ${{ inputs.target-branch }}
echo "Branch ${{ inputs.target-branch }} updated with changes from ${{ inputs.source-branch }}"
shell: pwsh

View File

@ -80,7 +80,7 @@ jobs:
name: 'Run Unity Builds' name: 'Run Unity Builds'
run: | run: |
echo "::group::Set Hub and editor locations" echo "::group::Set Hub and editor locations"
$unityVersion = ${{ matrix.unityVersion }} $unityVersion = '${{ matrix.unityVersion }}'
echo "::group::Set Hub and editor locations" echo "::group::Set Hub and editor locations"
@ -90,6 +90,7 @@ jobs:
$hubPath = "C:\Program Files\Unity Hub\Unity Hub.exe" $hubPath = "C:\Program Files\Unity Hub\Unity Hub.exe"
$editorRootPath = "C:\Program Files\Unity\Hub\Editor\" $editorRootPath = "C:\Program Files\Unity\Hub\Editor\"
$editorFileEx = "\Editor\Unity.exe" $editorFileEx = "\Editor\Unity.exe"
$directorySeparatorChar = "\"
#"Unity Hub.exe" -- --headless help #"Unity Hub.exe" -- --headless help
#. 'C:\Program Files\Unity Hub\Unity Hub.exe' -- --headless help #. 'C:\Program Files\Unity Hub\Unity Hub.exe' -- --headless help
@ -103,6 +104,7 @@ jobs:
$hubPath = "/Applications/Unity Hub.app/Contents/MacOS/Unity Hub" $hubPath = "/Applications/Unity Hub.app/Contents/MacOS/Unity Hub"
$editorRootPath = "/Applications/Unity/Hub/Editor/" $editorRootPath = "/Applications/Unity/Hub/Editor/"
$editorFileEx = "/Unity.app/Contents/MacOS/Unity" $editorFileEx = "/Unity.app/Contents/MacOS/Unity"
$directorySeparatorChar = "/"
# /Applications/Unity\ Hub.app/Contents/MacOS/Unity\ Hub -- --headless help # /Applications/Unity\ Hub.app/Contents/MacOS/Unity\ Hub -- --headless help
function unity-hub function unity-hub
@ -115,6 +117,7 @@ jobs:
$hubPath = "$HOME/Unity Hub/UnityHub.AppImage" $hubPath = "$HOME/Unity Hub/UnityHub.AppImage"
$editorRootPath = "$HOME/Unity/Hub/Editor/" $editorRootPath = "$HOME/Unity/Hub/Editor/"
$editorFileEx = "/Editor/Unity" $editorFileEx = "/Editor/Unity"
$directorySeparatorChar = "/"
# /UnityHub.AppImage --headless help # /UnityHub.AppImage --headless help
# xvfb-run --auto-servernum "$HOME/Unity Hub/UnityHub.AppImage" --headless help # xvfb-run --auto-servernum "$HOME/Unity Hub/UnityHub.AppImage" --headless help
@ -126,8 +129,6 @@ jobs:
echo "::endgroup::" echo "::endgroup::"
echo "::group::Get String function to query a string for a value" echo "::group::Get String function to query a string for a value"
function GetString($InputString, $InputPattern, $MatchIndex) function GetString($InputString, $InputPattern, $MatchIndex)
@ -151,10 +152,9 @@ jobs:
echo "::endgroup::" echo "::endgroup::"
echo "::group::Get Installed Unity version based on Matrix" echo "::group::Get Installed Unity version based on Matrix"
echo 'Script Start'
echo "Unity hub path is {$hubPath}" echo "Unity hub path is {$hubPath}"
echo "Requested unity version is {$unityVersion}" echo "Requested unity version is {$unityVersion}"
$InstalledUnityVersions = unity-hub editors $InstalledUnityVersions = unity-hub editors
$editorRootPath = unity-hub ip -g $editorRootPath = unity-hub ip -g
echo "Installed unity versions are {$InstalledUnityVersions}" echo "Installed unity versions are {$InstalledUnityVersions}"
@ -171,7 +171,7 @@ jobs:
$queryUnityVersion = GetString $InstalledUnityVersions "$unityVersion" -MatchIndex 0 $queryUnityVersion = GetString $InstalledUnityVersions "$unityVersion" -MatchIndex 0
} }
echo "Found unity version is {$queryUnityVersion}" echo "Found unity version is {$queryUnityVersion} for input {$unityVersion}"
if ($queryUnityVersion -ne 0) if ($queryUnityVersion -ne 0)
{ {
@ -456,4 +456,4 @@ jobs:
if: always() if: always()
with: with:
name: unity-build-log name: unity-build-log
path: Logs/** path: Logs/**

View File

@ -40,12 +40,11 @@ jobs:
with: with:
submodules: recursive submodules: recursive
clean: true clean: true
- id: build - id: build
name: 'Run Unity Builds' name: 'Run Unity Builds'
run: | run: |
echo "::group::Set Hub and editor locations" echo "::group::Set Hub and editor locations"
$unityVersion = ${{ inputs.unityVersion }} $unityVersion = '${{ inputs.unityVersion }}'
echo "::group::Set Hub and editor locations" echo "::group::Set Hub and editor locations"
@ -55,6 +54,7 @@ jobs:
$hubPath = "C:\Program Files\Unity Hub\Unity Hub.exe" $hubPath = "C:\Program Files\Unity Hub\Unity Hub.exe"
$editorRootPath = "C:\Program Files\Unity\Hub\Editor\" $editorRootPath = "C:\Program Files\Unity\Hub\Editor\"
$editorFileEx = "\Editor\Unity.exe" $editorFileEx = "\Editor\Unity.exe"
$directorySeparatorChar = "\"
#"Unity Hub.exe" -- --headless help #"Unity Hub.exe" -- --headless help
#. 'C:\Program Files\Unity Hub\Unity Hub.exe' -- --headless help #. 'C:\Program Files\Unity Hub\Unity Hub.exe' -- --headless help
@ -68,6 +68,7 @@ jobs:
$hubPath = "/Applications/Unity Hub.app/Contents/MacOS/Unity Hub" $hubPath = "/Applications/Unity Hub.app/Contents/MacOS/Unity Hub"
$editorRootPath = "/Applications/Unity/Hub/Editor/" $editorRootPath = "/Applications/Unity/Hub/Editor/"
$editorFileEx = "/Unity.app/Contents/MacOS/Unity" $editorFileEx = "/Unity.app/Contents/MacOS/Unity"
$directorySeparatorChar = "/"
# /Applications/Unity\ Hub.app/Contents/MacOS/Unity\ Hub -- --headless help # /Applications/Unity\ Hub.app/Contents/MacOS/Unity\ Hub -- --headless help
function unity-hub function unity-hub
@ -80,6 +81,7 @@ jobs:
$hubPath = "$HOME/Unity Hub/UnityHub.AppImage" $hubPath = "$HOME/Unity Hub/UnityHub.AppImage"
$editorRootPath = "$HOME/Unity/Hub/Editor/" $editorRootPath = "$HOME/Unity/Hub/Editor/"
$editorFileEx = "/Editor/Unity" $editorFileEx = "/Editor/Unity"
$directorySeparatorChar = "/"
# /UnityHub.AppImage --headless help # /UnityHub.AppImage --headless help
# xvfb-run --auto-servernum "$HOME/Unity Hub/UnityHub.AppImage" --headless help # xvfb-run --auto-servernum "$HOME/Unity Hub/UnityHub.AppImage" --headless help
@ -91,8 +93,6 @@ jobs:
echo "::endgroup::" echo "::endgroup::"
echo "::group::Get String function to query a string for a value" echo "::group::Get String function to query a string for a value"
function GetString($InputString, $InputPattern, $MatchIndex) function GetString($InputString, $InputPattern, $MatchIndex)
@ -115,8 +115,7 @@ jobs:
} }
echo "::endgroup::" echo "::endgroup::"
echo "::group::Get Installed Unity version based on Matrix" echo "::group::Find Installed Unity version based on input"
echo 'Script Start'
echo "Unity hub path is {$hubPath}" echo "Unity hub path is {$hubPath}"
echo "Requested unity version is {$unityVersion}" echo "Requested unity version is {$unityVersion}"
@ -136,7 +135,7 @@ jobs:
$queryUnityVersion = GetString $InstalledUnityVersions "$unityVersion" -MatchIndex 0 $queryUnityVersion = GetString $InstalledUnityVersions "$unityVersion" -MatchIndex 0
} }
echo "Found unity version is {$queryUnityVersion}" echo "Found unity version is {$queryUnityVersion} for input {$unityVersion}"
if ($queryUnityVersion -ne 0) if ($queryUnityVersion -ne 0)
{ {
@ -421,4 +420,4 @@ jobs:
if: always() if: always()
with: with:
name: unity-build-log name: unity-build-log
path: Logs/** path: Logs/**

View File

@ -1,33 +1,26 @@
name: Package UPM project and deploy name: Tag Release
on: on:
workflow_call: workflow_call:
inputs: inputs:
build-target: build-host:
required: true
type: string
version:
required: true required: true
type: string type: string
build-type:
required: false # Allows you to run this workflow manually from the Actions tab
default: 'pre-release' workflow_dispatch:
type: string
# options: concurrency:
# - major group: ${{ github.ref }}
# - minor cancel-in-progress: true
# - patch
# - pre-release
# - build
outputs:
packageversion:
description: "Returns the version of Unity the UPM package requires"
value: ${{ jobs.packageRelease.outputs.packageversion }}
secrets:
GIT_USER_NAME:
required: false
jobs: jobs:
packageRelease: packageRelease:
name: Package UPM Project and tag name: Package UPM Project and tag
runs-on: ${{ inputs.build-target }} runs-on: ${{ inputs.build-host }}
outputs: outputs:
packageversion: ${{ steps.getpackageversion.outputs.packageversion }} packageversion: ${{ steps.getpackageversion.outputs.packageversion }}
steps: steps:
@ -40,6 +33,7 @@ jobs:
shell: pwsh shell: pwsh
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
fetch-depth: 0
submodules: recursive submodules: recursive
clean: true clean: true
token: ${{ secrets.GIT_PAT }} token: ${{ secrets.GIT_PAT }}
@ -60,87 +54,26 @@ jobs:
$gitUser = "${{ secrets.GIT_USER_NAME }}" $gitUser = "${{ secrets.GIT_USER_NAME }}"
$gitEmail = "$gitUser@users.noreply.github.com" $gitEmail = "$gitUser@users.noreply.github.com"
} }
echo "email $gitUser@users.noreply.github.com"
git config --global user.email "$gitUser@users.noreply.github.com" git config --global user.email "$gitUser@users.noreply.github.com"
git config --global user.name "$gitUser" git config --global user.name "$gitUser"
shell: pwsh shell: pwsh
- id: getpackageversion - name: Check if Tag Exists
name: Bump UPM Package version
run: | run: |
function UpdateProjectVersionJSON { $tagVersion = "${{ inputs.version }}"
param ( $tags = git tag
[Parameter(Mandatory)] echo "Tags found are [$tags], searching for [$tagVersion]"
$type, foreach ($tag in $tags)
$packageFile = 'package.json' {
) if($tag.Trim() -eq "$tagVersion")
<# {
Type of build can be one of the following Write-Error "$tagVersion tag already exists"
- 'build' # Build release - 1.0.0-pre-release.0+1 exit 1
- 'pre-release' # Pre-Release release - 1.0.0-pre-release.1
- 'patch' # Patch release - 1.0.1
- 'minor' # Minor release - 1.1.0
- 'major' # Major release - 2.0.0
#>
if ( -not (Test-Path -Path $packageFile) ) {
Write-Error "Failed to find a valid project manifest at `"$packageFile`""
return $null
} }
$packageInfo = (Get-Content $packageFile -Raw) | ConvertFrom-Json
Write-Host "Detected Project Version:" $packageInfo.version
function IfNull($a, $b, $c) { if ($null -eq $a) { return $b } else { return $c } }
$packageSemVer = [System.Management.Automation.SemanticVersion]$packageInfo.version
$majorVersion = if($null -eq $packageSemVer.Major) {0} else {$packageSemVer.Major}
$minorVersion = if($null -eq $packageSemVer.Minor) {0} else {$packageSemVer.Minor}
$patchVersion = if($null -eq $packageSemVer.Patch) {0} else {$packageSemVer.Patch}
$prereleaseVersion = if($null -eq $packageSemVer.PreReleaseLabel) {0} else {$packageSemVer.PreReleaseLabel.Replace('pre-release.','')}
$buildVersion = if($null -eq $packageSemVer.BuildLabel) {0} else {$packageSemVer.BuildLabel}
# work out new version
switch ($type) {
'build' {
[int]$buildVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion, "pre-release." + $prereleaseVersion, $buildVersion)
}
'pre-release' {
[int]$prereleaseVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion, "pre-release." + $prereleaseVersion)
}
'patch' {
[int]$patchVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion)
}
'minor' {
[int]$minorVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, 0)
}
'major' {
[int]$majorVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, 0, 0)
}
}
Write-Host "Upgrading project version [$packageSemVer] to [$newPackageSemVer]"
# Write out updated package info
$packageInfo.version = $newPackageSemVer.ToString()
$packageInfo | ConvertTo-Json | Set-Content $packageFile
return $packageInfo.version
} }
shell: pwsh
$packageFile = 'package.json' - name: Create tag and push
$result = UpdateProjectVersionJSON("${{ inputs.build-type }}","$packageFile") run: |
if([string]::IsNullOrEmpty($result)) { $tagVersion = "${{ inputs.version }}"
echo "Version patch failed" git tag -fa "v$tagVersion" "${GITHUB_SHA}" -m "v$tagVersion Release [skip ci]"
exit 1 git push origin "v$tagVersion" --force
} shell: pwsh
echo "packageversion=$result" >> $env:GITHUB_OUTPUT
git add "$packageFile"
git commit -m "Auto increment pre-release version to $result [skip ci]"
git tag -fa "$result" "${GITHUB_SHA}" -m "$result Release"
git push origin --force
shell: pwsh

View File

@ -0,0 +1,181 @@
name: UpVersion Package UPM project and create new tag
on:
workflow_call:
inputs:
build-host:
required: true
type: string
build-type:
required: false
default: 'pre-release'
type: string
# options:
# - major
# - minor
# - patch
# - patch-release
# - pre-release
# - build
target-branch:
required: false
type: string
default: ${{ github.ref }}
createTag:
required: false
type: boolean
default: true
outputs:
packageversion:
description: "Returns the version of Unity the UPM package requires"
value: ${{ jobs.packageRelease.outputs.packageversion }}
secrets:
GIT_USER_NAME:
required: false
jobs:
packageRelease:
name: Package UPM Project and tag
runs-on: ${{ inputs.build-host }}
outputs:
packageversion: ${{ steps.getpackageversion.outputs.packageversion }}
steps:
- name: Script Version
run: |
echo "::group::Script Versioning"
$scriptVersion = "1.0.2"
echo "Build Script Version: $scriptVersion"
echo "::endgroup::"
shell: pwsh
- uses: actions/checkout@v3
with:
ref: ${{ inputs.target-branch }}
fetch-depth: 0
submodules: recursive
clean: true
token: ${{ secrets.GIT_PAT }}
- uses: actions/setup-node@v3
- name: Set Github vars
run: |
if([string]::IsNullOrEmpty('${{ secrets.GIT_USER_NAME }}')){
if([string]::IsNullOrEmpty('${{ secrets.GIT_USER_NAME }}')){
$gitUser = "action"
$gitEmail = "action@github.com"
}
else {
$gitUser = "${GITHUB_ACTOR}"
$gitEmail = "$gitUser@users.noreply.github.com"
}
}
else {
$gitUser = "${{ secrets.GIT_USER_NAME }}"
$gitEmail = "$gitUser@users.noreply.github.com"
}
git config --global user.email "$gitUser@users.noreply.github.com"
git config --global user.name "$gitUser"
shell: pwsh
- id: getpackageversion
name: Bump UPM Package version
run: |
function UpdateProjectVersionJSON {
param (
[Parameter(Mandatory)]
$type,
$packageFile = 'package.json'
)
<#
Type of build can be one of the following
- 'build' # Build release - 1.0.0-pre.0+1
- 'pre-release' # Pre-Release - 1.0.0-pre.1
- 'patch-release' # Patch release - 1.0.1 (reset preview version to current patch, no increase)
- 'patch' # Patch release - 1.0.1
- 'minor' # Minor release - 1.1.0
- 'major' # Major release - 2.0.0
#>
if ( -not (Test-Path -Path $packageFile) ) {
Write-Error "Failed to find a valid project manifest at `"$packageFile`""
return $null
}
$packageInfo = (Get-Content $packageFile -Raw) | ConvertFrom-Json
Write-Host "Detected Project Version:" $packageInfo.version
function IfNull($a, $b, $c) { if ($null -eq $a) { return $b } else { return $c } }
$packageSemVer = [System.Management.Automation.SemanticVersion]$packageInfo.version
$majorVersion = if($null -eq $packageSemVer.Major) {0} else {$packageSemVer.Major}
$minorVersion = if($null -eq $packageSemVer.Minor) {0} else {$packageSemVer.Minor}
$patchVersion = if($null -eq $packageSemVer.Patch) {0} else {$packageSemVer.Patch}
$prereleaseVersion = if($null -eq $packageSemVer.PreReleaseLabel) {0} else {$packageSemVer.PreReleaseLabel.Replace('pre.','')}
$buildVersion = if($null -eq $packageSemVer.BuildLabel) {0} else {$packageSemVer.BuildLabel}
# work out new version
switch ($type) {
'build' {
[int]$buildVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion, "pre." + $prereleaseVersion, $buildVersion)
}
'pre-release' {
[int]$prereleaseVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion, "pre." + $prereleaseVersion)
}
'patch-release' {
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion)
}
'patch' {
[int]$patchVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion)
}
'minor' {
[int]$minorVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, 0)
}
'major' {
[int]$majorVersion += 1
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, 0, 0)
}
}
Write-Host "Upgrading project version [$packageSemVer] to [$newPackageSemVer]"
# Write out updated package info
$packageInfo.version = $newPackageSemVer.ToString()
$packageInfo | ConvertTo-Json | Set-Content $packageFile
return $packageInfo.version
}
$packageFile = 'package.json'
$result = UpdateProjectVersionJSON("${{ inputs.build-type }}","$packageFile")
if([string]::IsNullOrEmpty($result)) {
echo "Version patch failed"
exit 1
}
git add "$packageFile"
git commit -m "Auto increment pre-release version to $result [skip ci]"
git push origin
echo "packageversion=$result" >> $env:GITHUB_OUTPUT
shell: pwsh
- name: Check if Tag Exists
run: |
$tagVersion = '${{steps.getpackageversion.outputs.packageversion }}'
$tags = git tag
echo "Tags found are [$tags], searching for [$tagVersion]"
foreach ($tag in $tags)
{
if($tag.Trim() -eq "$tagVersion")
{
Write-Error "$tagVersion tag already exists"
exit 1
}
}
shell: pwsh
- name: Publish package tag
if: ${{inputs.createTag == true}}
run: |
$outputVersion = '${{steps.getpackageversion.outputs.packageversion }}'
git tag -fa "v$outputVersion" "${GITHUB_SHA}" -m "v$outputVersion Release"
git push origin "v$outputVersion" --force --tags
shell: pwsh

View File

@ -6,6 +6,7 @@
/// Vertical Flow by Ramon Molossi /// Vertical Flow by Ramon Molossi
using System.Collections.Generic; using System.Collections.Generic;
using System.Text;
namespace UnityEngine.UI.Extensions namespace UnityEngine.UI.Extensions
{ {
@ -17,27 +18,32 @@ namespace UnityEngine.UI.Extensions
{ {
public enum Axis { Horizontal = 0, Vertical = 1 } public enum Axis { Horizontal = 0, Vertical = 1 }
public float SpacingX = 0f; private float _layoutHeight;
private float _layoutWidth;
public float SpacingX = 0f;
public float SpacingY = 0f; public float SpacingY = 0f;
public bool ExpandHorizontalSpacing = false; public bool ExpandHorizontalSpacing = false;
public bool ChildForceExpandWidth = false; public bool ChildForceExpandWidth = false;
public bool ChildForceExpandHeight = false; public bool ChildForceExpandHeight = false;
public bool invertOrder = false; public bool invertOrder = false;
private float _layoutHeight;
private float _layoutWidth;
[SerializeField] protected Axis m_StartAxis = Axis.Horizontal; [SerializeField]
public Axis startAxis { get { return m_StartAxis; } set { SetProperty(ref m_StartAxis, value); } } protected Axis m_StartAxis = Axis.Horizontal;
public Axis StartAxis { get { return m_StartAxis; } set { SetProperty(ref m_StartAxis, value); } }
public override void CalculateLayoutInputHorizontal() public override void CalculateLayoutInputHorizontal()
{ {
if (startAxis == Axis.Horizontal) { if (StartAxis == Axis.Horizontal)
base.CalculateLayoutInputHorizontal (); {
var minWidth = GetGreatestMinimumChildWidth () + padding.left + padding.right; base.CalculateLayoutInputHorizontal();
SetLayoutInputForAxis (minWidth, -1, -1, 0); var minWidth = GetGreatestMinimumChildWidth() + padding.left + padding.right;
} else { SetLayoutInputForAxis(minWidth, -1, -1, 0);
_layoutWidth = SetLayout (0, true); }
else
{
_layoutWidth = SetLayout(0, true);
} }
} }
@ -54,55 +60,42 @@ namespace UnityEngine.UI.Extensions
public override void CalculateLayoutInputVertical() public override void CalculateLayoutInputVertical()
{ {
if (startAxis == Axis.Horizontal) { if (StartAxis == Axis.Horizontal)
_layoutHeight = SetLayout (1, true); {
} else { _layoutHeight = SetLayout(1, true);
base.CalculateLayoutInputHorizontal (); }
var minHeight = GetGreatestMinimumChildHeigth () + padding.bottom + padding.top; else
SetLayoutInputForAxis (minHeight, -1, -1, 1); {
base.CalculateLayoutInputHorizontal();
var minHeight = GetGreatestMinimumChildHeigth() + padding.bottom + padding.top;
SetLayoutInputForAxis(minHeight, -1, -1, 1);
} }
} }
protected bool IsCenterAlign protected bool IsCenterAlign
{ {
get get => childAlignment == TextAnchor.LowerCenter || childAlignment == TextAnchor.MiddleCenter || childAlignment == TextAnchor.UpperCenter;
{
return childAlignment == TextAnchor.LowerCenter || childAlignment == TextAnchor.MiddleCenter ||
childAlignment == TextAnchor.UpperCenter;
}
} }
protected bool IsRightAlign protected bool IsRightAlign
{ {
get get => childAlignment == TextAnchor.LowerRight || childAlignment == TextAnchor.MiddleRight || childAlignment == TextAnchor.UpperRight;
{
return childAlignment == TextAnchor.LowerRight || childAlignment == TextAnchor.MiddleRight ||
childAlignment == TextAnchor.UpperRight;
}
} }
protected bool IsMiddleAlign protected bool IsMiddleAlign
{ {
get get => childAlignment == TextAnchor.MiddleLeft || childAlignment == TextAnchor.MiddleRight || childAlignment == TextAnchor.MiddleCenter;
{
return childAlignment == TextAnchor.MiddleLeft || childAlignment == TextAnchor.MiddleRight ||
childAlignment == TextAnchor.MiddleCenter;
}
} }
protected bool IsLowerAlign protected bool IsLowerAlign
{ {
get get => childAlignment == TextAnchor.LowerLeft || childAlignment == TextAnchor.LowerRight || childAlignment == TextAnchor.LowerCenter;
{
return childAlignment == TextAnchor.LowerLeft || childAlignment == TextAnchor.LowerRight ||
childAlignment == TextAnchor.LowerCenter;
}
} }
/// <summary> /// <summary>
/// Holds the rects that will make up the current bar being processed /// Holds the rects that will make up the current bar being processed
/// </summary> /// </summary>
private readonly IList<RectTransform> _itemList = new List<RectTransform>(); private readonly IList<RectTransform> _itemList = new List<RectTransform>();
/// <summary> /// <summary>
/// Main layout method /// Main layout method
@ -122,25 +115,34 @@ namespace UnityEngine.UI.Extensions
float counterOffset = 0; float counterOffset = 0;
float groupSize = 0; float groupSize = 0;
float workingSize = 0; float workingSize = 0;
if (startAxis == Axis.Horizontal) { if (StartAxis == Axis.Horizontal)
{
groupSize = groupHeight; groupSize = groupHeight;
workingSize = groupWidth - padding.left - padding.right; workingSize = groupWidth - padding.left - padding.right;
if (IsLowerAlign) { if (IsLowerAlign)
{
offset = (float)padding.bottom; offset = (float)padding.bottom;
counterOffset = (float)padding.top; counterOffset = (float)padding.top;
} else { }
else
{
offset = (float)padding.top; offset = (float)padding.top;
counterOffset = (float)padding.bottom; counterOffset = (float)padding.bottom;
} }
spacingBetweenBars = SpacingY; spacingBetweenBars = SpacingY;
spacingBetweenElements = SpacingX; spacingBetweenElements = SpacingX;
} else if (startAxis == Axis.Vertical) { }
else if (StartAxis == Axis.Vertical)
{
groupSize = groupWidth; groupSize = groupWidth;
workingSize = groupHeight - padding.top - padding.bottom; workingSize = groupHeight - padding.top - padding.bottom;
if (IsRightAlign) { if (IsRightAlign)
{
offset = (float)padding.right; offset = (float)padding.right;
counterOffset = (float)padding.left; counterOffset = (float)padding.left;
} else { }
else
{
offset = (float)padding.left; offset = (float)padding.left;
counterOffset = (float)padding.right; counterOffset = (float)padding.right;
} }
@ -151,50 +153,59 @@ namespace UnityEngine.UI.Extensions
var currentBarSize = 0f; var currentBarSize = 0f;
var currentBarSpace = 0f; var currentBarSpace = 0f;
for (var i = 0; i < rectChildren.Count; i++) { for (var i = 0; i < rectChildren.Count; i++)
{
int index = i; int index = i;
var child = rectChildren [index]; var child = rectChildren[index];
float childSize = 0; float childSize = 0;
float childOtherSize = 0; float childOtherSize = 0;
//get height and width of elements. //get height and width of elements.
if (startAxis == Axis.Horizontal) { if (StartAxis == Axis.Horizontal)
if (invertOrder) { {
index = IsLowerAlign ? rectChildren.Count - 1 - i : i; if (invertOrder)
{
index = IsLowerAlign ? rectChildren.Count - 1 - i : i;
} }
child = rectChildren [index]; child = rectChildren[index];
childSize = LayoutUtility.GetPreferredSize (child, 0); childSize = LayoutUtility.GetPreferredSize(child, 0);
childSize = Mathf.Min (childSize, workingSize); childSize = Mathf.Min(childSize, workingSize);
childOtherSize = LayoutUtility.GetPreferredSize (child, 1); childOtherSize = LayoutUtility.GetPreferredSize(child, 1);
} else if (startAxis == Axis.Vertical) { }
if (invertOrder) { else if (StartAxis == Axis.Vertical)
{
if (invertOrder)
{
index = IsRightAlign ? rectChildren.Count - 1 - i : i; index = IsRightAlign ? rectChildren.Count - 1 - i : i;
} }
child = rectChildren [index]; child = rectChildren[index];
childSize = LayoutUtility.GetPreferredSize (child, 1); childSize = LayoutUtility.GetPreferredSize(child, 1);
childSize = Mathf.Min (childSize, workingSize); childSize = Mathf.Min(childSize, workingSize);
childOtherSize = LayoutUtility.GetPreferredSize (child, 0); childOtherSize = LayoutUtility.GetPreferredSize(child, 0);
} }
// If adding this element would exceed the bounds of the container, // If adding this element would exceed the bounds of the container,
// go to a new bar after processing the current bar // go to a new bar after processing the current bar
if (currentBarSize + childSize > workingSize) { if (currentBarSize + childSize > workingSize)
{
currentBarSize -= spacingBetweenElements; currentBarSize -= spacingBetweenElements;
// Process current bar elements positioning // Process current bar elements positioning
if (!layoutInput) { if (!layoutInput)
if (startAxis == Axis.Horizontal) { {
float newOffset = CalculateRowVerticalOffset (groupSize, offset, currentBarSpace); if (StartAxis == Axis.Horizontal)
LayoutRow (_itemList, currentBarSize, currentBarSpace, workingSize, padding.left, newOffset, axis); {
} else if (startAxis == Axis.Vertical) { float newOffset = CalculateRowVerticalOffset(groupSize, offset, currentBarSpace);
float newOffset = CalculateColHorizontalOffset (groupSize, offset, currentBarSpace); LayoutRow(_itemList, currentBarSize, currentBarSpace, workingSize, padding.left, newOffset, axis);
LayoutCol (_itemList, currentBarSpace, currentBarSize, workingSize, newOffset, padding.top, axis); }
else if (StartAxis == Axis.Vertical)
{
float newOffset = CalculateColHorizontalOffset(groupSize, offset, currentBarSpace);
LayoutCol(_itemList, currentBarSpace, currentBarSize, workingSize, newOffset, padding.top, axis);
} }
} }
// Clear existing bar // Clear existing bar
_itemList.Clear (); _itemList.Clear();
// Add the current bar space to total barSpace accumulator, and reset to 0 for the next row // Add the current bar space to total barSpace accumulator, and reset to 0 for the next row
offset += currentBarSpace; offset += currentBarSpace;
@ -202,31 +213,28 @@ namespace UnityEngine.UI.Extensions
currentBarSpace = 0; currentBarSpace = 0;
currentBarSize = 0; currentBarSize = 0;
} }
currentBarSize += childSize; currentBarSize += childSize;
_itemList.Add (child); _itemList.Add(child);
// We need the largest element height to determine the starting position of the next line // We need the largest element height to determine the starting position of the next line
if (childOtherSize > currentBarSpace) { currentBarSpace = childOtherSize > currentBarSpace ? childOtherSize : currentBarSpace;
currentBarSpace = childOtherSize;
}
// Don't do this for the last one currentBarSize += spacingBetweenElements;
if (i < rectChildren.Count - 1){
currentBarSize += spacingBetweenElements;
}
} }
// Layout the final bar // Layout the final bar
if (!layoutInput) { if (!layoutInput)
if (startAxis == Axis.Horizontal) { {
float newOffset = CalculateRowVerticalOffset (groupHeight, offset, currentBarSpace); if (StartAxis == Axis.Horizontal)
{
float newOffset = CalculateRowVerticalOffset(groupHeight, offset, currentBarSpace);
currentBarSize -= spacingBetweenElements; currentBarSize -= spacingBetweenElements;
LayoutRow (_itemList, currentBarSize, currentBarSpace, workingSize, padding.left, newOffset, axis); LayoutRow(_itemList, currentBarSize, currentBarSpace, workingSize, padding.left, newOffset, axis);
}else if (startAxis == Axis.Vertical) { }
else if (StartAxis == Axis.Vertical)
{
float newOffset = CalculateColHorizontalOffset(groupWidth, offset, currentBarSpace); float newOffset = CalculateColHorizontalOffset(groupWidth, offset, currentBarSpace);
currentBarSize -= spacingBetweenElements; currentBarSize -= spacingBetweenElements;
LayoutCol(_itemList, currentBarSpace, currentBarSize, workingSize, newOffset, padding.top, axis); LayoutCol(_itemList, currentBarSpace, currentBarSize, workingSize, newOffset, padding.top, axis);
@ -239,7 +247,8 @@ namespace UnityEngine.UI.Extensions
offset += currentBarSpace; offset += currentBarSpace;
offset += counterOffset; offset += counterOffset;
if (layoutInput) { if (layoutInput)
{
SetLayoutInputForAxis(offset, offset, -1, axis); SetLayoutInputForAxis(offset, offset, -1, axis);
} }
return offset; return offset;
@ -247,87 +256,109 @@ namespace UnityEngine.UI.Extensions
private float CalculateRowVerticalOffset(float groupHeight, float yOffset, float currentRowHeight) private float CalculateRowVerticalOffset(float groupHeight, float yOffset, float currentRowHeight)
{ {
if (IsLowerAlign) { if (IsLowerAlign)
{
return groupHeight - yOffset - currentRowHeight; return groupHeight - yOffset - currentRowHeight;
} else if (IsMiddleAlign) {
return groupHeight * 0.5f - _layoutHeight * 0.5f + yOffset;
} else {
return yOffset;
} }
else if (IsMiddleAlign)
{
return groupHeight * 0.5f - _layoutHeight * 0.5f + yOffset;
}
return yOffset;
} }
private float CalculateColHorizontalOffset(float groupWidth, float xOffset, float currentColWidth) private float CalculateColHorizontalOffset(float groupWidth, float xOffset, float currentColWidth)
{ {
if (IsRightAlign) { if (IsRightAlign)
{
return groupWidth - xOffset - currentColWidth; return groupWidth - xOffset - currentColWidth;
} else if (IsCenterAlign) {
return groupWidth * 0.5f - _layoutWidth * 0.5f + xOffset;
} else {
return xOffset;
} }
else if (IsCenterAlign)
{
return groupWidth * 0.5f - _layoutWidth * 0.5f + xOffset;
}
return xOffset;
} }
protected void LayoutRow(IList<RectTransform> contents, float rowWidth, float rowHeight, float maxWidth, float xOffset, float yOffset, int axis) protected void LayoutRow(IList<RectTransform> contents, float rowWidth, float rowHeight, float maxWidth, float xOffset, float yOffset, int axis)
{ {
var xPos = xOffset; var xPos = xOffset;
if (!ChildForceExpandWidth && IsCenterAlign) { if (!ChildForceExpandWidth && IsCenterAlign)
{
xPos += (maxWidth - rowWidth) * 0.5f; xPos += (maxWidth - rowWidth) * 0.5f;
} else if (!ChildForceExpandWidth && IsRightAlign) { }
else if (!ChildForceExpandWidth && IsRightAlign)
{
xPos += (maxWidth - rowWidth); xPos += (maxWidth - rowWidth);
} }
var extraWidth = 0f; var extraWidth = 0f;
var extraSpacing = 0f; var extraSpacing = 0f;
if (ChildForceExpandWidth) { if (ChildForceExpandWidth)
extraWidth = (maxWidth - rowWidth)/_itemList.Count; {
extraWidth = (maxWidth - rowWidth) / contents.Count;
} }
else if (ExpandHorizontalSpacing) { else if (ExpandHorizontalSpacing)
extraSpacing = (maxWidth - rowWidth)/(_itemList.Count - 1); {
if (_itemList.Count > 1) { extraSpacing = (maxWidth - rowWidth) / (contents.Count - 1);
if (IsCenterAlign) { if (contents.Count > 1)
xPos -= extraSpacing * 0.5f * (_itemList.Count - 1); {
} else if (IsRightAlign) { if (IsCenterAlign)
xPos -= extraSpacing * (_itemList.Count - 1); {
xPos -= extraSpacing * 0.5f * (contents.Count - 1);
}
else if (IsRightAlign)
{
xPos -= extraSpacing * (contents.Count - 1);
} }
} }
} }
for (var j = 0; j < _itemList.Count; j++) { for (var j = 0; j < contents.Count; j++)
{
var index = IsLowerAlign ? contents.Count - 1 - j : j;
var index = IsLowerAlign ? _itemList.Count - 1 - j : j; var rowChild = contents[index];
var rowChild = _itemList[index];
var rowChildWidth = LayoutUtility.GetPreferredSize(rowChild, 0) + extraWidth; var rowChildWidth = LayoutUtility.GetPreferredSize(rowChild, 0) + extraWidth;
var rowChildHeight = LayoutUtility.GetPreferredSize(rowChild, 1); var rowChildHeight = LayoutUtility.GetPreferredSize(rowChild, 1);
if (ChildForceExpandHeight) if (ChildForceExpandHeight)
{
rowChildHeight = rowHeight; rowChildHeight = rowHeight;
}
rowChildWidth = Mathf.Min(rowChildWidth, maxWidth); rowChildWidth = Mathf.Min(rowChildWidth, maxWidth);
var yPos = yOffset; var yPos = yOffset;
if (IsMiddleAlign) { if (IsMiddleAlign)
{
yPos += (rowHeight - rowChildHeight) * 0.5f; yPos += (rowHeight - rowChildHeight) * 0.5f;
} else if (IsLowerAlign) { }
else if (IsLowerAlign)
{
yPos += (rowHeight - rowChildHeight); yPos += (rowHeight - rowChildHeight);
} }
if (ExpandHorizontalSpacing && j > 0) { if (ExpandHorizontalSpacing && j > 0)
{
xPos += extraSpacing; xPos += extraSpacing;
} }
if (axis == 0) { if (axis == 0)
SetChildAlongAxis (rowChild, 0, xPos, rowChildWidth); {
} else { SetChildAlongAxis(rowChild, 0, xPos, rowChildWidth);
SetChildAlongAxis (rowChild, 1, yPos, rowChildHeight); }
else
{
SetChildAlongAxis(rowChild, 1, yPos, rowChildHeight);
} }
// Don't do horizontal spacing for the last one // Don't do horizontal spacing for the last one
if (j < _itemList.Count - 1) { if (j < contents.Count - 1)
{
xPos += rowChildWidth + SpacingX; xPos += rowChildWidth + SpacingX;
} }
} }
@ -337,39 +368,49 @@ namespace UnityEngine.UI.Extensions
{ {
var yPos = yOffset; var yPos = yOffset;
if (!ChildForceExpandHeight && IsMiddleAlign) { if (!ChildForceExpandHeight && IsMiddleAlign)
{
yPos += (maxHeight - colHeight) * 0.5f; yPos += (maxHeight - colHeight) * 0.5f;
} else if (!ChildForceExpandHeight && IsLowerAlign) { }
else if (!ChildForceExpandHeight && IsLowerAlign)
{
yPos += (maxHeight - colHeight); yPos += (maxHeight - colHeight);
} }
var extraHeight = 0f; var extraHeight = 0f;
var extraSpacing = 0f; var extraSpacing = 0f;
if (ChildForceExpandHeight) { if (ChildForceExpandHeight)
extraHeight = (maxHeight - colHeight)/_itemList.Count; {
extraHeight = (maxHeight - colHeight) / contents.Count;
} }
else if (ExpandHorizontalSpacing) { else if (ExpandHorizontalSpacing)
extraSpacing = (maxHeight - colHeight)/(_itemList.Count - 1); {
if (_itemList.Count > 1) { extraSpacing = (maxHeight - colHeight) / (contents.Count - 1);
if (IsMiddleAlign) { if (contents.Count > 1)
yPos -= extraSpacing * 0.5f * (_itemList.Count - 1); {
} else if (IsLowerAlign) { if (IsMiddleAlign)
yPos -= extraSpacing * (_itemList.Count - 1); {
yPos -= extraSpacing * 0.5f * (contents.Count - 1);
}
else if (IsLowerAlign)
{
yPos -= extraSpacing * (contents.Count - 1);
} }
} }
} }
for (var j = 0; j < _itemList.Count; j++) { for (var j = 0; j < contents.Count; j++)
{
var index = IsRightAlign ? contents.Count - 1 - j : j;
var index = IsRightAlign ? _itemList.Count - 1 - j : j; var rowChild = contents[index];
var rowChild = _itemList[index]; var rowChildWidth = LayoutUtility.GetPreferredSize(rowChild, 0);
var rowChildWidth = LayoutUtility.GetPreferredSize(rowChild, 0) ;
var rowChildHeight = LayoutUtility.GetPreferredSize(rowChild, 1) + extraHeight; var rowChildHeight = LayoutUtility.GetPreferredSize(rowChild, 1) + extraHeight;
if (ChildForceExpandWidth) { if (ChildForceExpandWidth)
{
rowChildWidth = colWidth; rowChildWidth = colWidth;
} }
@ -377,25 +418,32 @@ namespace UnityEngine.UI.Extensions
var xPos = xOffset; var xPos = xOffset;
if (IsCenterAlign) { if (IsCenterAlign)
{
xPos += (colWidth - rowChildWidth) * 0.5f; xPos += (colWidth - rowChildWidth) * 0.5f;
} else if (IsRightAlign) { }
else if (IsRightAlign)
{
xPos += (colWidth - rowChildWidth); xPos += (colWidth - rowChildWidth);
} }
// if (ExpandHorizontalSpacing && j > 0)
if (ExpandHorizontalSpacing && j > 0) { {
yPos += extraSpacing; yPos += extraSpacing;
} }
if (axis == 0) { if (axis == 0)
SetChildAlongAxis (rowChild, 0, xPos, rowChildWidth); {
} else { SetChildAlongAxis(rowChild, 0, xPos, rowChildWidth);
SetChildAlongAxis (rowChild, 1, yPos, rowChildHeight); }
else
{
SetChildAlongAxis(rowChild, 1, yPos, rowChildHeight);
} }
// Don't do vertical spacing for the last one // Don't do vertical spacing for the last one
if (j < _itemList.Count - 1) { if (j < contents.Count - 1)
{
yPos += rowChildHeight + SpacingY; yPos += rowChildHeight + SpacingY;
} }
} }
@ -404,9 +452,9 @@ namespace UnityEngine.UI.Extensions
public float GetGreatestMinimumChildWidth() public float GetGreatestMinimumChildWidth()
{ {
var max = 0f; var max = 0f;
for (var i = 0; i < rectChildren.Count; i++) { for (var i = 0; i < rectChildren.Count; i++)
{
var w = LayoutUtility.GetMinWidth(rectChildren[i]); var w = LayoutUtility.GetMinWidth(rectChildren[i]);
max = Mathf.Max(w, max); max = Mathf.Max(w, max);
} }
return max; return max;
@ -415,20 +463,18 @@ namespace UnityEngine.UI.Extensions
public float GetGreatestMinimumChildHeigth() public float GetGreatestMinimumChildHeigth()
{ {
var max = 0f; var max = 0f;
for (var i = 0; i < rectChildren.Count; i++) { for (var i = 0; i < rectChildren.Count; i++)
{
var w = LayoutUtility.GetMinHeight(rectChildren[i]); var w = LayoutUtility.GetMinHeight(rectChildren[i]);
max = Mathf.Max(w, max); max = Mathf.Max(w, max);
} }
return max; return max;
} }
protected override void OnDisable() protected override void OnDisable()
{ {
m_Tracker.Clear(); m_Tracker.Clear();
LayoutRebuilder.MarkLayoutForRebuild(rectTransform); LayoutRebuilder.MarkLayoutForRebuild(rectTransform);
} }
}
}
} }

View File

@ -1,7 +1,7 @@
{ {
"name": "com.unity.uiextensions", "name": "com.unity.uiextensions",
"displayName": "Unity UI Extensions", "displayName": "Unity UI Extensions",
"version": "2.3.1.pre.1", "version": "2.3.2-pre.1",
"description": "An extension project for the Unity3D UI system, all crafted and contributed by the awesome Unity community", "description": "An extension project for the Unity3D UI system, all crafted and contributed by the awesome Unity community",
"author": "Simon darkside Jackson <@SimonDarksideJ>", "author": "Simon darkside Jackson <@SimonDarksideJ>",
"contributors": [ "contributors": [