Compare commits

..

114 Commits

Author SHA1 Message Date
action ab34212ade Auto increment pre-release version to 2.3.2-pre.3 [skip ci] 2023-03-29 13:41:56 +00:00
Simon (Darkside) Jackson 531059bf0e
Merge pull request #439 from Unity-UI-Extensions/feature/updateCodeOwners
Patch workflow for correct secret
2023-03-29 14:41:37 +01:00
Simon (Darkside) Jackson a4fb11f0b4
Patch workflow for correct secret 2023-03-29 14:32:05 +01:00
Simon (Darkside) Jackson 09b17fae52
Merge pull request #436 from victornor/linerenderer_points
Linerenderer points
2023-03-29 14:16:07 +01:00
Simon (Darkside) Jackson 7becb9cae4
Merge branch 'development' into linerenderer_points 2023-03-29 14:15:48 +01:00
Victor 7127f8bca7 chore: make CalculatePointOnCurve public 2023-03-20 13:43:43 +01:00
Victor ba7b21fdae feat: add CalculatePointOnCurve for linerenderer 2023-03-20 13:42:33 +01:00
victornor 5e7282c27d
fix: GetPosition when Segments is null 2023-03-20 13:33:14 +01:00
action 14aa9ae491 Auto increment pre-release version to 2.3.2-pre.2 [skip ci] 2023-03-12 12:13:16 +00:00
Simon (Darkside) Jackson a45509ee55
Merge pull request #435 from Unity-UI-Extensions/fix/resolveflowoverflow
Resolve FlowLayoutGroup overflow issue
2023-03-12 12:12:52 +00:00
Simon (Darkside) Jackson 2ccf119f7d
fix package version 2023-03-12 12:06:34 +00:00
SimonDarksideJ 14548049a5 Update workflows 2023-03-12 11:58:04 +00:00
SimonDarksideJ 02da81ef28 Resolves an issue where the last line in a flow layout group would overflow the rect bounds
Fixes - https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/432
2023-03-12 11:44:50 +00:00
SimonDarksideJ 3e8eaa0643 Merge branch 'development' of https://github.com/Unity-UI-Extensions/com.unity.uiextensions into development 2023-03-12 11:43:06 +00:00
Simon (Darkside) Jackson 8ddcaa839e
Merge pull request #434 from FejZa/release
Fix ResetSelectableHighlight resets button to normal when it's actually disabled
2023-03-02 17:43:55 +00:00
Simon (Darkside) Jackson c61fbeeceb
Merge branch 'development' into release 2023-03-02 17:42:42 +00:00
Simon (Darkside) Jackson d8c99e4398
Instigate development branch 2023-03-02 17:41:00 +00:00
Dino Fejzagić 8fc9e8aba5
Update ResetSelectableHighlight.cs 2023-03-01 11:32:14 +01:00
Simon Jackson 688a879f31 Merge branch 'release' of https://github.com/Unity-UI-Extensions/com.unity.uiextensions into development 2023-02-07 14:59:14 +00:00
Simon (Darkside) Jackson ffdc0316a4
Merge branch 'release' into development 2023-02-07 14:56:38 +00:00
Simon (Darkside) Jackson 8384bd5ced
patchfix - erroneous namespace in combobox??? 2023-02-07 14:52:00 +00:00
Simon (Darkside) Jackson 649506cd3d
Set version to 2.3.0 for initial release 2023-02-07 14:33:47 +00:00
action 589e02ffaf Auto increment pre-release version to 2.3.0-pre-release.2 [skip ci] 2023-02-07 14:29:17 +00:00
action af10498e0e Auto increment pre-release version to 2.3.0-pre-release.1 [skip ci] 2023-02-07 14:08:42 +00:00
Simon (Darkside) Jackson 8cbd1c3c1e
Merge pull request #413 from Unity-UI-Extensions/feature/V2.3.0
Feature/v2.3.0
2023-02-07 14:06:08 +00:00
Simon Jackson 2a90891ee9 Final checks for merge! 2023-02-07 14:05:04 +00:00
Simon (Darkside) Jackson 28000ad5b7
Update pipelines for release 2023-02-07 12:07:01 +00:00
Simon (Darkside) Jackson 68edffc749
Merge branch 'release' into feature/V2.3.0 2023-02-06 14:11:17 +00:00
Simon Jackson 968fdab8cc Merge branch 'development' of https://github.com/Unity-UI-Extensions/com.unity.uiextensions into feature/V2.3.0 2023-02-06 14:07:44 +00:00
Simon Jackson e085cbe076 Resolved issues with DisplayAbove and using a 0 ItemsToDisplay 2023-02-06 13:32:05 +00:00
Simon Jackson b3bb76246b Merge branch 'feature/V2.3.0' of https://github.com/Unity-UI-Extensions/com.unity.uiextensions into feature/V2.3.0 2023-02-05 11:35:34 +00:00
Simon Jackson 33cd5a9be4 Several lifetime feature updates for the ComboBox controls:
- Resolves startup issue that prevented the control being used (Unity changed the start order in some instances), this was causing null reference issues with comboboxes
- Added the ability to set a specific item on start and not just the first
- Added the ability to disable the dropdown to make a read-only dropdown

