diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..88829ed
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,27 @@
+name: release
+
+on:
+ push:
+ branches:
+ - preview
+ - master
+ - v*.x
+ tags-ignore:
+ - "**"
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+ if: "! contains(github.event.head_commit.message, '[skip ci]') && ! contains(github.event.head_commit.message, '[ci skip]')"
+ steps:
+ - uses: actions/checkout@v2
+
+ - run: |
+ npm i --no-save https://gist.github.com/mob-sakai/c90044338361af97a7e8c8a78425bdb3
+ npx semantic-release -e @mob-sakai/semantic-release-upm
+ env:
+ GITHUB_TOKEN: ${{ github.token }}
+
+ - run: cat package.json
+
+ - run: ls
diff --git a/.github/workflows/unity-test.yml b/.github/workflows/unity-test.yml
new file mode 100644
index 0000000..2c06ceb
--- /dev/null
+++ b/.github/workflows/unity-test.yml
@@ -0,0 +1,137 @@
+# Secrets
+# ULF_REPO: Git repository url contains ulf files. https://mob-sakai:{{token}}@github.com/mob-sakai/ulfs.git
+name: unity-test
+
+on:
+ push:
+ branches:
+ - develop
+ tags:
+ - "!*"
+ pull_request:
+ types:
+ - opened
+ - synchronize
+
+jobs:
+ release-test:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - run: |
+ npm i --no-save https://gist.github.com/mob-sakai/c90044338361af97a7e8c8a78425bdb3
+ npx semantic-release -e @mob-sakai/semantic-release-upm --dry-run --debug --branches develop
+ env:
+ GITHUB_TOKEN: ${{ github.token }}
+
+ - run: cat package.json
+
+ - run: ls
+
+ unity-test:
+ strategy:
+ fail-fast: false
+ matrix:
+ unity:
+ [
+ "2018.4.25f1",
+ "2019.4.10f1",
+ "2020.1.5f1",
+ ]
+ env:
+ RUN_UNITY: "xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' /opt/Unity/Editor/Unity -batchmode -nographics -silent-crashes -logFile -projectPath ."
+
+ runs-on: ubuntu-latest
+ container:
+ # Use Unity image from https://hub.docker.com/r/gableroux/unity3d/tags
+ image: gableroux/unity3d:${{ matrix.unity }}
+
+ steps:
+ # Activate Unity Editor
+ - name: Activate Unity Editor
+ id: activation
+ run: |
+ # Clone ulfs.
+ apt-get update
+ apt-get install software-properties-common -y
+ apt-add-repository ppa:git-core/ppa -y
+ apt-get update
+ apt-get install git -y
+ git clone --depth 1 ${ULF_REPO} .ulfs
+
+ # Activate with ulf.
+ ULF_FILE=.ulfs/Unity_v${UNITY_VERSION}.ulf
+ echo $ULF_FILE
+ if [ -e ${ULF_FILE} ]; then
+ /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -manualLicenseFile ${ULF_FILE} \
+ | grep -E 'LICENSE SYSTEM.*\w{32} != \w{32}' && FAILED=true
+ else
+ echo "::error:: ulf file '${ULF_FILE}' is not found."
+ FAILED=true
+ fi
+
+ # Activation failed.
+ if [ $FAILED ]; then
+ echo "::error:: the unity activation may have failed. manual activation is required.%0A \
+ 1. download the artifact's .alf file.%0A \
+ 2. Go to https://license.unity3d.com/manual to activate manually.%0A \
+ 3. Generate a .ulf file from the .alf file and download it.%0A \
+ 4. Rename .ulf to 'Unity_v${UNITY_VERSION}.ulf'.%0A \
+ 5. Add file to ulfs repository.%0A \
+ 5. Re-run the jobs."
+
+ /opt/Unity/Editor/Unity -quit -batchmode -nographics -logFile -createManualActivationFile
+ exit 1
+ fi
+ env:
+ ULF_REPO: ${{ secrets.ULF_REPO }}
+ UNITY_VERSION: ${{ matrix.unity }}
+
+ # (On failed activation) Upload unity activation file
+ - name: Upload unity activation file
+ uses: actions/upload-artifact@v2
+ if: failure()
+ with:
+ name: Unity_v${{ matrix.unity }}.alf
+ path: ./*.alf
+
+ # Setup testspace
+ - uses: testspace-com/setup-testspace@v1
+ with:
+ domain: ${{ github.repository_owner }}
+
+ # Checkout sandbox project
+ - uses: actions/checkout@v2
+ with:
+ ref: "sandbox"
+ submodules: "true"
+ fetch-depth: "1"
+
+ # Update package submodule
+ - name: "Update package submodule"
+ working-directory: Packages/dev
+ run: git checkout ${{ github.head_ref }}
+
+ # Run playmode tests
+ - name: "Run playmode tests"
+ if: always() && steps.activation.conclusion == 'success'
+ run: |
+ # Install codecoverage
+ if [ -z "`echo ${{ matrix.unity }} | grep 2018.`" ]; then
+ npm i -g openupm-cli
+ openupm add com.unity.testtools.codecoverage
+ fi
+
+ $RUN_UNITY -runTests -testPlatform playmode -enableCodeCoverage || exit 0
+
+ # Run editmode tests
+ - name: "Run editmode tests"
+ if: always() && steps.activation.conclusion == 'success'
+ run: |
+ $RUN_UNITY -runTests -testPlatform editmode -enableCodeCoverage || exit 0
+
+ # Push test results
+ - name: Push test results
+ if: always() && steps.activation.conclusion == 'success'
+ run: testspace "[${{ matrix.unity }}]TestResults-*.xml" "[Code Coverage]CodeCoverage/**/TestCoverageResults_*.xml"
diff --git a/README.md b/README.md
index e659cdf..f7b31a5 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-ParticleEffectForUGUI
+Particle Effect For UGUI (UI Particle)
===
This plugin provide a component to render particle effect for uGUI in Unity 2018.2 or later.
@@ -6,11 +6,12 @@ The particle rendering is maskable and sortable, without Camera, RenderTexture o
[![](https://img.shields.io/npm/v/com.coffee.ui-particle?label=openupm®istry_uri=https://package.openupm.com)](https://openupm.com/packages/com.coffee.ui-particle/)
[![](https://img.shields.io/github/v/release/mob-sakai/ParticleEffectForUGUI?include_prereleases)](https://github.com/mob-sakai/ParticleEffectForUGUI/releases)
-[![](https://img.shields.io/github/release-date/mob-sakai/ParticleEffectForUGUI.svg)](https://github.com/mob-sakai/ParticleEffectForUGUI/releases)
-![](https://img.shields.io/badge/unity-2018.2%20or%20later-green.svg)
-[![](https://img.shields.io/github/license/mob-sakai/ParticleEffectForUGUI.svg)](https://github.com/mob-sakai/ParticleEffectForUGUI/blob/upm/LICENSE.txt)
-[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-orange.svg)](http://makeapullrequest.com)
-[![](https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&style=social)](https://twitter.com/intent/follow?screen_name=mob_sakai)
+[![](https://img.shields.io/github/release-date/mob-sakai/ParticleEffectForUGUI.svg)](https://github.com/mob-sakai/ParticleEffectForUGUI/releases) [![](https://img.shields.io/github/license/mob-sakai/ParticleEffectForUGUI.svg)](https://github.com/mob-sakai/ParticleEffectForUGUI/blob/master/LICENSE.txt)
+[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-orange.svg)](http://makeapullrequest.com)
+![](https://img.shields.io/badge/Unity%202018.2+-supported-blue.svg)
+![](https://img.shields.io/badge/Unity%202019.x-supported-blue.svg)
+![](https://img.shields.io/badge/Unity%202020.x-supported-blue.svg)
+![](https://img.shields.io/badge/Universal%20Rendering%20Pipeline-supported-blue.svg)
<< [Description](#Description) | [Demo](#demo) | [Installation](#installation) | [Usage](#usage) | [Development Note](#development-note) | [Change log](https://github.com/mob-sakai/ParticleEffectForUGUI/blob/upm/CHANGELOG.md) >>
@@ -48,7 +49,7 @@ Compares this "Baking mesh" approach with the conventional approach:
* Change alpha with CanvasGroup
* No heavy allocation every frame
* Support overlay, camera space and world space
-* Support changing material property with AnimationClip (AnimatableProperty)
+* Support changing material property with AnimationClip (AnimatableProperty)
![](https://user-images.githubusercontent.com/12690315/53286323-2d94a980-37b0-11e9-8afb-c4a207805ff2.gif)
@@ -75,9 +76,12 @@ Compares this "Baking mesh" approach with the conventional approach:
### Requirement
-* Unity 2018.2 or later
+![](https://img.shields.io/badge/Unity%202018.2+-supported-blue.svg)
+![](https://img.shields.io/badge/Unity%202019.x-supported-blue.svg)
+![](https://img.shields.io/badge/Unity%202020.x-supported-blue.svg)
+![](https://img.shields.io/badge/Universal%20Rendering%20Pipeline-supported-blue.svg)
-### Using OpenUPM
+### Using OpenUPM (Recomended)
This package is available on [OpenUPM](https://openupm.com).
You can install it via [openupm-cli](https://github.com/openupm/openupm-cli).
@@ -87,15 +91,12 @@ openupm add com.coffee.ui-particle
### Using Git
-Find the manifest.json file in the Packages folder of your project and edit it to look like this:
-```js
-{
- "dependencies": {
- "com.coffee.ui-particle": "https://github.com/mob-sakai/ParticleEffectForUGUI.git",
- ...
- },
-}
-```
+Find the manifest.json file in the Packages folder of your project and add a line to `dependencies` field.
+
+* Major version:
+`"com.coffee.ui-particle": "https://github.com/mob-sakai/ParticleEffectForUGUI.git"`
+* Preview version:
+`"com.coffee.ui-particle": "https://github.com/mob-sakai/ParticleEffectForUGUI.git#preview"`
To update the package, change suffix `#{version}` to the target version.
@@ -132,6 +133,11 @@ Unity 2018.2 supports embedded packages.
2. The demo project is imported into `Assets/Samples/UI Particle/{version}/Demo`
3. Open `UIParticle_Demo` scene and play it
+### About `Cartoon FX & War Fx Demo`
+
+* It requires free assets ([Cartoon FX Free][CFX] & [War FX][WFX])
+ * by [Jean Moreno (JMO)][JMO]
+
@@ -251,8 +257,7 @@ With your support, I can spend more time on development. :)
## Author
-[mob-sakai](https://github.com/mob-sakai)
-[![](https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&style=social)](https://twitter.com/intent/follow?screen_name=mob_sakai)
+* ![](https://user-images.githubusercontent.com/12690315/96986908-434a0b80-155d-11eb-8275-85138ab90afa.png) [mob-sakai](https://github.com/mob-sakai) [![](https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&style=social)](https://twitter.com/intent/follow?screen_name=mob_sakai) ![GitHub followers](https://img.shields.io/github/followers/mob-sakai?style=social)