Resolves:
- https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/426
- https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/425
2023-02-05 11:35:18 +00:00
Simon (Darkside) Jackson 30d50cc04e
Switch android builds to windows 2023-02-05 09:15:54 +00:00
Simon Jackson 9ce7661af6 Add 2019 to the testing validation 2023-02-04 19:25:13 +00:00
Simon Jackson b59f5132c3 Remove editor validation and add error checking for the ColorLabel component 2023-02-04 19:23:26 +00:00
Simon Jackson 8d18515a4a The BIG Unity 2022 Text reorganisation 2023-02-04 11:22:31 +00:00
Simon Jackson 1002db24f2 Resolves issue in 2022 with the missing Text component
Fixes: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/424
2023-02-04 10:30:40 +00:00
Simon Jackson 7545ab9fde Added ResetSelectableHighlight component 2023-02-01 15:10:40 +00:00
Simon Jackson 462eec558b Add the Version upgrade pipeline 2023-01-29 15:54:02 +00:00
Simon (Darkside) Jackson 5a14d4d3a4
Fix github issue templates 2023-01-29 10:18:25 +00:00
Simon Jackson 1c0c217931 Add updated test flow for builds 2023-01-29 10:12:08 +00:00
Simon Jackson 54a71dcf05 Updated NonDrawingGraphic to require a CanvasRender, else it causes an error on run (and doesn't work)
- Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/420
2023-01-26 14:21:17 +00:00
Simon Jackson 07ec98c989 Fix class spellings and update MultiTouchScrollRect 2023-01-22 17:26:01 +00:00
Simon Jackson e05bfb788d Added new submodule for extracted examples 2023-01-22 12:29:51 +00:00
Simon Jackson b752435eb7 Removed legacy Examples link, moving to separate repository 2023-01-22 12:26:52 +00:00
Simon Jackson c41b4af0e3 Revised the Curly UI fix as it was preventing the graphic from being updated in the scene view. Thanks to @solidsign for the update. 2023-01-22 10:40:29 +00:00
Simon Jackson 78d3b898c1 Updated build issue with ReorderableListElement 2023-01-03 19:22:19 +00:00
Simon Jackson 2f19deeb78 Updating GitHub artifacts and automation 2023-01-03 13:41:52 +00:00
Simon Jackson 696fc36926 Update Examples module to new home 2023-01-03 12:38:56 +00:00
Simon Jackson 84ec39aa6c Break Module 2023-01-03 12:27:43 +00:00
Simon Jackson 7e61dd398d Remove broken examples link 2023-01-03 12:26:53 +00:00
Simon Jackson 048fa7269f Refresh FancyScrollView with latest fixes 2023-01-03 12:25:02 +00:00
Simon Jackson 12f6174469 Cleanup and ensuring the UIParticleSystem is disposed on Destroy correctly.
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/412
2023-01-03 11:42:22 +00:00
Simon Jackson 60eed9b87a Base update for pointers to new version / package home 2023-01-01 16:56:37 +00:00
Simon Jackson fe97fa7599 Updated panel drawing for ComboBox controls and added DropdownOffset
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/393
2023-01-01 16:52:08 +00:00
Simon Jackson 9b23206c9a Updated ReorderableList/ReorderableListElement to prevent creating a "Fake" droppable when the item is not transferable
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/164
2023-01-01 16:13:40 +00:00
Simon Jackson 4b1c5412f1 Updated UIVerticalScroller for standards and added UIHorizontalScroller
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/205
2023-01-01 15:57:31 +00:00
Simon Jackson 70661a4823 Updated "Action" use to "UnityAction" to avoid Unity issues
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/253
2023-01-01 13:29:53 +00:00
Simon Jackson eceaa87e93 Clean-up of ScrollSnapBase 2023-01-01 13:22:53 +00:00
Simon Jackson c61e5b7e7c Added new FIFO based UI Line Render when dynamic line rendering is needed (basic, no Beziers)
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/324
2023-01-01 13:03:28 +00:00
Simon Jackson d1b94bf6f1 Updated initialisation logic to not cause an endless loop in the TabNavigationHelper
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/208
2023-01-01 12:16:33 +00:00
Simon Jackson 55489bd617 Updated Editor menu layout 2023-01-01 11:45:02 +00:00
Simon Jackson 2c5a7bb47f Updated Editor create options to add the correct Event System Input module for the Input system used, now or old.
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/378
2023-01-01 11:33:42 +00:00
Simon Jackson 1853ad7e89 Marked TileSizeFitter as obsolete as Unity has made this unworkable
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/214
2023-01-01 11:32:37 +00:00
Simon Jackson 4ffa631059 Added Editor Menu Option to create a Min/Max slider
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/270
2022-12-30 17:54:17 +00:00
Simon Jackson 2848008f63 Checking in new MinMaxSlider
TODO
- Finish Editor creator
2022-12-24 14:52:49 +00:00
Simon Jackson 3ed20ecaed Updated all components using "LayoutGroup" to override their OnDisable feature to incorporate this fix:
https://gist.github.com/randomize/73ca6d3b6aa7210073692eb5cabd537e

Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/178
2022-12-24 13:28:19 +00:00
Simon Jackson e78a2806ed Resolved issue whereby the last row in a flow layout group would not size correctly.
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/357
2022-12-24 13:20:19 +00:00
Simon Jackson 18ebf8121d Removed unneeded size calculation which caused some issues with mixed height/width children.
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/380
2022-12-24 13:09:26 +00:00
Simon Jackson dced045001 Updated ScrollPositionControllerEditor as obsolete too 2022-12-24 13:02:50 +00:00
Simon Jackson b4d9f08dc4 Marked ScrollPositionController as Obsolete, users should use the newer Scroller component instead, will be removed in a future release.
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/305
2022-12-24 12:54:57 +00:00
Simon Jackson 2a37530aea Added SetArc method to UICircle as requested
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/280
2022-12-24 12:49:39 +00:00
Simon Jackson 35c778f5f7 Protecting Remove too 2022-12-24 12:45:31 +00:00
Simon Jackson a317663268 Added error handling around setting Unity UI Components for Vertical/Horizontal scrolling
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/296
2022-12-24 12:44:23 +00:00
Simon Jackson 85ee380ee9 Updated Cooldown button to work with Keyboard input
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/171
2022-12-18 19:29:40 +00:00
Simon Jackson 00b67b7046 Updated Points to always be an array of 1 when set to nothing.
Resolves: https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/295
2022-12-18 18:09:58 +00:00
Simon Jackson c08a91f421 Hard reset of Colour picker guids 2022-11-27 16:54:19 +00:00
Simon Jackson 7de501c42b Add newly generated HSV picker meta files 2022-11-27 16:44:25 +00:00
Simon Jackson ebbed37836 Remove meta duplicates for HSVColour Picker 2022-11-27 16:42:34 +00:00
Simon Jackson 3dbd9261cd Updated Depth Texture sampler in UI Particles Shaders
Resolves:
- https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/401
2022-11-27 16:28:14 +00:00
Simon Jackson c2ada36c41 Updated Curly UI to wait until end of the frame to recalculate positions
Also updated Editor script to work in 2022

Resolves:
- https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/409
2022-11-27 15:14:52 +00:00
Simon Jackson c5a8af63f8 Updated UIVertical scroller to be 2022 compliant
Resolves:
- https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/410
2022-11-27 14:32:16 +00:00
Simon Jackson 8004bcf39b Updated #if filter inclusion to 2019_1_OR_Newer
resolves:
- https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues/411
2022-11-27 13:51:39 +00:00
Simon Jackson afd645a470 Merged in fix/ReorderableListTransferability (pull request #137)
Fix IsTransferable behaviour of ReOrderable List Element
2022-04-23 22:38:00 +00:00
Simon Jackson 10e5273b31 Fixed issue which allowed an item marked as NOT transferable to actually be transferred between lists
Resolves #382
2022-04-23 23:36:50 +01:00
Simon Jackson a041f188b6 Merged in fix/UIConnectorAsPrefab (pull request #136)
UI Connector as Prefab fix
2022-04-23 22:26:27 +00:00
Simon Jackson 5db15808e2 Fixed the UIConnector to safely handle when no parent canvas can be found.
Resolves #392
2022-04-23 23:25:31 +01:00
Simon Jackson 30c5d8c1ff Merged in fix/UIParticleSystemUpdate (pull request #135)
Fix/UIParticleSystemUpdate
2022-04-23 22:13:29 +00:00
Simon Jackson c059e2338a Updated UIParticleSystem access to Particles array to ensure it is more stable.
Updated some #if statements to be better future proofed

Resolves #360
2022-04-23 23:12:42 +01:00
Simon Jackson 8a31713e46 Merge branch 'development' of https://github.com/Unity-UI-Extensions/com.unity.uiextensions into development 2022-04-23 21:26:05 +01:00
Simon Jackson 711ee02cb3 Merged in fix/StepperWarnings (pull request #134)
Fixed issue with SendMessage events raised by the Stepper control
2022-04-23 20:25:23 +00:00
Simon Jackson d0fbb28b05 Resolves #397
Moved OnValidate checks which redraw the component to the RectTransformDimensionsCHanged event
2022-04-23 21:24:18 +01:00
Simon Jackson 5bd7df19e1 Merged in fix/NextPreviousScrollsnapFix (pull request #133)
Scroll Snap buttons fix
2022-04-23 20:02:37 +00:00
Simon Jackson fc6ea6089d Fixes issue #398 where the Next / Previous buttons filed to work if the ScrollSnap was previously scrolling.
Also renamed the Extension Methods scripts and added a new function.

Resolves: #398
2022-04-23 21:01:37 +01:00
Simon Jackson 142582847b Remove old BitBucket Pipeline for GitHub 2022-04-23 14:59:49 +01:00
Simon Jackson 30b65fb979 Merged in fix manually because... Bitbucket
https://bitbucket.org/UnityUIExtensions/unity-ui-extensions/pull-requests/130
2022-04-23 11:53:17 +01:00
Simon Jackson 3582824afa Applying PR manually, because Bitbucket
https://bitbucket.org/UnityUIExtensions/unity-ui-extensions/pull-requests/128
2022-04-23 11:49:46 +01:00
Simon Jackson 771c7776c0 Taking in fix from
https://bitbucket.org/UnityUIExtensions/unity-ui-extensions/pull-requests/132
2022-04-23 11:45:32 +01:00
Ben MacKinnon ca090d1797 Merged in RangeSlider-upgrade (pull request #131)
Upgraded RangeSlider to work in both Horizontal and Verticle setups, just like regular slider.

Approved-by: Simon Jackson
2022-04-23 10:43:01 +00:00
Ben MacKinnon 33568a6d67 Upgraded RangeSlider to work in both Horizontal and Verticle setups, just like regular slider.
Also fixed a minor issue with offset when dragging on the bar.

# Conflicts:
#	Runtime/Scripts/Controls/RangeSlider.cs
2022-03-21 18:32:08 +00:00
Simon Jackson d47b99ce0c Merged in feature/controlTouchUp (pull request #127)
Feature/controlTouchUp
2021-10-21 13:03:22 +00:00
Simon Jackson 056419a87b Updated Dropdown list to NOT resize text Rect on draw 2021-10-21 13:57:42 +01:00
Simon Jackson f101afbb29 Clean up range slider unused variables 2021-10-21 13:48:44 +01:00
Simon Jackson 3dae7181cd Merged in fix/infinitescrollcontentsize (pull request #126)
Fix/infinitescrollcontentsize
2021-09-05 14:43:46 +00:00
Simon Jackson 1a6181842a Merged in fix/ragesliderfix (pull request #125)
fix: Range slider low value stuck in max position
2021-09-05 14:43:29 +00:00
Simon Jackson 6333967b9a Patches from PR 2021-09-05 15:39:28 +01:00
Robert Rioja 9363fd3221 Merged in feature/improved-ui-highlightable (pull request #123)
Improved UI Highlightable Utility

Approved-by: Simon Jackson
2021-09-05 14:36:58 +00:00
Simon Jackson 1c68432e02 Clean-up and reset pivots on scene start 2021-09-05 15:33:24 +01:00
Simon Jackson 0410ca53d7 Updated Infinite scroll to work with content of different sizes 2021-09-05 15:23:48 +01:00
Simon Jackson 774f8de199 Resolves issue where the lower range value would become stuck when moved to the max value position
Resolves: https://bitbucket.org/UnityUIExtensions/unity-ui-extensions/issues/381/cant-move-range-slider-if-low-is-moved-to
2021-09-05 09:33:19 +01:00
Simon Jackson b0f161a4e0 Update package preview release 2021-09-05 09:04:15 +01:00
Simon (Darkside) Jackson 830a4466eb Patch fix for UILineRenderer 2021-06-23 13:23:13 +01:00
Robert Rioja 0de91f60fb Added OnHighlightChanged and OnPressChanged events
Added getters and setters for Highlighted and Pressed
2021-05-27 18:38:47 +00:00
Simon (Darkside) Jackson dff07c6952 Package upver for Development 2021-05-10 20:42:38 +01:00
15 changed files with 682 additions and 346 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:
pull_request:
branches-ignore:
- 'release'
# Ignore PRs targetting main
# Ignore PRs targeting main
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
@ -14,6 +14,7 @@ concurrency:
cancel-in-progress: true
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-Partial-Unit-Tests:
name: Run Unity Unit Tests
@ -26,12 +27,4 @@ jobs:
Run-Full-Unit-Tests:
name: Run Unity Unit Tests
if: github.ref == 'refs/heads/development'
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
uses: ./.github/workflows/rununitybuildmultiversion.yml

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

View File

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

View File

@ -1,33 +1,26 @@
name: Package UPM project and deploy
name: Tag Release
on:
workflow_call:
inputs:
build-target:
build-host:
required: true
type: string
version:
required: true
type: string
build-type:
required: false
default: 'pre-release'
type: string
# options:
# - major
# - minor
# - 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
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
packageRelease:
name: Package UPM Project and tag
runs-on: ${{ inputs.build-target }}
runs-on: ${{ inputs.build-host }}
outputs:
packageversion: ${{ steps.getpackageversion.outputs.packageversion }}
steps:
@ -40,6 +33,7 @@ jobs:
shell: pwsh
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
clean: true
token: ${{ secrets.GIT_PAT }}
@ -60,87 +54,26 @@ jobs:
$gitUser = "${{ secrets.GIT_USER_NAME }}"
$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.name "$gitUser"
shell: pwsh
- id: getpackageversion
name: Bump UPM Package version
shell: pwsh
- name: Check if Tag Exists
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-release.0+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
$tagVersion = "${{ inputs.version }}"
$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
}
$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
}
$packageFile = 'package.json'
$result = UpdateProjectVersionJSON("${{ inputs.build-type }}","$packageFile")
if([string]::IsNullOrEmpty($result)) {
echo "Version patch failed"
exit 1
}
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
shell: pwsh
- name: Create tag and push
run: |
$tagVersion = "${{ inputs.version }}"
git tag -fa "v$tagVersion" "${GITHUB_SHA}" -m "v$tagVersion Release [skip ci]"
git push origin "v$tagVersion" --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_PAT:
required: true
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

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "Examples~"]
path = Examples~
url = https://github.com/Unity-UI-Extensions/com.unity.uiextensions-examples.git

1
Examples~ Submodule

@ -0,0 +1 @@
Subproject commit 2b2dba57650838e285c3336b4a26847931462570

View File

@ -16,9 +16,6 @@ namespace UnityEngine.UI.Extensions
[Tooltip("Enables 3d rotation for the particles")]
public bool use3dRotation = false;
[Tooltip("Enables using Renderer.lengthScale parameter")]
public bool _useLengthScale = false;
private Transform _transform;
private ParticleSystem pSystem;
private ParticleSystem.Particle[] particles;
@ -94,7 +91,7 @@ namespace UnityEngine.UI.Extensions
pRenderer = pSystem.GetComponent<ParticleSystemRenderer>();
if (pRenderer != null)
pRenderer.enabled = false;
if (material == null)
{
var foundShader = ShaderLibrary.GetShaderInstance("UI Extensions/Particles/Additive");
@ -186,6 +183,8 @@ namespace UnityEngine.UI.Extensions
#else
Vector2 position = (pSystem.simulationSpace == ParticleSystemSimulationSpace.Local ? particle.position : _transform.InverseTransformPoint(particle.position));
#endif
float rotation = -particle.rotation * Mathf.Deg2Rad;
float rotation90 = rotation + Mathf.PI / 2;
Color32 color = particle.GetCurrentColor(pSystem);
float size = particle.GetCurrentSize(pSystem) * 0.5f;
@ -281,29 +280,13 @@ namespace UnityEngine.UI.Extensions
_quad[3].color = color;
_quad[3].uv0 = temp;
float rotation = -particle.rotation * Mathf.Deg2Rad;
var lengthScale = pRenderer.lengthScale;
if (_useLengthScale)
{
// rotate towards velocity
var normalizedVelocity = particle.velocity.normalized;
rotation = Mathf.Atan2(normalizedVelocity.y, normalizedVelocity.x);
}
else
{
lengthScale = 1f;
}
float rotation90 = rotation + Mathf.PI / 2;
if (rotation == 0)
{
// no rotation
corner1.x = position.x - size;
corner1.y = position.y - size * lengthScale;
corner1.y = position.y - size;
corner2.x = position.x + size;
corner2.y = position.y + size * lengthScale;
corner2.y = position.y + size;
temp.x = corner1.x;
temp.y = corner1.y;
@ -356,7 +339,7 @@ namespace UnityEngine.UI.Extensions
else
{
// apply rotation
Vector2 right = new Vector2(Mathf.Cos(rotation), Mathf.Sin(rotation)) * size * lengthScale;
Vector2 right = new Vector2(Mathf.Cos(rotation), Mathf.Sin(rotation)) * size;
Vector2 up = new Vector2(Mathf.Cos(rotation90), Mathf.Sin(rotation90)) * size;
_quad[0].position = position - right - up;

View File

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

View File

@ -287,7 +287,7 @@ namespace UnityEngine.UI.Extensions
PopulateMesh (vh, m_points);
}
if (m_segments != null && m_segments.Count > 0) {
else if (m_segments != null && m_segments.Count > 0) {
GeneratedUVs ();
vh.Clear ();
@ -419,7 +419,7 @@ namespace UnityEngine.UI.Extensions
{
return Segments[segmentIndex - 1][index - 1];
}
else if (Segments.Count > 0)
else if (Segments?.Count > 0)
{
var segmentIndexCount = 0;
var indexCount = index;
@ -443,6 +443,29 @@ namespace UnityEngine.UI.Extensions
}
}
/// <summary>
/// Calculates the position of a point on the curve, given t (0-1), start point, control points and end point.
/// </summary>
/// <param name="t">Required Percentage between start and end point, in the range 0 to 1</param>
/// <param name="p1">Required Starting point</param>
/// <param name="p1">Required Control point 1</param>
/// <param name="p1">Required Control point 2</param>
/// <param name="p1">Required End point</param>
/// <returns>Vector2 position of point on curve at t percentage between p1 and p4</returns>
public Vector2 CalculatePointOnCurve(float t, Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4)
{
var t2 = t * t;
var t3 = t2 * t;
var x = p1.x + (-p1.x * 3 + t * (3 * p1.x - p1.x * t)) * t + (3 * p2.x + t * (-6 * p2.x + p2.x * 3 * t)) * t +
(p3.x * 3 - p3.x * 3 * t) * t2 + p4.x * t3;
var y = p1.y + (-p1.y * 3 + t * (3 * p1.y - p1.y * t)) * t + (3 * p2.y + t * (-6 * p2.y + p2.y * 3 * t)) * t +
(p3.y * 3 - p3.y * 3 * t) * t2 + p4.y * t3;
return new Vector2(x, y);
}
/// <summary>
/// Get the Vector2 position of a line within a specific segment
/// </summary>

View File

@ -1,29 +1,24 @@
/// Credit SimonDarksideJ
using UnityEngine.EventSystems;
namespace UnityEngine.UI.Extensions
{
/*
Handy Selectable script to un-highlight a selectable component in Unity (e.g. a Button) when the user moves away from it, EVEN IF the user has holding a button on it.
Resolves the situation where Unity UI Components remain in a highlighted state even after the pointer has moved away (e.g. user holding a button, mouse, pointer down).
Now whenever the cursor leaves the component, it will force the UI component to revert to un-highlighted.
*/
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
/// <summary>
/// Handy Selectable script to un-highlight a selectable component in Unity (e.g. a Button) when the user moves away from it, EVEN IF the user has holding a button on it.
/// Resolves the situation where Unity UI Components remain in a highlighted state even after the pointer has moved away (e.g. user holding a button, mouse, pointer down).
/// Now whenever the cursor leaves the component, it will force the UI component to revert to un-highlighted.
/// </summary>
[AddComponentMenu("UI/Extensions/ResetSelectableHighlight", 31)]
[RequireComponent(typeof(Selectable))]
public class ResetSelectableHighlight : MonoBehaviour, IPointerExitHandler
{
[SerializeField]
private Selectable attachedSelectable;
private Selectable attachedSelectable = null;
// Start is called before the first frame update
void Awake()
private void Awake()
{
if (!attachedSelectable)
if (attachedSelectable == null || !attachedSelectable)
{
attachedSelectable = GetComponent<Selectable>();
}
@ -31,7 +26,12 @@ namespace UnityEngine.UI.Extensions
public void OnPointerExit(PointerEventData eventData)
{
if (!attachedSelectable.interactable)
{
return;
}
attachedSelectable.targetGraphic.CrossFadeColor(attachedSelectable.colors.normalColor, 0f, true, true);
}
}
}
}

View File

@ -1,21 +1,35 @@
{
"name": "com.unity.uiextensions",
"displayName": "Unity UI Extensions",
"version": "2.3.0",
"description": "An extension project for the Unity3D UI system, all crafted and contributed by the awesome Unity community",
"author": "Simon darkside Jackson <@SimonDarksideJ>",
"contributors": [
{
"name": "SimonDarksideJ",
"twitter": "@SimonDarksideJ"
}
],
"unity": "2020.3",
"keywords": [
"Unity3D",
"Unity",
"Unity UI",
"UI Extensions"
],
"license": "BSD3"
}
{
"name": "com.unity.uiextensions",
"displayName": "Unity UI Extensions",
"version": "2.3.2-pre.3",
"description": "An extension project for the Unity3D UI system, all crafted and contributed by the awesome Unity community",
"author": "Simon darkside Jackson <@SimonDarksideJ>",
"contributors": [
{
"name": "SimonDarksideJ",
"twitter": "@SimonDarksideJ"
}
],
"unity": "2020.3",
"repository": {
"type": "git",
"url": "git+https://github.com/Unity-UI-Extensions/com.unity.uiextensions.git"
},
"bugs": {
"url": "https://github.com/Unity-UI-Extensions/com.unity.uiextensions/issues"
},
"keywords": [
"Unity3D",
"Unity",
"Unity UI",
"UI Extensions"
],
"samples": [
{
"displayName": "UI Extensions Samples",
"description": "Examples and demonstrations of the Unity UI Extensions controls",
"path": "Examples~"
}
],
"license": "BSD3"
}