Compare commits

...

1101 Commits
1.1.2 ... main

Author SHA1 Message Date
bd_
7086b35b3f
fix: play audio absolute paths in a relative controller break (#1555)
In MA 1.11.x, while we corrected relative play audio paths where possible,
we would leave them unchanged if no corresponding object was found. This
meant that we maintained compatibility with older assets that uses absolute
addressing for their Play Audio paths. This change restores that behavior.
2025-04-12 18:55:07 -07:00
nadena.dev release bot
59c256704b Release 1.13.0-alpha.1 2025-04-10 03:29:38 +00:00
bd_
c4f3728d5e chore: update changelog for stable release 2025-04-09 20:24:51 -07:00
bd_
dcda15569a
fix: merge blend tree does not correct parameter type conflicts (#1552) 2025-04-09 20:05:48 -07:00
bd_
8cba3560ce
fix: reactive object could generate inconsistent WD results (#1553) 2025-04-09 20:00:40 -07:00
bd_
17051419ec
change: force blend tree-only layers to WD ON (#1551)
Closes: #1545
2025-04-09 19:14:44 -07:00
dependabot[bot]
1a1cae4e04
chore(deps): bump actions/create-github-app-token in /.github/workflows (#1546)
Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 1 to 2.
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Commits](https://github.com/actions/create-github-app-token/compare/v1...v2)

---
updated-dependencies:
- dependency-name: actions/create-github-app-token
  dependency-version: '2'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 19:07:03 -07:00
dependabot[bot]
e5e4c41b38
chore(deps): bump estree-util-value-to-estree in /docs~ (#1548)
Bumps [estree-util-value-to-estree](https://github.com/remcohaszing/estree-util-value-to-estree) from 3.1.2 to 3.3.3.
- [Release notes](https://github.com/remcohaszing/estree-util-value-to-estree/releases)
- [Commits](https://github.com/remcohaszing/estree-util-value-to-estree/compare/v3.1.2...v3.3.3)

---
updated-dependencies:
- dependency-name: estree-util-value-to-estree
  dependency-version: 3.3.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 19:06:56 -07:00
nadena.dev release bot
c7c9e23acb Release 1.13.0-alpha.0 2025-04-08 01:34:44 +00:00
bd_
5be1f13840
feat: platform support declarations (#1547) 2025-04-07 18:29:26 -07:00
nadena.dev release bot
420f9b00b1 Release 1.12.3 2025-04-05 21:55:36 +00:00
bd_
45b5db46c5 chore(deps): update NDMF dependency 2025-04-05 14:50:19 -07:00
bd_
03ee9d6048
fix: incorrect WD matching handling for single-animation-clip layers (#1542)
Evidently, unity has special handling specifically for single-state layers with a blend tree, but _not_ for single-state layers with an animation clip.

Closes: #1541
2025-04-05 14:20:03 -07:00
dependabot[bot]
897d168137
chore(deps): bump image-size from 1.1.1 to 1.2.1 in /docs~ (#1535)
Bumps [image-size](https://github.com/image-size/image-size) from 1.1.1 to 1.2.1.
- [Release notes](https://github.com/image-size/image-size/releases)
- [Commits](https://github.com/image-size/image-size/compare/v1.1.1...v1.2.1)

---
updated-dependencies:
- dependency-name: image-size
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-05 11:40:05 -07:00
nadena.dev release bot
400960257e Release 1.12.2 2025-04-03 02:44:37 +00:00
bd_
f0fcbb66b1
fix: animated parameters in merge motion aren't renamed (#1537)
* fix: animated parameters in merge motion aren't renamed

Closes: #1536
2025-04-02 19:39:34 -07:00
nadena.dev release bot
7fd35bb49a Release 1.12.1 2025-04-02 02:22:57 +00:00
bd_
bc4c6628ee chore(deps): update NDMF dep 2025-04-01 19:16:16 -07:00
bd_
b733ce2e4d
fix: MA breaks in new VRCSDK projects (#1532) 2025-04-01 19:01:37 -07:00
bd_
3324d3f71b docs: fix CHANGELOG 2025-03-31 22:39:35 -07:00
nadena.dev release bot
c3d2cfb29f Release 1.12.0 2025-04-01 05:10:29 +00:00
bd_
7610020c3b chore(ci): fix typo 2025-03-31 22:05:48 -07:00
bd_
89de978c77 chore(ci): fix typo 2025-03-31 21:39:33 -07:00
bd_
db9389052c chore(deps): update NDMF dependency 2025-03-31 18:53:19 -07:00
bd_
81aed5b798
fix: compatibility issue with lilycalInventory (#1531)
The early animator cloning logic was dropped in refactoring, put it back.
2025-03-30 23:00:12 +00:00
bd_
706ce7aa2f
feat: use stable identifiers for MA Menu Items (#1530) 2025-03-30 18:07:48 +00:00
nadena.dev release bot
b75e74ef84 Release 1.12.0-rc.1 2025-03-28 02:15:53 +00:00
bd_
8ef4cf6328
feat: MA Parameters auto-rename now uses stable names (#1529)
Closes: #1527, #1430
2025-03-23 13:50:59 -07:00
nadena-dev-ci
c521bd7721
Update source file en-US.json (#1526) 2025-03-23 19:22:08 +00:00
bd_
e46e958f39
fix: match WD = off setting is not respected (#1528)
Closes: #1519
2025-03-23 18:34:19 +00:00
bd_
8a45515af0
chore(docs): update merge motion screenshots (#1525)
Closes: #1517
2025-03-23 02:54:15 +00:00
bd_
36b442f904
feat: allow opt-out from MMD handling (#1524)
Closes: #1518
2025-03-23 02:51:23 +00:00
bd_
124392c422
chore(docs): adjust docs translation (#1523)
Closes: #1521
2025-03-23 02:46:40 +00:00
bd_
dff7f03c2f
fix: convert constraints fails to convert animations (#1522)
Closes: #1520
2025-03-23 01:57:04 +00:00
nadena.dev release bot
713a0d3b1d Release 1.12.0-rc.0 2025-03-22 04:43:16 +00:00
nadena-dev-ci
e2a02982d5
New Crowdin updates (#1516)
* New translations en-us.json (Japanese)

* New translations en-us.json (Korean)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Traditional)

* Update source file en-US.json

* New translations en-us.json (Japanese)
2025-03-21 21:38:09 -07:00
bd_
672dd8b31f chore: update NDMF dependency 2025-03-21 21:34:28 -07:00
bd_
6175e20e46
fix: expressions menu icon compression breaks on iOS builds (#1513) 2025-03-22 03:25:00 +00:00
bd_
fce938820b
fix: compiler warnings (#1515) 2025-03-22 03:20:23 +00:00
bd_
34deac5681
feat: support merging animation clips in Merge Blend Tree (#1514)
This renames Merge Blend Tree to Merge Motion, and expands it to support arbitrary motions.

Closes: #1438
2025-03-22 03:10:45 +00:00
bd_
b49e5cb460
fix: non-divisible-by-four texture sizes breaks automatic expressions menu icon compression (#1508)
Closes: #1477
2025-03-19 03:25:30 +00:00
bd_
3165d471b5 chore(changelog): fix header after release 2025-03-16 21:14:45 -07:00
bd_
2d59c74066 fix(ci): perform-release workflow doesn't update JP CHANGELOGs 2025-03-16 21:13:33 -07:00
nadena.dev release bot
55d744885f Release 1.12.0-beta.0 2025-03-17 04:09:15 +00:00
bd_
318d65f3b5
fix: DelayDisable unnecessarily tracks no-longer-relevant game objects (#1504)
Closes: #1469
2025-03-17 03:58:05 +00:00
bd_
aac70873c5
chore(deps): Update NDMF dependency (#1503)
Closes: #1410
2025-03-17 03:37:02 +00:00
bd_
5a17d6ea9a
feat: World Fixed Object now uses VRCParentConstraint and supports Android builds (#1502)
Closes: #1417
2025-03-17 03:11:58 +00:00
bd_
62fd986fd0
fix: unity editor shortcuts break while editing MA Parameters text fields (#1501)
Closes: #1414
2025-03-17 02:58:37 +00:00
bd_
39b4df8367
fix: missing japanese docs for World Scale Object (#1500)
Closes: #1498
2025-03-15 04:02:21 +00:00
Ao_425
fc9b2683c8
chore: Create toggle with submenu in "CreateToggleForSelection" (#1437)
* chore: refactor and Ignore GameObjects with submenu for CreateToggleForSelection

* chore: create toggle with submenu in CreateToggleForSelection

* chore: use simple suffixes

* chore: update CHANGELOG

* fix: update CHANGELOG

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2025-03-15 03:54:15 +00:00
bd_
98311f11f8
fix: RC-toggled audio sources are always active when animations are blocked (#1499)
Closes: #1496
2025-03-15 03:49:28 +00:00
bd_
2557972461
feat: ensure that correct layers are toggled off in MMD worlds, even after messing with layer order (#1489)
We make the assumption that the MMD world will _specifically_
be disabling layers 1 and 2.
2025-03-14 20:44:50 -07:00
bd_
9510c56f7a
docs: add changelog to docs site (#1497)
Closes: #1479
2025-03-13 19:49:39 -07:00
dependabot[bot]
9418b00b54
chore(deps): bump @babel/runtime from 7.24.7 to 7.26.10 in /docs~ (#1493)
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.24.7 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-13 04:10:55 +00:00
dependabot[bot]
61f11ff836
chore(deps): bump @babel/helpers from 7.24.7 to 7.26.10 in /docs~ (#1494)
Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.24.7 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)

---
updated-dependencies:
- dependency-name: "@babel/helpers"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-13 04:10:41 +00:00
dependabot[bot]
2823696af9
chore(deps): bump @babel/runtime-corejs3 in /docs~ (#1495)
Bumps [@babel/runtime-corejs3](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime-corejs3) from 7.26.7 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime-corejs3)

---
updated-dependencies:
- dependency-name: "@babel/runtime-corejs3"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 21:10:14 -07:00
bd_
45352296e9 Revert "ci: testing"
This reverts commit 4323b40362c357847603e65a7f34a33b26962987.
2025-03-12 21:10:02 -07:00
bd_
4323b40362 ci: testing 2025-03-12 21:09:18 -07:00
bd_
57f1851cdd ci: exclude dependabot from changelog checks 2025-03-12 21:08:05 -07:00
bd_
494ad1c4d9
ci: fix missing logo assets (#1492)
Closes: #1490
2025-03-13 03:24:35 +00:00
bd_
2e79c9b195 ci: enable CHANGELOG validation
Closes: #1478
2025-03-12 20:16:49 -07:00
bd_
7182baca47
fix: additional test failures (#1491) 2025-03-13 03:05:58 +00:00
nadena-dev-ci
71a0d82c66
New Crowdin updates (#1485)
* Update source file en-US.json

* New translations en-us.json (Japanese)
2025-03-13 02:34:28 +00:00
bd_
4c44c576de
fix: Merge Animator in replace mode breaks Merge Blend Tree (#1488) 2025-03-12 02:21:21 +00:00
bd_
ec73eb6225
fix: test failures in Merge Armature (#1487)
... apparently auto-merge wasn't set properly to check for unit test completion. oops.
2025-03-12 02:19:05 +00:00
bd_
295a46ec12
feat: support merging humanoid bones with PBs in limited cases (#1429)
* feat: support merging humanoid bones with PBs in limited cases

This change adds support for merging humanoid bones that are a target of PhysBones, provided that all humanoid children are excluded from that PhysBone (either with a direct ignores field, or using PB Blocker).

Note: Because this is a significant expansion of support, this will need to wait for a minor release to maintain semver semantics.

Closes: #1406
2025-03-12 01:51:47 +00:00
bd_
fa004b2db5
fix: Merge Animator should not adjust WD in single state or additive layers (#1483) 2025-03-10 21:09:27 -07:00
bd_
f6362cdbc2
chore: re-enable disabled test (#1484) 2025-03-10 21:09:11 -07:00
bd_
cbf7fa4233 chore: bump NDMF dependency 2025-03-10 21:01:42 -07:00
dependabot[bot]
a7906e4fd6
chore(deps): bump prismjs from 1.29.0 to 1.30.0 in /docs~ (#1480)
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.29.0 to 1.30.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.29.0...v1.30.0)

---
updated-dependencies:
- dependency-name: prismjs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-10 20:43:30 -07:00
bd_
f0a61fe55a
feat: Merge Animator replacement mode (#1482)
Closes: #330
Closes: #1308
2025-03-10 20:37:29 -07:00
bd_
7abfb021e3 feat: World Scale Object 2025-03-10 20:36:17 -07:00
bd_
903f230633 docs(changelog): fix changelog issues 2025-03-10 19:13:28 -07:00
nadena.dev release bot
be729c8f53 Release 1.12.0-alpha.2 2025-03-10 05:19:45 +00:00
nadena.dev release bot
233521b029 Release 1.7.0-alpha.2 2025-03-10 03:56:45 +00:00
bd_
92ebc1c1ac ci: remove obsolete release script 2025-03-09 20:52:19 -07:00
bd_
1a20333b58 docs(changelog): CHANGELOG updates 2025-03-09 20:51:45 -07:00
bd_
5f19bad688 Revert "Release 1.12.0-alpha.2"
This reverts commit fdd3110a98315dae658fc876568e3f719752f7cb.
2025-03-09 20:51:13 -07:00
nadena.dev release bot
fdd3110a98 Release 1.12.0-alpha.2 2025-03-10 03:46:21 +00:00
bd_
c7a06e71a0 chore: update dependencies 2025-03-09 20:41:51 -07:00
bd_
cd5bb5ff4e refactor: use VirtualControllerContext.Controllers 2025-03-09 20:41:51 -07:00
bd_
e91b8ab6c3 refactor: use IVirtualize* 2025-03-09 20:41:51 -07:00
bd_
e3a01ff58b ci: fix incorrect release tag and name 2025-03-09 20:29:38 -07:00
bd_
5de63b3495 ci: fixing issues with releaser workflow 2025-03-09 20:12:49 -07:00
bd_
1c8477ba4a ci: new release workflow 2025-03-09 19:33:36 -07:00
bd_
cdf8d8400d
1.12.0-alpha.1 (#1474) 2025-03-08 21:03:17 -08:00
ColorlessColor
aaa448bf57
fix: Use localOnly instead of syncType = NotSynced when importing parameter asset (#1460) 2025-03-08 20:09:43 -08:00
Reina_Sakiria
e0f55ddc4f
fix: forget to process VirtualStateTransition (#1468)
* fix: forget to process VirtualStateTransition

* test: add test for renaming transition parameters

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2025-03-08 07:36:46 -08:00
dependabot[bot]
d4543a38c5
chore(deps): bump nathanvaughn/actions-cloudflare-purge (#1467)
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from 0efc272496735521e97d22ba9caa750c2781e257 to 784d555fc0fc48946a1e34873a43fc8cf634bcfa.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](0efc272496...784d555fc0)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-07 18:42:01 -08:00
bd_
e471df8860
fix: incorrect first layer weights in Merge Animator (#1473)
Unity ignores the weight of the first layer in a controller, and forces it to one; here, we replicate that behavior in Merge Animator.

Note that we choose to do this here rather than in NDMF - this is because NDMF-level APIs are trying to accurately represent the data in the animator, and should be able to round-trip even "garbage" data there.

Closes: https://github.com/bdunderscore/ndmf/issues/534
Closes: #1472
2025-03-07 18:41:26 -08:00
bd_
70dd38e970
fix: incorrect initial states for Shape Changer (#1464) 2025-03-02 20:52:38 -08:00
bd_
7e5d631b9d
fix: missing PreviewMode innate parameter (#1466) 2025-03-02 20:51:59 -08:00
nadena-dev-ci
3f57e17548
New Crowdin updates (#1462)
* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Traditional)
2025-03-02 18:20:22 -08:00
bd_
242a108703
fix: incorrect initial state for inverted Shape Changers (#1458) 2025-02-19 18:26:09 -08:00
bd_
07cce41329
fix: NRE in GetReplacementPath (#1452) 2025-02-19 18:17:11 -08:00
bd_
53c47bfb0b 1.12.0-alpha.0 2025-02-16 22:25:57 -08:00
bd_
7cafd314a4
chore: port MA to the new NDMF animation API (#1371) 2025-02-16 22:25:12 -08:00
bd_
d7e949239a 1.11.5 2025-02-16 18:40:48 -08:00
bd_
d3ae37c3cf fix: RCs can't be used in conjunction with custom animations
Closes: #1440
2025-02-16 18:40:15 -08:00
bd_
61d4b203ca docs: update outdated VHA docs
Closes: #1444
2025-02-16 16:18:04 -08:00
bd_
54f5bd1922 1.11.4 2025-02-03 06:15:17 -08:00
bd_
c6199ca183 1.11.3 2025-02-02 19:58:51 -08:00
bd_
8a1d2b77dd Revert "chore: sync object and menu"
This reverts commit fa4e714f307fce3cec4a13bd6cfbf2760134a710.

This is temporarily reverted until we have support in MenuItem to ensure
that `0` is always the default selection, even for toggles. This should
be reverted when #1433 is done (which will resolve #1434)
2025-02-02 19:52:33 -08:00
tliks
2849ea9183 chore: sync object and menu 2025-02-02 19:52:33 -08:00
tliks
eb7793d7c5 chore: rename "SetupToggle" to "CreateToggleForSelection" 2025-02-02 19:52:33 -08:00
tliks
de18e77e34 chore: use MenuCommand 2025-02-02 19:52:33 -08:00
tliks
19d8ebee68 chore: Active = !selected.activeSelf 2025-02-02 19:52:33 -08:00
tliks
54d85a5cef feat: support multiple selections 2025-02-02 19:52:33 -08:00
tliks
8e2650acdb feat: setup toggle 2025-02-02 19:52:33 -08:00
bd_
a6cde1fbe9 fix: menu assets referenced by Menu Installer aren't renamed correctly
Closes: #1414
2025-01-31 19:08:52 -08:00
あお
428a2cc4a3 docs: fix typo in MA Parameters docs 2025-01-31 17:18:57 -08:00
tliks
5175626b23 chore: remove unnecessary observing 2025-01-31 17:18:38 -08:00
tliks
8414d203e5 chore: ignore inactive root in GetTargetGroups 2025-01-31 17:18:38 -08:00
bd_
89d38c5371 fix: occasional NRE from RO analysis 2025-01-31 17:15:34 -08:00
bd_
2f32cb4351 fix: RO values from always-on components are sometimes ignored 2025-01-31 17:15:27 -08:00
dependabot[bot]
f799af4c03 chore(deps): bump nanoid from 3.3.7 to 3.3.8 in /docs~
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 19:15:47 -08:00
bd_
75d3b5078a 1.11.2 2025-01-24 19:06:26 -08:00
bd_
18569ab556 fix: deletedShape animation curves are retained in final avatar animations
This results in downstream tools such as AAO improperly treating these objects as animated.
2025-01-24 19:02:09 -08:00
bd_
129ad4dc35 fix: high load caused by ObjectReferenceFixer when paths collide
Closes: #1411
2025-01-24 18:59:10 -08:00
anatawa12
909d7e66c4 fix: menu icon in submenu are not fixed 2025-01-24 18:58:54 -08:00
Rerigferl
3ceafb8e1f fix: add BeginProperty to AvatarObjectReferenceDrawer 2025-01-24 18:58:34 -08:00
dependabot[bot]
3a94498e45 chore(deps): bump softprops/action-gh-release in /.github/workflows
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.1.0 to 2.2.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](01570a1f39...c95fe14893)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 18:56:59 -08:00
dependabot[bot]
c1b2351537 chore(deps): bump nathanvaughn/actions-cloudflare-purge
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from 992cc4e96422fb8ddf077281678373fe41e7736c to 0efc272496735521e97d22ba9caa750c2781e257.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](992cc4e964...0efc272496)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 18:56:47 -08:00
bd_
71f428d804 docs: update dependency versions 2025-01-24 18:56:27 -08:00
bd_
be35de2018 ci: fix CI 2025-01-24 18:37:16 -08:00
bd_
cca9e22edd 1.11.1 2024-12-08 18:26:42 -08:00
nadena-dev-ci
cd0ed0f009 New translations en-us.json (Chinese Simplified) 2024-12-08 18:24:33 -08:00
nadena-dev-ci
1b8e40c747 New translations en-us.json (Chinese Simplified) 2024-12-08 18:24:33 -08:00
bd_
e0f9e95df3 fix: issues with MAMoveIndependentlyManager error handling
Closes: #1386
2024-12-08 18:24:21 -08:00
bd_
7967fcf121 fix: NullReferenceException in some cases when viewing MA Menu Item controls
Closes: #1383
2024-12-06 17:26:14 -08:00
bd_
f7dc99be7d 1.11.0 2024-12-01 16:54:02 -08:00
bd_
9ce8a209d8
Merge pull request #1008 from hai-vr/menu-richtext
feat: menu name may use string field
2024-12-01 15:48:54 -08:00
bd_
6dcd63dde7
Merge branch 'main' into menu-richtext 2024-12-01 15:41:30 -08:00
bd_
d91c69835c feat: add API to open Menu Installer's selection UI
Closes: #1327
2024-12-01 15:40:57 -08:00
bd_
5325c809a4 chore: update VRCSDK dependency 2024-12-01 15:36:53 -08:00
bd_
76eca08c22 feat: Sync Parameter Sequence 2024-12-01 15:36:53 -08:00
bd_
2c3e24333a
feat: Remove Vertex Color (#1378) 2024-12-01 13:54:43 -08:00
Rinna Koharu
f35283db51
fix: changed not to use Instantiate when creating inverse root bone (#1376)
Co-authored-by: Rerigferl <70315656+AshleyScarlet@users.noreply.github.com>
2024-12-01 07:10:48 -08:00
bd_
d538551fad 1.10.11 2024-11-28 17:00:25 -08:00
bd_
f3bf07b601
perf: switch to AssetSaver API (#1372) 2024-11-28 16:59:01 -08:00
bd_
4a65b9f2ac 1.10.10 2024-11-25 19:11:33 -08:00
bd_
80d17f8284
fix: heuristic matching for "びしょ濡れのしずくちゃん" (#1370) 2024-11-25 19:09:12 -08:00
bd_
a7ef0d6635
fix: multiple issues with MAMoveIndependently (#1369)
* fix: multiple issues with MAMoveIndependently

Fixed issues with nested Move Independently components (Closes #1367).

Fixed MAMoveIndependently not being saved (Supercedes #1366)

Reduce jittering when moving MAMI bones.

* chore: fix some namespaces

* chore: fix non-editor buil
2024-11-24 18:24:38 -08:00
Reina_Sakiria
0606311f51
fix: MA MeshSettings forget to keep the inverse root bone. (#1356)
* fix: Forget to keep the inverse root bone.

* fix: inverted root bone position is offset from original

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-11-24 18:02:10 -08:00
Reina_Sakiria
fd59c3e910
fix: MA MergeArmature forget to retaining the root bone. (#1355)
* fix: forget to retaining the root bone

* chore: fix test

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-11-24 16:41:20 -08:00
dependabot[bot]
5c084a8b8a
chore(deps): bump softprops/action-gh-release in /.github/workflows (#1358)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.9 to 2.1.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](e7a8f85e1c...01570a1f39)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-20 18:32:12 -08:00
dependabot[bot]
2a3da2fec3
chore(deps): bump cross-spawn from 7.0.3 to 7.0.6 in /docs~ (#1364)
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-20 18:31:59 -08:00
bd_
ef4304acf1 1.10.9 2024-11-19 19:05:11 -08:00
bd_
46f5296528
Revert "Use VRCParentConstraint instead of constraint hack for world fixed objects when available (#1326)" (#1363)
This reverts commit a984cf86735170d075f8224dd7c83fa760e54eed. The prior
behavior was to lock world fixed objects at their offset from the
origin; however with this change we ended up locking them at a location
relative to the avatar spawn location, breaking some gimmicks.

I tried experimenting a bit with VRCConstraint to try to replicate this
behavior, but it seems a bit non-trivial, so we'll revert this as a
hotfix for now.
2024-11-19 19:04:33 -08:00
bd_
9f4a7a6304
chore: update dependencies (#1354) 2024-11-16 20:12:47 -08:00
bd_
2c0b6df863 1.10.8 2024-11-16 19:46:41 -08:00
bd_
b7373b6584
fix: incorrect item name in mesh settings JP docs (#1352)
Closes: #1314
2024-11-16 19:45:30 -08:00
bd_
4b5cf06097
docs: update MA Parameters docs (#1351) 2024-11-16 19:43:19 -08:00
bd_
e68e176aa4
feat: allow multi-edit of "Is Default" when parameter names are empty (#1350) 2024-11-16 19:20:36 -08:00
bd_
d23b9f94a2
fix: empty MA Parameters names break auto param UI (#1346) 2024-11-16 19:02:37 -08:00
bd_
30512c26e8
fix: NotSynced parameters become synced when merging (#1347)
Closes: #1342
2024-11-16 19:02:32 -08:00
bd_
4405d7aa56
fix: MA Parameters bool items + MA Menu Item auto value is broken (#1345)
Closes: #1331
2024-11-16 19:02:24 -08:00
Jeremy Lam aka. Vistanz
a984cf8673
Use VRCParentConstraint instead of constraint hack for world fixed objects when available (#1326)
* Fixes error when merging same parameter with different type in RC menu item.

* Rollback ReactiveObjectPass, use another approach

* Set defaults to ModularAvatarMergeAnimator to prevent potential errors

* Use VRCParentConstraint instead of constraint hack
for world fixed objects when available

* Make sure the VRC constraint only applies on VRChat avatars

* Extract creation logic to external method

* Rearrange method

* Get rid of unit test

* Fix unit test build error

* Fix assert fail
2024-11-16 19:02:09 -08:00
dependabot[bot]
7980d933c2
chore(deps): bump softprops/action-gh-release in /.github/workflows (#1338)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.8 to 2.0.9.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](c062e08bd5...e7a8f85e1c)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-03 21:26:56 -08:00
bd_
ef0beec8ed 1.10.7 2024-11-03 18:33:03 -08:00
bd_
81ad82b765
fix: ParameterAssignerPass forces all parameters to float type (#1337)
Closes: #1335
2024-11-03 18:32:29 -08:00
bd_
973e7d2448
fix: suppress ObjectReferenceFixer in play mode (#1336)
Not sure if this will do anything, but maybe it'll help with the perf issues people have reported?
2024-11-03 18:32:22 -08:00
nadena-dev-ci
59ff119d20
New Crowdin updates (#1330)
* Update source file en-US.json

* New translations en-us.json (Japanese)
2024-11-03 18:32:15 -08:00
bd_
6fd8ac0cd7 1.10.6 2024-11-02 15:23:41 -07:00
Ao_425
29e2041312
chore: Add mesh settings regardless of parent presence in Setup Outfit (#1322)
* chore: remove parent check for adding meshsettings

* chore: a little refactoring
2024-11-02 15:20:13 -07:00
bd_
a3b9acba39
ui: Improvements to MA Parameters editor (#1329)
* Add import-from-asset feature (Closes: #880, #668, #410)
* Limit size of scrollable area to avoid double-scrolling
* Add support for pressing the "delete" key to delete parameters.
2024-11-02 15:17:58 -07:00
Sayamame-beans
497d16f89d
Improve InferPrefixSuffix / Support using Humanoid Rig on Setup Outfit (#1167)
* feat: inferring prefix/suffix now supports infer with HeuristicBoneMapper

* feat: inferring prefix/suffix is now triggered when prefix/suffix is empty and merge target changed

* chore: add comment for inferring prefix/suffix with HeuristicBoneMapper

* feat: support using Humanoid Rig on RenameBonesByHeuristic

* feat: support using cloth's Humanoid Rig on merge_armature.adjust_names

* feat: support outfits' hips in one more deep place

* chore: refine condition on Heuristic Bone Mapper's exact humanoid bone matching

* chore: unify the process for get outfit's humanoid bones

* chore: rename variable name to clarify means

* chore: use InitializeOnLoadMethod instead of reflection to get boneNamePattern from Editor Assembly

* test: add some tests for SetupOutfit and InferPrefixSuffix
2024-11-02 15:17:24 -07:00
bd_
e752762d21
chore: remove stray log statement (#1325) 2024-11-02 13:23:33 -07:00
bd_
32ea6678f7
feat: object references are now corrected when their target path is renamed/changes (#1323) 2024-10-27 10:07:23 -07:00
bd_
1153abd16e
fix: NRE when Move Independently is placed on a scene root (#1321)
Closes: #1317
2024-10-27 10:07:14 -07:00
kaikoga
efa263b551
chore: Fix non-VRChat support (for MA 1.10.5) (#1324)
* feat: add version defines for VRCSDK

* chore: early return if VRCSDK project but not VRChat avatar
2024-10-27 10:06:35 -07:00
Jeremy Lam aka. Vistanz
07b648dcc1
Fixes error when merging same parameter with different type in RC menu item (#1313) 2024-10-25 20:11:23 -07:00
bd_
131f54a713
docs: Update JP version of mesh-settings.md (#1315)
Closes: #1314
2024-10-25 19:53:09 -07:00
dependabot[bot]
1cce15590c
chore(deps): bump http-proxy-middleware from 2.0.6 to 2.0.7 in /docs~ (#1319)
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.7/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 19:53:00 -07:00
bd_
e0702c5dcf 1.10.5 2024-10-19 20:09:52 -07:00
Haï~
3b067e4664
Make compatible with Unity 6 projects (#1232)
* Disable compilation for use in Unity 6 (6000.0.20f1):
- Do not compile some classes and code paths in non-VRChat projects.
- This has been tested in Unity 6 (6000.0.20f1).

* Fix hide internal components in Unity 6:
- [AddComponentMenu("")] does not work in Unity 6.
- Replace it with [AddComponentMenu("/")]
- This alternative is confirmed to also work in Unity 2022.

---------

Co-authored-by: Haï~ <hai-vr@users.noreply.github.com>
Co-authored-by: bd_ <bd_@nadena.dev>
2024-10-19 18:58:41 -07:00
Sayamame-beans
26153ea60d
feat: improve behavior when called setup outfit for setuped outfit (#1200) 2024-10-19 17:52:51 -07:00
bd_
5bafb0ba9d
fix: "extract menu to objects" does not set the target of its menu group properly (#1304)
Closes: #1297
2024-10-19 17:46:39 -07:00
bd_
11a62c88d4
fix: issues when handling VRCExpressionMenus with an uninitialized type field (#1303) 2024-10-19 17:46:31 -07:00
bd_
123523540e
fix: parameters lose their default value when others are moved around (#1302)
Closes: #1296
2024-10-19 17:15:43 -07:00
bd_
ab4d1fd2f4
fix: transient NRE when opening reaction debugger (#1301) 2024-10-19 17:15:33 -07:00
bd_
9dc342e81e
fix: always-on toggles fail to animate objects to off (#1300)
Closes: #1285
2024-10-19 17:15:23 -07:00
bd_
ae975506d7
fix: occasionally objects controlling reactive components "flicker" (#1298)
Reported-by: @whipnice
2024-10-19 17:15:14 -07:00
bd_
3ba0219430 1.10.4 2024-10-15 19:19:07 -07:00
bd_
8bf1d29bf3
test: add missing blendshape/RC tests (#1293) 2024-10-15 19:16:43 -07:00
dependabot[bot]
55ab65e22d
chore(deps): bump nathanvaughn/actions-cloudflare-purge (#1287)
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from cd4afdf666c2e6a6720048f27ac9cbdd664a673a to 992cc4e96422fb8ddf077281678373fe41e7736c.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](cd4afdf666...992cc4e964)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-15 19:13:24 -07:00
bd_
b73feb6b71
fix: inactive menu items don't appear in RO debugger (#1291) 2024-10-15 19:13:08 -07:00
bd_
662172c2e5
fix: NRE in RO simulator (#1292) 2024-10-15 19:13:01 -07:00
bd_
5d399dce4a ci: workaround VPM issues 2024-10-14 21:17:31 -07:00
nadena-dev-ci
766f728a8a
New Crowdin updates (#1284)
* Update source file en-US.json

* Update source file en-US.json

* New translations en-us.json (Japanese)
2024-10-13 18:28:53 -07:00
bd_
f40d02ceb9
fix: NRE when AnimatorControllerLayer.stateMachine is null (#1283)
Closes: #1056
2024-10-12 17:29:27 -07:00
bd_
7ae98d63b0
fix: missing localization strings for Replace Object errors (#1282)
Closes: #1281
2024-10-12 17:29:19 -07:00
nekobako
0b8cd3b3b6
feat: add support for drag-and-drop on MaterialSetter and ShapeChanger (#1271)
* feat: add support for drag-and-drop on MaterialSetter and ShapeChanger

* fix: allow adding known objects to MaterialSetter and ShapeChanger
2024-10-12 16:52:37 -07:00
Mooncake Sugar
7f9e65bcbc
docs: delete button group on top page (#1270) 2024-10-12 16:35:54 -07:00
Sayamame-beans
4a376f8723
Merge Armatureの"Reset position to base avatar"にA/Tポーズ変換オプションを追加 (#1188)
* feat: A/T Pose conversion on "Reset position to base avatar"

* chore: reorder posReset options

* chore: unify FixAPose functions into SetupOutfit.FixAPose
2024-10-12 16:34:30 -07:00
bd_
1024f626e8 1.10.3 2024-10-05 17:55:29 -07:00
bd_
828e6b4548
fix: propagate shape changer effects through BlendshapeSync (#1267)
Closes: #1259
2024-10-05 17:46:45 -07:00
bd_
656a401684
fix: proxy animations are cloned in Merge Animator (#1266)
This fixes issues with しゃがみ置き換え+α among other things.
2024-10-05 15:19:42 -07:00
Kisaragi
394601d4a7
docs: ドキュメントへの誘導を微調整 (#1265) 2024-10-05 15:19:32 -07:00
bd_
4da4ebc984 1.10.2 2024-10-03 20:18:00 -07:00
bd_
30cafb21e4
fix: incorrect handling of shape key deletion (#1258)
This change reworks delete handling to be more consistent with other properties,
by treating it as a virtual property (`deletedShape.{blendshapeName}`) instead of
a weird additional field of blendshape keys. This then fixes a number of issues
(e.g. broken preview for delete keys).

Fixes: #1253
2024-10-03 20:16:53 -07:00
bd_
c379d730ca chore: fix unit test broken by merge 2024-10-02 20:09:14 -07:00
bd_
d9c0a21f0d 1.10.1 2024-10-02 19:52:21 -07:00
bd_
816d2b28cb
fix: NRE from scale adjuster preview (#1251) 2024-10-02 19:51:17 -07:00
bd_
4ec36ca489
fix: shape changer preview overrides default blendshape values inappropriately (#1250)
Closes: #1227
2024-10-02 19:48:38 -07:00
bd_
409592f952
fix(rc): constant-off objects are not handled correctly (#1249)
Closes: #1233
2024-10-02 19:42:19 -07:00
bd_
02204c272f
Revert "fix: remove unnecessory exit transitions for reactive components (#1161)" (#1248)
This reverts commit 9dfa0dae23d9d4aa6e80e9c9d691e363dc297fdc. Those
transitions are needed when controlling the same object from multiple
parameters.

Closes: #1233
2024-10-02 19:03:44 -07:00
nekobako
36e035c8c7
fix: inverted reactive components on inactive objects didn't set defa… (#1246)
* fix: inverted reactive components on inactive objects didn't set default states

* chore: use `InitiallyActive` helper

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-10-02 19:03:03 -07:00
bd_
6c55185895 docs: fix reactive component help URL link 2024-10-01 20:19:14 -07:00
bd_
1c29af20fb docs: fix incorrect docusaurus directive 2024-10-01 20:16:29 -07:00
bd_
4b9d1128c6 chore: set harmony ID on UnpatchAll call 2024-10-01 20:16:17 -07:00
nekobako
2c9939dea8 chore: remove ShapeChanger migration for beta only 2024-10-01 20:15:24 -07:00
nadena-dev-ci
8150e05dd0 New translations en-us.json (Chinese Traditional) 2024-10-01 20:15:07 -07:00
bd_
f85d455c8f fix: NRE issued when viewing Menu Item editor outside of an avatar 2024-10-01 20:14:58 -07:00
bd_
cb2afcc3d5 fix: Menu Installers on the same object as Merge Armature are not processed
Changes to pass ordering caused Merge Armature to destroy menus before being
processed by Menu Installer; fix this by hoisting menu generation to occur within
the animation services context, before Merge Armature runs. This is safe because
the menu installer pass does not interact with the avatar's animator controllers
directly.
2024-10-01 20:13:02 -07:00
bd_
838f1dac7e fix: ignore blendtree-only layers when determing animator WD state 2024-10-01 20:12:52 -07:00
Haï~
94002e4594 review:
- Rebased to 1.10.0
- When editing multiple objects, always edit the label.
2024-10-01 21:28:54 +02:00
Haï~
c5e787045a review:
- Rebased to 1.10.0-rc.4 because the inspector of SubMenu of source Expressions Menu were broken in the base commit this branch initially started with, which was preventing testing some aspects raised during review.
- When this is being rendered as part of an SubMenu of source Expressions Menu, don't use any of the label logic, as menu items within such an Expressions Menu are not backed by any GameObject.
- Rename _isTryingRichLabel to _useLabel.
- Since switching to unlinked always overwrites the label field with the current ObjectName, and switching to linked always empties the label field, the state of _useLabel while the Inspector is open is implied by the value of the label field, or the previous state of the _useLabel field itself when the label field is being emptied out.
  - In addition, use the |= operator.
- When the name is linked, and the user begins typing the "<" character, set the label field, and do not apply the name. This will automatically switch to linked mode as the inspector will be reevaluated a second time.
  - If the original object name already contains a "<" character (i.e. it comes from a previous version of Modular Avatar), there will be no automatic conversion happening as long as the object name still contains the "<" character.
- Changed the localization keys to discard the rich text toggle aspect.
- Not addressed: When multiple Menu Item components are selected, the behaviour of the inspector currently edits the GameObject name, with no link button, and no automatic conversion when typing "<", regardless of the contents of the label field.
2024-10-01 09:52:39 +02:00
Haï~
776f08be3f review:
- Add a link/unlink icon to the right of the name field.
- Only show the rich text preview when there is the character '<' in the label field.
- Toggling link from ON to OFF will set the label to the current GameObject name.
2024-10-01 09:52:39 +02:00
Haï~
b01b280f79 feat: menu name may use string field 2024-10-01 09:52:39 +02:00
bd_
a71af7ae0a 1.10.0 2024-09-29 15:02:58 -07:00
bd_
6dafe72c3b fix: play audio path mapping is broken
Closes: #936
2024-09-29 14:28:44 -07:00
bd_
848f857728 docs: updates to outfit creator documentation 2024-09-29 13:34:15 -07:00
dependabot[bot]
01d75fb284 chore(deps): bump nathanvaughn/actions-cloudflare-purge
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from aa1121a867565ea71b60f445f441544df0c7b0b9 to cd4afdf666c2e6a6720048f27ac9cbdd664a673a.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](aa1121a867...cd4afdf666)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-29 12:50:13 -07:00
bd_
cd4cadf23f docs: add discord link 2024-09-29 12:50:06 -07:00
bd_
0f28cf7aba fix: warning is shown when using FPV on Android 2024-09-29 12:49:58 -07:00
nekobako
cc93c7e5ed feat: replace checkboxes in ObjectToggle with dropdowns 2024-09-29 06:26:12 -07:00
bd_
7040e3992b fix: ROSimulator UI refresh sometimes gets wedged
Closes: #1219
2024-09-28 20:05:53 -07:00
bd_
f3f2de3337 feat: add tracing points for the NDMF preview tracing system 2024-09-28 19:34:36 -07:00
bd_
b866628b24 chore: fix compiler warnings 2024-09-27 19:37:23 -07:00
bd_
7e5c227867 docs: update Visible Head Accessory docs 2024-09-27 18:57:50 -07:00
bd_
1fe8255f52 docs: update mesh settings docs 2024-09-27 18:57:50 -07:00
bd_
3f5d5a2013 1.10.0-rc.9 2024-09-27 18:35:19 -07:00
nadena-dev-ci
4f398d21c3
New Crowdin updates (#1212)
* New translations en-us.json (Japanese)

* New translations en-us.json (Korean)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Traditional)

* Update source file en-US.json

* New translations en-us.json (Japanese)
2024-09-27 18:06:53 -07:00
bd_
ee64cafe02
fix: remove ObjectIdentityComparer (#1211)
Apparently, it's safe to use Unity objects as keys in HashMaps, and doing
so actually fixes some edge cases where assets are recreated as a new C# object.
2024-09-25 21:39:01 -07:00
bd_
e63a34e2ba
fix: scale adjuster preview destroys proxy renderers inappropriately (#1213)
The scale adjuster preview system reparented proxy renderers under proxy
bones, in order to handle null root bones and MeshRenderers. However, it
then destroyed the entire proxy bone hierarchy, taking all proxy renderers
with it. This change instead tracks proxies, and reparents them back to the
root to avoid this issue.

Closes: #1177
2024-09-25 21:09:58 -07:00
bd_
a018df9219
chore: improve PropCache debuggability by adding a name property (#1209) 2024-09-25 20:01:59 -07:00
bd_
13b0ffe0b5
fix: missing observations in LocateReactions (#1210) 2024-09-25 20:01:55 -07:00
Sayamame-beans
de1744b080
chore: update some messages (#1208) 2024-09-25 19:35:25 -07:00
bd_
119c56878c 1.10.0-rc.8 2024-09-24 18:59:49 -07:00
nadena-dev-ci
d82c41c390
New translations en-us.json (Japanese) (#1204) 2024-09-24 18:56:57 -07:00
lilxyzw
2826c27d63
fix: cloned AnimatorController is not registered in ObjectRegistry #1205 (#1206) 2024-09-24 18:11:39 -07:00
bd_
51fedbd9b0
fix: ROSimulator registers multiple event handlers for state override buttons (#1203) 2024-09-23 20:27:56 -07:00
bd_
bf47a4c544
fix: reactive components break WD ON avatars (#1202)
Closes: #1199
2024-09-23 20:18:04 -07:00
Sayamame-beans
8e49df703f
fix: BoneProxy target couldn't be empty after assigned (#1192) 2024-09-23 19:14:26 -07:00
Sayamame-beans
032e7a692e
chore: fpvisible.NotUnderHead is now Warning, not Error (#1194) 2024-09-23 19:13:29 -07:00
Sayamame-beans
3b86822547
fix: Setup Outfit cause NRE when nothing selected (#1197) 2024-09-23 19:12:39 -07:00
bd_
fd3de6e680 1.10.0-rc.7 2024-09-22 18:18:52 -07:00
nekobako
2d8f5d764e
fix: resolve parameter type conflicts for menu items in params usage … (#1174)
* fix: resolve parameter type conflicts for menu items in params usage window

* Revert "fix: resolve parameter type conflicts for menu items in params usage window"

This reverts commit 4c6b41de4c92da5828219657b2927c90685e275a.

* fix: expand conflicting parameter types for menu item in introspection

* chore: update NDMF dependency

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-09-22 18:18:27 -07:00
bd_
a5e716cb3e
fix: incorrect auto parameter assignment when a non-auto item is set to 0 (#1189) 2024-09-22 18:12:26 -07:00
lilxyzw
54288ebd44
fix: MenuInstaller does not support cloning (#1173) (#1184)
* fix: MenuInstaller does not support cloning (#1173)

* fix: error when root menu is specified
2024-09-22 14:35:05 -07:00
nekobako
9dfa0dae23
fix: remove unnecessory exit transitions for reactive components (#1161) 2024-09-22 13:42:31 -07:00
bd_
5090d45cfe
prof: add some profiling annotations (#1183) 2024-09-20 20:46:35 -07:00
bd_
7bf5106246
fix: animation clips are not added to the persistent asset object on build (#1182)
This resulted in data loss when `AssetDatabase.StopAssetEditing()` was called, which can happen if VRCF triggers Poi lockdown.
2024-09-20 20:32:27 -07:00
bd_
c11a76642c 1.10.0-rc.6 2024-09-17 20:40:32 -07:00
bd_
71ddd257a3
test: add tests for PropCache (#1156)
* test: add tests for PropCache

* chore: update NDMF dependency
2024-09-17 20:40:09 -07:00
bd_
9b4e76e053
fix: Scale Adjuster preview breaks after changing scale of avatar root (#1172)
Closes: #1171
2024-09-17 20:26:26 -07:00
bd_
a98ef213ff
fix: performance issues with MAMenuItem (#1170)
Cache parameter introspection results (using PropCache) to avoid excessive
recomputation.

Closes: #1165
2024-09-17 20:25:47 -07:00
nadena-dev-ci
c2b6766a40
New Crowdin updates (#1169)
* New translations en-us.json (Japanese)

* New translations en-us.json (Japanese)
2024-09-17 20:25:41 -07:00
Sayamame-beans
8ed877c99c
fix: add pattern of "upper_chest" as a chest bone (#1168) 2024-09-17 19:56:15 -07:00
nekobako
56f1b67d31
fix: animator initial value type conversion (#1163) 2024-09-17 19:47:56 -07:00
bd_
3648348184
fix: ScaleAdjusterPreview breaks when avatar descriptors are nested (#1154) 2024-09-15 19:47:26 -07:00
bd_
9073ff8c2d
fix: blendshape sync reserializes prefab assets (#1153)
Hopefully fixes: #1148
2024-09-15 19:33:10 -07:00
nekobako
48b7d80f7c
Fix menu item float value (#1140)
* fix: menu item with float value incorrectly generates bool parameter

* fix: reactive components generate transitions with overlapping condition ranges

* chore: add tests for menu item parameter type

* fix: incorrect parameter type detemination for float values

* chore: add more tests for menu item parameter type

* refactor: unify logic to determine parameter type and rename confusing variable
2024-09-15 19:32:59 -07:00
nekobako
c80d24ea46
Fix parameter synced conflict (#1150)
* fix: parameter should be synced if any of sibling parameter is set to be synced

* fix: parameter should be saved/synced if any of menu item references same parameter is set to be saved/synced
2024-09-15 14:24:13 -07:00
nekobako
b83b89ce38
fix: incorrect default value for single menu item with automatic value (#1147) 2024-09-15 14:23:15 -07:00
dependabot[bot]
3b28ea2b14
chore(deps): bump express from 4.19.2 to 4.21.0 in /docs~ (#1144)
Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.21.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-14 19:48:28 -07:00
dependabot[bot]
65194fbc80
chore(deps): bump path-to-regexp from 6.2.1 to 6.3.0 in /docs-site~ (#1132)
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 6.2.1 to 6.3.0.
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v6.2.1...v6.3.0)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-14 19:41:44 -07:00
bd_
2ea9fb50b6 1.10.0-rc.5 2024-09-14 19:32:59 -07:00
bd_
4e3001ad65 fix: NullReferenceExceptions from ShapeChangerPreview 2024-09-14 18:42:01 -07:00
nekobako
faa8d210f2
Enhance default value field (#1125)
* feat: enhance default value field input

* fix: format default value when update type or value on parameters inspector

* fix: don't accept NaN and Infinity for default value setting
2024-09-14 17:53:00 -07:00
nekobako
f4d80b857d
fix: exception thrown when opening prefab override ui (#1141) 2024-09-14 17:51:43 -07:00
bd_
fed6a22d72
fix: multiple issues with auto parameter value assignment (#1136)
Closes: #1110
2024-09-13 19:27:01 -07:00
nadena-dev-ci
a9c2815106
New translations en-us.json (Chinese Traditional) (#1126) 2024-09-13 19:26:52 -07:00
nekobako
c0582a9961
fix: non-backwards-compatible changes to component initial values (#1114)
* fix: init menu item settings only when added manually from inspector

* fix: init menu item settings when added from some shortcuts

* fix: init menu item settings when reset from context menu

* fix: init merge animator settings only when added manually from inspector
2024-09-13 18:57:03 -07:00
Rinna Koharu
3eaf8bee6d
fix: Add null checks to ScaleAdjusterPreview (#1116)
* fix: Add null checks to ScaleAdjusterPreview

* chore: check for destroyed objects as well

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-09-13 18:54:20 -07:00
colloid
73755e7664
fix: add Rigify(metarig) bone mapping pattern (#1131)
* fix: add Rigify(metarig) bone mapping pattern

Rigifyで追加されるボーン名(metarigの物)を追加
ミコジンちゃん
https://booth.pm/ja/items/5699843
にて動作確認

* fix: add Rigify(metarig) finger bone mapping pattern

Rigifyで追加される手のボーン名(metarigの物)を追加
2024-09-13 18:07:02 -07:00
RayLight1732
4f77723906
Fix copy logic of sync layer (#1135) 2024-09-13 18:06:56 -07:00
nekobako
3be3cfb74a
Refine some UI (#1119)
* feat: warn by color when Shape Changer has an invalid blendshape

* feat: refine reactive components ui layout

* feat: refine ma parameters ui layout
2024-09-13 18:06:45 -07:00
nekobako
38384a3c70
fix: can't unset the default value for bool parameter (#1121) 2024-09-13 18:04:20 -07:00
nekobako
29177f2c5a
fix: NullReferenceException when opening RO Simulator for default Menu Item (#1107) 2024-09-13 17:55:49 -07:00
nekobako
106ba8c5ff
fix: previewing Object Toggle targets Renderers other than MeshRender… (#1112)
* fix: NullReferenceException when previewing Object Toggle with renderers other than MeshRenderer and SkinnedMeshRenderer

* fix: NullReferenceException when previewing Scale Adjuster with renderers other than MeshRenderer and SkinnedMeshRenderer
2024-09-13 17:52:45 -07:00
nekobako
2735adf55c
fix: warning when object name contains "." (#1123)
* fix: warning when object name contains "."

* chore: change RC state and layer names to not reference Shape Changer specifically

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-09-13 17:49:58 -07:00
nekobako
566a030730
Fix nested parameter saved setting (#1130)
* fix: child parameters should not override parent saved setting

* fix: sibling parameters can override sibling saved setting
2024-09-13 17:49:20 -07:00
bd_
1163fac2e7 1.10.0-rc.4 2024-09-04 22:01:45 -07:00
bd_
4fa0621655
fix: menu items with no default fail to generate animator controller parameter entries (#1105) 2024-09-04 18:58:51 -07:00
bd_
acd6c50543
fix: menu item override is not shown in sim for autoprop boolean toggles (#1104) 2024-09-04 17:00:08 -07:00
bd_
89b4c8f921
fix: deactivating an inactive menu item doesn't work as expected (#1102) 2024-09-04 12:41:00 -07:00
bd_
389ae4f2cc
fix: performance issues when RO Simulator is open for too long (#1101)
Also fix an issue where the clear overrides button doesn't work for menu item overrides.

Closes: #1100
2024-09-04 12:40:48 -07:00
nadena-dev-ci
422ed5cfb1
New Crowdin updates (#1099)
* New translations en-us.json (Japanese)

* Update source file en-US.json
2024-09-03 21:24:00 -07:00
bd_
0ee291076f
feat: Menu Item automatic values (#1098) 2024-09-03 19:07:33 -07:00
nekobako
c63128095e
fix: ArgumentNullException when selecting multiple Menu Item with same settings (#1097) 2024-09-03 18:51:36 -07:00
bd_
d403f1b178
ui: improve handling of saved/synced checkboxes on MenuItems with sibling items (#1095)
We will now force the state of all related MenuItems to match when the
synced/saved checkboxes are updated on the Menu Item UI.
2024-09-03 16:05:18 -07:00
bd_
e07b18d87e
fix: Some MenuItemCoreGUI properties do not refresh when rendered in parent menu inspector (#1094)
Closes: #1091
2024-09-03 15:53:44 -07:00
bd_
668ab35b46
fix: avatar masks are not rewritten when merging animators (#1093)
Closes: #228
2024-09-03 15:44:29 -07:00
nekobako
f9a9f1f1ef
fix: clearing conflicted MenuItem.isDefault affects unrelated MenuItems (#1089) 2024-09-03 15:28:27 -07:00
bd_
22cff4ba3f
chore: set delete attached animator to true by default on MAMergeAnimator (#1092) 2024-09-03 15:26:52 -07:00
bd_
466017c102
feat: add support for drag-and-drop on the MA Object Toggle inspector (#1087) 2024-09-02 19:30:40 -07:00
bd_
1d58548013 1.10.0-rc.3 2024-09-02 17:59:17 -07:00
bd_
ae950ad938
fix: untranslated string in RO simulator UI (#1086) 2024-09-02 17:57:49 -07:00
bd_
371809f430
fix: incorrect handling of isDefault toggles for implicit parameters in UI (#1085)
Closes: #1079
2024-09-02 17:54:36 -07:00
dependabot[bot]
1aa6c03202
chore(deps): bump nathanvaughn/actions-cloudflare-purge (#1080)
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from 367672c723960cd03bb7d8c2c4d89062a3fc1fac to aa1121a867565ea71b60f445f441544df0c7b0b9.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](367672c723...aa1121a867)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 17:54:27 -07:00
nadena-dev-ci
db06a6a492
New translations en-us.json (Chinese Traditional) (#1082) 2024-09-02 17:54:16 -07:00
bd_
7330cda42a
fix: previews do not update when invert option is changed (#1078) 2024-09-01 19:59:08 -07:00
bd_
ece8a6837a
fix: RO Simulator triggers all parameters (#1076) 2024-09-01 18:59:56 -07:00
bd_
c309d93bdd
fix: error during domain reload (#1077) 2024-09-01 18:59:44 -07:00
bd_
d33787a6b0 1.10.0-rc.2 2024-09-01 17:30:39 -07:00
bd_
0a6270bb43
feat: update AvatarObjectReference paths when target object is moved in scene (#1074)
Closes: #1037
2024-09-01 17:29:58 -07:00
bd_
682a0de0e0
perf: reimplement ModularAvatarScaleAdjuster (#1073)
Fixes a perf issue discovered when investigating #1055 .
Fixes: #1058 (probably)
2024-09-01 17:29:32 -07:00
bd_
b0032a09c0 chore: bump NDMF dependency version 2024-09-01 17:21:14 -07:00
bd_
28ed2e0ed1
fix: layer cross-references are broken by empty layer pruning in some cases (#1075)
Fixes: #830
2024-09-01 16:55:42 -07:00
bd_
c6e863d409
fix: MA Parameters does not update animator parameter curves (#1072)
Closes: #180
2024-08-31 20:47:13 -07:00
KOBAYASHI Yū
3bc090dc7d
Preserve local transform when rebinding humanoid avatar (#1062)
* Preserve local transform when rebinding humanoid avatar

* Check Animator.avatar

* Restore all transforms
2024-08-31 16:54:48 -07:00
kaikoga
2148ab0bfc
chore: Skip ParameterAssignerPass when not VRChat avatar (#1071) 2024-08-31 16:51:26 -07:00
bd_
818f16f839
docs: fix incorrect edit URL (#1070)
Closes: #1064
2024-08-30 20:17:26 -07:00
dependabot[bot]
7f3b0fec3e
chore(deps): bump webpack from 5.92.1 to 5.94.0 in /docs~ (#1059)
Bumps [webpack](https://github.com/webpack/webpack) from 5.92.1 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.92.1...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-30 19:34:44 -07:00
bd_
231feba3a2
docs: update unity 2019 deprecation page (#1069)
Closes: #978
2024-08-30 19:34:34 -07:00
bd_
13b9bf72e2
docs: document menu item autocreation of parameters (#1068)
Closes: #947
2024-08-30 19:19:56 -07:00
bd_
802fea09d9
feat: serialize Move Independently grouping (#1067)
Closed: #842
2024-08-30 19:19:46 -07:00
Kisaragi
f085ce07b6
docs(ja): fix potential typo on scale-adjuster.md (#1063) 2024-08-30 18:09:18 -07:00
nekobako
6cb249be44
fix: error when deleting Material Setter target (#1066) 2024-08-30 18:05:07 -07:00
nekobako
580cb2bfe9
Fix material setter index (#1061)
* fix: error when Material Setter has an invalid index

* feat: warn by color when Material Setter has an invalid index
2024-08-30 18:04:58 -07:00
bd_
9d48ae4f65 1.10.0-rc.1 2024-08-28 19:38:15 -07:00
dependabot[bot]
0243b8cc8e
chore(deps): bump micromatch from 4.0.7 to 4.0.8 in /docs~ (#1050)
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.7 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/4.0.8/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.7...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-28 19:34:07 -07:00
bd_
369cc010c3
fix: some issues with reactive objects not triggering pipeline refreshes (#1057)
Closes: #1054
2024-08-28 19:20:17 -07:00
nadena-dev-ci
f514a5e904
New Crowdin updates (#1051)
* Update source file en-US.json

* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Japanese)

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-08-27 20:16:44 -07:00
nekobako
f9abb5c4fc
fix: previewing Material Setter targets Renderers other than MeshRenderer and SkinnedMeshRenderer cause error (#1053) 2024-08-26 08:52:28 -07:00
bd_
ea857406ee docs: oops, got jp and en backwards... 2024-08-25 21:16:34 -07:00
bd_
b853514fea docs: translate debugger docs 2024-08-25 21:12:35 -07:00
bd_
f19a4946bf docs: upgrade Docusaurus version 2024-08-25 21:04:10 -07:00
bd_
ca681d6033 docs: remove unreleased feature warning 2024-08-25 21:04:02 -07:00
bd_
ae318b29d8 chore: rename reactive-component docs path 2024-08-25 21:03:42 -07:00
bd_
87a385a43e
feat: add a debugging UI for the reactive components system (#1049) 2024-08-25 20:19:04 -07:00
nadena-dev-ci
07660164ba
New Crowdin updates (#1033)
* New translations en-us.json (Japanese)

* New translations en-us.json (Chinese Traditional)

* Update source file en-US.json

* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Traditional)
2024-08-25 19:00:47 -07:00
Sayamame-beans
14fd8b81aa
fix: add heuristic bone mapping pattern (#1047) 2024-08-25 19:00:10 -07:00
nekobako
46cf066e04
feat: improve material setter inspector (#1035) 2024-08-25 18:05:19 -07:00
nekobako
a2b9b817ce
fix: MaterialSetter is not working without ShapeChanger or ObjectToggle (#1043) 2024-08-25 18:04:14 -07:00
nekobako
f96b2627aa
fix: support renderers other than SMR (#1042) 2024-08-25 18:04:04 -07:00
bd_
b2ada9fe05 1.10.0-rc.0 2024-08-21 21:20:03 -07:00
bd_
037c450760
fix: multiple issues in autocreate parameter heuristics (#1032)
- Don't create parameters for submenus and puppets automatically
- Create parameters when the menu item and RC are on the same GameObject
2024-08-21 21:16:40 -07:00
bd_
f44e070c46
fix: exceptions thrown when examining a MenuItem outside of an avatar (#1030) 2024-08-21 20:28:52 -07:00
nekobako
8418f8e047
feat: change shape changer to support multiple target renderers (#1011)
* feat: add target renderer to ChangedShape

* chore: add test for ShapeChanger target renderer

* feat: add override target to MaterialSetter

* fix: resolve added AvatarObjectReference

* fix: record prefab instance property modifications

* refactor: remove unused setter for AvatarObjectReference

* refactor: change ChangedShape and MaterialSwitchObject from struct to class

* feat: remove override target from ShapeChanger and MaterialSetter

* refactor: align flow and code style of ShapeChanger and MaterialSetter

* feat: ShapeChanger target migration

* fix: add null check

* chore: added some comments and nullchecks

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-08-21 20:27:10 -07:00
bd_
3b9f0d1838
fix: incorrect parent bone reference in OnewayArmatureLockOperator (#1031)
Closes: #1024
2024-08-21 20:26:05 -07:00
bd_
dd66cd2f7c
fix: spurious "missing" value shown in fingerpen prefab (#1029)
Closes: #1028
2024-08-21 20:24:03 -07:00
bd_
3b44a0b44f
perf: improve ScaleAdjusterPreview performance (#1026) 2024-08-21 19:23:36 -07:00
bd_
8be802bee5
fix: showing menu contents of an expression menu throws an NRE (#1025)
Closes: #967
2024-08-21 19:23:26 -07:00
bd_
8ed649f9a4
feat: add API to trigger Setup Outfit processing (#1018)
Closes: #907
2024-08-19 20:08:36 -07:00
bd_
a42295e0e6
fix: scale adjuster tool rotation is not updated appropriately (#1023)
Closes: #1003
2024-08-19 19:14:44 -07:00
bd_
159865e6cd
fix: NRE from Menu Item UI when expression parameters is missing (#1022)
Closes: #797
2024-08-19 18:43:57 -07:00
bd_
c7df409d70
fix: merge armature does not retain VRCConstraint bone references (#1020) 2024-08-18 21:55:19 -07:00
bd_
e7e030f0db docs: add warning about relying on RO timing 2024-08-18 19:39:33 -07:00
bd_
9642c845cf docs: update parameters UI screenshots 2024-08-18 19:36:58 -07:00
bd_
436a7dc4dd ui: adjust MA Parameters field width 2024-08-18 19:31:37 -07:00
bd_
a75a422cf4 1.10.0-beta.4 2024-08-18 19:04:23 -07:00
bd_
eb5a04511d
fix: implement ResolveReferences for reactive objects (#1019)
Closes: #996
2024-08-18 19:03:18 -07:00
Sayamame-beans
c2b381c721
fix: add heuristic bone mapping pattern (#875)
* fix: add heuristic bone mapping pattern

* fix: add "bone_" for normalize target as semi-workaround
2024-08-18 18:56:21 -07:00
bd_
3f02a1127f
fix: constant reactive objects are incorrectly animated to original scene state (#1017)
Closes: #1014
2024-08-18 18:47:33 -07:00
bd_
6f95800e41
chore: update for NDMF API changes (#1016) 2024-08-18 18:32:56 -07:00
bd_
b732c5268e 1.10.0-beta.3 2024-08-18 13:40:00 -07:00
bd_
b70727076c
chore: reduce allocations in ScaleAdjusterPreview (#1015) 2024-08-18 13:32:59 -07:00
bd_
e5af635bd9
fix: memory corruption issue in NativeMemoryManager (#1013) 2024-08-17 18:44:12 -07:00
bd_
7a20eaf57e
fix: some issues with Shape Changer previews not updating (#1012) 2024-08-17 17:32:13 -07:00
bd_
7384715059
feat: MA Convert Constraints (#1010) 2024-08-16 18:52:04 -07:00
bd_
d83c3351d7
fix: MA Move Independently is not listed in the MA group in Add Components (#1007)
Closes: #1002
2024-08-13 20:33:08 -07:00
bd_
1b3b9194c0
fix: use-after-free issue in NativeMemoryManager (#1006)
Closes: #1001
2024-08-13 20:32:52 -07:00
bd_
467b0d4431
ui: fix accidentally deleted USS for unregistered parameters (#1005) 2024-08-13 20:32:48 -07:00
bd_
3eea882019
feat: show parameter checkboxes when parameters are defined elsewhere/multiselect is active (#1000)
Closes: #994
2024-08-13 20:32:42 -07:00
bd_
81bcd14bcd chore: no-op change in BlendshapeSyncIntegrationTest.prefab 2024-08-13 19:59:52 -07:00
bd_
c0ee54e8c2 chore: remove obsolete .meta file 2024-08-13 19:59:23 -07:00
bd_
3644ffdb12 chore/fix: missing semicolon 2024-08-13 19:27:45 -07:00
bd_
622d846b9f
fix: menu item settings are overwritten when selecting multiple menu items (#999)
Closes: #994
2024-08-12 19:13:28 -07:00
nadena-dev-ci
3838014517
New Crowdin updates (#998)
* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Traditional)

* Update source file en-US.json

* New translations en-us.json (Japanese)
2024-08-12 18:47:44 -07:00
anatawa12
f4ab86fedc
feat: SetOrInherit mode in MA Mesh Settings for EasySetupOutfit (#981)
* feat: SetOrInherit for MA Mesh Settings

* chore: use SetOrInherit in EasySetupOutfit

* test: fix test data

* Delete Editor/CheckBoneMapping.cs
2024-08-12 18:45:51 -07:00
bd_
e2e0b88dfa 1.10.0-beta.2 2024-08-11 18:49:11 -07:00
bd_
4617575123
fix: recursive parameter mappings are not correctly handled (#987)
Closes: #808
2024-08-11 18:48:25 -07:00
nadena-dev-ci
13822f33e1
New Crowdin updates (#986)
* Update source file en-US.json

* New translations en-us.json (Japanese)

* New translations en-us.json (Korean)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Traditional)

* Update source file en-US.json

* New translations en-us.json (Japanese)

* New translations en-us.json (Japanese)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Traditional)

* Update source file en-US.json

* New translations en-us.json (Japanese)

* New translations en-us.json (Japanese)

* New translations en-us.json (Japanese)

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-08-11 18:48:01 -07:00
bd_
3117275277
ui: make new menu item checkboxes translatable (#988)
Note: The menuitem.prop.is_default string is changed and needs to be retranslated.
2024-08-11 18:44:31 -07:00
bd_
ed4f5dfd31
fix: a bunch of bugs related to invalid jobs in ArmatureAwase (#985)
Closes: #839, #856
2024-08-11 18:39:50 -07:00
bd_
d49f87e754
ui: various MA Parameters UI adjustments (#984)
* chore: use ON/OFF for parameters default field

* ui: MA Parameters UI adjustments
2024-08-11 18:09:20 -07:00
nadena-dev-ci
5a7e02d591
New Crowdin updates (#980)
* Update source file en-US.json

* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Traditional)

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-08-11 17:07:21 -07:00
bd_
915ddc0d5b
docs: new tutorials (#983)
* fix: missing localization key

* docs: new tutorials
2024-08-11 16:45:54 -07:00
bd_
a739598d13 chore: set icon for shape changer component 2024-08-10 20:05:26 -07:00
bd_
a3ce9b2505 docs: add new tutorial 2024-08-10 20:04:57 -07:00
bd_
4d246fa238 docs: add docs for material setter and update screenshots 2024-08-10 20:04:57 -07:00
bd_
cd366cab2d
additional minor fixes (#976)
* fix: shape changer preview does not respect inverted mode

* fix: incorrect parameter generation for non-direct-child MAMIs
2024-08-10 19:27:06 -07:00
bd_
6b99b763a7
ui adjustments; added toggle creation shortcuts (#975)
* ui: adjustments to reactive object UI

* ui: toggle creation shortcuts
2024-08-10 19:16:57 -07:00
bd_
d998763fbe
feat: add material switcher and inverse mode (#974)
* feat: add material switcher

Also refactor everything...

* refactor: simplify object curve handling

* refactor: additional refactoring and bugfixes

* feat: inverse mode

* feat: add material setter inspector UI

* chore: set material setter icon

* chore: fix error on build

* chore: adjust order of inverted element
2024-08-10 18:03:50 -07:00
bd_
3d1b4f1c76
docs: add drop shadow to logo in light mode (#972)
Closes: #966
2024-08-08 21:53:29 -07:00
bd_
d4683f99e3
feat: add parameter introspection for automatic parameters (#970) 2024-08-08 21:51:56 -07:00
bd_
ead026a918
fix: only create autoparams when a reactive component is present (#969)
Closes: #968
2024-08-08 21:51:47 -07:00
bd_
586fb90dca 1.10.0-beta.1 2024-08-07 20:59:50 -07:00
bd_
053a0d464b
fix: multiple bugs discovered during dogfooding (#964)
* fix: initial state does not set proxy variables for toggled objects

* fix: incorrect constant analysis in property overlay pass

* fix: reactive objects respond to parent submenu active state inappropriately

* fix: property overlay pass does not register itself in animation database

* fix: object toggle default state is not applied properly
2024-08-07 20:59:13 -07:00
bd_
6d89db6a8a
fix: object toggle preview doesn't work when disabling objects (#962) 2024-08-07 18:19:49 -07:00
bd_
7d5860654a
feat: Visible Head Accessory can be used on Android builds (#961) 2024-08-06 21:09:22 -07:00
bd_
87ff50b161 1.10.0-beta.0 2024-08-06 20:49:22 -07:00
bd_
dee5241436
fix: missing layers in avatar descriptor can result in KeyNotFoundException (#959)
Closes: #958
2024-08-06 20:48:50 -07:00
bd_
1c766e9fe8
fix: error when multiple gameobjects have the same path (#957) 2024-08-06 20:43:55 -07:00
bd_
c2f37bb3a1
ui: redesign MA parameters UI (#956)
Closes: #860, #720
2024-08-06 20:43:32 -07:00
bd_
489d3a7374
fix: actually fix cursed interaction with unity timeline (#955)
Closes: #950
2024-08-06 20:30:29 -07:00
bd_
3d3aefd4f9
feat: use VRCHeadChop for VisibleHeadAccessory (#954)
Closes: #784
2024-08-06 05:53:37 -07:00
bd_
9a974f5f09
fix: shape changer would not generate animations when controlled only by object toggle (#951) 2024-08-05 21:50:35 -07:00
bd_
098a85af50
fix: not all clip settings are copied properly (#953)
Closes: #949
2024-08-05 21:13:50 -07:00
bd_
2cd996db55
fix: cursed interaction with Unity Timeline causes animation curves to be lost (#952)
Closes: #950
2024-08-05 21:13:41 -07:00
bd_
0806c621c5 docs: change JP translation of reactive component 2024-08-04 21:28:59 -07:00
bd_
7a3b782fae
docs: documentation for general reactive components (#946) 2024-08-04 20:44:10 -07:00
bd_
8e7526e711
Connect reactive components to MenuItems (#944)
* refactor: generalize support for arbitrary parameters as conditions

* feat: automatically assign Menu Item parameters

* feat: ReactiveComponents respond to MenuItems

* feat: AvatarObjectReference tracks both paths and direct object references

* feat: set isSaved/isSynced/default values from MenuItem

* feat: Object Toggle preview supports menu items and manipulating parent objects

* feat: reactive previews respond to menu item default value states

* chore: update NDMF dependency
2024-08-04 19:31:43 -07:00
bd_
bf9266f054 1.10.0-alpha.6 2024-08-03 21:06:31 -07:00
bd_
d999f799fb
fix: shapekey deletion logic broke all bones in the mesh (#940) 2024-08-03 21:05:58 -07:00
bd_
c50b3526f6
feat: expose per-component toggles to the NDMF plugin preview UI (#941) 2024-08-03 21:05:10 -07:00
bd_
32dc864d8d
feat: add Object Toggle component (#942)
* feat: add Object Toggle component

* docs: Object Toggle docs

* chore: add missing HelpURL

* chore: fix broken test
2024-08-03 19:56:07 -07:00
bd_
366ff0832f
fix: Scale Adjuster breaks physbones (#938)
Scale Adjuster introduces child transforms, and thus needs to add PB exclusions
to avoid breaking parent PB chains.

Closes: #924
2024-07-30 08:44:42 -07:00
bd_
08b3880d23 docs: actually actually fix the docs build this time 2024-07-28 20:46:19 -07:00
bd_
7beb5bf09b Revert "ci: fix docs build"
This reverts commit 17a85325f8707101c87228f294cbdb592407369e.
2024-07-28 20:40:50 -07:00
bd_
22555632bf Revert "ci: actually fix docs configuration"
This reverts commit e6af038379136e237eaa62e80874fcd95ce3b118.
2024-07-28 20:36:44 -07:00
bd_
e6af038379 ci: actually fix docs configuration 2024-07-28 20:35:12 -07:00
bd_
17a85325f8 ci: fix docs build 2024-07-28 20:31:44 -07:00
bd_
d8e01234f0
feat: delay GameObjects turning OFF by one frame, when they control ShapeChangers (#934)
Closes: #918
2024-07-28 20:22:32 -07:00
bd_
0bc64eb755 1.10.0-alpha.5 2024-07-28 19:11:29 -07:00
bd_
50c5bd6001
docs: fix broken anchor link (#933) 2024-07-28 19:10:26 -07:00
bd_
925d601a1b
fix: missing observe in ShapeChangerPreview (#932)
Closes: #917
2024-07-28 18:53:23 -07:00
dependabot[bot]
749d4dac4f
chore(deps): bump softprops/action-gh-release in /.github/workflows (#929)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.6 to 2.0.8.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](a74c6b72af...c062e08bd5)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-28 18:39:30 -07:00
bd_
8dd4426e64
chore: update for NDMF 1.5.0-beta.0 API changes (#931) 2024-07-28 18:39:18 -07:00
nadena-dev-ci
28de60a31f
New translations en-us.json (Chinese Traditional) (#923) 2024-07-28 16:56:29 -07:00
bd_
b9b7677e3a
fix: heuristic matching is performed even when an exact hips candidate is found (#922) 2024-07-28 16:56:21 -07:00
dependabot[bot]
9c96ae2010
chore(deps): bump nathanvaughn/actions-cloudflare-purge (#920)
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from e0eca002a6d4e05a974d8eadaf0909776df25ce3 to 367672c723960cd03bb7d8c2c4d89062a3fc1fac.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](e0eca002a6...367672c723)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-08 08:49:02 -07:00
bd_
57fe84548c
feat: shape changer can respond to multiple parent objects being animated (#916)
* refactor: generalize the shape changer implementation a bit

* feat: shape changer can respond to multiple parent objects being animated

Closes: #865
2024-07-06 21:39:42 -07:00
bd_
746a72f60b
fix: unused/hidden subparameters are retained and break builds (#914) 2024-07-06 21:34:15 -07:00
bd_
f3168253f6
fix: menu item is not considered for unused parameter detection (#915) 2024-07-06 21:15:28 -07:00
bd_
bdb2dc2a42
fix: NRE in ScaleAdjusterPreview (#913) 2024-07-06 18:42:56 -07:00
bd_
2efcc670df
fix: performance issues with Scale Adjuster Preview (#912)
* fix: performance issues with Scale Adjuster Preview

* chore: update .gitignore
2024-07-03 12:00:27 +09:00
anatawa12
65d229d338
ci: add zipSHA256 support (#909) 2024-07-02 12:49:55 +09:00
bd_
11ca336ece 1.10.0-alpha.4 2024-07-01 20:38:49 -07:00
bd_
806d31fd82
refactor: remove reactive query (#911) 2024-07-02 12:38:27 +09:00
dependabot[bot]
4ad38c1229
chore(deps): bump softprops/action-gh-release in /.github/workflows (#905)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.5 to 2.0.6.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](69320dbe05...a74c6b72af)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-25 22:19:48 +09:00
bd_
02ca58a3a9
fix: shape changer doesn't set the correct initial state for blendshapes it controls (#904)
Closes: #872
2024-06-24 12:04:29 +09:00
bd_
b3142d7f11
chore: minor cleanups, unit tests (#901) 2024-06-24 11:14:18 +09:00
Jeremy Lam aka. Vistanz
90dfc1822c
Implement VRCAnimatorPlayAudio handling logic (#899)
* feat: Implement VRCAnimatorPlayAudio handling logic (Quick & Dirty)

* chore: Remove redundant PlayAudioHolder and debug logs
2024-06-24 10:19:34 +09:00
bd_
70aee65472 docs: fix some more links 2024-06-22 18:29:10 -07:00
bd_
3937657d35 docs: fix broken admonitions 2024-06-22 18:25:01 -07:00
nadena-dev-ci
65dc560429
New translations en-us.json (Chinese Traditional) (#894) 2024-06-23 10:14:35 +09:00
bd_
9adec1e5e7
fix: null reference exception from ScaleAdjusterPreview (#896) 2024-06-23 10:09:59 +09:00
bd_
76d5f882eb
chore: implement preview refresh (#893)
* chore: implement refresh for ScaleAdjusterPreview

* chore: implement refresh in ShapeChangerPreview
2024-06-23 10:09:51 +09:00
bd_
ae3e163bd4 docs: fix links 2024-06-22 18:04:56 -07:00
bd_
6a82c6201f docs: CSS adjustments 2024-06-22 18:03:22 -07:00
bd_
04fc7ac69a docs: overview for outfit creators 2024-06-22 17:59:00 -07:00
nadena-dev-ci
14c9da940f
New Crowdin updates (#892)
* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Traditional)
2024-06-22 10:03:29 +09:00
dependabot[bot]
fa683e2675
chore(deps): bump braces from 3.0.2 to 3.0.3 in /docs-site~ (#888)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 22:16:31 -07:00
dependabot[bot]
208987df07
chore(deps): bump ws from 7.5.9 to 7.5.10 in /docs~ (#889)
Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 22:16:15 -07:00
dependabot[bot]
7d3eca08f2
chore(deps): bump ws from 8.14.2 to 8.17.1 in /docs-site~ (#887)
Bumps [ws](https://github.com/websockets/ws) from 8.14.2 to 8.17.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.14.2...8.17.1)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 21:59:23 -07:00
dependabot[bot]
7b7af16101
chore(deps): bump braces from 3.0.2 to 3.0.3 in /docs~ (#884)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-17 05:26:52 -07:00
bd_
0626cb308c 1.10.0-alpha.3 2024-06-16 19:48:15 -07:00
bd_
4c20d1e052
chore: update for NDMF API changes (#883) 2024-06-17 11:47:54 +09:00
bd_
628c07a505
fix: synced layers with substatemachines are broken (#882)
repro case provided by @anatawa12
2024-06-17 08:26:00 +09:00
Chigiri Tsutsumi
72d7a7381a
Fix links in Japanese docs (#881) 2024-06-13 10:14:09 +09:00
bd_
75ebb74924
fix: scale adjuster proxy bones appear in hierarchy (#878) 2024-06-08 11:47:24 +09:00
bd_
719c39da6e 1.10.0-alpha.2 2024-06-06 20:59:16 -07:00
bd_
d725ade36d
chore: update for new preview system API (#877) 2024-06-07 12:58:08 +09:00
bd_
a0f27ba70f
chore: upgrade docusaurus version (#868) 2024-06-03 13:28:59 +09:00
bd_
3a3ad4b57c 1.10.0-alpha.1 2024-06-02 21:28:40 -07:00
bd_
14897926bb
fix: multiple animation generation bugs in shape changer (#867) 2024-06-03 13:28:14 +09:00
bd_
66f3e7075c
docs: document shape changer (#866) 2024-06-03 11:35:35 +09:00
bd_
865dae7dfc 1.10.0-alpha.0 2024-06-02 17:55:37 -07:00
bd_
8d3da50b37
feat: MA Shape Changer (#863)
* chore: migrate Scale Adjuster to NDMF preview system

* feat: MA Shape Changer

* chore: update NDMF dependency

* fix: unit test failure
2024-06-03 09:52:08 +09:00
bd_
32c538a536
chore: remove 2019 support (#864) 2024-06-03 09:32:41 +09:00
Mooncake Sugar
9cd91dd094
fix(docs): make the buttons placement style on the top page of the document responsive (#857) 2024-05-22 22:31:46 +09:00
dependabot[bot]
445b4990f7
chore(deps): bump softprops/action-gh-release in /.github/workflows (#854)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](9d7c94cfd0...69320dbe05)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-18 09:05:27 +09:00
bd_
11abeb853b 1.9.13 2024-05-12 16:20:40 -07:00
bd_
c9db3debcf
chore: fix compile warnings (#853) 2024-05-13 07:47:14 +09:00
dependabot[bot]
1c0be75e28
chore(deps): bump nathanvaughn/actions-cloudflare-purge (#844)
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from 3ae45672b053b6e981788270206025fb3358d502 to e0eca002a6d4e05a974d8eadaf0909776df25ce3.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](3ae45672b0...e0eca002a6)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-13 05:22:39 +09:00
nadena-dev-ci
06a53e2e94
New translations en-us.json (Chinese Traditional) (#852) 2024-05-13 05:22:25 +09:00
bd_
bc12e3a985
change: MA Info is now a normal editor window (#850) 2024-05-13 05:19:55 +09:00
bd_
61a70feed7
fix: remove spammy "Invalidated job!" message (#847) 2024-05-07 12:10:34 +09:00
bd_
2af603e365
fix: NRE in EasySetupOutfit (#846)
Fixes: #840
2024-05-07 10:43:53 +09:00
bd_
e1e313f10b 1.9.12 2024-04-21 18:27:43 -07:00
bd_
c111b29fbb
fix: modular avatar parameters is super slow (#834) 2024-04-22 10:26:11 +09:00
bd_
3ebc4fb2cf 1.9.11 2024-04-21 17:01:21 -07:00
bd_
926ea255cb
feat: add menu option to disable "modular avatar information" display (#833)
* feat: add menu option to disable "modular avatar information" display

Closes: #815
2024-04-22 09:00:37 +09:00
nadena-dev-ci
0fc9f5d86e
New translations en-us.json (Chinese Traditional) (#829) 2024-04-16 14:33:35 +09:00
bd_
2467b5bc28
feat: add support for A-pose/T-pose conversion in Setup Outfit (#828)
* feat: add support for A-pose/T-pose conversion in Setup Outfit

* chore: 2019 compat

* chore: minor cleanups

* chore: 2019 fixes
2024-04-16 14:33:26 +09:00
bd_
84ab43b2af
fix: self-referencing menus result in stack overflow (#827)
Closes: #826, #810
2024-04-16 14:33:17 +09:00
nadena-dev-ci
a88385a0da
New Crowdin updates (#824)
* Update source file en-US.json

* New translations en-us.json (Japanese)

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2024-04-15 11:56:35 +09:00
bd_
edde55d9f2
fix: missing localization for blend tree missing error (#823) 2024-04-15 11:53:22 +09:00
dependabot[bot]
37ae033248
chore(deps): bump undici from 5.28.3 to 5.28.4 in /docs-site~ (#809)
Bumps [undici](https://github.com/nodejs/undici) from 5.28.3 to 5.28.4.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.28.3...v5.28.4)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 11:51:22 +09:00
dependabot[bot]
c37013c840
chore(deps): bump tar from 6.2.0 to 6.2.1 in /docs~ (#819)
Bumps [tar](https://github.com/isaacs/node-tar) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.2.0...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 11:51:13 +09:00
bd_
b25359a14a
fix: Scale Adjusters outside an avatar throw exceptions (#822)
* fix: Scale Adjusters outside an avatar throw exceptions

* fix: improve scale adjuster performance
2024-04-15 11:47:39 +09:00
bd_
8d64c63f49
fix: disable parameter cost check for now (#821)
This creates compatibility issues with VRCF, as well as being
run in the wrong phase of processing in any case.

At some point this will need to be restored, as part of a new
NDMF processing phase that runs much later in the build.

Fixes: #813, #806
2024-04-15 11:43:16 +09:00
dependabot[bot]
b23c0c1a1c
chore(deps): bump nathanvaughn/actions-cloudflare-purge (#814)
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from f70c63827b539cf48eb3a29fdaa7547eca4dede4 to 3ae45672b053b6e981788270206025fb3358d502.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](f70c63827b...3ae45672b0)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-14 10:26:59 +09:00
dependabot[bot]
0bae438edd
chore(deps): bump tar from 6.2.0 to 6.2.1 in /docs-site~ (#818)
Bumps [tar](https://github.com/isaacs/node-tar) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.2.0...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-14 10:26:28 +09:00
bd_
59eb72cb2c
Create FUNDING.yml 2024-04-04 21:29:42 -07:00
bd_
c1fbee721f 1.9.10 2024-03-28 09:38:40 +00:00
bd_
7881aa920e
fix: auto-rename PB parameters are not applied on animators (#803) 2024-03-28 09:38:05 +00:00
bd_
cb2fd75ec6 1.9.9 2024-03-27 11:10:03 +00:00
dependabot[bot]
dffb9f7418
chore(deps): bump express from 4.18.2 to 4.19.2 in /docs~ (#802)
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-26 08:03:33 -07:00
bd_
51bedcffef 1.9.9-rc.3 2024-03-26 14:34:07 +00:00
bd_
6da55dc08c
fix: NRE in ProxyManager.MapBone (#801) 2024-03-26 14:20:39 +00:00
nadena-dev-ci
16642454fc
New Crowdin updates (#793)
* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Korean)

* New translations en-us.json (Korean)

* New translations en-us.json (Korean)
2024-03-25 10:10:02 +00:00
bd_
cb3ada9072
perf: skip rename processing when there are no relevant mappings (#799) 2024-03-25 10:09:51 +00:00
bd_
0024be06e0
fix: FreeSegment "segment not found" errors (#800)
Zero-length allocations could result in multiple entries with the same offset in the segment map. This would then break subsequent lookups.

Fixed by increasing these allocations to a minimum length of one.
2024-03-25 10:09:43 +00:00
dependabot[bot]
16279e0b65
chore(deps): bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /docs~ (#798)
Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
- [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: webpack-dev-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-25 10:09:34 +00:00
dependabot[bot]
61e97344ea
chore(deps): bump softprops/action-gh-release in /.github/workflows (#795)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.2 to 2.0.4.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](d99959edae...9d7c94cfd0)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-19 16:19:05 +09:00
bd_
8a6c1c86c0 1.9.9-rc.2 2024-03-17 17:07:33 +09:00
bd_
a23acc6537
feat: use NDMF parameter info hooks to remap parameters (#792) 2024-03-17 17:07:13 +09:00
bd_
9aa3751e03
fix: don't use GUID references in asmdef (#791)
Closes: #790
2024-03-17 17:00:29 +09:00
bd_
f92d10cf50
fix: NullRefExceptions from inspectors (#789)
* fix: NullReferenceError while deleting a GameObject with parameter usage UI open

* fix: NullRefException from editor when moving a Menu Installer outside of an avatar
2024-03-16 20:50:41 +09:00
nadena-dev-ci
a630cfc316
New translations en-us.json (Chinese Traditional) (#787) 2024-03-16 20:13:13 +09:00
nadena-dev-ci
a83f1dca7c
New Crowdin updates (#776)
* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Japanese)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Traditional)
2024-03-16 18:20:57 +09:00
dependabot[bot]
103deba015
chore(deps): bump follow-redirects from 1.15.4 to 1.15.6 in /docs~ (#786)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-16 18:19:54 +09:00
bd_
7f7f344963 1.9.9-rc.1 2024-03-16 17:38:37 +09:00
bd_
65797aa012
chore: add some additional profiling declarations (#785) 2024-03-16 17:37:03 +09:00
flower_elf
9516a5eafa
Remove unused translations and update localization (#778) 2024-03-16 16:09:09 +09:00
bd_
88cf2e14b7
chore: additional debugging to try to track down FreeSegment issues (#781) 2024-03-16 15:57:11 +09:00
bd_
12981d1060
fix: plugins with zero contributed bits are show in usage UI (#777) 2024-03-16 15:57:00 +09:00
ZenithVal
2c69bb2b76
Fix Audio Clip References in Animator (#780)
For the new VRC Play Audio State Behavior available in Open Beta
2024-03-16 15:55:34 +09:00
bd_
aa631f3b01 1.9.9-rc.0 2024-03-14 21:34:12 +09:00
bd_
654aec1aab
feat: add UI to show parameter usage (#773) 2024-03-14 21:33:44 +09:00
bd_
532e3bc250 chore: add missing meta file
Closes: #769
2024-03-14 15:38:00 +09:00
bd_
f4f26d2f67 1.9.8 2024-03-14 15:31:33 +09:00
dependabot[bot]
2f4e4bce5c
chore(deps): bump softprops/action-gh-release in /.github/workflows (#768)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](de2c0eb89a...d99959edae)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-11 15:09:21 +09:00
nadena-dev-ci
8a8b6a355c
New Crowdin updates (#765)
* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Chinese Traditional)
2024-03-11 11:28:51 +09:00
bd_
3f50da35f2
fix: potential null ref exceptions from scale adjuster (#767) 2024-03-11 11:20:34 +09:00
bd_
a801f0ee76
fix: try to protect against segment double free a bit more (#766) 2024-03-11 10:32:57 +09:00
flower_elf
fe8eeb1124
Refactor Chinese Simplified Localization (#764)
* Refactor to improve readability

* Fix

* Fix tooltip text for localOnly parameter in zh-Hans.json
2024-03-10 02:24:49 +09:00
nadena-dev-ci
902a84ead4
New Crowdin updates (#762)
* New translations en-us.json (Japanese)

* New translations en-us.json (Korean)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Traditional)

* Update source file en-US.json

* New translations en-us.json (Japanese)

* New translations en-us.json (Chinese Traditional)
2024-03-10 00:05:58 +09:00
bd_
4f05ff1981 1.9.7 2024-03-09 20:12:44 +09:00
nadena-dev-ci
4ab0078456
New Crowdin updates (#761)
* New translations en-us.json (Japanese)

* Update source file en-US.json

* New translations en-us.json (Japanese)

* New translations en-us.json (Chinese Simplified)
2024-03-09 19:57:33 +09:00
bd_
63cf4626e0 chore: adjust badge order 2024-03-09 19:33:22 +09:00
bd_
68a3f928a4 chore: add crowdin badge 2024-03-09 19:33:07 +09:00
bd_
5e7516a3f8
New Crowdin updates (#760)
* Update source file en-US.json

* New translations en-us.json (Japanese)

* New translations en-us.json (Chinese Traditional)

* Update source file en-US.json

* New translations en-us.json (Chinese Traditional)

* Update source file en-US.json

* New translations en-us.json (Japanese)

* New translations en-us.json (Korean)

* New translations en-us.json (Chinese Simplified)
2024-03-09 19:26:21 +09:00
bd_
02952437c0 chore: add Localization/README.md 2024-03-09 19:23:38 +09:00
bd_
ea2e1f026d
New Crowdin updates (#759)
* New translations en-us.json (Japanese)

* New translations en-us.json (Korean)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Chinese Traditional)
2024-03-09 19:19:08 +09:00
bd_
29920d1d91 Update Crowdin configuration file 2024-03-09 02:03:56 -08:00
bd_
0294fc16bd chore: apparently this config can't be in a subdirectory 2024-03-09 19:03:45 +09:00
bd_
81dddabf15 chore: move crowdin config out of unity's view 2024-03-09 19:03:08 +09:00
bd_
df05929cc2 Merge remote-tracking branch 'origin/main' into tct 2024-03-09 18:58:52 +09:00
bd_
12de13a947
chore: fix localization capitalization (#758) 2024-03-09 18:57:38 +09:00
bd_
0ff1da0734
fix: type corrections not applied to substatemachine exit transitions (#751)
Closes: #748
2024-03-09 18:55:31 +09:00
bd_
e31a33b82c
chore: configure crowdin (#756) 2024-03-09 18:51:14 +09:00
bd_
17e6c22335
fix: potential null reference exceptions from ProxyManager (#750)
* chore: fix incorrect namespace

* fix: potential null reference exceptions from ProxyManager
2024-03-09 18:08:38 +09:00
Reina_Sakiria
01d24f6809
fix: no purge MoveIndependently (#749) 2024-03-09 17:57:15 +09:00
bd_
37e7ebcae1 1.9.6 2024-03-08 20:25:43 +09:00
bd_
95a686609d
fix: Visible Head Accessory breaks transform animations (#747)
Closes: #743
2024-03-08 17:59:30 +09:00
bd_
d85bbb257c
fix: nullref from Setup Outfit on non-humanoid rigs (#746)
Closes: #742
2024-03-08 17:59:21 +09:00
bd_
fcc3752bcc
fix: double free message from armature lock (#745)
Closes: #741
2024-03-08 17:59:13 +09:00
bd_
f7e574654f
fix: parent scale ignored in Scale Adjuster (#744)
Closes: #740
2024-03-08 17:59:04 +09:00
夜嵐蝶Alma
eabf6422ec
Update zh-hant.json.meta
delet timecreated
2024-03-07 11:55:06 +08:00
夜嵐蝶Alma
9905da339e
Update zh-hant.json.meta
Add timecreated
2024-03-07 11:31:08 +08:00
夜嵐蝶Alma
76de98e07e
add zh-hant.json.meta 2024-03-07 10:54:35 +08:00
夜嵐蝶Alma
fa7eaf916f
Update zh-hant.json 2024-03-07 10:37:36 +08:00
夜嵐蝶Alma
9bd54a6a78
Merge branch 'bdunderscore:main' into main 2024-03-07 09:18:55 +08:00
bd_
717e40f7f1 1.9.5 2024-03-06 17:52:28 +09:00
bd_
6cc687d1fd
fix: broken humanoid rigs can break assumptions made in EasySetupOutfit (#737)
Closes: #735
2024-03-06 17:51:43 +09:00
bd_
c67d28ca1b
fix: scale adjuster isn't applied to disabled renderers (#736) 2024-03-06 17:22:47 +09:00
bd_
73c9d7bfff
chore: use forceRenderingOff for ProxyManager (#734)
Thanks to @TCL987 for the suggestion!
2024-03-06 17:16:48 +09:00
夜嵐蝶Alma
4c28600cce
Update zh-hant.json 2024-03-06 09:33:24 +08:00
夜嵐蝶Alma
6d48b069c2
Update zh-hant.json 2024-03-05 18:43:51 +08:00
夜嵐蝶Alma
57d482aa50
Merge branch 'bdunderscore:main' into main 2024-03-05 18:42:27 +08:00
bd_
42477aae45 1.9.5-rc.1 2024-03-05 19:13:28 +09:00
bd_
37b0f3c036
opti: fix perf regressions in new armature lock system (#729)
* opti: fix perf regressions in new armature lock system

... by avoiding reinitializing everything whenever any target bone moves.

* chore: fixing unity 2019 issues
2024-03-05 17:26:30 +09:00
kaikoga
d15bbe86a2
chore: Skip ApplyAnimatorDefaultValuesPass when not VRChat avatar (#731) 2024-03-05 17:20:43 +09:00
bd_
f077d24d48
fix: improved Scale Adjuster implementation (#730)
This new implementation avoids creating any internal objects within the avatar
itself, instead creating them as hidden scene root objects. We also move all update
processing to be driven by camera callbacks as well. These changes help improve
compatibility with tools such as FaceEmo, as well as being less likely to break when
other tools manipulate the avatar's hierarchy directly.
2024-03-05 17:19:54 +09:00
夜嵐蝶Alma
f258c24258
Update zh-hant.json 2024-03-05 13:00:05 +08:00
夜嵐蝶Alma
3251dd6cf2
Merge branch 'bdunderscore:main' into main 2024-03-04 20:00:29 +08:00
bd_
e39a77855a
fix: don't enable scale proxy when no relevant bones are used in the mesh (#728) 2024-03-04 13:26:09 +09:00
bd_
ee7b6f59ac 1.9.5-rc.0 2024-03-03 19:20:24 +09:00
bd_
7b21517bac
fix: bones whose name exactly matches prefix+suffix incorrectly match their parent (?) (#724)
Closes: #712
2024-03-03 19:19:53 +09:00
bd_
f6ac07e1cd
opti: perf improvements for armature lock (#714)
* opti: perf improvements for armature lock

* chore: unity 2019 compatibility

* chore: update comments
2024-03-03 17:34:48 +09:00
bd_
f7b12d7f82
fix: ScaleAdjuster breaks scene view selection (#718)
... fixed by reimplementing ScaleAdjuster (again!)
2024-03-03 17:26:23 +09:00
bd_
a9141a6cfe
fix: incorrect/unclear errors from Setup Outfit (#723)
Closes: #721
2024-03-03 17:26:14 +09:00
bd_
962a75f227
fix: parameter order is shuffled (#722)
Closes: #713
2024-03-03 17:16:28 +09:00
夜嵐蝶Alma
b0686f5e46
Update zh-hant.json
錯字
2024-03-02 22:09:26 +08:00
夜嵐蝶Alma
d60a03a376
Update zh-hant.json
https://discord.com/channels/1204260193417035816/1213405391925288970
https://discord.com/channels/1204260193417035816/1213401696538075156
2024-03-02 22:06:46 +08:00
夜嵐蝶Alma
15dfc5ad9f
update zh-hant.json 2024-02-29 00:35:03 +08:00
夜嵐蝶Alma
598dc110f8
Update Localization for zh-hant.cs 2024-02-29 00:33:06 +08:00
bd_
8e6d8302ef 1.9.4 2024-02-27 19:27:38 +09:00
bd_
6c4c0afb06
fix: change attachment mode causes non-undoable transform movement (#710)
Closes: #655
2024-02-27 19:27:24 +09:00
bd_
97fe8075a6
feat: add support for VRoid Hub armatures in Setup Outfit (#709) 2024-02-27 19:02:04 +09:00
bd_
8ec1d92b6f
chore(docs): docs dependency update and minor fixes (#708)
* chore(docs): update dependencies

* fix(docs): images are squished when too large for their container
2024-02-27 17:45:25 +09:00
bd_
b7e1c7af34
chore: bump NDMF dependency (#707) 2024-02-27 17:38:06 +09:00
bd_
e0c8061a8d
fix: ScaleAdjuster causes console errors when a mesh is missing (#706)
* fix: ScaleAdjuster causes console errors when a mesh is missing

* chore: hide ScaleAdjusterRenderer component
2024-02-27 17:09:01 +09:00
bd_
e7b09fd787
fix: ScaleAdjuster breaks in play mode (#705) 2024-02-27 17:03:36 +09:00
bd_
e590113a28 1.9.3 2024-02-26 19:03:03 +09:00
bd_
e06e83daba
fix: issues with Scale Adjuster on 2019 (#703)
Harmony patches were not being loaded for VRCSDK 3.4.x, causing some issues with component enabled state checkboxes being incorrect.

Additionally, we need to reset component states before assembly reload and scene save.
2024-02-26 18:56:43 +09:00
bd_
b96ed3113b
chore: bump NDMF dependency to 1.3.5 (#702) 2024-02-26 18:38:58 +09:00
bd_
8c435874ac
fix: untranslated warning generated when multiple parameters remap to the same name (#698)
* fix: untranslated warning generated when multiple parameters remap to the same name

Fixed by allowing this case and applying normal parameter type resolution rules.

Closes: #694

* chore: enable accidentally disabled unit test
2024-02-26 18:20:35 +09:00
bd_
2f67b9509b
fix: handle AnimatorOverrideController in Merge Animator (#697)
Closes: #692
2024-02-26 18:03:28 +09:00
bd_
7a2385352c
fix: noisy memory leak warning on Unity 2019 (#700)
Closes: #696
2024-02-26 18:03:16 +09:00
bd_
1666f96d61
fix: logspam caused by ScaleProxy on unity 2019 (#699) 2024-02-26 15:30:42 +09:00
bd_
0a82c59cd1 1.9.2 2024-02-22 18:30:41 +09:00
bd_
e7a317b896
fix: MergeDirectBlendTree overwrites animator default parameters with zeroes (#689) 2024-02-22 18:30:24 +09:00
bd_
4e61000e57 chore: add missing localizations 2024-02-21 20:44:05 +09:00
bd_
48e8a53090 1.9.1 2024-02-21 20:40:51 +09:00
bd_
f99930999e
fix: compatibility break with animator defaults (#686)
Changes in 1.9.0 broke existing avatars that used animators with
different default values than the MA Parameters fields. This change
makes overriding the animator defaults require an explicit configuration;
this is technically a change which would require a minor version bump,
but as this is addressing a major-version-level compatibility break in 1.9.0,
we're going to push this out at a minor version this time.
2024-02-21 20:40:31 +09:00
dependabot[bot]
f253ba0901
chore(deps): bump ip from 2.0.0 to 2.0.1 in /docs-site~ (#685)
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 20:35:25 +09:00
dependabot[bot]
401b92cb52
chore(deps): bump ip from 2.0.0 to 2.0.1 in /docs~ (#684)
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 20:35:19 +09:00
bd_
9e5e75676c chore(docs): clarify NDMF versioning policy 2024-02-20 20:01:18 +09:00
bd_
a86e28a037 1.9.0 2024-02-20 19:13:40 +09:00
bd_
b9a5700a7a
chore: remove dead code (#683) 2024-02-20 19:13:08 +09:00
bd_
d26ac60be5
fix: build fails when entries in the bones array are null (#682)
* fix: build fails when entries in the bones array are null

* chore: skip bone remapping when no Scale Adjusters are in use
2024-02-19 17:27:36 +09:00
bd_
f6a2da8b8d 1.9.0-rc.4 2024-02-18 21:57:18 +09:00
bd_
42ca90a6bc
fix: crash when undoing setup outfit (#680)
Closes: #571
2024-02-18 21:56:59 +09:00
bd_
d57e211d0b
fix: minor issues with scale adjuster (#679)
* fix: undo operations can cause scale adjuster to perma-disable meshes

* fix: tool is left hidden after scale adjuster is deleted
2024-02-18 21:47:48 +09:00
bd_
6eab55ae26 1.9.0-rc.3 2024-02-18 20:22:30 +09:00
bd_
56a203c531 chore: remove stray .meta file 2024-02-18 20:21:52 +09:00
bd_
197d847514
fix/reimplement: scale adjuster results in infinite loops sometimes (#677)
Closes: #676
2024-02-18 20:21:26 +09:00
bd_
e01b707916
chore: remove stray debug print (#678) 2024-02-18 20:06:15 +09:00
bd_
0d4378764a
chore: add additional unit test (#675) 2024-02-17 20:12:09 +09:00
dependabot[bot]
d6397880e0
chore(deps): bump undici from 5.26.3 to 5.28.3 in /docs-site~ (#671)
Bumps [undici](https://github.com/nodejs/undici) from 5.26.3 to 5.28.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.26.3...v5.28.3)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-17 19:31:13 +09:00
bd_
c054d48c38 1.9.0-rc.1 2024-02-17 19:29:39 +09:00
bd_
648c9a9608
feat: improvements to armature tracking (#665)
* opti(armature-lock): parallelize burst jobs for armature lock processing

* feat: continue armature tracking when the MAMA GameObject is disabled

Closes: #500

* feat: add global toggle for armature locking

Closes: #484
2024-02-17 19:20:08 +09:00
bd_
27f0557367
fix: float conversion breaks sub-state-machine entry transitions, including FaceEmo (#674)
* fix: float conversion breaks substatemachine entry transitions

Closes: #669

* fix: unnecessary type conversions
2024-02-17 19:19:35 +09:00
bd_
54d4e974db
feat: convert animator parameters to float when types are inconsistent (#662) 2024-02-12 19:35:11 +09:00
bd_
cc6ecd4f90
Update parameters docs and Saved field handling (#661)
* docs: new parameters UI documentation

Closes: #635

* feat(params), changelog-callout: adjust handling of Saved flag with parameters

* chore: fix docs links
2024-02-12 19:24:35 +09:00
bd_
befa5e421c
chore(deps): Update NDMF dependency (#660) 2024-02-12 16:45:48 +09:00
bd_
e8f7144b6c
fix: Rename Parameters should not impact sub-animator components (#659)
Sub-animators have an independent parameter namespace from the main avatar, so we shouldn't
rename them.
2024-02-12 14:59:50 +09:00
bd_
2cf5967a42
feat: allow animator-only defaults to be set using MA Parameters (#648)
* feat: allow animator-only defaults to be set using MA Parameters

* chore: add unit tests for new default parameter behavior
2024-02-12 14:59:39 +09:00
kaikoga
5359e3b006
chore: Fix non-VRChat support (#650)
* add referenced assembly

* remove unused usings

* MA Merge Blend Tree is VRC specific

because it expects VRC style Animator Layer setup

* PruneParametersPass is VRChat specific

* fix: use FindAvatarTransformInParents() to be more cross platform

* fix MergeArmatureHook: nop logic for PhysBones if we do not dedup PhysBones

* fix AnimatorCombiner: ignore VRC components when non-VRC

btw, is AnimatorCombiner VRC specific?

* conditional compile some VRChat specific tests
2024-02-12 14:59:23 +09:00
dependabot[bot]
900c9d2a02
chore(deps): bump nathanvaughn/actions-cloudflare-purge (#658)
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from 752b6dc9a31b2392c40f7ee9c0556a412383aa5e to f70c63827b539cf48eb3a29fdaa7547eca4dede4.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](752b6dc9a3...f70c63827b)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-12 14:52:06 +09:00
bd_
e6bcba718a
chore(ci): disable deferred expiration for pages assets 2024-02-12 13:30:20 +09:00
bd_
2751c88fea
fix: scale adjuster's hidden bones don't block PBs (#653) 2024-02-05 22:02:53 +09:00
bd_
6b181f3f57
fix: missing translations on "automatic" rename-to field (#652)
Closes: #638
2024-02-05 22:02:44 +09:00
bd_
0030012e17
fix: duplicate registrations for bone names break HBM (#651) 2024-02-05 21:52:34 +09:00
bd_
3d2052d8ff
fix: missing translations on "automatic" rename-to field (#649)
Closes: #638
2024-02-04 20:44:37 +09:00
dag-ed
6dcea7fa5e
add missing sdk parameters (#647) 2024-02-03 22:42:12 +09:00
bd_
c3d71958ea
docs: add instructions for dealing with disabled repos (#644) 2024-02-02 22:33:22 +09:00
bd_
13023d1f24 chore(docs): remove another stray english paragraph 2024-01-31 20:38:43 +09:00
bd_
00e0f8aa9f
chore(docs): fix stray english in JA docs (#641) 2024-01-31 20:29:58 +09:00
dependabot[bot]
1b6d06b033
chore(deps): bump actions/cache from 3 to 4 in /.github/workflows (#628)
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-28 20:13:49 +09:00
bd_
94170179ea
fix: world fixed object breaks android builds (#629)
Closes: #581
2024-01-28 20:13:33 +09:00
bd_
1fc9c2d4ac
feat(params): Allow for MA Parameters to _not_ specify a default value (#636)
* feat(params): track whether a default value was explicitly set

* feat(params): improve default value resolution and error handling
2024-01-28 14:27:43 +09:00
bd_
86fc302fa5
ui(parameters): Rebuild MAParameters UI for Unity 2022 (#634) 2024-01-27 20:06:22 +09:00
bd_
07d61b25b2
fix: language list not populated until a MA editor is shown (#624) 2024-01-14 16:57:48 +09:00
bd_
2d1757a975
chore(test): add additional tests (#623) 2024-01-14 16:57:40 +09:00
bd_
a6151de5be
fix: incorrect placeholder in jp translation (#622)
Closes: #618
2024-01-14 16:57:32 +09:00
dependabot[bot]
c6698f4070
chore(deps): bump follow-redirects from 1.15.3 to 1.15.4 in /docs~ (#620)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.3 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.3...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-12 20:02:27 +09:00
bd_
2150d60baa
chore(ci): fix another yarn install --immutable issue (#616) 2024-01-07 17:25:23 +09:00
bd_
d0b4dd67e5
fix: issues with blendtree handling in AnimationDatabase (#615)
Closes: #609
2024-01-07 17:07:50 +09:00
bd_
66d3eee78d
feat: detect blendtree parameters in MA Parameters UI (#614) 2024-01-07 15:56:47 +09:00
bd_
1d6a1634db
docs: add notes on NDMF pass versioning policy (#612) 2024-01-07 15:18:33 +09:00
bd_
7430996adc chore(docs): disable yarn --immutable
yarn --immutable seems to be unreliable due to https://github.com/yarnpkg/berry/issues/5795
2024-01-07 14:49:23 +09:00
bd_
85cd118622 chore(docs): update dependencies for CF worker site 2024-01-07 14:19:29 +09:00
bd_
6689c15ce9
fix: improve null checks in CloneControl (#597)
Fixes: #499
2023-12-28 17:58:47 +09:00
bd_
29e0671cfe
fix: incorrect behavior when parent of a MA Move Independently moves (#596) 2023-12-28 17:58:37 +09:00
bd_
2ad324380e
fix: ScaleAdjuster not usable when gizmos are not enabled (#595)
Fixes: #588, #589
2023-12-28 16:25:23 +09:00
bd_
de71e1f544
docs: add reference to logo distribution guidelines in COPYING (#594) 2023-12-28 16:25:13 +09:00
bd_
d87d057de9 1.9.0-rc.0 2023-12-27 20:49:15 +09:00
bd_
f0a4db0a06
fix: some issues where MoveIndependently did not properly update (#587) 2023-12-27 20:47:25 +09:00
kurotu
efdb5dbe8b
docs(world-fixed-object): fix description for Quest (#586)
Currently World Fixed Object prevents Quest build (#581).
2023-12-27 20:30:23 +09:00
bd_
610ce40270
fix: remove duplicate animator merger and add parameter type mismatch error asset references (#585)
Closes: #549
2023-12-27 20:30:04 +09:00
bd_
2650566f9a
feat: add a component to perform nonuniform scale adjustments (#583) 2023-12-27 20:29:51 +09:00
bd_
4d3f49306e
fix: enable wordwrap for ESO error dialog (#584)
Closes: #576
2023-12-27 20:01:01 +09:00
bd_
a9a0fd648e
feat: prune empty layers (#579)
Closes: #554
2023-12-27 18:54:59 +09:00
bd_
9e4c876305
opti: prune garbage sample expression parameters found in VRChat's template asset (#578) 2023-12-26 16:10:45 +09:00
bd_
93aa4db3e8
fix: zero scale on outfit destroys transform data (#577)
Closes: #574
2023-12-26 16:10:38 +09:00
konsti219
e6ffd04110
fix: Replace Object dropping children (bdunderscore#547) (#575) 2023-12-25 20:53:39 +09:00
bd_
aa698565ab
feat: add merge blend tree component (#572)
* chore: refactor state machine clone logic out as a separate class

* feat: add layer priority and relative path root options to Merge Animator

* feat: add Merge Blend Tree component

* chore: adjust NDMF dependency

* docs: update merge-animator docs

* docs: merge blend tree docs
2023-12-22 17:17:40 +09:00
rurre
63043cb4ec
feat: Added BlendTree to right click create asset menu. (#555)
* Added BlendTree to right click create asset menu.

Not sure where to put it, so into the root editor folder it goes.

* Update CreateBlendTree.cs

* chore: add missing .meta file

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2023-12-22 16:16:09 +09:00
bd_
d297cf1cad
feat(error): Integrate with NDMF error reporting and localization system (#570)
* chore(i18n): initial integration with NDMF localization system

* feat(error): integrate with NDMF error reporting framework

Note that as part of this, the pre-build validation system has been disabled for now.
It didn't work very well with other NDMF plugins in the first place, so it's probably
for the best...

* chore: fix u2019 build errors
2023-12-21 17:38:46 +09:00
dependabot[bot]
a143b1edf7
chore(deps): bump nathanvaughn/actions-cloudflare-purge (#564)
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from 740447a7f5131ecc49a89a0f9382ea27b001196c to 752b6dc9a31b2392c40f7ee9c0556a412383aa5e.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](740447a7f5...752b6dc9a3)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-21 17:37:12 +09:00
dependabot[bot]
ca3633f64d
chore(deps): bump actions/download-artifact in /.github/workflows (#567)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-20 20:41:47 +09:00
dependabot[bot]
c4b61562b6
chore(deps): bump actions/upload-artifact in /.github/workflows (#565)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-20 20:41:38 +09:00
bd_
b3d5102ae5 chore(ci): Add VPM manifest for 2022 VRCSDK 2023-12-20 00:07:25 +09:00
dependabot[bot]
b5a698c904
chore(deps): bump nathanvaughn/actions-cloudflare-purge (#544)
Bumps [nathanvaughn/actions-cloudflare-purge](https://github.com/nathanvaughn/actions-cloudflare-purge) from 3b31015a54307a38ea48904fb367eeb0a753a66f to 740447a7f5131ecc49a89a0f9382ea27b001196c.
- [Release notes](https://github.com/nathanvaughn/actions-cloudflare-purge/releases)
- [Commits](3b31015a54...740447a7f5)

---
updated-dependencies:
- dependency-name: nathanvaughn/actions-cloudflare-purge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-17 14:51:34 +09:00
bd_
caf627926e ci: Enable 2022 tests 2023-12-17 14:42:08 +09:00
bd_
9964c024ec ci: rollback to GameCI v3
v4 seems to break the static license activation we're using currently.
The new activation system requires username/password, which is something
I'm not super happy with having available in pull request processing...
2023-12-17 14:28:47 +09:00
bd_
f9fa478b77 1.8.4 2023-12-13 18:43:50 +09:00
anatawa12
7c35aa014e
fix: do not merge PhysBone chain if the chain is partially different (#548)
* fix: do not merge PhysBone chain if the chain is partially different

* fix: condition is not correct

* test: add test partially same physbone chain
2023-12-12 20:23:23 +09:00
anatawa12
0e243aa4c6
fix: Erros in Unity 2022 due to GetBoneTransform (#550) 2023-12-12 19:49:32 +09:00
bd_
409501cb39
fix: visible head accessory editor breaks on prefabs (#543)
Closes: #534
2023-11-26 20:52:36 +09:00
bd_
1dacdc4b37
fix: name collisions with Bone Proxies break animation mappings (#542)
Closes: #540
2023-11-26 20:48:16 +09:00
bd_
7b309f391b
docs: remove mention of unitypackage installation (#541)
Closes: #539
2023-11-26 20:48:08 +09:00
dependabot[bot]
95c95f0f90
chore(deps): bump actions/github-script in /.github/workflows (#536)
Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-26 20:16:25 +09:00
dependabot[bot]
5369f893ca
chore(deps): bump game-ci/unity-test-runner in /.github/workflows (#535)
Bumps [game-ci/unity-test-runner](https://github.com/game-ci/unity-test-runner) from 3 to 4.
- [Release notes](https://github.com/game-ci/unity-test-runner/releases)
- [Commits](https://github.com/game-ci/unity-test-runner/compare/v3...v4)

---
updated-dependencies:
- dependency-name: game-ci/unity-test-runner
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-26 20:16:04 +09:00
aruma256
dd8d04d273
docs(ja/world-fixed-object): fix typo (#538)
アタバー → アバター
2023-11-26 20:13:23 +09:00
Gizmo
55101797be
chore(i18n): update translations (zh-hans) (#537) 2023-11-26 20:13:11 +09:00
bd_
8321781c67 1.8.3 2023-11-15 21:20:01 +09:00
bd_
3a729f48f8 chore(deps): bump NDMF dependency 2023-11-15 21:19:53 +09:00
bd_
b48555e2e0
fix: error report not displayed upon failure (#532) 2023-11-15 21:07:48 +09:00
bd_
e81ce64881
fix: null reference in Merge Armature after physbones are merged (#533) 2023-11-14 22:17:47 +09:00
bd_
07eedb370d
fix: Merge Armature inspector breaks animator editor styles (#531)
Also fix another style leak in ESO
2023-11-14 22:10:29 +09:00
bd_
1410503609
fix: select menu creates menu install targets in random order (#530)
Fixes: #508
2023-11-14 20:42:01 +09:00
bd_
f04171ddb4
chore(docs): upgrade docusaurus dependencies (#528) 2023-11-13 18:20:23 +09:00
bd_
3107d000a9 1.8.2 2023-11-12 20:13:39 +09:00
bd_
e7a7cba16d
chore: don't use GUIDs to reference asmdefs (#529) 2023-11-12 20:10:04 +09:00
bd_
4589f72bfa
chore(deps): update NDMF dependency (#527) 2023-11-12 20:04:46 +09:00
bd_
ed84e22910
fix: name collision issues with World Fixed Object (#525)
Closes: #519
2023-11-11 20:29:46 +09:00
kaikoga
3667dc319a
chore: Wrap VRC dependencies and VRCAvatarDescriptors (#504)
* add version defines

* refactor: prefer BuildContext.ctor() overload taking GameObject

* wrap unit tests entirely with MA_VRCSDK3_AVATARS

* wrap unit tests smart with MA_VRCSDK3_AVATARS

* wrap runtime entirely with MA_VRCSDK3_AVATARS

* wrap VRC.SDKBase.IEditorOnly with MA_VRCSDK3_AVATARS

* wrap editor entirely with MA_VRCSDK3_AVATARS

* fix AvatarObjectReference.Get(Component)

* wrap editor smart with MA_VRCSDK3_AVATARS

* wrap BuildContext smart with MA_VRCSDK3_AVATARS

* wrap PluginDefinition smart with MA_VRCSDK3_AVATARS

* style: move conditional compiles one step outside
2023-11-10 15:37:56 +09:00
bd_
3a34079aef
chore(docs): fix typo breaking docs rendering 2023-11-09 22:11:51 +09:00
bd_
a98b8fb457
feat: add UI for setting outfit position to match base avatar (#521) 2023-11-09 22:06:18 +09:00
bd_
892c7d6171 docs: fix issues with windows/linux yarn checksums being inconsistent 2023-11-09 18:30:33 +09:00
bd_
929b92858c ci(docs): improve debugging on yarn check 2023-11-09 18:30:33 +09:00
bd_
bd31cc22f5 test PR 2023-11-09 18:14:18 +09:00
bd_
17ba11694c ci(docs): Show diff on yarn install --immutable failure 2023-11-09 18:14:08 +09:00
bd_
178d60a46d ci(docs): add CI workflow to test docs-site yarn install 2023-11-09 18:12:55 +09:00
bd_
1a881e1e46 chore(docs): fix docs-site build issues 2023-11-09 18:08:55 +09:00
bd_
c86804db1f
fix: ESO selects the last hips candidate, when it should pick the first (#520)
Fixes: #509
2023-11-09 17:25:13 +09:00
dag-ed
c17df16652
fix missing physbone parameter suffixes (#517) 2023-11-09 15:34:33 +09:00
kaikoga
5f3e1dcf86
Refactor: Delete unused code for MAAssetBundle generation (#515)
* refactor: delete unused code for MAAssetBundle generation

* fix unit tests
2023-11-09 14:46:57 +09:00
bd_
0174b71bcc
fix(unity2022): inspector is broken on 2022 (#518) 2023-11-09 14:46:32 +09:00
bd_
0bab5d1dce chore: fix issues with Visible Head Accessory patch 2023-11-01 19:11:42 +09:00
bd_
344a03d8d6 chore: move schema files to project root 2023-11-01 19:10:53 +09:00
Reina_Sakiria
b4a64f2a4e
fix: Visible Head Accessory incorrectly applied when building for Quest standalone (#514) 2023-11-01 19:07:04 +09:00
nekobako
a5bc6c50ac
衣装側で PhysBone の影響下にあるボーンは、アバター側に同名のボーンがあっても統合しない (#465)
* chore: preserve outfit side PhysBone even if the bone names match

* chore: remove PhysBone pruning as it is no longer needed

* chore: show error if outfit PhysBones affect to humanoid bones

* test: replace DuplicatePBStripping test to PreserveOutfitPB test

* test: remove unnecessary PhysBone from TransformMappingHandledCorrectly test

* Revert "test: replace DuplicatePBStripping test to PreserveOutfitPB test"

This reverts commit 8fe8f158661d3d0bca1dcf790e71be82d8d93e68.

* Revert "chore: show error if outfit PhysBones affect to humanoid bones"

This reverts commit 4f3761ebf265cc31c2b0aac3dca0611f0eedf3f8.

* Revert "chore: remove PhysBone pruning as it is no longer needed"

This reverts commit b0c339e9d03042d6e09359e564e8b321105c044e.

* chore: restore duplicate PhysBone pruning

* test: add test for non duplicated bones

* chore: preserve outfit side PhysBone more than 1mm away from the avatar side bone

* test: remove PhysBone stripping tests that consider PhysBone properties

* test: add PhysBone stripping tests that consider bones distance

* fix: merge outfit side PhysBone that is just 1mm away from the avatar side bone

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2023-11-01 19:06:34 +09:00
dependabot[bot]
fc352bed22
chore(deps): bump actions/setup-node from 3 to 4 in /.github/workflows (#511)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-01 19:01:18 +09:00
dependabot[bot]
e59eda2b3d
chore(deps): bump @babel/traverse from 7.20.1 to 7.23.2 in /docs~ (#506)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.20.1 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 10:31:26 +09:00
dependabot[bot]
5949966461
chore(deps): bump undici from 5.26.0 to 5.26.3 in /docs-site~ (#501)
Bumps [undici](https://github.com/nodejs/undici) from 5.26.0 to 5.26.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.26.0...v5.26.3)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-18 23:28:43 +09:00
kaikoga
ae7103cf82
chore: use ndmf Avatar Root api where applicable (#482)
* expose ndmf AvatarRoot APIs through ma.RuntimeUtil

* refactor: prefer RuntimeUtil helpers for checking avatar root

* refactor: ndmf.BuildContext represents Avatar (log)

* refactor: ndmf.BuildContext represents Avatar (WorldFixed)

* refactor: ndmf.BuildContext represents Avatar (FirstPersonVisible)

* refactor: ndmf.BuildContext represents Avatar (BlendShapeSync)

* refactor: prefer FindAvatarTransformInParents() (ErrorReportUI)

* refactor: prefer FindAvatarTransformInParents() (Runtime)

* refactor: prefer FindAvatarTransformInParents() (Editor)

* delegate more ndmf AvatarRoot APIs through ma.RuntimeUtil
2023-10-15 18:44:53 +09:00
anatawa12
939e63c297
add HelpURL Attribute (#491)
* add HelpURL Attribute

Now you can open website with clicking ? button on the inspector

* docs: use language redirect

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2023-10-11 20:40:26 +09:00
bd_
907cb57b9e docs: use 302 redirect for language redirects 2023-10-11 20:38:34 +09:00
bd_
f3dd00b0e5 docs: fix lockfile 2023-10-11 20:31:41 +09:00
bd_
8dd46c5576 docs: fix accept-language handling 2023-10-11 20:27:29 +09:00
Tayou
bd1bb55569
add missing meta files (#492) 2023-10-11 20:14:06 +09:00
bd_
8116b96b9e
chore: remove dead code (#494) 2023-10-11 20:13:56 +09:00
bd_
a5b4833713 chore(deps-dev): update wrangler dependency 2023-10-11 20:09:20 +09:00
bd_
751618684b docs: add cache-control headers 2023-10-11 20:08:24 +09:00
bd_
9d744710da
docs: add redirect logic for docs site (#495) 2023-10-11 20:03:26 +09:00
bd_
27bd3496f1
ci: fix package.json not being added to releases 2023-10-10 18:34:08 +09:00
bd_
dac642ba6d 1.8.1 2023-10-09 19:01:33 +09:00
bd_
491cb97fb1
fix: null reference errors when apply on play triggers late (#490)
When an avatar is enabled after the scene is initially loaded, Merge Armature
would result in a lot of NullReferenceExceptions being logged.
2023-10-09 18:59:50 +09:00
bd_
68bc7ece54
fix: error report window not displayed on build failure (#488) 2023-10-09 18:43:26 +09:00
kaikoga
f538bf842f
chore: fix SceneManagement editor using declaration on unity 2021 (#483) 2023-10-09 15:55:27 +09:00
dependabot[bot]
b8f786dc4b
chore(deps): bump actions/checkout from 2 to 4 in /.github/workflows (#487)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-09 15:48:25 +09:00
bd_
a647c6a8d6
docs: update caniuse-lite (#481) 2023-10-08 16:31:06 +09:00
bd_
ccf67ac3f1
ci: improve docs upload/download perf (#480) 2023-10-08 16:23:16 +09:00
bd_
65d5af509e
ci: cherry-pickable docs workflow (#479) 2023-10-08 16:10:27 +09:00
bd_
dd2f15d533
chore: Update README.md 2023-10-08 15:41:33 +09:00
bd_
ddbc3b164b
chore: restructure repository to put package at top-level (#477)
* chore: rearrange package structure to have the package at the root

* ci: update CI workflows

* ci: fixing workflow bugs

* ci: recurse building .zip package

* ci: more fixes

* ci: add back in the nadena.dev VPM repo

* ci: fix tests
2023-10-08 15:39:57 +09:00
anatawa12
4a89a8738e
docs(ja/logo-usage): fix typo (#476) 2023-10-07 21:39:39 +09:00
bd_
bc1939f8a2 ci: trigger docs release when releases are released 2023-10-07 21:26:11 +09:00
bd_
68cb6c8530
docs: add logo usage guidelines and extending docs (#475) 2023-10-07 20:52:41 +09:00
dependabot[bot]
c97a1fa82e
chore(deps): bump postcss from 8.4.19 to 8.4.31 in /docs (#474)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.19 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.19...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-07 20:44:18 +09:00
bd_
2925ecf419 1.8.0 2023-10-07 20:38:56 +09:00
bd_
d35723c34d chore: adjust legacy AAO warning 2023-10-07 18:08:15 +09:00
bd_
4db96d2538
ci: use VRCSDK 3.4 for tests (#473) 2023-10-07 10:23:46 +09:00
bd_
11bf5e32d0
fix: unknown error from ESO when avatar descriptor is not found (#472) 2023-10-07 10:23:38 +09:00
bd_
8b60cdb6fc
chore: delete dead code (#470) 2023-10-06 19:21:43 +09:00
bd_
55e662be66
Update vpm-manifest.json 2023-10-05 19:16:55 +09:00
bd_
ef17cbbbf9 1.8.0-rc.0 2023-10-03 20:04:21 +09:00
bd_
3b8a3c3fd9 chore: update project settings 2023-10-03 19:57:26 +09:00
bd_
bf19bc1102
Update gameci.yml 2023-10-03 19:49:28 +09:00
bd_
7e8aa3f5f1
fix: fix issues with nested armature confusion in Easy Setup Outfit (#469)
This fixes issues with nested armature confusion by changing the name of the
Armature object (only).
2023-10-03 19:38:01 +09:00
bd_
56119c0779
Update gameci.yml 2023-10-03 19:26:11 +09:00
bd_
02ea485c08
Update gameci.yml - enable prettyprint of test results 2023-10-03 18:40:37 +09:00
bd_
c454bc1ed8
fix: blendshape sync not being processed (#466)
* Add integration test for blendshape sync

* fix: blendshape sync not being processed

This change refactors AnimationDatabase to be part of the same extension
context as the TrackObjectRenames functionality (which is renamed back to
PathMappings). This then allows us to sequence deactivation of this context
to come after blendshape processing completes.

Fixes: #461
2023-10-01 00:09:43 +09:00
anatawa12
46c1f7ce49
Add warning for legacy (non-ndmf) aao (#458)
* chore: restore some functions in AvatarProcessor for compile time legacy AAO compatibility

* feat: add warning for legacy Avatar Optimizer
2023-09-30 17:00:18 +09:00
Rinna Koharu
3f681a08de
位置追従モードの説明の日本語訳を修正 (#459) 2023-09-30 16:59:04 +09:00
bd_
23a8027222 docs: set trailingSlash: false 2023-09-30 16:52:40 +09:00
bd_
820c2b0b95
docs: fix build issues (#463) 2023-09-30 16:35:42 +09:00
bd_
af7a9c03ba 1.8.0-beta.2 2023-09-27 20:25:15 +09:00
bd_
bef17bbaf8
fix: Move Independently breaks armature lock (#457) 2023-09-27 20:24:42 +09:00
bd_
587084ffb7 docs: fix broken relative links 2023-09-27 20:23:10 +09:00
bd_
7227de11fd chore: update dev project settings 2023-09-27 20:15:40 +09:00
dependabot[bot]
c00f4323bb
chore(deps): bump @docusaurus/core from 2.4.1 to 2.4.3 in /docs (#445) 2023-09-27 11:12:53 +00:00
bd_
02b7aedb86
Revert "fix: avoid name collisions in setup outfit (#435)" (#456)
This reverts commit 6cbcde05f4e14308792ea32ad799f011c42ff7fe.

Adding a suffix broke enough people's workflows that it's probably
better to look for a more targeted solution to the misbinding issue
(once we have a repro).
2023-09-27 20:10:57 +09:00
dependabot[bot]
6b32b67344
chore(deps): bump @docusaurus/preset-classic in /docs (#446) 2023-09-27 11:07:43 +00:00
dependabot[bot]
3176dcad76
chore(deps-dev): bump @docusaurus/module-type-aliases in /docs (#444)
Bumps [@docusaurus/module-type-aliases](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases) from 2.4.1 to 2.4.3.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.4.3/packages/docusaurus-module-type-aliases)

---
updated-dependencies:
- dependency-name: "@docusaurus/module-type-aliases"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-27 20:03:16 +09:00
anatawa12
01ca90fd86
fix: error if MergeArmature is not under an avatar (#455) 2023-09-27 18:34:20 +09:00
bd_
64816e7e3c 1.8.0-beta.1 2023-09-26 20:27:15 +09:00
anatawa12
fc1abcfede
test: add test for runtime build (#452) 2023-09-26 19:55:39 +09:00
bd_
11b10a82d5
fix: NPEs resulting from bones being deleted under armature lock (#448)
Fixes: #447
2023-09-25 22:58:02 +09:00
anatawa12
37309125ea
fix: compile error on runtime build (#450) 2023-09-25 22:57:45 +09:00
bd_
8a770de016 1.8.0-beta.0 2023-09-24 17:16:30 +09:00
bd_
90615dc04e chore: fix error when entering play mode 2023-09-24 17:16:30 +09:00
bd_
af737379f8 chore: update unity generated files 2023-09-24 17:13:52 +09:00
bd_
f9e319bf49
feat: Unidirectional armature sync mode (#416) 2023-09-24 16:59:43 +09:00
bd_
f38eb55010
feat: Modular Avatar Move Independently (#417) 2023-09-24 16:59:15 +09:00
anatawa12
cd6e018d47
feat: MA World Fixed Object (#385) 2023-09-24 16:59:02 +09:00
bd_
38aa88c658 fix: AvatarTagComponent API compatibility break 2023-09-24 14:44:07 +09:00
bd_
9777a4f235 chore: remove submodule 2023-09-24 14:40:51 +09:00
bd_
5feee0a61a Merge remote-tracking branch 'origin/main' into 000/plugin 2023-09-24 14:38:29 +09:00
bd_
c9c9701e1d chore: unexpose animation context for now
This API is still a bit unstable; it'll probably be added in a future release.
2023-09-24 14:37:10 +09:00
bd_
6332825980 chore: update NDMF dependency 2023-09-24 13:34:51 +09:00
bd_
512a7b9995 fix: proxy animations not being preserved 2023-09-23 19:39:49 +09:00
bd_
1f313de484 update NDMF dependency 2023-09-20 19:25:00 +09:00
bd_
30112030d4 Add cleanup pass and exception reporting 2023-09-20 19:24:36 +09:00
bd_
7edb06279c 1.7.7 2023-09-20 18:52:00 +09:00
bd_
7ed0179b91
fix: null/missing expressions params/menus breaking builds (#441) 2023-09-20 18:49:20 +09:00
dependabot[bot]
cda95408d5
chore(deps): bump @algolia/client-search from 4.19.1 to 4.20.0 in /docs (#437)
Bumps [@algolia/client-search](https://github.com/algolia/algoliasearch-client-javascript) from 4.19.1 to 4.20.0.
- [Release notes](https://github.com/algolia/algoliasearch-client-javascript/releases)
- [Changelog](https://github.com/algolia/algoliasearch-client-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/algolia/algoliasearch-client-javascript/compare/4.19.1...4.20.0)

---
updated-dependencies:
- dependency-name: "@algolia/client-search"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-20 00:47:33 +09:00
dependabot[bot]
4dea809502
chore(deps-dev): bump @tsconfig/docusaurus from 2.0.0 to 2.0.1 in /docs (#438)
Bumps [@tsconfig/docusaurus](https://github.com/tsconfig/bases/tree/HEAD/bases) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/tsconfig/bases/commits/HEAD/bases)

---
updated-dependencies:
- dependency-name: "@tsconfig/docusaurus"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-20 00:47:29 +09:00
bd_
a837008f3a chore: use SerializedObject to clone animations 2023-09-19 19:20:24 +09:00
bd_
911dc7bb47
fix: [ESO] bounds are untransformed when root bone is inconsistent (#440)
Closes: #439
2023-09-19 18:29:44 +09:00
bd_
823b1215e7 chore: disable unitypackage generation 2023-09-18 01:57:21 +09:00
bd_
b6094584f0 ci: fixed? 2023-09-17 22:33:26 +09:00
bd_
c868fe9900 Add VPM repo to gameci step 2023-09-17 22:23:54 +09:00
bd_
b48fb90ad4 1.8.0-alpha.ndmf.1 2023-09-17 22:21:20 +09:00
bd_
2f27b13dc0 fix: Restore a couple of passes lost in the merge 2023-09-17 22:21:04 +09:00
bd_
370804a829 1.8.0-alpha.ndmf.0 2023-09-17 22:03:30 +09:00
bd_
a714cd9c14 Update NDMF version 2023-09-17 22:02:43 +09:00
bd_
b55fa356db Merge remote-tracking branch 'origin/main' into 000/plugin 2023-09-17 22:01:26 +09:00
bd_
f0aad41ea7 submodule update 2023-09-17 21:55:02 +09:00
bd_
a5ab271b59 docs improvements 2023-09-17 20:56:11 +09:00
bd_
0f338ec353 namespace refactor 2023-09-17 18:26:06 +09:00
bd_
90806cb300 Move animation utility APIs back to Modular Avatar for now 2023-09-17 18:16:27 +09:00
bd_
0669c01a91 git submodule update 2023-09-17 18:06:13 +09:00
bd_
685e690d3a
fix: workaround issues with double-Armature hack (#436)
fixes: #308
2023-09-15 21:00:08 +09:00
bd_
ee8b6d3119 1.7.6 2023-09-14 21:33:46 +09:00
bd_
6cbcde05f4
fix: avoid name collisions in setup outfit (#435)
The human avatar mapping system seems to use bone _names_ rather than full
_paths_ to identify bones. When the avatar armature and an outfit armature
are both present under the avatar root, this can result in misidentification
of outfit bones as avatar bones on the avatar animator. This in turn results
in issues with Bone Proxy's editor-side tracking logic.

This change adjusts setup outfit to ensure that there is always a prefix
and/or suffix set, renaming bones if necessary.

Note that this does not fully use outfit human avatar data to map bones yet;
this is mostly intended as a patch to resolve the issues that have been
reported recently, particularly around the stricter validations in SDK
3.3.0.
2023-09-14 21:33:22 +09:00
bd_
ebda9cf7d5
fix: fixup expressions menus to avoid validation errors (#434)
This change scales oversized expression menu items, and redacts undefined
parameters to avoid hard-to-diagnose build errors.
2023-09-14 21:24:20 +09:00
bd_
6af61302f0 chore: dependency and project settings update 2023-09-14 20:23:00 +09:00
anatawa12
c8e535cd7e
fix: Animator can cache incorrect humanoid bone mappings (#431)
When multiple bones with the same name exist in the initial hierarchy, the root Animator
can cache (prior to MA execution) bones that will later be deleted or renamed due to MA
action. While this isn't persisted to the avatar asset bundle, it can result in validation failures
blocking upload. To resolve this, invalidate this cache late in MA execution.
2023-09-14 19:28:49 +09:00
dependabot[bot]
29ca97e0c1
chore(deps): bump react-player from 2.12.0 to 2.13.0 in /docs (#428)
Bumps [react-player](https://github.com/CookPete/react-player) from 2.12.0 to 2.13.0.
- [Changelog](https://github.com/cookpete/react-player/blob/master/CHANGELOG.md)
- [Commits](https://github.com/CookPete/react-player/compare/v2.12.0...v2.13.0)

---
updated-dependencies:
- dependency-name: react-player
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 23:48:00 +09:00
dependabot[bot]
9e7fd463d4
chore(deps): bump actions/checkout from 3 to 4 in /.github/workflows (#427)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 23:47:46 +09:00
bd_
427038904f
Update export-gameci-license.yml 2023-09-10 20:58:49 +09:00
bd_
ed4d30abe4
Update export-gameci-license.yml 2023-09-10 20:58:14 +09:00
bd_
f169bbf87b
Create export-gameci-license.yml 2023-09-10 20:57:15 +09:00
bd_
b1e763fdb0 Update to new NDMF API 2023-09-10 17:14:19 +09:00
bd_
5320c474dd 1.7.5 2023-09-08 20:32:31 +09:00
bd_
eecac2350e
fix: improve handling of scale correction when root bone is null (#425) 2023-09-08 20:32:03 +09:00
bd_
f9c19c6d67
fix: automatic bounds does not account for armature scale (#423) 2023-09-08 19:59:26 +09:00
bd_
b6537da650
ui: improve setup outfit usability (#422)
Show a descriptive error when setup outfit fails (fixes #415).
Use HeuristicBoneMapper to fuzzy-match hips (fixes #414)
2023-09-08 19:42:16 +09:00
bd_
75fe74da53
fix: non-unit scale armatures result in incorrect constraint behavior (#421) 2023-09-08 18:44:09 +09:00
bd_
36b13b8192 chore: protect against prefab instances leaking into play mode 2023-09-05 20:16:41 +09:00
bd_
99386fc756 feat: NDMF integration 2023-09-04 23:18:23 +09:00
bd_
b155202714
fix: incorrect scaling for Visible Head Accessory (#412) 2023-09-03 18:10:17 +09:00
bd_
8251f3fcf7
fix: missing load in background flag on clap sample asset (#413) 2023-09-03 18:10:06 +09:00
bd_
dc0b329626 chore: add user dictionary 2023-09-03 18:09:33 +09:00
bd_
e3e7bc6e87 1.7.4 2023-08-28 21:25:49 +09:00
bd_
8da1c9d3be
fix: issues preventing error log from being displayed in some cases (#409) 2023-08-28 21:25:17 +09:00
dependabot[bot]
61de99e01f
chore(deps-dev): bump typescript from 5.1.6 to 5.2.2 in /docs (#407)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.1.6 to 5.2.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.1.6...v5.2.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-28 20:57:49 +09:00
dependabot[bot]
1c610c8f01
chore(deps): bump game-ci/unity-test-runner in /.github/workflows (#408)
Bumps [game-ci/unity-test-runner](https://github.com/game-ci/unity-test-runner) from 2 to 3.
- [Release notes](https://github.com/game-ci/unity-test-runner/releases)
- [Commits](https://github.com/game-ci/unity-test-runner/compare/v2...v3)

---
updated-dependencies:
- dependency-name: game-ci/unity-test-runner
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-28 20:57:41 +09:00
bd_
798d38d1ce 1.7.3 2023-08-22 19:53:47 +09:00
bd_
34b973e9fe 1.7.3-rc.0 2023-08-22 18:58:11 +09:00
anatawa12
39da3b6742
chore: remove all components with missing script (#404)
* chore: remove all components with missing script
* Traverse disabled gameobjects when purging missing scripts

Co-authored-by: bd_ <bd_@nadena.dev>
2023-08-22 18:50:08 +09:00
anatawa12
6591f35a78
fix: missing references when VPM resolver is not present
* chore: configure overrideReferences false and referenced dlls

* chore: clear unused using

* chore: remove unused meta file

* fix: missing reference
2023-08-22 18:44:02 +09:00
bd_
f3ff0bdb5b 1.7.2 2023-08-20 14:16:01 +09:00
bd_
0335c31725
fix: issues with build failures when there are duplicate object paths (#398) 2023-08-20 14:15:10 +09:00
bd_
5a5142bf62 chore: improve null checks in FixupAnimatorDebugData 2023-08-20 13:23:03 +09:00
bd_
8471a3134d chore: Add missing metafile 2023-08-19 16:26:20 +09:00
bd_
86aca10ed5 1.7.1 2023-08-13 21:38:17 +09:00
bd_
c48ef9be0e
feat: disregard digits in heuristic bone mapper (#393)
Closes: #387
2023-08-13 21:36:50 +09:00
bd_
06a473eaec
fix: menu installer GUI selection window is broken (#392)
Fixes #391
2023-08-13 21:36:04 +09:00
anatawa12
5ebc707cf1
docs: First Person Visible -> Visible Head Accessory (#390) 2023-08-13 18:07:23 +09:00
anatawa12
4ac4201af0
test: add test for icon of components (#389) 2023-08-13 17:15:25 +09:00
dependabot[bot]
ef920646c6
chore(deps): bump react-medium-image-zoom from 5.1.6 to 5.1.8 in /docs (#380)
Bumps [react-medium-image-zoom](https://github.com/rpearce/react-medium-image-zoom) from 5.1.6 to 5.1.8.
- [Release notes](https://github.com/rpearce/react-medium-image-zoom/releases)
- [Changelog](https://github.com/rpearce/react-medium-image-zoom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rpearce/react-medium-image-zoom/commits/v5.1.8)

---
updated-dependencies:
- dependency-name: react-medium-image-zoom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-13 16:27:12 +09:00
anatawa12
897e9915bc
fix: MA Replace Object doesn't have icon (#386) 2023-08-13 16:21:17 +09:00
bd_
978518c385
docs: fix broken link (#383) (#384) 2023-08-12 22:28:24 +09:00
bd_
176e792137 1.7.0 2023-08-07 21:12:02 +09:00
bd_
4aa5e32184
docs: document manual processing (#381)
Closes: #315
2023-08-07 21:11:28 +09:00
bd_
16faa4d98a 1.7.0-beta.2 2023-08-06 19:33:49 +09:00
bd_
2fe0f45873
fix: replace object UI doesn't allow the target to be set (#378)
Fixes: #377
2023-08-06 19:33:04 +09:00
bd_
fedf07c5c7
feat: add a feature to unpack generated assets to separate files (#376) 2023-08-06 19:24:53 +09:00
bd_
f63c2f9a1a 1.7.0-beta.1 2023-08-04 21:45:42 +09:00
bd_
3044969454 fix: issues with menu generation (#371)
* chore: adding unit tests for #366 and #326

* fix: duplicate submenu controls not generated for multiple installers

When multiple installers referenced the same expressions menu asset,
only one submenu control would be generated.

* fix: submenus incorrectly deduping across different postprocessing contexts

Fixes: #366, #326

* fix: postprocess context not being inherited into submenus (#326)

This caused issues where parameter mappings were not being applied to
submenus.
2023-08-04 21:45:07 +09:00
bd_
333d4e8a95 chore: fix perf issues with new asset saving logic 2023-08-04 20:23:56 +09:00
anatawa12
6cb59f5fea fix: MA is not performed in Awake if enter playmode settings is enabled 2023-08-03 21:13:17 +09:00
bd_
abdbecf26f fix: attempting to add scene assets to avatar asset 2023-08-02 22:54:30 +09:00
bd_
0f2895c14e fix: serialization GC not recursing into scriptable objects 2023-07-31 21:05:35 +09:00
bd_
9138205ace fix: hands mask not set when merging if the initial configuration used the default
Fixed: #349
2023-07-30 21:05:13 +09:00
bd_
8aba9d4cc7 fix: adjust processing order for Mesh Settings
Closes: #354
2023-07-30 21:05:04 +09:00
bd_
c0c5848548 chore: avoid spoilers in main documentation pages 2023-07-30 12:50:23 +09:00
bd_
c10a2de7de chore: hopefully fixing CI issues 2023-07-30 02:32:57 +09:00
bd_
9609328cf0 ui: implement replace object UI and add screenshots to docs 2023-07-30 02:32:57 +09:00
bd_
3f5a52859f docs: add initial documentation for Replace Object 2023-07-30 02:32:57 +09:00
bd_
4240a4f4cf feat: add the Replace Object component 2023-07-30 02:32:57 +09:00
bd_
4b40c5197a chore: fixup stray import 2023-07-30 02:11:49 +09:00
dependabot[bot]
6bef069178 chore(deps): bump @algolia/client-search from 4.18.0 to 4.19.1 in /docs
Bumps [@algolia/client-search](https://github.com/algolia/algoliasearch-client-javascript) from 4.18.0 to 4.19.1.
- [Release notes](https://github.com/algolia/algoliasearch-client-javascript/releases)
- [Changelog](https://github.com/algolia/algoliasearch-client-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/algolia/algoliasearch-client-javascript/compare/4.18.0...4.19.1)

---
updated-dependencies:
- dependency-name: "@algolia/client-search"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-30 01:53:07 +09:00
bd_
7ce6d93083 chore: automatically save assets referenced at the end of processing 2023-07-30 01:52:54 +09:00
bd_
dec90cb6ca chore: use binary serialization for generated assets
Thanks to @anatawa12 for the suggestion
2023-07-30 01:52:54 +09:00
bd_
806841481c chore: remove a noisy debug log 2023-07-30 01:52:48 +09:00
bd_
51b73fec72 feat: add support for unmangled names and nested merging in MergeArmature 2023-07-30 01:44:53 +09:00
bd_
5231b75055 chore: fix warnings 2023-07-30 01:44:53 +09:00
bd_
21373e13bc chore: fix warnings 2023-07-30 01:42:20 +09:00
bd_
05ed734438 fix: build fails when already-registered subassets are installed as replacement clips 2023-07-29 18:14:47 +09:00
dependabot[bot]
98365a5bde chore(deps): bump clsx from 1.2.1 to 2.0.0 in /docs
Bumps [clsx](https://github.com/lukeed/clsx) from 1.2.1 to 2.0.0.
- [Release notes](https://github.com/lukeed/clsx/releases)
- [Commits](https://github.com/lukeed/clsx/compare/v1.2.1...v2.0.0)

---
updated-dependencies:
- dependency-name: clsx
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-22 14:33:15 +09:00
dependabot[bot]
78bda4ba59 chore(deps): bump actions/upload-pages-artifact in /.github/workflows
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 1 to 2.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v1...v2)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-22 14:33:07 +09:00
Narazaka
35bcdf9e45 fix #355 2023-07-22 14:32:55 +09:00
kobi32768
a97b21498c docs (Merge Animator): fix typo (パース -> パス) 2023-07-13 15:54:30 +09:00
dependabot[bot]
0e76083643 chore(deps): bump semver from 5.7.1 to 5.7.2 in /docs
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-13 00:10:27 +09:00
dependabot[bot]
af9d4d51dd chore(deps-dev): bump @tsconfig/docusaurus from 1.0.7 to 2.0.0 in /docs
Bumps [@tsconfig/docusaurus](https://github.com/tsconfig/bases/tree/HEAD/bases) from 1.0.7 to 2.0.0.
- [Commits](https://github.com/tsconfig/bases/commits/HEAD/bases)

---
updated-dependencies:
- dependency-name: "@tsconfig/docusaurus"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 21:20:54 +09:00
dependabot[bot]
ff1911360a
chore(deps-dev): bump typescript from 5.1.3 to 5.1.6 in /docs (#352) 2023-07-10 12:19:35 +00:00
dependabot[bot]
f30fd5a067
chore(deps): bump @algolia/client-search from 4.17.2 to 4.18.0 in /docs (#348) 2023-07-10 12:19:30 +00:00
bd_
76d97cd646 Lock to a specific commit for create-unitypackage 2023-06-26 00:07:54 +09:00
anatawa12
1850945d34 build: add upload-artifact to test created package 2023-06-26 00:07:54 +09:00
anatawa12
e6e808b2e8 build: use anatawa12's create-unitypackage instead of broken one 2023-06-26 00:07:54 +09:00
AoiKamishiro
0e2dd7197d
ボーンが存在しないSkinnedMeshRendererでRootBoneを設定すると描画位置がずれる問題の修正 (#345)
* Fixed a bug when setting RootBone in SkinnedMeshRenderer with 0 bones.

Co-authored-by: AoiKamishiro <aoi.kamishiro@kamishiro.online>
2023-06-23 19:57:20 +09:00
bd_
483a8abeae
Merge pull request #342 from anatawa12/remove-meta-of-empty-folder
chore: remove meta file for empty folder
2023-06-22 19:50:15 +09:00
anatawa12
69dbab616f
chore: remove meta file for empty folder
empty folders are not tracked by git so such a meta file will be removed by unity on loading
2023-06-19 21:58:03 +09:00
bd_
c0b4777462 v1.6.0 2023-06-19 20:52:51 +09:00
bd_
90811f3e55
Merge pull request #341 from bdunderscore/bone-mappings
fix: add some heuristic bone mappings
2023-06-19 20:29:19 +09:00
bd_
085c19cf1b
Merge pull request #340 from bdunderscore/velo-magnitude
fix: add VelocityMagnitude as builtin parameter
2023-06-19 20:20:35 +09:00
bd_
5b40a9392c
Merge pull request #339 from bdunderscore/retain-end-bones
fix: retain bones ending in "end"
2023-06-19 20:20:24 +09:00
bd_
7c2be605e7 fix: add some heuristic bone mappings
Closes: #316
2023-06-19 20:19:38 +09:00
bd_
94fae18fcc
Merge pull request #338 from bdunderscore/rm-add-outfit-menu
fix: remove some leftover bits of the outfit menu system
2023-06-19 20:19:14 +09:00
bd_
339789c7c2 fix: add VelocityMagnitude as builtin parameter 2023-06-19 20:13:14 +09:00
bd_
3bed8b8527 fix: retain bones ending in "end"
Closes: #332
2023-06-19 20:11:18 +09:00
bd_
1965389904 fix: remove some leftover bits of the outfit menu system 2023-06-19 20:04:07 +09:00
bd_
cdb5ede7fe
Merge pull request #324 from bdunderscore/enhancement/mesh-settings
Add the Mesh Settings component
2023-06-19 20:02:08 +09:00
bd_
73e42169ec docs: add Mesh Settings documentation 2023-06-18 16:19:56 +09:00
dependabot[bot]
3bd862b4ad
chore(deps): bump @algolia/client-search from 4.17.1 to 4.17.2 in /docs (#335)
Bumps [@algolia/client-search](https://github.com/algolia/algoliasearch-client-javascript) from 4.17.1 to 4.17.2.
- [Release notes](https://github.com/algolia/algoliasearch-client-javascript/releases)
- [Changelog](https://github.com/algolia/algoliasearch-client-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/algolia/algoliasearch-client-javascript/compare/4.17.1...4.17.2)

---
updated-dependencies:
- dependency-name: "@algolia/client-search"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-18 15:45:17 +09:00
Hitsub
9a56ff5bb6
Change timing of BuildHeightCache (#333) (#336) 2023-06-18 15:45:07 +09:00
anatawa12
5577e4c1bc
fix: ArgumentException with components with missing script (#327) 2023-06-06 23:40:46 +09:00
bd_
ed4c1ad5a0
fix: Don't strip objects which contain unrecognized components (#325)
Fixes: #321
2023-06-05 21:41:46 +09:00
bd_
f41719e432 chore: remove components merged into the Mesh Settings component 2023-06-05 20:46:04 +09:00
bd_
3c7634e4ea feat: add Mesh Settings component 2023-06-05 20:18:46 +09:00
bd_
095c2667a0 fix: MA Menu Item was showing a spurious gizmo icon
Fix this for new components as well by using reflection to find all avatar tag components
and remove the gizmos appropriately.
2023-06-05 19:10:31 +09:00
bd_
d5c2b98a05
Merge branch 'main' into enhancement/add_bounds_override_module 2023-06-05 19:04:30 +09:00
AoiKamishiro
7bc29b2ea5
MAProbeAnchorの追加(ModularAvatarでAnchorOverrideを設定できるように) (#304)
Co-authored-by: AoiKamishiro <aoi.kamishiro@kamishiro.online>
2023-06-05 18:53:49 +09:00
dependabot[bot]
4e8593845a
chore(deps-dev): bump typescript from 5.0.4 to 5.1.3 in /docs (#323)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.0.4 to 5.1.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.0.4...v5.1.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 18:51:09 +09:00
raiti-chan
17589fceb5 Add BoundsOverride module and BoundsOverrideBlocker module 2023-05-31 22:37:10 +09:00
dependabot[bot]
5ad6b58c7f
chore(deps): bump @algolia/client-search from 4.17.0 to 4.17.1 in /docs (#317)
Bumps [@algolia/client-search](https://github.com/algolia/algoliasearch-client-javascript) from 4.17.0 to 4.17.1.
- [Release notes](https://github.com/algolia/algoliasearch-client-javascript/releases)
- [Changelog](https://github.com/algolia/algoliasearch-client-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/algolia/algoliasearch-client-javascript/compare/4.17.0...4.17.1)

---
updated-dependencies:
- dependency-name: "@algolia/client-search"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-30 13:41:34 +09:00
bd_
f4d8383ced 1.5.1 2023-05-23 21:11:07 +09:00
bd_
a4c3e1d0f4
fix: internal parameters not renamed on installed VRCExpressionMenu submenus (#314)
Thanks to suzuryg for finding the cause of the bug and suggesting an initial fix.

Reported-By: 33linn
Fixes: #305
2023-05-23 21:10:22 +09:00
dependabot[bot]
023e206d1c
chore(deps): bump @docusaurus/core from 2.4.0 to 2.4.1 in /docs (#311) 2023-05-22 11:27:24 +00:00
dependabot[bot]
bcd4b0f5f1
chore(deps): bump @docusaurus/preset-classic in /docs (#312) 2023-05-22 11:22:13 +00:00
dependabot[bot]
21795ebfed
chore(deps-dev): bump @docusaurus/module-type-aliases in /docs (#310) 2023-05-22 11:17:36 +00:00
HotKonti
c87ac92a04
Add Korean language support (#269)
* Add Korean language support

- Update Localization.cs to include Korean
- Add ko.json for Korean translations
- Add ko.json.meta file for metadata
2023-05-21 17:12:48 +09:00
bd_
044e2ae704 fix: "fake humanoid" bones can be pruned by game object GC pass 2023-05-21 17:01:07 +09:00
raiti-chan
9f0522b273 Changed to replace labels and subParameters of Control with an empty array if they are null. 2023-05-21 16:32:53 +09:00
bd_
f7cec4d435 docs: fix download button 2023-05-17 20:35:26 +09:00
bd_
ce2ba4f312 1.5.0 2023-05-17 20:28:06 +09:00
bd_
05f2276aab chore: adjust PreventStripTagObjects to avoid stripping non-MA components as well 2023-05-17 20:27:33 +09:00
Azukimochi
a7e4c11885 Add "Elbow_L/R" to bone name mapping
"Elbow_L/R" is bone name of KokuriRuru
2023-05-15 20:12:35 +09:00
bd_
86dd536e6e 1.5.0-beta-4 2023-05-14 22:13:17 +09:00
bd_
715105193c docs: remove excess border 2023-05-14 22:12:38 +09:00
bd_
81bb1c9833 docs: add missing file 2023-05-14 22:06:16 +09:00
bd_
342039829e docs: Add helpful hints around how to install via VCC 2023-05-14 22:05:01 +09:00
bd_
0115e3946b chore: update VPM dependencies 2023-05-14 22:02:52 +09:00
bd_
2c85f9e0ff docs: update menu screenshots 2023-05-14 22:02:52 +09:00
bd_
bf42cb95c1 rollback: remove action system for 1.5.0 release 2023-05-14 22:02:52 +09:00
bd_
ababe2e80a ui: presets menu 2023-05-14 20:18:41 +09:00
bd_
ab529dc936 chore: dependency updates 2023-05-14 20:18:41 +09:00
bd_
0d5ae35661 feat: make it easier to adjust the order of outfit menu items 2023-05-14 20:18:41 +09:00
bd_
6b5fc80167 fix: rename parameters hook interferes with menu installer references 2023-05-14 20:18:41 +09:00
bd_
ff7c3ff702 ui: add option to add outfit menu to avatar 2023-05-14 20:18:41 +09:00
bd_
e763281966 ui: group menu items [NEEDS DOCS] 2023-05-14 20:18:41 +09:00
bd_
1e2c821a25 ui/fix: action-related config shown on menu items with no actions 2023-05-14 20:18:41 +09:00
bd_
5a36db7b7f ui: add action blendshape editor 2023-05-14 20:18:41 +09:00
bd_
1175e43bfd chore: extract column logic for future inspectors 2023-05-14 20:18:41 +09:00
bd_
d8cab10a3d feat: unified clothing menu 2023-05-14 20:18:41 +09:00
bd_
5a45c2b04f
chore: fix deploying dev docs to main path 2023-05-05 13:50:45 +09:00
bd_
5cba6f24cb feat: initial support for blendshape actions 2023-04-30 20:58:11 +09:00
bd_
93a0171940 feat: control groups now use default-to-off, no override support for now 2023-04-30 20:08:31 +09:00
bd_
cae4622bfc compat/feat: use AvatarObjectReference for action paths 2023-04-30 19:55:45 +09:00
bd_
47a1e8393c 1.5.0-beta-3 2023-04-26 20:21:25 +09:00
bd_
f7f9fc773c
fix: SDK 3.2.0-beta.1 compatibility (#289) 2023-04-26 20:20:30 +09:00
Hitsub
f12db983c1
Meshが空のSkinnedMeshRendererがあるとActionGeneratorがエラーを起こすのを修正 (#280) 2023-04-20 17:33:15 +09:00
Hitsub
1901035fd8
空のSubMenuがあるとMenuInstallerの表示でエラーが発生するのを修正 (#282) 2023-04-20 17:33:04 +09:00
bd_
5d11e98956 docs: fix outdated screenshot 2023-04-15 22:58:23 +09:00
bd_
2ac6c636a8 docs: clarify prerelease setup instructions 2023-04-15 20:31:57 +09:00
bd_
1e4ed3155f chore: validate semver when building releases 2023-04-15 20:10:50 +09:00
bd_
626072ae69 1.5.0-beta-2 2023-04-15 19:50:27 +09:00
bd_
4295767be7 chore: fixing broken tests 2023-04-15 19:49:50 +09:00
bd_
20dae6e5cb 1.5.0-beta-1 2023-04-15 19:36:43 +09:00
bd_
c9438ace31 docs: promote VCC installation to recommended 2023-04-15 19:35:33 +09:00
bd_
cc1d11a06c chore: workaround IEditorOnly objects being deleted too soon 2023-04-15 19:17:30 +09:00
bd_
a910fa5c05 Merge remote-tracking branch 'origin/main' into dev-merge 2023-04-15 18:16:07 +09:00
bd_
5b0c57ce7c
docs: add jp reference docs for new menu system (#277)
* docs: add SimpleToggle prefab

* docs: ja reference docs
2023-04-15 18:14:28 +09:00
bd_
a300622bb2
feat: support unsynced/saved toggles in new menu system (#276)
* chore: add support for synced/saved settings on menu actions

* feat: move action defaults to control group

* chore: finish the control group ui updates

* docs: update tutorial

* docs: update control group documentation

* docs/ui: menu install target UI and docs
2023-04-15 18:11:30 +09:00
bd_
9dc44d8ccc
feat: add support for local-only parameters to Parameters component (#275)
* feat: add support for local parameters

* docs: update parameters docs
2023-04-15 17:06:35 +09:00
bd_
ab3b05752a chore: [ui] try to make the action toggle object ui a little bit clearer 2023-04-15 16:39:32 +09:00
bd_
0f07872659 chore: set icons for new component scripts 2023-04-15 16:39:32 +09:00
bd_
d1288fd335
fix: use IEditorOnly instead of mokeypatching the SDK (#274)
Increased SDK version requirement to 3.1.13 accordingly.
2023-04-11 20:21:00 +09:00
bd_
82d58e52fa
fix: clap sample can't be uploaded on SDK 3.1.13 (#273)
* chore: update VPM dependencies

* fix: set sample audio clip to load in background
2023-04-10 21:27:10 +09:00
dependabot[bot]
deb6bbfe5e
chore(deps): bump @algolia/client-search from 4.16.0 to 4.17.0 in /docs (#272)
Bumps [@algolia/client-search](https://github.com/algolia/algoliasearch-client-javascript) from 4.16.0 to 4.17.0.
- [Release notes](https://github.com/algolia/algoliasearch-client-javascript/releases)
- [Changelog](https://github.com/algolia/algoliasearch-client-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/algolia/algoliasearch-client-javascript/compare/4.16.0...4.17.0)

---
updated-dependencies:
- dependency-name: "@algolia/client-search"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 20:44:39 +09:00
dependabot[bot]
bfd1595ad8
chore(deps-dev): bump typescript from 5.0.3 to 5.0.4 in /docs (#271)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.0.3 to 5.0.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.0.3...v5.0.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 20:44:31 +09:00
Narazaka
00054c1a52
自動生成などでsubParametersがnullのメニューアセットを指定した場合にエラるのを回避 (#263)
* 自動生成などでsubParametersがnullのメニューアセットを指定した場合にエラるのを回避

* chore: add test for null subparameter field issue

---------

Co-authored-by: bd_ <bd_@nadena.dev>
2023-04-10 20:18:59 +09:00
anatawa12
00c683dd23
fix: retarget is not performed if rootBone is the only bone to be retargeted (#241)
* fix: retarget is not performed if rootBone is the only bone to be retargeted

* fix: MeshRetargeter may cause NRE if mesh is null

* fix: MeshRetargeter is not working if sharedMesh is null

* test: add test case for SkinnedMeshRenderer only with rootBone

* test: fix RootBoneOnly test

* test: fix expected and actual

* test: add test for SkinnedMeshRenderer without mesh
2023-04-09 19:08:57 +09:00
eni
bd81bafc84
feat: add Foot=Ankle mapping, more hand bone names (#265)
This adds support for KokuriRuru, which uses `Ankle_L`/`Ankle_R` for foot bones, and the finger bones generated with the regex replacement `"([A-Za-z]+?)([1-3]_[LR])"` → `"$1$2", "$1Finger$2"`. (Except for thumbs, which still use `Thumb[1-3]_L` not `ThumbFinger[1-3]_L`. This is left in, as another avatar may use this naming.)
2023-04-08 20:46:25 +09:00
bd_
68298e3c97 docs: fix broken links 2023-04-05 22:36:53 +09:00
bd_
5bb06e6c65 docs: add missing images 2023-04-05 22:31:13 +09:00
bd_
c7d3cb6fa4 chore: use WD blend tree to avoid getting facial expressions stuck 2023-04-05 21:34:16 +09:00
bd_
8e76d0225f docs: initial draft of component level docs 2023-04-05 20:37:42 +09:00
bd_
1dc2f5580f docs: ja menu tutorial 2023-04-04 20:25:38 +09:00
eni
43cd1e3875
fix: inconsistent handedness in finger bone names (#262) 2023-04-04 19:59:14 +09:00
bd_
169dcdf5ad docs: add menu item tutorial (english) 2023-04-04 19:58:44 +09:00
bd_
023e8266ec fix: add "add menu item" button 2023-04-04 19:33:19 +09:00
dependabot[bot]
d301a9dbe0
chore(deps-dev): bump typescript from 5.0.2 to 5.0.3 in /docs (#261)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.0.2 to 5.0.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-03 20:31:01 +09:00
dependabot[bot]
b6935673d5
chore(deps): bump actions/upload-artifact in /.github/workflows (#260)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-03 20:30:50 +09:00
dependabot[bot]
0ea207f539
chore(deps): bump actions/configure-pages in /.github/workflows (#255) 2023-03-27 14:34:14 +00:00
dependabot[bot]
a0d34cb9b8
chore(deps): bump actions/upload-artifact in /.github/workflows (#256) 2023-03-27 14:34:06 +00:00
bd_
72f0154cb4
fix: direct blend parameters not being remapped (#246)
Closes: #245
2023-03-25 15:29:00 +09:00
bd_
9ab530f8fb chore: add robots.txt 2023-03-25 15:21:00 +09:00
bd_
488be4417b chore: debugging dev-docs build 2023-03-25 15:06:38 +09:00
bd_
3e21bc6522 chore: debugging dev-docs build 2023-03-25 15:00:02 +09:00
bd_
c21e1fe1a6 chore: debugging dev-docs build 2023-03-25 14:59:10 +09:00
bd_
7e928c6e42 chore: rename a step 2023-03-25 14:57:38 +09:00
bd_
d03ffd882a chore: fix incorrect branch reference 2023-03-25 14:54:29 +09:00
dependabot[bot]
c7063930bd
chore(deps): bump actions/download-artifact in /.github/workflows (#252) 2023-03-25 05:48:42 +00:00
dependabot[bot]
45945d9f7f
chore(deps): bump actions/deploy-pages from 1 to 2 in /.github/workflows (#251)
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 1 to 2.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v1...v2)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-25 14:48:03 +09:00
dependabot[bot]
af5c6e46a5
chore(deps): bump notiz-dev/github-action-json-property (#250)
Bumps [notiz-dev/github-action-json-property](https://github.com/notiz-dev/github-action-json-property) from 0.1.0 to 0.2.0.
- [Release notes](https://github.com/notiz-dev/github-action-json-property/releases)
- [Commits](7c8cf5cc36...a5a9c668b1)

---
updated-dependencies:
- dependency-name: notiz-dev/github-action-json-property
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-25 14:47:51 +09:00
dependabot[bot]
ff8cd6b705
chore(deps): bump softprops/action-gh-release in /.github/workflows (#249)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 0.1.14 to 0.1.15.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](1e07f43987...de2c0eb89a)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-25 14:47:41 +09:00
dependabot[bot]
38043d3073
chore(deps): bump thedoctor0/zip-release in /.github/workflows (#248)
Bumps [thedoctor0/zip-release](https://github.com/thedoctor0/zip-release) from 0.6.2 to 0.7.1.
- [Release notes](https://github.com/thedoctor0/zip-release/releases)
- [Commits](09336613be...a24011d8d4)

---
updated-dependencies:
- dependency-name: thedoctor0/zip-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-25 14:47:28 +09:00
bd_
8ead8bd8c5 chore: build dev branch docs as well 2023-03-25 14:45:55 +09:00
bd_
f3a2aa987b chore: only run GameCI on unity-related changes 2023-03-25 14:38:32 +09:00
bd_
7fa4146a91
chore: update dependabot.yml 2023-03-25 14:36:08 +09:00
bd_
48c112ddcf
chore: update dependabot.yml 2023-03-25 14:35:13 +09:00
bd_
6e1c3b65d3
chore: enable dependabot for github actions 2023-03-25 14:32:02 +09:00
dependabot[bot]
c7e59daf80
chore(deps): bump webpack from 5.75.0 to 5.76.3 in /docs (#247) 2023-03-25 05:11:56 +00:00
bd_
a56d8a0ab8 chore: adjust gameci workflow to run on external PRs 2023-03-25 14:03:48 +09:00
bd_
c405ff1089 chore: update docs dependencies 2023-03-25 13:54:23 +09:00
hill
7d97c75ef8
feat: improve usability of manual bake options
* select output avatar on manual bake
* add GameObject context menus
2023-03-23 19:09:41 +09:00
anatawa12
be654074d9
chore: add bone name mapping from BoneRenamer by Azukimochi (#234)
Co-authored-by: Azukimochi <103747350+Azukimochi@users.noreply.github.com>
2023-03-12 22:08:00 +09:00
dependabot[bot]
563b8b9fc7
chore(deps): bump @algolia/client-search from 4.14.3 to 4.15.0 in /docs (#233)
Bumps [@algolia/client-search](https://github.com/algolia/algoliasearch-client-javascript) from 4.14.3 to 4.15.0.
- [Release notes](https://github.com/algolia/algoliasearch-client-javascript/releases)
- [Changelog](https://github.com/algolia/algoliasearch-client-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/algolia/algoliasearch-client-javascript/compare/4.14.3...4.15.0)

---
updated-dependencies:
- dependency-name: "@algolia/client-search"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-10 21:56:41 +09:00
bd_
c8db23e349 chore: enable GameCI 2023-03-04 21:39:27 +09:00
bd_
f584f38303 chore: fix off-by-one error in ActionGenerator 2023-03-04 16:43:25 +09:00
bd_
e8366cd84a improvements to error reporting 2023-03-04 14:41:13 +09:00
bd_
76edc43aca
feat: menu actions (#231)
Add a new feature to generate animations for menu items automatically.
Currently this only supports generating blend-tree based GameObject toggles.
2023-03-04 14:31:23 +09:00
bd_
55a2229bc6 add missing Menu folder asset 2023-03-04 14:15:27 +09:00
bd_
2a321612fc GC unused game objects (#229) 2023-03-04 14:15:27 +09:00
bd_
99f8052dd9 Add missing AddComponentMenu annotations 2023-03-04 14:15:27 +09:00
bd_
d39e17a8f6 feat: add object-based menu system (#218)
This adds a GameObject/Component based menu editing system, heavily inspired by Hai's Expressions Menu Hierarchy editor (https://github.com/hai-vr/av3-expressions-menu-hierarchy-editor)
2023-03-04 14:15:27 +09:00
bd_
ce76bb2190
fix: exception in avatar parameters editor (#230) 2023-03-04 14:15:08 +09:00
bd_
f88f3e6225 1.4.5 2023-02-25 17:55:49 +09:00
bd_
319fd9a2ff
feat: add chest=bust mapping for the heuristic bone mapper (#227)
Closes: #220
2023-02-25 17:55:42 +09:00
bd_
2f7e6ccd6f
fix: parameter drivers attached to state machines are not renamed properly (#226) 2023-02-25 17:53:15 +09:00
bd_
d39c098893
feat: improve handling of editoronly objects (#224) 2023-02-25 17:53:09 +09:00
bd_
db7be7107c
fix: high quality curve setting is not preserved properly (#225)
This setting is set to _off_ on some imported animation files;
in this case, tangent data is not used and the curve is interpolated linearly.

Previously, we would sometimes set this to on as part of various animation
manipulations we perform in MA processing; this broke some avatars, e.g. "Fluria".
2023-02-25 17:53:02 +09:00
bd_
887f7d0dff
fix: improve parameter inspector perf when using lots of parameters
This doesn't fully close #217, but it's an improvement. Fully fixing it will require reworking the UI fully (or getting unity to fix their terrible code :/)
2023-02-22 23:29:45 +09:00
bd_
d385eb8800 fix: sometimes the MA icons aren't disabled properly
It seems that sometimes static initializers are created before the icon annotations are updated. This change checks for this case, and defers the icon-disabling until after the necessary annotation records are created.
2023-02-19 16:04:08 +09:00
bd_
092274d11c 1.4.4 2023-02-18 16:01:13 +09:00
dependabot[bot]
ce6d2c7e79 chore(deps): bump @sideway/formula from 3.0.0 to 3.0.1 in /docs
Bumps [@sideway/formula](https://github.com/sideway/formula) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sideway/formula/releases)
- [Commits](https://github.com/sideway/formula/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: "@sideway/formula"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-18 16:00:50 +09:00
bd_
1af8650ead chore: Add docs for error report window 2023-02-18 16:00:00 +09:00
bd_
be04ea608d chore: switch to yarn 2.0 linker 2023-02-17 21:52:03 +09:00
bd_
7d686132de chore: update docs dependencies 2023-02-17 21:52:03 +09:00
bd_
b52e33a517 chore: upgrade docs to yarn 2.0 2023-02-17 21:52:03 +09:00
bd_
d4639e2d70 Move actual icon to the icons repository
Since the icon isn't MIT-licensed, this change replaces it in the dev
repo with a placeholder and adds the real icon back in at package build
time (like we do with the main logo image).
2023-02-17 20:59:11 +09:00
Razgriz
46dd103f55 Disable MA icons on project load 2023-02-17 20:59:11 +09:00
Razgriz
7192f90e8e Add MA Icon & Assign to MA Component Scripts 2023-02-17 20:59:11 +09:00
bd_
dcc1650dbd fix: make generated assets easily visible in play mode 2023-02-08 22:35:44 +09:00
bd_
13e009b6fc chore: fix incorrect parameters for certain errors 2023-02-08 22:33:48 +09:00
bd_
c2e6bb53cd feat: Add error reporting UI 2023-02-08 22:19:10 +09:00
bd_
2a8c2ec3ce fix: NPE in blendshape sync editor 2023-02-08 22:04:46 +09:00
dependabot[bot]
21b45935a2
chore(deps): bump @docusaurus/preset-classic in /docs (#194) 2023-02-02 09:48:49 +00:00
dependabot[bot]
c1be65032a
chore(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 in /docs (#198) 2023-02-02 09:47:00 +00:00
dependabot[bot]
0dfc7ee2fb
chore(deps-dev): bump @docusaurus/module-type-aliases in /docs (#195) 2023-02-02 09:44:50 +00:00
dependabot[bot]
81e7904dff
chore(deps): bump @docusaurus/core from 2.2.0 to 2.3.0 in /docs (#196) 2023-02-02 09:44:43 +00:00
bd_
52e2398a1d Merge remote-tracking branch 'origin/main' 2023-02-02 18:43:20 +09:00
bd_
6566fd7b79 1.4.3 2023-01-31 20:20:49 +09:00
bd_
85617735e9 fix(visible-head-accessory): workaround unity crash
Reported-By: Momishiro
2023-01-30 22:55:56 +09:00
dependabot[bot]
08494f840d chore(deps): bump ua-parser-js from 0.7.32 to 0.7.33 in /docs
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.32 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.32...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-28 12:10:28 +09:00
bd_
d6ab6c676f 1.4.2 2023-01-27 21:16:21 +09:00
bd_
8ac7217c26 fix: synced layer motion overrides not preserved over MA processing
Reported-By: ぷも
2023-01-27 21:15:38 +09:00
bd_
0374a9a099 fix: ArgumentNullException when blend tree clips are missing/none
fixes: 188
2023-01-27 21:15:26 +09:00
bd_
7e9dc20201 fix: proxy animations broken on legacy VRCSDK
fixes: #187
2023-01-26 18:33:34 +09:00
bd_
91813c54e8 1.4.1 2023-01-24 21:41:54 +09:00
bd_
d1e047a3d2 fix: mesh processing aborts when encountering null sharedMesh 2023-01-24 21:41:33 +09:00
bd_
fb19fd6cc0 fix: simple asset-root toggles are not remapped correctly 2023-01-24 21:41:20 +09:00
bd_
51b828d318 chore: fix unit tests leaking assets 2023-01-21 10:56:10 +09:00
bd_
6d166b3317 chore: document VCC installation method 2023-01-21 10:56:03 +09:00
bd_
26270d5691 1.4.0 2023-01-20 20:42:23 +09:00
bd_
1b4b373343 1.4.0-rc-4 2023-01-19 21:49:40 +09:00
bd_
592f469b8b fix: wrong translations for new bone proxy modes 2023-01-19 21:45:01 +09:00
bd_
55827868f9 fix: keep position/keep rotation modes not applied in editor 2023-01-19 21:42:11 +09:00
bd_
231ae585bb rc3 2023-01-18 19:11:05 +09:00
bd_
33895a58e8 fix: BoneProxy non-humanoid references did not save properly 2023-01-18 19:09:28 +09:00
bd_
be32ed55f5 fix: BoneProxy editor is missing pos/rot hold options 2023-01-18 19:09:16 +09:00
bd_
ef1699e4da rc2 2023-01-17 20:41:45 +09:00
bd_
eb7af61a08 [BoneProxy] feat: add support for keeping only one of world position/rotation 2023-01-17 20:40:42 +09:00
Gizmo
51f7c5936d Add missing translations 2023-01-17 20:08:03 +09:00
Gizmo
acdcaa991e feat: add simplified chinese translation 2023-01-17 20:08:03 +09:00
bd_
305377c1bb feat: use english localization for untranslated strings 2023-01-17 20:06:50 +09:00
bd_
9f9c2af1bd chore: remove outdated comment 2023-01-17 19:56:12 +09:00
bd_
df47be245f fix: duplicate PB stripping fails in some configurations
The previous logic failed when duplicate PBs explicitly specify their root transform.
This change rewrites this logic and expands the cases in which PBs are pruned.
2023-01-17 00:01:08 +09:00
bd_
1b0cb3f75f chore: Add CodeCoverage directories to .gitignore 2023-01-16 21:16:24 +09:00
bd_
dd07acda1d chore: mark AfterProcessing hook internal 2023-01-16 21:15:30 +09:00
bd_
b30504c348 chore: enable code coverage 2023-01-16 21:15:30 +09:00
bd_
c3e0f94448 chore: Add TransformMappingThroughSwitchedObject test 2023-01-16 21:15:30 +09:00
bd_
f64f00e2d3 chore: Add AnimateAddedBones test 2023-01-16 21:15:30 +09:00
anatawa12
85676c5fbf chore: make RuntimeUtil internal via InternalsVisibleTo 2023-01-09 19:23:30 +09:00
bd_
76dfa2a6fc chore: more perf improvements 2023-01-05 21:47:37 +09:00
bd_
0217c0ecf0 1.4.0-rc-1 2023-01-05 21:31:15 +09:00
bd_
250e8be54c fix: improve build performance by ~10x
CreateAsset, as it turns out, can be extremely slow, particularly when used on Mesh objects.
By adding our generated objects as sub-objects of a container AnimatorController, we can
minimize this overhead.
2023-01-05 21:30:44 +09:00
bd_
b13f60e80f chore: remove debug print 2023-01-05 21:12:30 +09:00
bd_
1635b988a9
feat: improved merge armature implementation (#174)
This branch rewrites the merge armature logic to be both simpler and more reliable. In particular, all components in the merged armature will always be moved into the target armature, eliminating the need for complex and unreliable constraint adjustments. I also rewrite the path remapping logic to be more reliable by tracking actual GameObjects, rather than string paths.

This change fixes a number of constraint-heavy outfits, including:

* https://cloudz.booth.pm/items/3751948
* https://capettiya.booth.pm/items/4424678

It also fixes issues with some more advanced use cases, such as animating transforms on bones that are newly added using merge armature.
2023-01-05 04:10:22 -08:00
bd_
aba8d45bd8 docs: Link directly to latest release 2023-01-02 22:39:27 +09:00
dependabot[bot]
05523f7a54 Bump @algolia/client-search from 4.14.2 to 4.14.3 in /docs
Bumps [@algolia/client-search](https://github.com/algolia/algoliasearch-client-javascript) from 4.14.2 to 4.14.3.
- [Release notes](https://github.com/algolia/algoliasearch-client-javascript/releases)
- [Changelog](https://github.com/algolia/algoliasearch-client-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/algolia/algoliasearch-client-javascript/compare/4.14.2...4.14.3)

---
updated-dependencies:
- dependency-name: "@algolia/client-search"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-02 20:34:28 +09:00
dependabot[bot]
986b36a1f1 Bump json5 from 2.2.1 to 2.2.3 in /docs
Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-02 20:34:19 +09:00
bd_
74dc37d0d7 chore: docs updates for new menu installer behavior 2023-01-02 20:29:07 +09:00
bd_
b9fde37285 1.3.0 2023-01-02 16:47:09 +09:00
bd_
435ce7b248 fix: NPE in menu installer editor 2023-01-02 16:44:52 +09:00
bd_
569275dcba fix: NPE on null submenu reference 2023-01-02 16:44:37 +09:00
らいちちゃん
a361789c43
feat: add support for nested Menu Installer operation
With this change it is now possible for Menu Installer to specify as its target a menu installed by another Menu Installer, or a submenu thereof. This allows prefabs to inject extension entries into other prefab menus.
2023-01-01 23:42:54 -08:00
bd_
549ce8f0d3 fix: add more heuristic bone mappings 2023-01-02 16:27:35 +09:00
bd_
db49e2e210 fix: blendshape sync breaks with default binding 2022-12-31 18:43:11 +09:00
bd_
2bfefc7bac 1.2.1 2022-12-20 21:33:10 +09:00
bd_
5351b7befb fix: multiple bugs in Activator
* Activator tries to mark scene dirty in play mode (fixes #164)
* Activator creates multiple hidden objects which build up over time
2022-12-20 04:32:49 -08:00
bd_
39be252f12 1.2.0 2022-12-19 18:56:42 +09:00
bd_
2bea35b9df chore: fix harmless use-after-destroy warning in Activator 2022-12-18 15:41:43 +09:00
bd_
9d63ca60e4 1.2.0-rc0 2022-12-18 14:42:07 +09:00
bd_
f49c6a0d2e ensure that MA processing runs even if all MA components are inactive 2022-12-17 21:31:16 -08:00
bd_
ab2761a30f Avoid recursive reprocessing of avatars 2022-12-17 21:21:50 -08:00
bd_
1a12a4b6bd chore: dev dep version and project config updates 2022-12-17 20:26:01 -08:00
bd_
df8d0d7981 Workaround Merge Armature breaking parent PBs
The Merge Armature logic is in need of an overall rewrite, but this works around
issues where added (duplicate) bones break PBs in parents, by adding these to parent PB ignore lists.
2022-12-17 00:28:46 -08:00
bd_
1a114b65fe Fix blendshape sync not using remapped names for animations 2022-12-16 23:55:33 -08:00
dependabot[bot]
880770ed01 Bump typescript from 4.9.3 to 4.9.4 in /docs
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.3 to 4.9.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.9.3...v4.9.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 16:18:37 -08:00
anatawa12
42d83304ab chore: reduce # of GetComponentsInChildren 2022-12-12 16:14:11 -08:00
anatawa12
664a6c3081 chore: extract mapping constraint source to one method 2022-12-12 16:14:11 -08:00
anatawa12
27bb7b6312 fix: worldUpObject of AimConstraint and LookAtConstraint is not fixed up 2022-12-12 16:14:11 -08:00
raiti-chan
622ea7d387 Fix validation methods to avoid infinite loops. 2022-12-12 16:02:31 -08:00
bd_
5b97455c0f Document new heuristic matching feature 2022-12-10 16:58:46 -08:00
bd_
223f96d04e Initial implementation of heuristic bone matching
Closes: #105
2022-12-10 16:58:46 -08:00
bd_
c70e821271 Import an initial list of bone name patterns 2022-12-10 16:58:46 -08:00
bd_
8bbe774ea1
Adjust callback order to support EditorOnly fully (#151) 2022-12-09 12:41:07 -08:00
bd_
56e08513a5
Prune duplicate PBs on merge armature (#150)
This fixes issues where outfits which duplicate the PB components from the
base avatar can result in PB motion breaking after merge.
2022-12-09 12:39:39 -08:00
bd_
2ac191555e
Sanitize invalid icons on menu installation (#146) 2022-12-09 11:40:22 -08:00
bd_
e7ec5b08b4
Add warning in inspector UI for incompatible VRCSDK versions. (#147) 2022-12-09 11:40:16 -08:00
bd_
b7b4fde863
Fix NRE caused by missing root bone (#149)
Fixes: #135
2022-12-09 11:40:07 -08:00
bd_
5911973e9d
Enable (but no-op) setup outfit when outfit is already setup (#148)
Closes: #132
2022-12-09 11:40:00 -08:00
らいちちゃん
811c934f40
Added support for AnimatorOverrideController (#139) 2022-12-09 10:55:17 -08:00
Narazaka
d72e529ad7
たぶんPathは「パス」とするのが一般的 (#137) 2022-12-08 13:58:47 -08:00
Narazaka
ba9efe218f
docs ja typo (#136) 2022-12-08 13:58:35 -08:00
らいちちゃん
19a6923051
Add validation for menu icons. (#130) 2022-12-02 20:32:40 -08:00
1670 changed files with 123595 additions and 14292 deletions

6
.crowdin.yml Normal file
View File

@ -0,0 +1,6 @@
base_path: .
base_url: 'https://api.crowdin.com'
preserve_hierarchy: 1
files:
- source: /Editor/Localization/en-US.json
translation: /Editor/Localization/%locale%.json

14
.github/CHANGELOG-HEADER.md vendored Normal file
View File

@ -0,0 +1,14 @@
## [Unreleased]
### Added
### Fixed
### Changed
### Removed
### Security
### Deprecated

14
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,14 @@
# These are supported funding model platforms
github: [bdunderscore]
# patreon: # Replace with a single Patreon username
# open_collective: # Replace with a single Open Collective username
# ko_fi: # Replace with a single Ko-fi username
# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
# liberapay: # Replace with a single Liberapay username
# issuehunt: # Replace with a single IssueHunt username
# lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
# polar: # Replace with a single Polar username
# buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View File

@ -2,3 +2,5 @@
!com.vrchat.core.*/
com.vrchat.*/
!nadena.dev.*/
nadena.dev.ndmf/
*.zip

View File

@ -1,15 +1,18 @@
{
"dependencies": {
"com.unity.collab-proxy": "1.10.2",
"com.unity.ide.rider": "3.0.16",
"com.unity.ide.visualstudio": "2.0.11",
"com.unity.ide.vscode": "1.2.4",
"com.unity.test-framework": "1.1.29",
"com.unity.ide.rider": "3.0.17",
"com.unity.ide.visualstudio": "2.0.17",
"com.unity.ide.vscode": "1.2.5",
"com.unity.test-framework": "1.3.2",
"com.unity.testtools.codecoverage": "1.2.2",
"com.unity.textmeshpro": "2.1.6",
"com.unity.timeline": "1.2.18",
"com.unity.ugui": "1.0.0",
"com.unity.xr.oculus.android": "2.38.6",
"com.unity.xr.oculus.standalone": "2.38.4",
"com.unity.xr.openvr.standalone": "2.0.5",
"de.thryrallo.vrc.avatar-performance-tools": "https://github.com/Thryrallo/VRC-Avatar-Performance-Tools.git",
"nadena.dev.modular-avatar": "0.0.1",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",

View File

@ -17,14 +17,14 @@
"url": "https://packages.unity.com"
},
"com.unity.ext.nunit": {
"version": "1.0.6",
"version": "2.0.3",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.ide.rider": {
"version": "3.0.16",
"version": "3.0.17",
"depth": 0,
"source": "registry",
"dependencies": {
@ -33,7 +33,7 @@
"url": "https://packages.unity.com"
},
"com.unity.ide.visualstudio": {
"version": "2.0.11",
"version": "2.0.17",
"depth": 0,
"source": "registry",
"dependencies": {
@ -42,7 +42,7 @@
"url": "https://packages.unity.com"
},
"com.unity.ide.vscode": {
"version": "1.2.4",
"version": "1.2.5",
"depth": 0,
"source": "registry",
"dependencies": {},
@ -56,23 +56,49 @@
"url": "https://packages.unity.com"
},
"com.unity.nuget.newtonsoft-json": {
"version": "2.0.2",
"version": "3.0.2",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.postprocessing": {
"version": "3.1.1",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.modules.physics": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.settings-manager": {
"version": "1.0.1",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.test-framework": {
"version": "1.1.29",
"version": "1.3.2",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ext.nunit": "1.0.6",
"com.unity.ext.nunit": "2.0.3",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.testtools.codecoverage": {
"version": "1.2.2",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.test-framework": "1.0.16",
"com.unity.settings-manager": "1.0.1"
},
"url": "https://packages.unity.com"
},
"com.unity.textmeshpro": {
"version": "2.1.6",
"depth": 0,
@ -103,6 +129,13 @@
"com.unity.modules.imgui": "1.0.0"
}
},
"com.unity.xr.oculus.android": {
"version": "2.38.6",
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.xr.oculus.standalone": {
"version": "2.38.4",
"depth": 0,
@ -130,17 +163,42 @@
"dependencies": {
"com.unity.burst": "1.4.11",
"com.unity.mathematics": "1.2.5",
"com.unity.nuget.newtonsoft-json": "2.0.2"
"com.unity.nuget.newtonsoft-json": "3.0.2"
}
},
"com.vrchat.core.vpm-resolver": {
"version": "file:com.vrchat.core.vpm-resolver",
"de.thryrallo.vrc.avatar-performance-tools": {
"version": "https://github.com/Thryrallo/VRC-Avatar-Performance-Tools.git",
"depth": 0,
"source": "git",
"dependencies": {},
"hash": "ba9c16e482e7a376db18e9a85e24fabc04649d37"
},
"dev.onevr.vrworldtoolkit": {
"version": "file:dev.onevr.vrworldtoolkit",
"depth": 0,
"source": "embedded",
"dependencies": {
"com.unity.nuget.newtonsoft-json": "2.0.2"
"com.unity.postprocessing": "3.1.1"
}
},
"jp.lilxyzw.liltoon": {
"version": "file:jp.lilxyzw.liltoon",
"depth": 0,
"source": "embedded",
"dependencies": {}
},
"jp.suzuryg.face-emo": {
"version": "file:jp.suzuryg.face-emo",
"depth": 0,
"source": "embedded",
"dependencies": {}
},
"lyuma.av3emulator": {
"version": "file:lyuma.av3emulator",
"depth": 0,
"source": "embedded",
"dependencies": {}
},
"nadena.dev.modular-avatar": {
"version": "file:nadena.dev.modular-avatar",
"depth": 0,
@ -149,6 +207,18 @@
"com.unity.nuget.newtonsoft-json": "2.0.0"
}
},
"nadena.dev.ndmf": {
"version": "file:nadena.dev.ndmf",
"depth": 0,
"source": "embedded",
"dependencies": {}
},
"vrchat.blackstartx.gesture-manager": {
"version": "file:vrchat.blackstartx.gesture-manager",
"depth": 0,
"source": "embedded",
"dependencies": {}
},
"com.unity.modules.ai": {
"version": "1.0.0",
"depth": 0,

View File

@ -0,0 +1,13 @@
{
"MonoBehaviour": {
"Version": 3,
"EnableBurstCompilation": true,
"EnableOptimisations": true,
"EnableSafetyChecks": false,
"EnableDebugInAllBuilds": false,
"CpuMinTargetX32": 0,
"CpuMaxTargetX32": 0,
"CpuMinTargetX64": 0,
"CpuMaxTargetX64": 0
}
}

View File

@ -0,0 +1,16 @@
{
"MonoBehaviour": {
"Version": 3,
"EnableBurstCompilation": true,
"EnableOptimisations": true,
"EnableSafetyChecks": false,
"EnableDebugInAllBuilds": false,
"UsePlatformSDKLinker": false,
"CpuMinTargetX32": 0,
"CpuMaxTargetX32": 0,
"CpuMinTargetX64": 0,
"CpuMaxTargetX64": 0,
"CpuTargetsX32": 6,
"CpuTargetsX64": 72
}
}

View File

@ -23,7 +23,7 @@ EditorSettings:
m_EnableTextureStreamingInEditMode: 1
m_EnableTextureStreamingInPlayMode: 1
m_AsyncShaderCompilation: 1
m_EnterPlayModeOptionsEnabled: 0
m_EnterPlayModeOptionsEnabled: 1
m_EnterPlayModeOptions: 3
m_ShowLightmapResolutionOverlay: 1
m_UseLegacyProbeSampleCount: 0

View File

@ -28,16 +28,7 @@ GraphicsSettings:
m_LensFlare:
m_Mode: 1
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
m_AlwaysIncludedShaders:
- {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
m_AlwaysIncludedShaders: []
m_PreloadedShaders: []
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
type: 0}

View File

@ -0,0 +1,7 @@
{
"m_Name": "Settings",
"m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json",
"m_Dictionary": {
"m_DictionaryValues": []
}
}

View File

@ -176,7 +176,7 @@ PlayerSettings:
applicationIdentifier: {}
buildNumber: {}
AndroidBundleVersionCode: 1
AndroidMinSdkVersion: 19
AndroidMinSdkVersion: 25
AndroidTargetSdkVersion: 0
AndroidPreferredInstallLocation: 1
aotOptions:
@ -184,7 +184,7 @@ PlayerSettings:
iPhoneStrippingLevel: 0
iPhoneScriptCallOptimization: 0
ForceInternetPermission: 0
ForceSDCardPermission: 0
ForceSDCardPermission: 1
CreateWallpaper: 0
APKExpansionFiles: 0
keepLoadedShadersAlive: 0
@ -250,7 +250,7 @@ PlayerSettings:
clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
templatePackageId: com.vrchat.template.base@1.0.0
templateDefaultScene: Assets/VRCWelcome.unity
AndroidTargetArchitectures: 1
AndroidTargetArchitectures: 2
AndroidTargetDevices: 0
AndroidSplashScreenScale: 0
androidSplashScreen: {fileID: 0}
@ -313,7 +313,7 @@ PlayerSettings:
- m_BuildTarget: LuminSupport
m_GraphicsJobs: 0
- m_BuildTarget: AndroidPlayer
m_GraphicsJobs: 0
m_GraphicsJobs: 1
- m_BuildTarget: WebGLSupport
m_GraphicsJobs: 0
m_BuildTargetGraphicsJobMode:
@ -327,7 +327,7 @@ PlayerSettings:
m_Automatic: 0
- m_BuildTarget: iOSSupport
m_APIs: 10000000
m_Automatic: 1
m_Automatic: 0
- m_BuildTarget: AppleTVSupport
m_APIs: 10000000
m_Automatic: 0
@ -337,6 +337,9 @@ PlayerSettings:
- m_BuildTarget: WindowsStandaloneSupport
m_APIs: 02000000
m_Automatic: 0
- m_BuildTarget: MacStandaloneSupport
m_APIs: 10000000
m_Automatic: 0
m_BuildTargetVRSettings:
- m_BuildTarget: Standalone
m_Enabled: 1
@ -344,6 +347,12 @@ PlayerSettings:
- None
- OpenVR
- Oculus
- m_BuildTarget: Android
m_Enabled: 1
m_Devices:
- None
- OpenVR
- Oculus
openGLRequireES31: 0
openGLRequireES31AEP: 0
openGLRequireES32: 0
@ -619,20 +628,35 @@ PlayerSettings:
webGLThreadsSupport: 0
webGLWasmStreaming: 0
scriptingDefineSymbols:
1: VRC_SDK_VRCSDK3
1: VRC_SDK_VRCSDK3;UNITY_POST_PROCESSING_STACK_V2
7: UNITY_POST_PROCESSING_STACK_V2;VRC_SDK_VRCSDK3
13: UNITY_POST_PROCESSING_STACK_V2
14: UNITY_POST_PROCESSING_STACK_V2
19: UNITY_POST_PROCESSING_STACK_V2
21: UNITY_POST_PROCESSING_STACK_V2
25: UNITY_POST_PROCESSING_STACK_V2
27: UNITY_POST_PROCESSING_STACK_V2
28: UNITY_POST_PROCESSING_STACK_V2
29: UNITY_POST_PROCESSING_STACK_V2
30: UNITY_POST_PROCESSING_STACK_V2
32: UNITY_POST_PROCESSING_STACK_V2
33: UNITY_POST_PROCESSING_STACK_V2
platformArchitecture: {}
scriptingBackend: {}
il2cppCompilerConfiguration: {}
il2cppCompilerConfiguration:
Android: 1
Standalone: 1
managedStrippingLevel: {}
incrementalIl2cppBuild: {}
suppressCommonWarnings: 1
allowUnsafeCode: 0
additionalIl2CppArgs:
additionalIl2CppArgs: --compiler-flags="" --linker-flags=""
scriptingRuntimeVersion: 1
gcIncremental: 1
assemblyVersionValidation: 1
gcWBarrierValidation: 0
apiCompatibilityLevelPerPlatform:
Android: 3
Standalone: 3
m_RenderingPath: 1
m_MobileRenderingPath: 1

View File

@ -4,13 +4,13 @@
QualitySettings:
m_ObjectHideFlags: 0
serializedVersion: 5
m_CurrentQuality: 3
m_CurrentQuality: 2
m_QualitySettings:
- serializedVersion: 2
name: VRC Low
pixelLightCount: 4
shadows: 2
shadowResolution: 2
shadowResolution: 1
shadowProjection: 1
shadowCascades: 2
shadowDistance: 75
@ -58,7 +58,7 @@ QualitySettings:
skinWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 4
antiAliasing: 2
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
@ -86,43 +86,6 @@ QualitySettings:
shadows: 2
shadowResolution: 3
shadowProjection: 1
shadowCascades: 2
shadowDistance: 75
shadowNearPlaneOffset: 2
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
skinWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 4
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 0
lodBias: 2
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 4096
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 128
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 0}
excludedTargetPlatforms:
- Android
- serializedVersion: 2
name: VRC Ultra
pixelLightCount: 8
shadows: 2
shadowResolution: 3
shadowProjection: 1
shadowCascades: 4
shadowDistance: 150
shadowNearPlaneOffset: 2

44
.github/ProjectRoot/manifest-2022.json vendored Normal file
View File

@ -0,0 +1,44 @@
{
"dependencies": {
"com.unity.ai.navigation": "1.1.4",
"com.unity.collab-proxy": "2.0.5",
"com.unity.ide.rider": "3.0.24",
"com.unity.ide.visualstudio": "2.0.18",
"com.unity.ide.vscode": "1.2.5",
"com.unity.test-framework": "1.1.33",
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.7.5",
"com.unity.ugui": "1.0.0",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.cloth": "1.0.0",
"com.unity.modules.director": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0",
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.physics2d": "1.0.0",
"com.unity.modules.screencapture": "1.0.0",
"com.unity.modules.terrain": "1.0.0",
"com.unity.modules.terrainphysics": "1.0.0",
"com.unity.modules.tilemap": "1.0.0",
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.uielements": "1.0.0",
"com.unity.modules.umbra": "1.0.0",
"com.unity.modules.unityanalytics": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
"com.unity.modules.unitywebrequestaudio": "1.0.0",
"com.unity.modules.unitywebrequesttexture": "1.0.0",
"com.unity.modules.unitywebrequestwww": "1.0.0",
"com.unity.modules.vehicles": "1.0.0",
"com.unity.modules.video": "1.0.0",
"com.unity.modules.vr": "1.0.0",
"com.unity.modules.wind": "1.0.0",
"com.unity.modules.xr": "1.0.0"
}
}

View File

@ -0,0 +1,4 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/UserDictionary/Words/=blendshape/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Blendshapes/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=nadena/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@ -0,0 +1,397 @@
{
"dependencies": {
"com.unity.ai.navigation": {
"version": "1.1.4",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.modules.ai": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.burst": {
"version": "1.8.7",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.mathematics": "1.2.1"
},
"url": "https://packages.unity.com"
},
"com.unity.collab-proxy": {
"version": "2.0.5",
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.ext.nunit": {
"version": "1.0.6",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.ide.rider": {
"version": "3.0.24",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ext.nunit": "1.0.6"
},
"url": "https://packages.unity.com"
},
"com.unity.ide.visualstudio": {
"version": "2.0.18",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.test-framework": "1.1.9"
},
"url": "https://packages.unity.com"
},
"com.unity.ide.vscode": {
"version": "1.2.5",
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.mathematics": {
"version": "1.2.6",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.nuget.newtonsoft-json": {
"version": "3.2.1",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.test-framework": {
"version": "1.1.33",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ext.nunit": "1.0.6",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.textmeshpro": {
"version": "3.0.6",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ugui": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.timeline": {
"version": "1.7.5",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.modules.director": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.ugui": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.imgui": "1.0.0"
}
},
"com.vrchat.avatars": {
"version": "file:com.vrchat.avatars",
"depth": 0,
"source": "embedded",
"dependencies": {}
},
"com.vrchat.base": {
"version": "file:com.vrchat.base",
"depth": 0,
"source": "embedded",
"dependencies": {
"com.unity.burst": "1.4.11",
"com.unity.mathematics": "1.2.5",
"com.unity.nuget.newtonsoft-json": "3.0.2"
}
},
"com.vrchat.core.vpm-resolver": {
"version": "file:com.vrchat.core.vpm-resolver",
"depth": 0,
"source": "embedded",
"dependencies": {
"com.unity.nuget.newtonsoft-json": "3.0.2"
}
},
"jp.lilxyzw.liltoon": {
"version": "file:jp.lilxyzw.liltoon",
"depth": 0,
"source": "embedded",
"dependencies": {}
},
"nadena.dev.modular-avatar": {
"version": "file:nadena.dev.modular-avatar",
"depth": 0,
"source": "embedded",
"dependencies": {
"com.unity.nuget.newtonsoft-json": "2.0.0"
}
},
"com.unity.modules.ai": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.androidjni": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.animation": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.assetbundle": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.audio": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.cloth": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics": "1.0.0"
}
},
"com.unity.modules.director": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.animation": "1.0.0"
}
},
"com.unity.modules.imageconversion": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.imgui": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.jsonserialize": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.particlesystem": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.physics": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.physics2d": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.screencapture": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.imageconversion": "1.0.0"
}
},
"com.unity.modules.subsystems": {
"version": "1.0.0",
"depth": 1,
"source": "builtin",
"dependencies": {
"com.unity.modules.jsonserialize": "1.0.0"
}
},
"com.unity.modules.terrain": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.terrainphysics": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.terrain": "1.0.0"
}
},
"com.unity.modules.tilemap": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics2d": "1.0.0"
}
},
"com.unity.modules.ui": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.uielements": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
}
},
"com.unity.modules.umbra": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.unityanalytics": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
}
},
"com.unity.modules.unitywebrequest": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.unitywebrequestassetbundle": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0"
}
},
"com.unity.modules.unitywebrequestaudio": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.audio": "1.0.0"
}
},
"com.unity.modules.unitywebrequesttexture": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0"
}
},
"com.unity.modules.unitywebrequestwww": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
"com.unity.modules.unitywebrequestaudio": "1.0.0",
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0"
}
},
"com.unity.modules.vehicles": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics": "1.0.0"
}
},
"com.unity.modules.video": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0"
}
},
"com.unity.modules.vr": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.xr": "1.0.0"
}
},
"com.unity.modules.wind": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.xr": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.subsystems": "1.0.0"
}
}
}
}

View File

@ -0,0 +1,25 @@
{
"dependencies": {
"com.vrchat.avatars": {
"version": "3.4.2"
},
"nadena.dev.ndmf": {
"version": "1.4.0"
}
},
"locked": {
"com.vrchat.avatars": {
"version": "3.4.2",
"dependencies": {
"com.vrchat.base": "3.4.2"
}
},
"com.vrchat.base": {
"version": "3.4.2",
"dependencies": {}
},
"nadena.dev.ndmf": {
"version": "1.4.0"
}
}
}

View File

@ -0,0 +1,25 @@
{
"dependencies": {
"com.vrchat.avatars": {
"version": "3.7.4"
},
"nadena.dev.ndmf": {
"version": "1.8.0-alpha.4"
}
},
"locked": {
"com.vrchat.avatars": {
"version": "3.7.4",
"dependencies": {
"com.vrchat.base": "3.7.4"
}
},
"com.vrchat.base": {
"version": "3.7.4",
"dependencies": {}
},
"nadena.dev.ndmf": {
"version": "1.8.0-alpha.4"
}
}
}

71
.github/cut-changelog.pl vendored Executable file
View File

@ -0,0 +1,71 @@
#!/usr/bin/perl
use strict;
use warnings;
my ($changelog_file, $header_file, $version, $excerpt_file) = @ARGV;
open my $changelog, '<', $changelog_file or die "Can't open $changelog_file: $!";
open my $header, '<', $header_file or die "Can't open $header_file: $!";
open my $new_changelog, '>', "$changelog_file.new" or die "Can't open $changelog_file.new: $!";
if (!$excerpt_file) {
$excerpt_file = '/dev/null';
}
open my $excerpt, '>', $excerpt_file or die "Can't open $excerpt_file: $!";
# Copy all lines before the first "## "
while (my $line = <$changelog>) {
last if $line =~ /^## /;
print $new_changelog $line;
}
# Copy header into the output changelog
while (my $line = <$header>) {
print $new_changelog $line;
}
# Generate new header: ## [version] - [YYYY-mm-DD]
my $date = `date +%Y-%m-%d`;
chomp $date;
print $new_changelog "## [$version] - [$date]\n";
# Copy all lines until the next ## into both the new changelog and $excerpt.
# Prune any ###-sections that contain no content
my @buffered;
while (my $line = <$changelog>) {
if ($line =~ /^### /) {
@buffered = ($line);
} elsif ($line =~ /^\s*$/) {
if (@buffered) {
push @buffered, $line;
} else {
print $new_changelog $line;
print $excerpt $line;
}
} elsif ($line =~ /^## /) {
@buffered = ();
print $new_changelog $line;
last;
} else {
for my $buffered_line (@buffered){
print $new_changelog $buffered_line;
print $excerpt $buffered_line;
}
@buffered = ();
print $new_changelog $line;
print $excerpt $line;
}
}
# Copy remainder of changelog into new changelog
while (my $line = <$changelog>) {
print $new_changelog $line;
}
rename "$changelog_file.new", $changelog_file or die "Can't rename $changelog_file.new to $changelog_file: $!";

View File

@ -9,3 +9,7 @@ updates:
directory: "/docs" # Location of package manifests
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
schedule:
interval: "weekly"
directory: .github/workflows

22
.github/gen-docs-changelog.pl vendored Executable file
View File

@ -0,0 +1,22 @@
#!/usr/bin/perl
use strict;
use warnings;
# We want to skip two sections - the main header, then up to the first version header.
# In a prerelease, we only want to skip the first section (not including the unreleased header)
if ($ENV{PRERELEASE} eq 'false') {
while (<>) {
if (/^\## /) { last; }
}
}
while (<>) {
if (/^## /) { print; last; }
}
while (<>) {
print;
}

View File

@ -1,81 +0,0 @@
name: Build Release
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
tags:
- '**'
env:
packageName: "nadena.dev.modular-avatar"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Checkout logo assets
uses: actions/checkout@v3
if: startsWith(github.ref, 'refs/tags/')
with:
repository: bdunderscore/modular-avatar-images
path: image-assets
- name: Inject logo assets
if: startsWith(github.ref, 'refs/tags/')
run: |
cp -f image-assets/img/logo/ma_logo.png Packages/${{env.packageName}}/Editor/Images/logo.png
- name: get version
id: version
uses: notiz-dev/github-action-json-property@7c8cf5cc36eb85d8d287a8086a39dac59628eb31
with:
path: "Packages/${{env.packageName}}/package.json"
prop_path: "version"
- name: Check tag consistency
if: startsWith(github.ref, 'refs/tags/')
run: |
if [ "${{ steps.version.outputs.prop }}" != "${GITHUB_REF##*/}" ]; then
echo "Version in package.json does not match tag name: ${{ steps.version.outputs.prop }} != ${GITHUB_REF##*/}"
exit 1
fi
- run: echo ${{steps.version.outputs.prop}}
- name: Set Environment Variables
run: |
echo "zipFile=${{ env.packageName }}-${{ steps.version.outputs.prop }}".zip >> $GITHUB_ENV
echo "unityPackage=${{ env.packageName }}-${{ steps.version.outputs.prop }}.unitypackage" >> $GITHUB_ENV
- name: Create Zip
uses: thedoctor0/zip-release@09336613be18a8208dfa66bd57efafd9e2685657
with:
type: "zip"
directory: "Packages/${{env.packageName}}/"
filename: "../../${{env.zipFile}}" # make the zip file two directories up, since we start two directories in above
- run: find "Packages/${{env.packageName}}/" -name \*.meta >> metaList
- name: Create UnityPackage
uses: pCYSl5EDgo/create-unitypackage@e28c7a4616b2754c564b0a959a03b3c89b756fdb
with:
package-path: ${{ env.unityPackage }}
include-files: metaList
- name: Make Release
uses: softprops/action-gh-release@1e07f4398721186383de40550babbdf2b84acfc5
if: startsWith(github.ref, 'refs/tags/')
with:
draft: true
generate_release_notes: true
tag_name: ${{ steps.version.outputs.prop }}
files: |
${{ env.zipFile }}
${{ env.unityPackage }}
Packages/${{ env.packageName }}/package.json

View File

@ -1,34 +1,108 @@
name: Build documentation
name: Build documentation
on:
push:
branches:
- refactor-structure
pull_request:
workflow_call:
inputs:
ref:
description: 'commit to build'
type: string
required: false
path:
description: 'path within the docs pages to build to'
type: string
required: false
artifact:
description: 'artifact name to write'
type: string
required: false
latest:
description: 'build the latest release'
type: boolean
required: false
prerelease:
description: 'use prerelease changelog'
type: boolean
required: false
default: true
jobs:
build-docs:
name: Build documentation
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v3 # check out this repo
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.ref }}
- uses: actions/checkout@v4
with:
repository: bdunderscore/modular-avatar-images
path: modular-avatar-images
- name: Install logo assets
run: |
cp -Rv modular-avatar-images/img/* docs/static/img
cp -Rv modular-avatar-images/img/* docs~/static/img
- name: Setup yarn 2.0
run: |
corepack enable
corepack prepare yarn@stable --activate
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(cd docs~; yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-docs-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-docs-
- name: Set baseUri
if: ${{ inputs.path }}
run: |
BASEURL="/${{ inputs.path }}/" perl -i -p -e "s{baseUrl: '/'}{baseUrl: '\$ENV{BASEURL}'}" docs~/docusaurus.config.js
cat docs~/docusaurus.config.js
- name: Format changelogs
run: |
SUFFIX=""
export PRERELEASE=${{ inputs.prerelease && 'true' || 'false' }}
if [ ${{ inputs.prerelease }} == true ]; then
SUFFIX="-PRERELEASE"
fi
perl -n .github/gen-docs-changelog.pl < CHANGELOG$SUFFIX.md >> docs~/docs/changelog.md
perl -n .github/gen-docs-changelog.pl < CHANGELOG$SUFFIX''-jp.md >> docs~/i18n/ja/docusaurus-plugin-content-docs/current/changelog.md
- name: Build docs
run: |
cd docs
yarn install
cd docs~
yarn install --immutable
yarn build
ls -lR build
- name: Set robots.txt
run: |
if [ -e docs~/robots.txt ]; then
cp docs~/robots.txt docs~/build/robots.txt
fi
- name: Package documentation
run: |
tar -cf docs.tar -C docs~/build .
- name: Upload artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: docs
path: docs/build
name: ${{ inputs.artifact || 'docs' }}
path: docs.tar

58
.github/workflows/changelog-check.yml vendored Normal file
View File

@ -0,0 +1,58 @@
# From https://github.com/anatawa12/AvatarOptimizer/blob/ccb863243433019f323c23a3a2e24b27e15b2f6c/.github/workflows/changelog-check.yml
# Copyright 2022 anatawa12
# MIT license.
# this workflow checks CHANGELOG.md & CHANGELOG-SNAPSHOTS.md is updated correctly
# to skip this check, include `NO-CHANGELOG` for CHANGELOG.md
# and `NO-CHANGELOG-PRERELEASE` for CHANGELOG-PRERELEASE.md in tags of PR.
# also, this action ignores `dependencies` pull requests (expected to be generated by dependabot)
name: CHANGELOG check
on:
pull_request_target:
branches: [ main, main-* ]
types: [ opened, synchronize, reopened, ready_for_review, labeled, unlabeled ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
releasenote-check:
if: ${{ ! github.event.pull_request.draft }}
runs-on: ubuntu-latest
strategy:
matrix:
file: [CHANGELOG.md, CHANGELOG-jp.md, CHANGELOG-PRERELEASE.md, CHANGELOG-PRERELEASE-jp.md]
env:
NO_CHANGELOG: ${{
contains(github.event.pull_request.labels.*.name, 'NO-CHANGELOG')
|| contains(github.event.pull_request.labels.*.name, 'documentation')
|| contains(github.event.pull_request.labels.*.name, 'localization')
|| contains(github.event.pull_request.labels.*.name, 'ci')
|| contains(github.event.pull_request.labels.*.name, 'refactor')
|| startsWith(github.event.pull_request.head.label, 'bdunderscore:dependabot/')
|| '' }}
SNAPSHOT_ONLY: ${{ contains(github.event.pull_request.labels.*.name, 'PRERELEASE-ONLY') || '' }}
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- name: Fetch pull_request info
env:
GH_REPO: ${{ github.repositoryUrl }}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
PR_NUM: ${{ github.event.number }}
run: |
gh pr view $PR_NUM --json=files | jq --raw-output '.files[].path' > files.txt
- name: Changelog check for ${{ matrix.file }}
if: always() && !env.NO_CHANGELOG && (startsWith(matrix.file, 'CHANGELOG-PRERELEASE') || !env.SNAPSHOT_ONLY)
run: |
if ! grep -e '^${{ matrix.file }}$' < files.txt > /dev/null; then
echo "::error::An entry in ${{ matrix.file }} is required for this PR."
echo "If this change is only relevant between snapshot versions: Add the label 'PRERELEASE-ONLY' to this PR." >> $GITHUB_STEP_SUMMARY
echo "If this change does not warrant any release notes: Add the label 'NO-CHANGELOG' to this PR." >> $GITHUB_STEP_SUMMARY
exit 1
fi

View File

@ -3,44 +3,130 @@ on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
- docs-snapshot
- docs-ci-test
workflow_dispatch: {}
release:
types:
- released
concurrency:
group: "pages"
group: "pages-cf"
cancel-in-progress: true
jobs:
snapshot-docs:
name: Snapshot documentation
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
# Run on releases only
if: ${{ github.event.release }}
with:
ref: ${{ github.ref }}
fetch-depth: 0
fetch-tags: true
- name: Merge with existing branch
# Run on releases only
if: ${{ github.event.release }}
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "github-actions@nadena.dev"
git merge -s ours origin/docs-snapshot
git push origin HEAD:docs-snapshot
build-docs:
name: Build documentation
name: Build documentation (latest release)
# TODO - update to build-docs.yml
uses: bdunderscore/modular-avatar/.github/workflows/build-test-docs.yml@main
needs:
- snapshot-docs
with:
ref: docs-snapshot
prerelease: false
build-docs-dev:
name: Build documentation (main branch)
uses: bdunderscore/modular-avatar/.github/workflows/build-test-docs.yml@main
with:
ref: main
path: dev
artifact: docs-dev
prerelease: true
deploy-docs:
name: Deploy documentation
needs: build-docs
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs:
- build-docs
- build-docs-dev
runs-on: ubuntu-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v2
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.ref }}
- name: Download artifact (tagged)
uses: actions/download-artifact@v4
with:
name: docs
path: docs/build
- name: Setup Pages
uses: actions/configure-pages@v2
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
- name: Download artifact (latest)
uses: actions/download-artifact@v4
with:
path: docs/build
name: docs-dev
path: docs/build/dev
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
- name: Dump file listing
run: |
ls -lR docs/build
- name: Unpack documentation
run: |
mkdir -p docs-site~/public/dev
tar -xf docs/build/docs.tar -C docs-site~/public
tar -xf docs/build/dev/docs.tar -C docs-site~/public/dev
- name: Setup yarn 2.0
run: |
corepack enable
corepack prepare yarn@stable --activate
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(cd docs-site~; yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-site-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-site-
- name: Build CF site
run: |
cd docs-site~
YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn install
- name: Deploy to Cloudflare Pages
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CF_API_TOKEN }}
command: deploy --name modular-avatar-docs
workingDirectory: docs-site~
- name: Purge cache
uses: nathanvaughn/actions-cloudflare-purge@784d555fc0fc48946a1e34873a43fc8cf634bcfa
continue-on-error: true
with:
cf_zone: ${{ secrets.CF_ZONE_ID }}
cf_auth: ${{ secrets.CF_API_TOKEN }}

View File

@ -0,0 +1,56 @@
name: Export GameCI license
on:
workflow_dispatch: {}
jobs:
export:
runs-on: ubuntu-latest
steps:
- name: Setup
run: |
sudo apt-get -y install gnupg
gpg --import <<EOF
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQGNBGT9rngBDAC92NQAEUXfPlYHESpYjovuSjTwxZBy8R1NR/8czcEnnNUSo09z
ygzyRpgvxar5wL00WNY3cF03vXURJCV2FQYrsJEt0zAEQ+hTxwpVFcGjGr4ttI4+
HW/kDXeWgH/Fk72eiv6KwmTSVEnjMQAGMOnpPgPxh9Brj0n3wQjp9WinEwRX2gFn
gSoOQy6tLWtyLD6rYHDvAZ5FpSuuLqZfc3miHPcrs62IpeE6MaC4FGy7QLCnkL3X
JBKYY4Y3/nsiNUv+I2U8laJ1CkUDZfoJ/t6XP35n4PCD/phOxa5E96hrGQqlIrnL
vdYWVlZL/Wv+v7v/9taXcQUrqeKudFar2xFkH+LmBs6NRJUf84zRWpJhOTYS7Owo
JqJX1GSeZjDbUc/pDX6RIz6iG/cjcCbooLwCtu/oCGJtznVD/bBxnmdmP20UK4Zd
JuaG05/FbSM+dtBpAQ68yejloCngPuIYZYcvRi3l/rDl6+IwjsFEzg02yr8Cx6bQ
d/gKL3W54Gn4Q5sAEQEAAbQXYmRfYmRfIDxiZF9AbmFkZW5hLmRldj6JAdQEEwEK
AD4WIQQgqEPycUKGtLegx/izugd8bgW0LgUCZP2ueAIbAwUJA8JnAAULCQgHAgYV
CgkICwIEFgIDAQIeAQIXgAAKCRCzugd8bgW0LnZkDACXHH2lIGemnMvpF+vfUlWt
24CYbitrkNyEzFXf+Ya4XssL/9vacXhlPvW04vYRpZAPcqTZxuziLKWTigkymj+k
ufRfhK9+XbZQHp10rLiG53o/SM8azXyYFH6PrFJERPD6O1hbTwwfcpfKN3GiNQCM
1Oe1Ao/orI/hIViRlMrD8xEjNgZB/5FDzGIYZxsRzjX0Psm+Xmh92DueCf9oVFXe
et1wPaxqzP7+YqvrzgTLVksEtieYiauElsEpGcVobVGupKI2K4Du+j2yffPPQJyU
fSjw1Xdlpho2ZQu21bMXpl3vQswnkyrfBAIEqd6EsTZFk8B8Xv99U4Jy7fUouf8l
8QlCOWIDv0z2mt5OKqGhQuEbKKTmTRIBWnBIfDsE0tZSmInVbChPfefGRTP3Jj2W
0Y66yc4rIN560wnwB7yMccgC/hISBb1jsZCW+c87NSDkUz3dgwWVCJQ1sOb5L7Sc
ZpfWffOxPewWUjOwTpPXmjoj5YPvGvcC+73gKIgdVn25AY0EZP2ueAEMAMZTMq8X
B5I+QsNGkim/bOORflezCPDJYc2ivpdxdiEKSwyj5s9NTJ/huwi/6wnfZ1/EY7L1
NOg5MP7V6OXsiQd+i/KNq1pl24UsmAJr4bfVM1D6Kkgg8iC3pBqabFWAQ6Vlh0TK
lXAcUGC7VO4BGmdDGp+f9n4tOa7ieDiH0LIsKkj/nVa2chPnvycruNtgOLQ3iusy
7DhlacdKFN56n1/somuhfk0t6bIEI3b0d4c2Htu81Xtpm8bkzhwmm9fw6bTBjTjh
UtFraj2vmybfujqqofh0FHDz8BJsrZYkQtKmnBGR+9HWGiWuEVx2lQHj4xN/7E8d
I+liA+sJtPON3lfBybsEkTx0GwPmwvZ2LnC7dCx8v/aMQMPy7AsnP2SxAkKPKJc7
hIeAkobTbQjBHuk+PelimnvUdmdPg+RR4eUDmpCOlRib6x3WKnadOafsO96hAoUg
kbcwwlML3TQSauBVbov1ZlLYtXpCQalX0DwdGWvHDHFTXSyvY0IJ36vCFwARAQAB
iQG8BBgBCgAmFiEEIKhD8nFChrS3oMf4s7oHfG4FtC4FAmT9rngCGwwFCQPCZwAA
CgkQs7oHfG4FtC4cVwv/QHDqWDfJXXRArbsn+n/xofgnt1sB2KwvRaA/DQpI5zk8
AFXbqwPClIf+8kvTgGEgDdIBAmLcj5ZEqbu5Y25sbSlNY4Kbk1nYSwan3Jwpakgo
04zwPiThLO0kboJ+dsu4TUX8qN1hYRcgomHDe1DocVsvX4Bp+JA809+iCk5FKD95
OKeeo++Ulyzigf49qUe70HkqI+LYo4S5nN+EyiqMrcjh4NXDgJkPxt/rCClQVbVi
zotM3zo5iqy8sV/GsVzIr6LapxIvfIvrgcchShwLMhl7xy9WhaASdzv/+VnJZrmQ
6i6gqZ6fHz/RPeEWdoMU+OojoiQHpjyVsLv8Vj4pilzVKdqofTQ6tyMv6i37C7SJ
6OqdaNUCVlM4iFCjm8fg/L+LXIIhmjhdmXtaPDgYwwwcpK2n5IcItp526+6Bu2Wt
VhTIRf5zG/qTj/r3P+jrApgbtDpaJST/hrRaqCYiOxkJU2krrrBy9ttq9h4lSiiZ
6nL+CD9YfkV6cDH7BWlz
=So9v
-----END PGP PUBLIC KEY BLOCK-----
EOF
echo "foo" | gpg --encrypt -a --recipient bd_@nadena.dev

203
.github/workflows/gameci.yml vendored Normal file
View File

@ -0,0 +1,203 @@
# MIT License
#
# Copyright (c) 2022 anatawa12
# Copyright (c) 2022 bd_
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
name: GameCI
on:
push:
branches: [main, dev, ci, refactor-structure]
# This is a bit of a radioactive event; we need to be very careful with what permissions
# we assign this action, as we're allowing arbitrary code execution with the context of
# whatever permissions we assign.
pull_request_target: {}
workflow_dispatch: {}
workflow_call:
secrets:
UNITY_LICENSE:
required: true
# pull_request_target grants access to a privileged GITHUB_TOKEN by default, revoke this
permissions: {}
jobs:
build-and-test:
name: Unit tests
strategy:
matrix:
unity_major_version: [ 2022 ]
sdk: [ vrcsdk ]
runs-on: ubuntu-latest
permissions:
checks: write
contents: read
steps:
- id: configure
name: Configure
env:
unity_major_version: ${{ matrix.unity_major_version }}
run: |
if [ $unity_major_version == 2019 ]; then
echo "unity_version=2019.4.31f1" >> $GITHUB_OUTPUT
elif [ $unity_major_version == 2022 ]; then
echo "unity_version=2022.3.6f1" >> $GITHUB_OUTPUT
else
echo "Invalid unity_major_version: $unity_major_version"
exit 1
fi
- id: setup
name: Setup
env:
unity_version: ${{ steps.configure.outputs.unity_version }}
sdk: ${{ matrix.sdk }}
run: |
set -x
sudo apt-get install xmlstarlet -y
should_test=true
echo should_test=$should_test >> $GITHUB_OUTPUT
can_fail=false
if [ $sdk == standalone ]; then
can_fail=$should_test
fi
echo can_fail=$can_fail >> $GITHUB_OUTPUT
if $can_fail; then
check_name="Unsupported test result ($unity_version, $sdk)"
else
check_name="Test result ($unity_version, $sdk)"
fi
echo check_name=$check_name >> $GITHUB_OUTPUT
- uses: actions/checkout@v4
if: ${{ steps.setup.outputs.should_test == 'true' }}
with:
ref: ${{ github.event.pull_request.head.sha }}
- id: prepare-project
if: ${{ steps.setup.outputs.should_test == 'true' }}
name: Prepare project
run: |
mkdir .github/ProjectRoot/Packages/nadena.dev.modular-avatar -p
mv * .github/ProjectRoot/Packages/nadena.dev.modular-avatar
mv .github/ProjectRoot/* .
mv 'Packages/nadena.dev.modular-avatar/UnitTests~' 'Packages/nadena.dev.modular-avatar/UnitTests'
for i in packages-lock manifest vpm-manifest; do
if [ -e "$i-${{ matrix.unity_major_version }}.json" ]; then
mv "$i-${{ matrix.unity_major_version }}.json" Packages/$i.json -v
fi
done
- uses: anatawa12/sh-actions/setup-vrc-get@master
- name: Resolve packages
if: ${{ steps.setup.outputs.should_test == 'true' }}
run: |
vrc-get repo add -- "https://vpm.nadena.dev/vpm-prerelease.json" || true
vrc-get repo add -- "https://vrchat.github.io/packages/index.json?download" || true
vrc-get resolve --project .
vrc-get info project --project .
- if: ${{ steps.setup.outputs.should_test == 'true' }}
name: "Debug: List project contents"
run: |
ls -lR
ls -lR Packages/nadena*
- if: ${{ steps.setup.outputs.should_test == 'true' }}
name: "Debug: List package versions"
run: |
for i in Packages/*/package.json; do
echo $i
cat $i | jq .version
done
- uses: actions/cache@v4
if: ${{ steps.setup.outputs.should_test == 'true' }}
with:
path: Library
key: Library-${{ steps.configure.outputs.unity_version }}-${{ matrix.sdk }}
restore-keys: Library-
- uses: game-ci/unity-test-runner@v3
id: gameci
continue-on-error: ${{ steps.setup.outputs.can_fail == 'true' }}
if: ${{ steps.setup.outputs.should_test == 'true' }}
env:
# meh, just a personal license...
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
with:
testMode: EditMode
unityVersion: ${{ steps.configure.outputs.unity_version }}
githubToken: ${{ github.token }}
coverageOptions: generateAdditionalMetrics;generateHtmlReport;generateBadgeReport;assemblyFilters:+nadena.dev.*
customParameters: -nographics -assemblyNames Tests
checkName: ${{ steps.setup.outputs.check_name }}
# For our main "supported" platforms, we report the conclusion of gameci as-is. However, for standalone, we report
# neutral if it failed.
- id: determine_conclusion
name: Determine conclusion
if: ${{ steps.setup.outputs.should_test == 'true' }}
env:
unity_version: ${{ steps.configure.outputs.unity_version }}
sdk_platform: ${{ matrix.sdk }}
gameci_outcome: ${{ steps.gameci.outcome }}
can_fail: ${{ steps.setup.outputs.can_fail }}
run: |
set -x
outcome=$gameci_outcome
# Check whether any tests actually ran
test_count=$(
if ! cat ${{ steps.gameci.outputs.artifactsPath }}/editmode-results.xml | \
xmlstarlet sel -t -v "/test-run/@total"; then
echo 0
fi
)
if [ $test_count -eq 0 ] || [ x$test_count == x ]; then
outcome=failure
output="{ \"summary\": \"No tests ran\" }"
if ! $can_fail; then
exit 1
fi
else
output="{ \"summary\": \"Result: $outcome ($test_count tests)\" }"
fi
if [ "$outcome" == "failure" ] && $can_fail; then
outcome=neutral
fi
echo matrix_outcome=$outcome >> $GITHUB_OUTPUT
echo matrix_output=$output >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v4
if: ${{ steps.setup.outputs.should_test == 'true' && matrix.sdk == 'vrcsdk' }}
continue-on-error: true
with:
name: Coverage results ${{ steps.configure.outputs.unity_version }} ${{ matrix.sdk }}
path: ${{ steps.gameci.outputs.coveragePath }}

39
.github/workflows/gamici-activation.yml vendored Normal file
View File

@ -0,0 +1,39 @@
# MIT License
#
# Copyright (c) 2022 anatawa12
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
name: GameCI Acquire activation file
on:
workflow_dispatch: {}
jobs:
activation:
name: Request manual activation file 🔑
runs-on: ubuntu-latest
steps:
# Request manual activation file
- name: Request manual activation file
id: getManualLicenseFile
uses: game-ci/unity-request-activation-file@v2
- name: Expose as artifact
uses: actions/upload-artifact@v4
with:
name: ${{ steps.getManualLicenseFile.outputs.filePath }}
path: ${{ steps.getManualLicenseFile.outputs.filePath }}

231
.github/workflows/perform-release.yml vendored Normal file
View File

@ -0,0 +1,231 @@
name: Perform Release
# Portions of this workflow are based on https://github.com/anatawa12/AvatarOptimizer/blob/master/.github/workflows/release.yml
on:
workflow_dispatch:
inputs:
release_kind:
type: choice
description: The type of release.
default: prerelease
required: true
options:
- prerelease
- stable
- adhoc
publish:
description: "True to publish release to git, vpm. if false, this creates release asset only"
type: boolean
required: false
version:
description: "Version to release"
type: string
required: false
env:
PKG_NAME: nadena.dev.modular-avatar
RELEASE_TYPE: ${{ github.event.inputs.release_kind }}
concurrency:
group: publish
cancel-in-progress: true
permissions: write-all
jobs:
check-gameci:
uses: bdunderscore/modular-avatar/.github/workflows/gameci.yml@main
permissions:
checks: write
contents: read
secrets: inherit
check-docs:
name: Build documentation (latest release)
uses: bdunderscore/modular-avatar/.github/workflows/build-test-docs.yml@main
create-release:
needs: [ check-gameci, check-docs ]
runs-on: ubuntu-latest
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
# https://github.com/orgs/community/discussions/13836#discussioncomment-8535364
- uses: actions/create-github-app-token@v2
id: app-token
with:
app-id: ${{ vars.RELEASER_APP_ID }}
private-key: ${{ secrets.RELEASER_PRIVATE_KEY }}
- name: Validate prerelease version
id: check-version
if: ${{ github.event.inputs.release_kind == 'prerelease' && !contains(github.event.inputs.version, '-') }}
run:
echo "Prerelease version must contain a hyphen"
exit 1
- name: Validate stable version
id: check-version-stable
if: ${{ github.event.inputs.release_kind == 'stable' && contains(github.event.inputs.version, '-') }}
run:
echo "Stable version must not contain a hyphen"
exit 1
- name: Validate adhoc
id: validate-adhoc
if: ${{ github.event.inputs.release_kind == 'adhoc' && github.event.inputs.publish == 'true' }}
run:
echo "Adhoc release cannot be published"
exit 1
- name: Set Environment Variables
run: |
echo "zipFile=${{ env.PKG_NAME }}-${{ github.event.inputs.version }}".zip >> $GITHUB_ENV
echo "unityPackage=${{ env.PKG_NAME }}-${{ github.event.inputs.version }}.unitypackage" >> $GITHUB_ENV
echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
case "$RELEASE_TYPE" in
prerelease)
echo "PRERELEASE=true" >> $GITHUB_ENV
;;
stable)
echo "PRERELEASE=false" >> $GITHUB_ENV
;;
adhoc)
echo "PRERELEASE=true" >> $GITHUB_ENV
;;
esac
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ steps.app-token.outputs.token }}
- name: Checkout logo assets
uses: actions/checkout@v4
if: ${{ github.event.inputs.release_kind != 'adhoc' }}
with:
repository: bdunderscore/modular-avatar-images
path: .github/image-assets
- name: Inject logo assets
if: ${{ github.event.inputs.release_kind != 'adhoc' }}
run: |
cp -f .github/image-assets/img/logo/ma_logo.png Editor/Images/logo.png
cp -f .github/image-assets/img/logo/ma_icon.png Runtime/Icons/Icon_MA_Script.png
- name: Check semver syntax
if: steps.check-tag.outputs.need-new-tag == 'true'
id: semver-check
run: |
chmod +x .github/workflows/*.sh
.github/workflows/check-semver-syntax.sh ${{ github.event.inputs.version }}
- name: Set git user and email
id: git-config
run: |
git config --global user.name "nadena.dev release bot"
git config --global user.email "ci@nadena.dev"
- name: Update version
id: update-version
run: |
jq '.version = env.VERSION' package.json > package.json.tmp
mv package.json.tmp package.json
env:
VERSION: ${{ github.event.inputs.version }}
- name: Update changelog
id: changelog
run: |
chmod +x .github/*.pl
if [ "${{ env.PRERELEASE }}" == "true" ]; then
./.github/cut-changelog.pl CHANGELOG-PRERELEASE.md .github/CHANGELOG-HEADER.md ${{ env.VERSION }} .github/relnote-en.md
./.github/cut-changelog.pl CHANGELOG-PRERELEASE-jp.md .github/CHANGELOG-HEADER.md ${{ env.VERSION }} .github/relnote-jp.md
else
./.github/cut-changelog.pl CHANGELOG-PRERELEASE.md .github/CHANGELOG-HEADER.md ${{ env.VERSION }}
./.github/cut-changelog.pl CHANGELOG-PRERELEASE-jp.md .github/CHANGELOG-HEADER.md ${{ env.VERSION }}
./.github/cut-changelog.pl CHANGELOG.md .github/CHANGELOG-HEADER.md ${{ env.VERSION }} .github/relnote-en.md
./.github/cut-changelog.pl CHANGELOG-jp.md .github/CHANGELOG-HEADER.md ${{ env.VERSION }} .github/relnote-jp.md
fi
echo Version ${{ env.VERSION }} > release-note.md
echo >> release-note.md
if [ "${{ env.PRERELEASE }}" == "true" ]; then
echo '**This is a prerelease version.** There may be bugs, and API compatibility is not yet guaranteed.' >> release-note.md
echo 'Please: **BACK UP YOUR PROJECTS**' >> release-note.md
echo >> release-note.md
fi
echo '## Notable changes' >> release-note.md
cat .github/relnote-en.md >> release-note.md
echo >> release-note.md
echo '## 主な変更点' >> release-note.md
cat .github/relnote-jp.md >> release-note.md
- name: Upload CHANGELOG.md
if: ${{ github.event.inputs.release_kind == 'stable' }}
uses: actions/upload-artifact@v4
with:
name: CHANGELOG
path: CHANGELOG.md
- name: Upload CHANGELOG-PRERELEASE.md
if: ${{ github.event.inputs.release_kind == 'prerelease' }}
uses: actions/upload-artifact@v4
with:
name: CHANGELOG-PRERELEASE
path: CHANGELOG-PRERELEASE.md
- name: Upload release note
uses: actions/upload-artifact@v4
with:
name: changelog
path: release-note.md
- run: mv release-note.md .github
- name: Commit and tag version update
run: |
git commit -am "Release ${{ github.event.inputs.version }}"
git tag -a ${{ github.event.inputs.version }} -m "Release ${{ github.event.inputs.version }}"
- name: Publish tag
if: ${{ github.event.inputs.publish == 'true' }}
run: |
BRANCH_NAME=$(git branch --show-current)
git push origin $BRANCH_NAME && git push origin ${{ github.event.inputs.version }}
env:
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
- name: Create Zip
run: |
zip ".github/${{env.zipFile}}" ./* -r -x .github .git '.git/*' '*~/*' '*.ps1*'
- name: Move zipfile
run: |
mv .github/${{env.zipFile}} ${{env.zipFile}}
- uses: actions/upload-artifact@v4
with:
name: package-zip
path: ${{ env.zipFile }}
- name: Dump release notes
run: |
cat .github/release-note.md
- name: Make Release
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda
if: ${{ github.event.inputs.publish == 'true' }}
with:
draft: true
body_path: .github/release-note.md
tag_name: ${{ github.event.inputs.version }}
name: ${{ github.event.inputs.version }}
make_latest: ${{ github.event.inputs.release_kind == 'stable' }}
files: |
${{ env.zipFile }}
package.json

View File

@ -0,0 +1,50 @@
name: Test docs-site yarn installation
on:
push:
branches:
- ci
pull_request:
jobs:
build-docs:
name: Build documentation site
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
- name: Setup yarn 2.0
run: |
corepack enable
corepack prepare yarn@stable --activate
yarn --version
#- name: Get yarn cache directory path
# id: yarn-cache-dir-path
# run: echo "dir=$(cd docs-site~; yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
if: false
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-site-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-site-
- name: Build CF site
run: |
cd docs-site~
YARN_ENABLE_HARDENED_MODE=0 YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn install
- name: Display diff on failure
if: ${{ failure() }}
run: |
cd docs-site~
env
YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn install && git diff

View File

@ -1,4 +1,4 @@
name: Trigger repo listing generator
name: Trigger repo listing generator
on:
release:
@ -9,7 +9,7 @@ jobs:
dispatch:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v6
- uses: actions/github-script@v7
with:
github-token: ${{ secrets.VPM_REPO_TOKEN }}
script: |

76
.gitignore vendored
View File

@ -1,73 +1,3 @@
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
#
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Mm]emoryCaptures/
# Asset meta data should only be ignored when the corresponding asset is also ignored
!/[Aa]ssets/**/*.meta
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
[Aa]ssets/Plugins/Editor/JetBrains*
# Visual Studio cache directory
.vs/
# Gradle cache directory
.gradle/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Unity3D generated file on crash reports
sysinfo.txt
# Builds
*.apk
*.unitypackage
# Crashlytics generated file
crashlytics-build.properties
/UpstreamAssets/
/.idea/
/Assets/**/*
!/Assets/.gitkeep
!/Assets/bd_/
!/Assets/bd_/ModularAvatar/
!/Assets/bd_/ModularAvatar/.gitkeep
!/Assets/bd_/ModularAvatar.meta
!/Assets/bd_.meta
![Mm]odular[Aa]vatar.meta
UnitTests
UnitTests.meta
/UnitTests/

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "Packages/nadena.dev.ndmf"]
path = Packages/nadena.dev.ndmf
url = https://github.com/bdunderscore/ndmf.git

3
Assets.meta Normal file
View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 45facc2394ac4e6d9c6a8427227dc931
timeCreated: 1691906506

32
Assets/FixedPrefab.prefab Normal file
View File

@ -0,0 +1,32 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4316036803263603590
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8830680306940261232}
m_Layer: 0
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8830680306940261232
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4316036803263603590}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 78828bfbcb4cb4ce3b00de044eb2d927
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

133
CHANGELOG-PRERELEASE-jp.md Normal file
View File

@ -0,0 +1,133 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
### Fixed
### Changed
### Removed
### Security
### Deprecated
## [1.13.0-alpha.1] - [2025-04-10]
### Fixed
- [#1552] Merge Blend Treeにて、メインアバターFXレイヤーと同じ名前のintやboolパラメーターがBlend Treeに含まれている場合、
パラメーター型が修正されない問題を修正
- [#1553] リアクティブコンポーネントが生成するステートに、WD設定が正しくない問題を修正
- [#1555] VRC Animator Play Audioが、Audio Sourceまでの絶対パスで設定されている場合に、相対パスのMerge Animator
コンポーネントとマージされた場合、指定されたオブジェクトが存在しないことを検出し、参照を絶対パスとして扱うように修正
- 対象のパスにオブジェクトがある場合は、相対パスとして扱われます。安定性向上のためMerge Animatorコンポーネントと同じ
 指定方法を使用することをお勧めします。
### Changed
- [#1551] Merge Animatorは、遷移のない単一のstateを持つブレンドツリーのレイヤーに対して常にWDをONに設定します。
- 一部、以前の挙動に依存したアセットとの互換性を向上させるための変更です。
## [1.13.0-alpha.0] - [2025-04-08]
### Added
- (実験的機能) VRC以外のプラットフォームのサポートを有効化
## [1.12.3] - [2025-04-05]
### Fixed
- Additiveレイヤーの問題を修正NDMFバージョンアップグレードによって修正
### Changed
- [#1542] Merge Animatorは、アニメーションクリップを含む単一のstateを持つレイヤーに対してWD設定を一致させるが、
  ブレンドツリーを含む場合は一致させないように変更されました。
- これにより、1.12で導入された互換性の問題が修正されます1.12.0では、単一のstateアニメーションクリップに対してWD設定
と一致しないように変更されました)。
## [1.12.2] - [2025-04-03]
### Fixed
- [#1537] アニメーターパラメーターをアニメーションさせるカーブが、`Merge Motion` コンポーネントを使用して追加された場合、
`Rename Parameters` によって更新されない問題を修正``
## [1.12.1] - [2025-04-02]
### Fixed
- [#1532] Modular Avatarが新しく作成したプロジェクトでコンパイラエラーを出す問題を修正
## [1.12.0] - [2025-04-01]
### Fixed
- [#1531] lylicalInventoryとの互換性問題を修正
### Changed
- [#1530] `MA Menu Item`の自動パラメーター機能も、オブジェクトのパスに基づいて名前を割り当てるようになりました。
## [1.12.0-rc.1] - [2025-03-28]
### Added
- [#1524] MMDワールド対応をアバター全体で無効にする機能を追加
### Fixed
- [#1522] `Convert Constraints` がアニメーション参照を変換できない問題を修正
- [#1528] `Merge Animator``アバターのWrite Defaults設定に合わせる` 設定を無視し、常に合わせてしまう問題を修正
### Changed
- [#1529] `MA Parameters` の自動リネームは、オブジェクトのパスに基づいて新しい名前を割り当てるように変更されました。これにより、
`MA Sync Parameter Sequence` との互換性が向上します。
- `MA Sync Parameter Sequence` を使用している場合は、このバージョンに更新した後、SyncedParamsアセットを空にして、
すべてのプラットフォームを再アップロードすることをお勧めします。
## [1.12.0-rc.0] - [2025-03-22]
### Fixed
- [#1508] テクスチャのサイズが4の倍数でない場合に、エクスプレッションメニューアイコンの自動圧縮が失敗する問題を修正
- [#1513] iOSビルドでエクスプレッションメニューアイコンの圧縮が壊れる問題を修正
### Changed
- [#1514] `Merge Blend Tree``Merge Motion (Blend Tree)` に改名され、アニメーションクリップにも対応するようになりました
## [1.12.0-beta.0] - [2025-03-17]
### Added
- [#1497] CHANGELOGをドキュメンテーションサイトに追加
- [#1482] `Merge Animator` に既存のアニメーターコントローラーを置き換える機能を追加
- [#1481] [World Scale Object](https://m-a.nadena.dev/dev/ja/docs/reference/world-scale-object)を追加
- [#1489] [`MA MMD Layer Control`](https://modular-avatar.nadena.dev/docs/general-behavior/mmd)を追加
### Fixed
- [#1492] 前回のプレリリースでアイコンとロゴアセットが間違っていた問題を修正
- [#1501] MA Parametersコンポーネントのテキスト入力欄を編集する際にUnityのキーボードショートカットが機能しない問題を修正
- [#1410] 同期レイヤー内のモーションオーバーライドがBone Proxy/Merge Armatureオブジェクトの移動に対して更新されない問題を修正
- [#1504] 一部の状況で内部の`DelayDisable`レイヤーが不要なオブジェクトを参照しないように変更
- これにより、オブジェクトがアニメーションされているかどうかを追跡するAAOなどのツールとの互換性が向上します
### Changed
- [#1483] Merge Animator の 「アバターの Write Defaults 設定に合わせる」設定では、Additiveなレイヤー、および単一Stateかつ遷移のないレイヤー
 に対してはWrite Defaultsを調整しないように変更。
- [#1429] Merge Armature は、特定の場合にPhysBoneに指定されたヒューマイドボーンをマージできるようになりました。
- 具体的には、子ヒューマイドボーンがある場合はPhysBoneから除外される必要があります。
- [#1437] Create Toggle for Selectionにおいて、複数選択時時に必要に応じてサブメニューを生成し、子としてトグルを生成するように変更されました。
- [#1499] `Object Toggle`で制御される`Audio Source`がアニメーションブロックされたときに常にアクティブにならないように、
アニメーションがブロックされたときにオーディオソースを無効にするように変更。
- [#1489] `Merge Blend Tree` やリアクティブコンポーネントとMMDワールドの互換性の問題を修正。
詳細は[ドキュメント](https://modular-avatar.nadena.dev/docs/general-behavior/mmd)を参照してください。
- [#1502] `World Fixed Object``VRCParentConstraint` を使用するようになり、Androidビルドで使用可能になりました。
## [1.12.0-alpha.2] - [2025-03-10]
### Added
- Added CHANGELOG files
### Changed
- [#1476] ModularAvatarMergeAnimator と ModularAvatarMergeParameter を新しい NDMF API (`IVirtualizeMotion``IVirtualizeAnimatorController`) を使用するように変更
## Older versions
Please see CHANGELOG.md

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2f89fef1421c4126b6086156ff536d8f
timeCreated: 1741573199

135
CHANGELOG-PRERELEASE.md Normal file
View File

@ -0,0 +1,135 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
### Fixed
### Changed
### Removed
### Security
### Deprecated
## [1.13.0-alpha.1] - [2025-04-10]
### Fixed
- [#1552] Merge Blend Tree failed to correct parameter types when the main avatar FX layer contained an int or bool
parameter with the same name as one used in the blend tree.
- [#1553] Reactive components might generate states with incorrect write default settings
- [#1555] Fixed compatibility regression from 1.11.x: VRC Animator Play Audio, when configured with an absolute path
but merged with a relative-path merge animator component, will now detect that the indicated object does not
exist, and treat the reference as an absolute path.
- Note that if there is an object in the target path, then it will be treated as a relative path. Using
addressing for Play Audio behaviors consistent with Merge Animator settings is therefore recommended as it will be
more robust.
### Changed
- [#1551] Merge Animator will always set WD ON for single-state blendtree layers with no any state transitions.
- This fixes compatibility issues with assets which relied on the prior behavior.
## [1.13.0-alpha.0] - [2025-04-08]
### Added
- (Experimental feature) Enabled support for non-VRC platforms
## [1.12.3] - [2025-04-05]
### Fixed
- Fixed issues with additive layers (via NDMF version upgrade)
### Changed
- [#1542] Merge Animator now will match WD settings for layers with a single state containing an animation clip,
but not if it contains a blend tree. This fixes some compatibility issues introduced in 1.12 (where the behavior
was changed to not match WD settings for single-state animation clips).
## [1.12.2] - [2025-04-03]
### Fixed
- [#1537] Curves which animated animator parameters, when added using a `Merge Motion` component, would not be updated by
`Rename Parameters`
## [1.12.1] - [2025-04-02]
### Fixed
- [#1532] Modular Avatar has compiler errors in a newly created project
## [1.12.0] - [2025-04-01]
### Fixed
- [#1531] Fix compatibility issue with lylicalInventory
### Changed
- [#1530] `MA Menu Item` auto parameters now also assign names based on object paths
## [1.12.0-rc.1] - [2025-03-28]
### Added
- [#1524] Added support for disabling MMD world handling at an avatar level
### Fixed
- [#1522] `Convert Constraints` failed to convert animation references
- [#1528] `Merge Animator` ignored the `Match Avatar Write Defaults` setting and always matched
### Changed
- [#1529] `MA Parameters` auto-rename now assigns new names based on the path of the object. This should improve
compatibility with `MA Sync Parameter Sequence`
- If you are using `MA Sync Parameter Sequence`, it's a good idea to empty your SyncedParams asset and reupload all
platforms after updating to this version.
## [1.12.0-rc.0] - [2025-03-22]
### Fixed
- [#1508] Fix an issue where automatic compression of expressions menu icons would fail when the texture dimensions were
not divisible by four.
- [#1513] Expression menu icon compression broke on iOS builds
### Changed
- [#1514] `Merge Blend Tree` is now `Merge Motion (Blend Tree)` and supports merging animation clips as well as blend trees
## [1.12.0-beta.0] - [2025-03-17]
### Added
- [#1497] Added changelog to docs site
- [#1482] Added support for replacing pre-existing animator controllers to `Merge Animator`
- [#1481] Added [World Scale Object](https://m-a.nadena.dev/dev/docs/reference/world-scale-object)
- [#1489] Added [`MA MMD Layer Control`](https://modular-avatar.nadena.dev/docs/general-behavior/mmd)
### Fixed
- [#1492] Fixed incorrect icon and logo assets in prior prerelease
- [#1489] Fixed compatibility issues between `Merge Blend Tree` or reactive components and MMD worlds.
See [documentation](https://modular-avatar.nadena.dev/docs/general-behavior/mmd) for details on the new handling.
- [#1501] Unity keyboard shortcuts don't work when editing text fields on the MA Parameters component
- [#1410] Motion overrides on synced layers are not updated for Bone Proxy/Merge Armature object movement
- [#1504] The internal `DelayDisable` layer no longer references unnecessary objects in some situations
- This helps improve compatibility with AAO and other tools that track whether objects are animated
### Changed
- [#1483] The Merge Animator "Match Avatar Write Defaults" option will no longer adjust write defaults on states in
additive layers, or layers with only one state and no transitions.
- [#1429] Merge Armature will now allow you to merge humanoid bones with PhysBones attached in certain cases.
- Specifically, child humanoid bones (if there are any) must be excluded from all attached Physbones.
- [#1437] Create Toggle for Selection now creates submenus as necessary when multiple items are selected, and creates toggles as children.
- [#1499] When an audio source is controlled by an Object Toggle, disable the audio source when animations are blocked
to avoid it unintentionally being constantly active.
- [#1502] `World Fixed Object` now uses `VRCParentConstraint` and is therefore compatible with Android builds
## [1.12.0-alpha.2] - [2025-03-10]
### Added
- Added CHANGELOG files
### Changed
- [#1476] Switch ModularAvatarMergeAnimator and ModularAvatarMergeParameter to use new NDMF APIs (`IVirtualizeMotion` and `IVirtualizeAnimatorController`)
## Older versions
Please see CHANGELOG.md

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cb586a9c85634b8b81015d16899d797b
timeCreated: 1741571222

99
CHANGELOG-jp.md Normal file
View File

@ -0,0 +1,99 @@
# Changelog
Modular Avatarの主な変更点をこのファイルで記録しています。
なお、プレリリース版の変更点は `CHANGELOG-PRERELEASE.md` に記録されます。
この形式は [Keep a Changelog](https://keepachangelog.com/ja/1.0.0/) に基づいており、
このプロジェクトは [Semantic Versioning](https://semver.org/lang/ja/) に従っています。
## [Unreleased]
### Added
- (実験的機能) VRC以外のプラットフォームのサポートを有効化
### Fixed
- [#1555] VRC Animator Play Audioが、Audio Sourceまでの絶対パスで設定されている場合に、相対パスのMerge Animator
コンポーネントとマージされた場合、指定されたオブジェクトが存在しないことを検出し、参照を絶対パスとして扱うように修正
- 対象のパスにオブジェクトがある場合は、相対パスとして扱われます。安定性向上のためMerge Animatorコンポーネントと同じ
 指定方法を使用することをお勧めします。
### Changed
### Removed
### Security
### Deprecated
## [1.12.4] - [2025-04-10]
### Fixed
- [#1552] Merge Blend Treeにて、メインアバターFXレイヤーと同じ名前のintやboolパラメーターがBlend Treeに含まれている場合、
パラメーター型が修正されない問題を修正
- [#1553] リアクティブコンポーネントが生成するステートに、WD設定が正しくない問題を修正
### Changed
- [#1551] Merge Animatorは、遷移のない単一のstateを持つブレンドツリーのレイヤーに対して常にWDをONに設定します。
- 一部、以前の挙動に依存したアセットとの互換性を向上させるための変更です。
## [1.12.3] - [2025-04-05]
### Fixed
- Additiveレイヤーの問題を修正NDMFバージョンアップグレードによって修正
### Changed
- [#1542] Merge Animatorは、アニメーションクリップを含む単一のstateを持つレイヤーに対してWD設定を一致させるが、
  ブレンドツリーを含む場合は一致させないように変更されました。
- これにより、1.12で導入された互換性の問題が修正されます1.12.0では、単一のstateアニメーションクリップに対してWD設定
と一致しないように変更されました)。
## [1.12.2] - [2025-04-03]
### Fixed
- [#1537] アニメーターパラメーターをアニメーションさせるカーブが、`Merge Motion` コンポーネントを使用して追加された場合、
`Rename Parameters` によって更新されない問題を修正``
## [1.12.1] - [2025-04-02]
### Fixed
- [#1532] Modular Avatarが新しく作成したプロジェクトでコンパイラエラーを出す問題を修正
## [1.12.0] - [2025-04-01]
### Added
- CHANGELOGファイルを追加
- [#1482] `Merge Animator` に既存のアニメーターコントローラーを置き換える機能を追加
- [#1481] [World Scale Object](https://m-a.nadena.dev/ja/docs/reference/world-scale-object)を追加
- [#1489] [`MA MMD Layer Control`](https://modular-avatar.nadena.dev/docs/general-behavior/mmd)を追加
### Fixed
- [#1460] パラメーターアセットをMA Parametersにインポートするとき、ローカルのみのパラメーターが間違ってアニメーターのみ扱いになる問題を修正
- [#1489] `Merge Blend Tree` やリアクティブコンポーネントとMMDワールドの互換性の問題を修正。
- 詳細は[ドキュメント](https://modular-avatar.nadena.dev/docs/general-behavior/mmd)を参照してください。
- この動作を無効にするには、新しい `MA VRChat Settings` コンポーネントをアバターの適当なところに追加して、適切な設定を無効にしてください。
- [#1501] MA Parametersコンポーネントのテキスト入力欄を編集する際にUnityのキーボードショートカットが機能しない問題を修正
- [#1410] 同期レイヤー内のモーションオーバーライドがBone Proxy/Merge Armatureオブジェクトの移動に対して更新されない問題を修正
- [#1504] 一部の状況で内部の`DelayDisable`レイヤーが不要なオブジェクトを参照しないように変更
- これにより、オブジェクトがアニメーションされているかどうかを追跡するAAOなどのツールとの互換性が向上します
- [#1508] テクスチャのサイズが4の倍数でない場合に、エクスプレッションメニューアイコンの自動圧縮が失敗する問題を修正
- [#1513] iOSビルドでエクスプレッションメニューアイコンの圧縮処理が壊れる問題を修正
### Changed
- [#1529] `MA Parameters` の自動リネームと `MA Menu Item` の自動パラメーター機能は、オブジェクトのパスに基づいて名前
を割り当てるように変更されました。
- `MA Sync Parameter Sequence` を使用している場合は、このバージョンに更新した後、SyncedParamsアセットを空にして、
すべてのプラットフォームを再アップロードすることをお勧めします。
- [#1514] `Merge Blend Tree``Merge Motion (Blend Tree)` に改名され、アニメーションクリップにも対応するようになりました
- [#1476] ModularAvatarMergeAnimator と ModularAvatarMergeParameter を新しい NDMF API (`IVirtualizeMotion``IVirtualizeAnimatorController`) を使用するように変更
- [#1483] Merge Animator の 「アバターの Write Defaults 設定に合わせる」設定では、Additiveなレイヤー、および単一Stateかつ遷移のないレイヤー
 に対してはWrite Defaultsを調整しないように変更。
- [#1429] Merge Armature は、特定の場合にPhysBoneに指定されたヒューマイドボーンをマージできるようになりました。
- 具体的には、子ヒューマイドボーンがある場合はPhysBoneから除外される必要があります。
- [#1437] Create Toggle for Selectionにおいて、複数選択時時に必要に応じてサブメニューを生成し、子としてトグルを生成するように変更されました。
- [#1499] `Object Toggle`で制御される`Audio Source`がアニメーションブロックされたときに常にアクティブにならないように、
アニメーションがブロックされたときにオーディオソースを無効にするように変更。
- [#1502] `World Fixed Object``VRCParentConstraint` を使用するようになり、Androidビルドで使用可能になりました。
## それより前
GitHubのリリースページをご確認ください: https://github.com/bdunderscore/modular-avatar/releases

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1417544c34d9a4f4aacebf76247940a9
guid: b27815ff13397374abcf9547a36bfaf4
TextScriptImporter:
externalObjects: {}
userData:

View File

@ -1 +1,105 @@
Temporary test release
# Changelog
All notable changes to this project will be documented in this file.
Changes between prerelease versions will be documented in `CHANGELOG-PRERELEASE.md` instead.
[日本語版はこちらです。](CHANGELOG-jp.md)
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- (Experimental feature) Enabled support for non-VRC platforms
### Fixed
- [#1555] Fixed compatibility regression from 1.11.x: VRC Animator Play Audio, when configured with an absolute path
but merged with a relative-path merge animator component, will now detect that the indicated object does not
exist, and treat the reference as an absolute path.
- Note that if there is an object in the target path, then it will be treated as a relative path. Using
addressing for Play Audio behaviors consistent with Merge Animator settings is therefore recommended as it will be
more robust.
### Changed
### Removed
### Security
### Deprecated
## [1.12.4] - [2025-04-10]
### Fixed
- [#1552] Merge Blend Tree failed to correct parameter types when the main avatar FX layer contained an int or bool
parameter with the same name as one used in the blend tree.
- [#1553] Reactive components might generate states with incorrect write default settings
### Changed
- [#1551] Merge Animator will always set WD ON for single-state blendtree layers with no any state transitions.
- This fixes compatibility issues with assets which relied on the prior behavior.
## [1.12.3] - [2025-04-05]
### Fixed
- Fixed issues with additive layers (via NDMF version upgrade)
### Changed
- [#1542] Merge Animator now will match WD settings for layers with a single state containing an animation clip,
but not if it contains a blend tree. This fixes some compatibility issues introduced in 1.12 (where the behavior
was changed to not match WD settings for single-state animation clips).
- [#1551] Merge Animator will always set WD ON for single-state blendtree layers with no any state transitions.
## [1.12.2] - [2025-04-03]
### Fixed
- [#1537] Curves which animated animator parameters, when added using a `Merge Motion` component, would not be updated by
`Rename Parameters`
## [1.12.1] - [2025-04-02]
### Fixed
- [#1532] Modular Avatar has compiler errors in a newly created project
## [1.12.0] - [2025-04-01]
### Added
- Added CHANGELOG files
- [#1482] Added support for replacing pre-existing animator controllers to `Merge Animator`
- [#1481] Added [World Scale Object](https://m-a.nadena.dev/docs/reference/world-scale-object)
- [#1489] Added [`MA MMD Layer Control`](https://modular-avatar.nadena.dev/docs/general-behavior/mmd)
### Fixed
- [#1460] When importing parameter assets in MA Parameters, "local only" parameters were incorrectly treated as
"animator only"
- [#1489] Fixed compatibility issues between `Merge Blend Tree` or reactive components and MMD worlds.
- See [documentation](https://modular-avatar.nadena.dev/docs/general-behavior/mmd) for details on the new handling.
- To disable this behavior, attach the new `MA VRChat Settings` component to any object on your avatar and disable the appropriate setting.
- [#1501] Unity keyboard shortcuts don't work when editing text fields on the MA Parameters component
- [#1410] Motion overrides on synced layers are not updated for Bone Proxy/Merge Armature object movement
- [#1504] The internal `DelayDisable` layer no longer references unnecessary objects in some situations
- This helps improve compatibility with AAO and other tools that track whether objects are animated
- [#1508] Fix an issue where automatic compression of expressions menu icons would fail when the texture dimensions were
not divisible by four.
- [#1513] Expression menu icon compression broke on iOS builds
### Changed
- [#1529] `MA Parameters` auto-rename and `MA Menu Item`'s automatic parameter feature now assign names based on the
path of the object. This should improve compatibility with `MA Sync Parameter Sequence`
- If you are using `MA Sync Parameter Sequence`, it's a good idea to empty your SyncedParams asset and reupload all
platforms after updating to this version.
- [#1514] `Merge Blend Tree` is now `Merge Motion (Blend Tree)` and supports merging animation clips as well as blend trees
- [#1476] Switch ModularAvatarMergeAnimator and ModularAvatarMergeParameter to use new NDMF APIs (`IVirtualizeMotion` and `IVirtualizeAnimatorController`)
- [#1483] The Merge Animator "Match Avatar Write Defaults" option will no longer adjust write defaults on states in
additive layers, or layers with only one state and no transitions.
- [#1429] Merge Armature will now allow you to merge humanoid bones with PhysBones attached in certain cases.
- Specifically, child humanoid bones (if there are any) must be excluded from all attached Physbones.
- [#1437] Create Toggle for Selection now creates submenus as necessary when multiple items are selected, and creates toggles as children.
- [#1499] When an audio source is controlled by an Object Toggle, disable the audio source when animations are blocked
to avoid it unintentionally being constantly active.
- [#1502] `World Fixed Object` now uses `VRCParentConstraint` and is therefore compatible with Android builds
## Older versions
Please see the github releases page at https://github.com/bdunderscore/modular-avatar/releases

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1a7454bc513adb84d9ae85ed7e7268ba
guid: fd88882c757966b4fa90915edb8487b1
TextScriptImporter:
externalObjects: {}
userData:

View File

@ -1,12 +1,11 @@
Source code is licensed under the MIT license, as reproduced below, with some exceptions:
Files under Editor/images are licensed for redistribution as part of an official
modular avatar package only. Please replace them with other images (or delete them)
if you are making modifications. If you're interested in using the Modular Avatar
logo as part of your own asset's advertising, please refer to
https://modular-avatar.nadena.dev/docs/distributing-prefabs/logo-usage .
All other files are under the MIT license.
* Packages/com.vrchat.core.vpm-resolver is distributed under the VRChat Distro license.
See [the associated License.md file](Packages/com.vrchat.core.vpm-resolver/License.md) for details.
* Images under docs/static/img/irasutoya are Copyrighted by, and/or a derivative work of works copyrighted by
いらすとや (irasutoya.com). See [their license page](https://www.irasutoya.com/p/terms.html) for license details.
* The github source code distribution contains placeholder logo assets. The
[actual logo assets](https://github.com/bdunderscore/modular-avatar-images) are Copyright (c) Pumo,
and for use as part of packaged official modular avatar distributions only.
---
MIT License
@ -29,4 +28,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.

View File

@ -0,0 +1,153 @@
using System;
using System.Collections.Generic;
using System.Linq;
using nadena.dev.modular_avatar.animation;
using nadena.dev.ndmf.animator;
using UnityEditor;
using UnityEngine;
using EditorCurveBinding = UnityEditor.EditorCurveBinding;
using Object = UnityEngine.Object;
namespace nadena.dev.modular_avatar.core.editor
{
/// <summary>
/// The class to retarget m_IsActive animation to moved multiple objects
/// </summary>
internal class ActiveAnimationRetargeter
{
private readonly BuildContext _context;
private readonly BoneDatabase _boneDatabase;
private readonly AnimatorServicesContext _asc;
private readonly List<IntermediateObj> _intermediateObjs = new List<IntermediateObj>();
/// <summary>
/// Tracks an object whose Active state is animated, and which leads up to this Merge Animator component.
/// We use this tracking data to create proxy objects within the main armature, which track the same active
/// state.
/// </summary>
struct IntermediateObj
{
/// <summary>
/// The path of original object
/// </summary>
public string OriginalPath;
/// <summary>
/// Name of the intermediate object. Used to name proxy objects.
/// </summary>
public string Name;
/// <summary>
/// Whether this object is initially active.
/// </summary>
public bool InitiallyActive;
/// <summary>
/// List of created Intermediate Objects
/// </summary>
public List<GameObject> Created;
}
public ActiveAnimationRetargeter(
BuildContext context,
BoneDatabase boneDatabase,
Transform root
)
{
_context = context;
_boneDatabase = boneDatabase;
_asc = context.PluginBuildContext.Extension<AnimatorServicesContext>();
while (root != null && !RuntimeUtil.IsAvatarRoot(root))
{
var originalPath = RuntimeUtil.AvatarRootPath(root.gameObject);
System.Diagnostics.Debug.Assert(originalPath != null);
if (_asc.AnimationIndex.GetClipsForObjectPath(originalPath).Any(clip =>
GetActiveBinding(clip, originalPath) != null
))
{
_intermediateObjs.Add(new IntermediateObj
{
OriginalPath = originalPath,
Name = $"{root.gameObject.name}${Guid.NewGuid()}",
InitiallyActive = root.gameObject.activeSelf,
Created = new List<GameObject>(),
});
}
root = root.parent;
}
// currently _intermediateObjs is in child -> parent order.
// we want parent -> child order so reverse entire list
_intermediateObjs.Reverse();
}
public IEnumerable<GameObject> AddedGameObjects => _intermediateObjs.SelectMany(x => x.Created);
public GameObject CreateIntermediateObjects(GameObject sourceBone)
{
for (var i = 0; i < _intermediateObjs.Count; i++)
{
var intermediate = _intermediateObjs[i];
var preexisting = sourceBone.transform.Find(intermediate.Name);
if (preexisting != null)
{
sourceBone = preexisting.gameObject;
continue;
}
var switchObj = new GameObject(intermediate.Name);
switchObj.transform.SetParent(sourceBone.transform, false);
switchObj.transform.localPosition = Vector3.zero;
switchObj.transform.localRotation = Quaternion.identity;
switchObj.transform.localScale = Vector3.one;
switchObj.SetActive(intermediate.InitiallyActive);
if (i == 0)
{
// This new leaf can break parent bone physbones. Add a PB Blocker
// to prevent this becoming an issue.
switchObj.GetOrAddComponent<ModularAvatarPBBlocker>();
}
intermediate.Created.Add(switchObj);
sourceBone = switchObj;
// Ensure mesh retargeting looks through this
_boneDatabase.AddMergedBone(sourceBone.transform);
_boneDatabase.RetainMergedBone(sourceBone.transform);
}
return sourceBone;
}
public void FixupAnimations()
{
foreach (var intermediate in _intermediateObjs)
{
var path = intermediate.OriginalPath;
foreach (var clip in _asc.AnimationIndex.GetClipsForObjectPath(path))
{
var curve = GetActiveBinding(clip, path);
if (curve != null)
{
foreach (var mapping in intermediate.Created)
{
clip.SetFloatCurve(_asc.ObjectPathRemapper.GetVirtualPathForObject(mapping), typeof(GameObject), "m_IsActive",
curve);
}
}
}
}
}
private AnimationCurve GetActiveBinding(VirtualClip clip, string path)
{
return clip.GetFloatCurve(EditorCurveBinding.FloatCurve(path, typeof(GameObject), "m_IsActive"));
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7ebce0ceba4d48c48992702b5c446936
timeCreated: 1691915242

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1058b5946fb23674cad310b1f4bd5b61
guid: 9aeea331419795c41a97112c489b1632
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -0,0 +1,46 @@
#if MA_VRCSDK3_AVATARS
using System.Linq;
using nadena.dev.modular_avatar.core;
using nadena.dev.ndmf;
using nadena.dev.ndmf.animator;
using VRC.SDK3.Avatars.Components;
namespace nadena.dev.modular_avatar.animation
{
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
public class FixupAbsolutePlayAudioPass : Pass<FixupAbsolutePlayAudioPass>
{
protected override void Execute(BuildContext context)
{
// Older versions of modular avatar did not adjust Animator Play Audio paths when they were absolute paths.
// Replicate this behavior here.
// Note that this runs before any object movement.
var asc = context.Extension<AnimatorServicesContext>();
foreach (var mama in context.AvatarRootTransform.GetComponentsInChildren<ModularAvatarMergeAnimator>(true))
{
if (!mama._wasRelative) continue;
var pathPrefix = asc.ObjectPathRemapper.GetVirtualPathForObject(mama.gameObject) + "/";
foreach (var state in asc.ControllerContext.Controllers[mama].AllReachableNodes()
.OfType<VirtualState>())
{
foreach (var behavior in state.Behaviours.OfType<VRCAnimatorPlayAudio>())
{
if (asc.ObjectPathRemapper.GetObjectForPath(behavior.SourcePath) != null) continue;
if (behavior.SourcePath.StartsWith(pathPrefix))
{
behavior.SourcePath = behavior.SourcePath.Substring(pathPrefix.Length);
}
}
}
}
}
}
}
#endif

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a763cbc4bac94063b6b084ea3f4d8206
timeCreated: 1744422528

View File

@ -0,0 +1,128 @@
#if MA_VRCSDK3_AVATARS
using System.Linq;
using nadena.dev.modular_avatar.core.editor;
using nadena.dev.ndmf;
using nadena.dev.ndmf.animator;
using UnityEditor;
using UnityEditor.Animations;
using UnityEngine;
using VRC.SDK3.Avatars.Components;
using BuildContext = nadena.dev.ndmf.BuildContext;
namespace nadena.dev.modular_avatar.animation
{
/// <summary>
/// This pass delays turning GameObjects OFF by one frame when those objects control a ReadableProperty. This
/// ensures that we don't expose hidden meshes when removing articles of clothing, for example.
/// </summary>
internal class GameObjectDelayDisablePass : Pass<GameObjectDelayDisablePass>
{
protected override void Execute(BuildContext context)
{
var asc = context.Extension<AnimatorServicesContext>();
var activeProxies = context.GetState<ReadablePropertyExtension.Retained>().proxyProps
.ToDictionary(kv => kv.Key, kv => kv.Value);
if (activeProxies.Count == 0) return;
// Filter any proxies not used in animator transitions
var usedProxies = asc.ControllerContext.Controllers[VRCAvatarDescriptor.AnimLayerType.FX]
.AllReachableNodes().OfType<VirtualTransitionBase>()
.SelectMany(t => t.Conditions)
.Select(c => c.parameter)
.ToHashSet();
foreach (var proxyBinding in activeProxies.ToList())
{
if (!usedProxies.Contains(proxyBinding.Value))
{
activeProxies.Remove(proxyBinding.Key);
}
}
var fx = asc.ControllerContext.Controllers[VRCAvatarDescriptor.AnimLayerType.FX];
if (fx == null) return;
var nullMotion = new AnimationClip();
nullMotion.name = "NullMotion";
var blendTree = new BlendTree();
blendTree.blendType = BlendTreeType.Direct;
blendTree.useAutomaticThresholds = false;
blendTree.children = activeProxies
.Select(prop => GenerateDelayChild(nullMotion, (prop.Key, prop.Value)))
.ToArray();
var layer = fx.AddLayer(LayerPriority.Default, "DelayDisable");
var state = layer.StateMachine.AddState("DelayDisable");
layer.StateMachine.DefaultState = state;
state.WriteDefaultValues = true;
state.Motion = asc.ControllerContext.Clone(blendTree);
// Ensure the initial state of readable props matches the actual state of the gameobject
foreach (var controller in asc.ControllerContext.GetAllControllers())
{
foreach (var (binding, prop) in activeProxies)
{
var obj = asc.ObjectPathRemapper.GetObjectForPath(binding.path);
if (obj != null && controller.Parameters.TryGetValue(prop, out var p))
{
p.defaultFloat = obj.activeSelf ? 1 : 0;
controller.Parameters = controller.Parameters.SetItem(prop, p);
}
}
}
}
private ChildMotion GenerateDelayChild(Motion nullMotion, (EditorCurveBinding, string) binding)
{
var ecb = binding.Item1;
var prop = binding.Item2;
var motion = new AnimationClip();
var curve = new AnimationCurve();
curve.AddKey(0, 1);
AnimationUtility.SetEditorCurve(motion, ecb, curve);
// Occasionally, we'll have a very small value pop up, probably due to FP errors.
// To correct for this, instead of directly using the property in the direct blend tree,
// we'll use a 1D blend tree to give ourselves a buffer.
var bufferBlendTree = new BlendTree();
bufferBlendTree.blendType = BlendTreeType.Simple1D;
bufferBlendTree.useAutomaticThresholds = false;
bufferBlendTree.blendParameter = prop;
bufferBlendTree.children = new[]
{
new ChildMotion
{
motion = nullMotion,
timeScale = 1,
threshold = 0
},
new ChildMotion
{
motion = nullMotion,
timeScale = 1,
threshold = 0.01f
},
new ChildMotion
{
motion = motion,
timeScale = 1,
threshold = 1
}
};
return new ChildMotion
{
motion = bufferBlendTree,
directBlendParameter = MergeBlendTreePass.ALWAYS_ONE,
timeScale = 1
};
}
}
}
#endif

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9b3eb561f76b459fbfbcf29fc4484261
timeCreated: 1722222066

View File

@ -0,0 +1,248 @@
#nullable enable
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using nadena.dev.modular_avatar.core;
using nadena.dev.modular_avatar.core.editor;
using nadena.dev.ndmf;
using nadena.dev.ndmf.animator;
using UnityEditor;
using UnityEditor.Animations;
using UnityEngine;
using VRC.SDK3.Avatars.Components;
using VRC.SDKBase;
using BuildContext = nadena.dev.ndmf.BuildContext;
using Object = UnityEngine.Object;
namespace nadena.dev.modular_avatar.animation
{
internal class MMDRelayState
{
internal HashSet<VirtualLayer> mmdAffectedOriginalLayers = new();
}
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class MMDRelayEarlyPass : Pass<MMDRelayEarlyPass>
{
protected override void Execute(BuildContext context)
{
if (!MMDRelayPass.ShouldRun(context)) return;
var asc = context.Extension<AnimatorServicesContext>();
if (asc.ControllerContext.Controllers.TryGetValue(VRCAvatarDescriptor.AnimLayerType.FX, out var fx))
{
context.GetState<MMDRelayState>().mmdAffectedOriginalLayers = new HashSet<VirtualLayer>(
fx.Layers.Skip(1).Take(2)
);
}
}
}
/// <summary>
/// Many MMD worlds animate the first three FX layers to weight zero. When MA injects new layers, this can hit
/// unintended layers (eg the RC base state layer).
/// To work around this, we'll inject a layer which will relay its active state into a parameter; then, we add a
/// layer to relay this to layers which should be affected. Finally, any layer which _shouldn't_ be affected is
/// pushed out of the first three layers by injecting dummy layers.
/// </summary>
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class MMDRelayPass : Pass<MMDRelayPass>
{
private const string MMDRelayParam = "__MA/Internal/MMDNotActive";
internal const string ControlLayerName = "Modular Avatar: MMD Control";
internal const string DummyLayerName = "Modular Avatar: MMD Dummy";
internal const string StateNameInitial = "Initial";
internal const string StateNameNotMMD = "NotMMD";
internal const string StateNameMMD = "MMD";
internal static bool ShouldRun(BuildContext context)
{
var settings = context.AvatarRootObject.GetComponentsInChildren<ModularAvatarVRChatSettings>(true);
return settings.FirstOrDefault()?.MMDWorldSupport ?? true;
}
protected override void Execute(BuildContext context)
{
if (!ShouldRun(context)) return;
var asc = context.Extension<AnimatorServicesContext>();
if (!asc.ControllerContext.Controllers.TryGetValue(VRCAvatarDescriptor.AnimLayerType.FX, out var fx))
return;
var affectedLayers = context.GetState<MMDRelayState>().mmdAffectedOriginalLayers;
foreach (var layer in fx.Layers)
{
if (layer.StateMachine == null) continue;
var rootMMDModeBehaviors = layer.StateMachine.Behaviours
.OfType<ModularAvatarMMDLayerControl>()
.ToList();
if (rootMMDModeBehaviors.Count == 0) continue;
if (rootMMDModeBehaviors.Count > 1)
{
ErrorReport.ReportError(Localization.L, ErrorSeverity.Error,
"error.mmd.multiple_mmd_mode_behaviors", layer.Name);
continue;
}
if (rootMMDModeBehaviors[0].DisableInMMDMode)
{
affectedLayers.Add(layer);
}
else
{
affectedLayers.Remove(layer);
}
layer.StateMachine.Behaviours = layer.StateMachine.Behaviours
.Where(b => b is not ModularAvatarMMDLayerControl).ToImmutableList();
Object.DestroyImmediate(rootMMDModeBehaviors[0]);
// check for child behaviors
// TODO: implement filtering on AllReachableNodes
foreach (var node in layer.AllReachableNodes())
{
if (node is VirtualState state)
{
if (state.Behaviours.Any(b => b is ModularAvatarMMDLayerControl))
{
ErrorReport.ReportError(Localization.L, ErrorSeverity.Error,
"error.mmd.mmd_mode_in_child_state", layer.Name, state.Name);
}
}
else if (node is VirtualStateMachine vsm)
{
if (vsm.Behaviours.Any(b => b is ModularAvatarMMDLayerControl))
{
ErrorReport.ReportError(Localization.L, ErrorSeverity.Error,
"error.mmd.mmd_mode_in_child_state_machine", layer.Name, vsm.Name);
}
}
}
}
var needsAdjustment = fx.Layers.Select((layer, index) => (layer, index))
.Any(pair => affectedLayers.Contains(pair.layer) != (pair.index < 3 && pair.index != 0));
if (!needsAdjustment) return;
var toDisable = fx.Layers.Where(l => affectedLayers.Contains(l))
.Select(l => l.VirtualLayerIndex)
.ToList();
fx.Parameters = fx.Parameters.Add(MMDRelayParam, new AnimatorControllerParameter
{
name = MMDRelayParam,
type = AnimatorControllerParameterType.Float,
defaultFloat = 0
});
var currentLayers = fx.Layers.ToList();
var newLayers = new List<VirtualLayer>();
// Layer zero's weight can't be changed anyway, so leave it where it is.
newLayers.Add(currentLayers[0]);
currentLayers.RemoveAt(0);
newLayers.Add(CreateMMDLayer(fx, toDisable));
// Add a dummy layer
var dummy = fx.AddLayer(new LayerPriority(0), DummyLayerName);
var s = dummy.StateMachine!.DefaultState = dummy.StateMachine.AddState("Dummy");
s.Motion = VirtualClip.Create("empty");
newLayers.Add(dummy);
fx.Layers = newLayers.Concat(currentLayers);
}
private static VirtualLayer CreateMMDLayer(VirtualAnimatorController fx, List<int> virtualLayers)
{
// We'll reorder this later, so the layer priority doesn't matter
var mmdControl = fx.AddLayer(new LayerPriority(0), ControlLayerName);
var stateMachine = mmdControl.StateMachine ?? throw new Exception("No state machine on MMD Control layer");
var motion = VirtualClip.Create("MMDRelay");
motion.SetFloatCurve(EditorCurveBinding.FloatCurve("", typeof(Animator), MMDRelayParam),
AnimationCurve.Constant(0, 1, 1)
);
var state_initial = stateMachine.AddState(StateNameInitial);
state_initial.Motion = motion;
var state_notmmd = stateMachine.AddState(StateNameNotMMD);
state_notmmd.Motion = motion;
var state_mmd = stateMachine.AddState(StateNameMMD);
state_mmd.Motion = motion;
var t = VirtualStateTransition.Create();
t.SetDestination(state_mmd);
t.Conditions = ImmutableList.Create(new AnimatorCondition
{
mode = AnimatorConditionMode.Less,
parameter = MMDRelayParam,
threshold = 0.5f
});
state_notmmd.Transitions = ImmutableList.Create(t);
t = VirtualStateTransition.Create();
t.SetDestination(state_notmmd);
t.Conditions = ImmutableList.Create(new AnimatorCondition
{
mode = AnimatorConditionMode.Greater,
parameter = MMDRelayParam,
threshold = 0.5f
});
state_mmd.Transitions = ImmutableList.Create(t);
t = VirtualStateTransition.Create();
t.SetDestination(state_mmd);
t.Conditions = ImmutableList.Create(new AnimatorCondition
{
mode = AnimatorConditionMode.Less,
parameter = MMDRelayParam,
threshold = 0.5f
});
state_initial.Transitions = ImmutableList.Create(t);
stateMachine.DefaultState = state_initial;
var mmd_behaviors = ImmutableList.CreateBuilder<StateMachineBehaviour>();
var notmmd_behaviors = ImmutableList.CreateBuilder<StateMachineBehaviour>();
foreach (var index in virtualLayers)
{
var behavior = ScriptableObject.CreateInstance<VRCAnimatorLayerControl>();
behavior.layer = index;
behavior.playable = VRC_AnimatorLayerControl.BlendableLayer.FX;
behavior.goalWeight = 0;
behavior.blendDuration = 0;
mmd_behaviors.Add(behavior);
behavior = ScriptableObject.CreateInstance<VRCAnimatorLayerControl>();
behavior.layer = index;
behavior.playable = VRC_AnimatorLayerControl.BlendableLayer.FX;
behavior.goalWeight = 1;
behavior.blendDuration = 0;
notmmd_behaviors.Add(behavior);
}
state_notmmd.Behaviours = notmmd_behaviors.ToImmutable();
state_mmd.Behaviours = mmd_behaviors.ToImmutable();
return mmdControl;
}
internal static bool IsRelayLayer(string layerName)
{
return layerName == ControlLayerName || layerName == DummyLayerName;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 163fd3d0edea43d5969395079f561986
timeCreated: 1741745889

View File

@ -0,0 +1,82 @@
#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
using nadena.dev.ndmf;
using nadena.dev.ndmf.animator;
using UnityEditor;
using UnityEngine;
namespace nadena.dev.modular_avatar.animation
{
[DependsOnContext(typeof(AnimatorServicesContext))]
internal class ReadablePropertyExtension : IExtensionContext
{
// This is a temporary hack for GameObjectDelayDisablePass
public class Retained
{
public Dictionary<EditorCurveBinding, string> proxyProps = new();
}
private AnimatorServicesContext? _asc;
private Retained _retained = null!;
private AnimatorServicesContext asc =>
_asc ?? throw new InvalidOperationException("ActiveSelfProxyExtension is not active");
private Dictionary<EditorCurveBinding, string> proxyProps => _retained.proxyProps;
private int index;
public IEnumerable<(EditorCurveBinding, string)> ActiveProxyProps =>
proxyProps.Select(kvp => (kvp.Key, kvp.Value));
public string GetActiveSelfProxy(GameObject obj)
{
var path = asc.ObjectPathRemapper.GetVirtualPathForObject(obj);
var ecb = EditorCurveBinding.FloatCurve(path, typeof(GameObject), "m_IsActive");
if (proxyProps.TryGetValue(ecb, out var prop)) return prop;
prop = $"__MA/ActiveSelfProxy/{obj.name}##{index++}";
proxyProps[ecb] = prop;
// Add prop to all animators
foreach (var animator in asc.ControllerContext.GetAllControllers())
{
animator.Parameters = animator.Parameters.SetItem(
prop,
new AnimatorControllerParameter
{
name = prop,
type = AnimatorControllerParameterType.Float,
defaultFloat = obj.activeSelf ? 1 : 0
}
);
}
return prop;
}
public void OnActivate(BuildContext context)
{
_asc = context.Extension<AnimatorServicesContext>();
_retained = context.GetState<Retained>();
}
public void OnDeactivate(BuildContext context)
{
asc.AnimationIndex.EditClipsByBinding(proxyProps.Keys, clip =>
{
foreach (var b in clip.GetFloatCurveBindings().ToList())
{
if (proxyProps.TryGetValue(b, out var proxyProp))
{
var curve = clip.GetFloatCurve(b);
clip.SetFloatCurve("", typeof(Animator), proxyProp, curve);
}
}
});
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 511cbc0373a2469192e0351e2222a203
timeCreated: 1732496091

View File

@ -0,0 +1,58 @@
#if MA_VRCSDK3_AVATARS
#region
using System;
using System.Collections.Immutable;
using System.Linq;
using nadena.dev.ndmf;
using nadena.dev.ndmf.animator;
using UnityEditor.Animations;
using UnityEngine;
#endregion
namespace nadena.dev.modular_avatar.core.editor
{
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class ApplyAnimatorDefaultValuesPass : Pass<ApplyAnimatorDefaultValuesPass>
{
protected override void Execute(ndmf.BuildContext context)
{
if (!context.AvatarDescriptor) return;
var values = context.GetState<DefaultValues>()?.InitialValueOverrides
?? ImmutableDictionary<string, float>.Empty;
var asc = context.Extension<AnimatorServicesContext>();
foreach (var controller in asc.ControllerContext.GetAllControllers())
{
var parameters = controller.Parameters;
foreach (var (name, parameter) in parameters)
{
if (!values.TryGetValue(name, out var defaultValue)) continue;
switch (parameter.type)
{
case AnimatorControllerParameterType.Bool:
parameter.defaultBool = defaultValue != 0.0f;
break;
case AnimatorControllerParameterType.Int:
parameter.defaultInt = Mathf.RoundToInt(defaultValue);
break;
case AnimatorControllerParameterType.Float:
parameter.defaultFloat = defaultValue;
break;
default:
continue; // unhandled type, e.g. trigger
}
parameters = parameters.SetItem(name, parameter);
}
controller.Parameters = parameters;
}
}
}
}
#endif

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e8f311932a744459aed7d22dee0e126c
timeCreated: 1707045893

79
Editor/AvatarProcessor.cs Normal file
View File

@ -0,0 +1,79 @@
/*
* MIT License
*
* Copyright (c) 2022 bd_
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#region
using System;
using System.Runtime.CompilerServices;
using nadena.dev.modular_avatar.ui;
using UnityEditor;
using UnityEngine;
#endregion
[assembly: InternalsVisibleTo("Tests")]
namespace nadena.dev.modular_avatar.core.editor
{
public class AvatarProcessor
{
[MenuItem(UnityMenuItems.GameObject_ManualBake, true, UnityMenuItems.GameObject_ManualBakeOrder)]
static bool ValidateApplyToCurrentAvatarGameobject()
{
return ValidateApplyToCurrentAvatar();
}
[MenuItem(UnityMenuItems.GameObject_ManualBake, false, UnityMenuItems.GameObject_ManualBakeOrder)]
static void ApplyToCurrentAvatarGameobject()
{
ApplyToCurrentAvatar();
}
[MenuItem(UnityMenuItems.TopMenu_ManualBakeAvatar, true, UnityMenuItems.TopMenu_ManualBakeAvatarOrder)]
private static bool ValidateApplyToCurrentAvatar()
{
return ndmf.AvatarProcessor.CanProcessObject(Selection.activeGameObject);
}
[MenuItem("Tools/Modular Avatar/Manual bake avatar", false)]
private static void ApplyToCurrentAvatar()
{
ndmf.AvatarProcessor.ProcessAvatarUI(Selection.activeGameObject);
}
public static void ProcessAvatar(GameObject avatarGameObject)
{
ndmf.AvatarProcessor.ProcessAvatar(avatarGameObject);
}
// ReSharper disable once InconsistentNaming
// ReSharper disable once MemberCanBeMadeStatic.Global
[Obsolete("This is only for compile time compatibility with legacy AAO")]
public int callbackOrder => throw new NotImplementedException();
[Obsolete("This is only for compile time compatibility with legacy AAO")]
// ReSharper disable once MemberCanBeMadeStatic.Global
public bool OnPreprocessAvatar(GameObject avatarGameObject) => throw new NotImplementedException();
}
}

View File

@ -0,0 +1,159 @@
#if MA_VRCSDK3_AVATARS
#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
using nadena.dev.modular_avatar.editor.ErrorReporting;
using nadena.dev.ndmf.animator;
using UnityEditor;
using UnityEngine;
namespace nadena.dev.modular_avatar.core.editor
{
/**
* Ensures that any blendshapes marked for syncing by BlendshapeSync propagate values in all animation clips.
*
* Note that we only look at the FX layer, as any other layer won't work properly with mirror reflections anyway.
*/
internal class BlendshapeSyncAnimationProcessor
{
private readonly ndmf.BuildContext _context;
private Dictionary<SummaryBinding, List<SummaryBinding>> _bindingMappings;
internal BlendshapeSyncAnimationProcessor(ndmf.BuildContext context)
{
_context = context;
_bindingMappings = new Dictionary<SummaryBinding, List<SummaryBinding>>();
}
private struct SummaryBinding : IEquatable<SummaryBinding>
{
private const string PREFIX = "blendShape.";
public string path;
public string propertyName;
public SummaryBinding(string path, string blendShape)
{
this.path = path;
this.propertyName = PREFIX + blendShape;
}
public static SummaryBinding? FromEditorBinding(EditorCurveBinding binding)
{
if (binding.type != typeof(SkinnedMeshRenderer) || !binding.propertyName.StartsWith(PREFIX))
{
return null;
}
return new SummaryBinding(binding.path, binding.propertyName.Substring(PREFIX.Length));
}
public EditorCurveBinding ToEditorCurveBinding()
{
return EditorCurveBinding.FloatCurve(
path,
typeof(SkinnedMeshRenderer),
propertyName
);
}
public bool Equals(SummaryBinding other)
{
return path == other.path && propertyName == other.propertyName;
}
public override bool Equals(object? obj)
{
return obj is SummaryBinding other && Equals(other);
}
public override int GetHashCode()
{
return HashCode.Combine(path, propertyName);
}
}
public void OnPreprocessAvatar()
{
var avatarGameObject = _context.AvatarRootObject;
var animDb = _context.Extension<AnimatorServicesContext>().AnimationIndex;
_bindingMappings = new Dictionary<SummaryBinding, List<SummaryBinding>>();
var components = avatarGameObject.GetComponentsInChildren<ModularAvatarBlendshapeSync>(true);
if (components.Length == 0) return;
foreach (var component in components)
{
BuildReport.ReportingObject(component, () => ProcessComponent(avatarGameObject, component));
}
var clips = new HashSet<VirtualClip>();
foreach (var key in _bindingMappings.Keys)
{
var ecb = key.ToEditorCurveBinding();
clips.UnionWith(animDb.GetClipsForBinding(ecb));
}
// Walk and transform all clips
foreach (var clip in clips)
{
ProcessClip(clip);
}
}
private void ProcessComponent(GameObject avatarGameObject, ModularAvatarBlendshapeSync component)
{
var targetObj = RuntimeUtil.RelativePath(avatarGameObject, component.gameObject);
if (targetObj == null) return;
foreach (var binding in component.Bindings)
{
var refObj = binding.ReferenceMesh.Get(component);
if (refObj == null) continue;
var refSmr = refObj.GetComponent<SkinnedMeshRenderer>();
if (refSmr == null) continue;
var refPath = RuntimeUtil.RelativePath(avatarGameObject, refObj);
if (refPath == null) continue;
var srcBinding = new SummaryBinding(refPath, binding.Blendshape);
if (!_bindingMappings.TryGetValue(srcBinding, out var dstBindings))
{
dstBindings = new List<SummaryBinding>();
_bindingMappings[srcBinding] = dstBindings;
}
var targetBlendshapeName = string.IsNullOrWhiteSpace(binding.LocalBlendshape)
? binding.Blendshape
: binding.LocalBlendshape;
dstBindings.Add(new SummaryBinding(targetObj, targetBlendshapeName));
}
}
private void ProcessClip(VirtualClip clip)
{
foreach (var binding in clip.GetFloatCurveBindings().ToList())
{
var srcBinding = SummaryBinding.FromEditorBinding(binding);
if (srcBinding == null || !_bindingMappings.TryGetValue(srcBinding.Value, out var dstBindings))
{
continue;
}
var curve = clip.GetFloatCurve(binding);
foreach (var dst in dstBindings)
{
clip.SetFloatCurve(dst.ToEditorCurveBinding(), curve);
}
}
}
}
}
#endif

View File

@ -1,18 +1,18 @@
/*
* MIT License
*
*
* Copyright (c) 2022 bd_
*
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@ -22,6 +22,8 @@
* SOFTWARE.
*/
using nadena.dev.modular_avatar.editor.ErrorReporting;
using UnityEditor;
using UnityEngine;
namespace nadena.dev.modular_avatar.core.editor
@ -41,26 +43,52 @@ namespace nadena.dev.modular_avatar.core.editor
foreach (var proxy in boneProxies)
{
if (proxy.target != null && ValidateTarget(avatarGameObject, proxy.target) == ValidationResult.OK)
{
var oldPath = RuntimeUtil.AvatarRootPath(proxy.gameObject);
Transform transform = proxy.transform;
transform.SetParent(proxy.target, true);
if (proxy.attachmentMode != BoneProxyAttachmentMode.AsChildKeepWorldPosition)
{
transform.localPosition = Vector3.zero;
transform.localRotation = Quaternion.identity;
}
BuildReport.ReportingObject(proxy, () => ProcessProxy(avatarGameObject, proxy));
}
}
PathMappings.Remap(oldPath, new PathMappings.MappingEntry()
{
path = RuntimeUtil.AvatarRootPath(proxy.gameObject),
transformPath = RuntimeUtil.AvatarRootPath(proxy.gameObject)
});
private void ProcessProxy(GameObject avatarGameObject, ModularAvatarBoneProxy proxy)
{
if (proxy.target != null && ValidateTarget(avatarGameObject, proxy.target) == ValidationResult.OK)
{
string suffix = "";
int i = 1;
while (proxy.target.Find(proxy.gameObject.name + suffix) != null)
{
suffix = $" ({i++})";
}
Object.DestroyImmediate(proxy);
proxy.gameObject.name += suffix;
Transform transform = proxy.transform;
transform.SetParent(proxy.target, true);
bool keepPos, keepRot;
switch (proxy.attachmentMode)
{
default:
case BoneProxyAttachmentMode.Unset:
case BoneProxyAttachmentMode.AsChildAtRoot:
keepPos = keepRot = false;
break;
case BoneProxyAttachmentMode.AsChildKeepWorldPose:
keepPos = keepRot = true;
break;
case BoneProxyAttachmentMode.AsChildKeepPosition:
keepPos = true;
keepRot = false;
break;
case BoneProxyAttachmentMode.AsChildKeepRotation:
keepRot = true;
keepPos = false;
break;
}
if (!keepPos) transform.localPosition = Vector3.zero;
if (!keepRot) transform.localRotation = Quaternion.identity;
}
Object.DestroyImmediate(proxy);
}
internal static ValidationResult ValidateTarget(GameObject avatarGameObject, Transform proxyTarget)

85
Editor/BuildContext.cs Normal file
View File

@ -0,0 +1,85 @@
#if MA_VRCSDK3_AVATARS
using VRC.SDK3.Avatars.Components;
using VRC.SDK3.Avatars.ScriptableObjects;
#endif
using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using Object = UnityEngine.Object;
namespace nadena.dev.modular_avatar.core.editor
{
internal class BuildContext
{
internal readonly ndmf.BuildContext PluginBuildContext;
#if MA_VRCSDK3_AVATARS
internal VRCAvatarDescriptor AvatarDescriptor => PluginBuildContext.AvatarDescriptor;
#endif
internal GameObject AvatarRootObject => PluginBuildContext.AvatarRootObject;
internal Transform AvatarRootTransform => PluginBuildContext.AvatarRootTransform;
private bool SaveImmediate = false;
#if MA_VRCSDK3_AVATARS
internal readonly Dictionary<VRCExpressionsMenu, VRCExpressionsMenu> ClonedMenus
= new Dictionary<VRCExpressionsMenu, VRCExpressionsMenu>();
/// <summary>
/// This dictionary overrides the _original contents_ of ModularAvatarMenuInstallers. Notably, this does not
/// replace the source menu for the purposes of identifying any other MAMIs that might install to the same
/// menu asset.
/// </summary>
internal readonly Dictionary<Object, Action<VRCExpressionsMenu.Control>> PostProcessControls = new();
#endif
public static implicit operator BuildContext(ndmf.BuildContext ctx) =>
ctx.Extension<ModularAvatarContext>().BuildContext;
public BuildContext(ndmf.BuildContext PluginBuildContext)
{
this.PluginBuildContext = PluginBuildContext;
}
#if MA_VRCSDK3_AVATARS
public BuildContext(VRCAvatarDescriptor avatarDescriptor)
: this(new ndmf.BuildContext(avatarDescriptor, null))
{
}
#endif
public BuildContext(GameObject avatarGameObject)
: this(new ndmf.BuildContext(avatarGameObject, null))
{
}
public void SaveAsset(Object obj)
{
if (!SaveImmediate || AssetDatabase.IsMainAsset(obj) || AssetDatabase.IsSubAsset(obj)) return;
PluginBuildContext.AssetSaver.SaveAsset(obj);
}
#if MA_VRCSDK3_AVATARS
public VRCExpressionsMenu CloneMenu(VRCExpressionsMenu menu)
{
if (menu == null) return null;
if (ClonedMenus.TryGetValue(menu, out var newMenu)) return newMenu;
newMenu = Object.Instantiate(menu);
this.SaveAsset(newMenu);
ClonedMenus[menu] = newMenu;
foreach (var control in newMenu.controls)
{
if (control.type == VRCExpressionsMenu.Control.ControlType.SubMenu && control.subMenu != newMenu)
{
control.subMenu = CloneMenu(control.subMenu);
}
}
return newMenu;
}
#endif
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 41bbb1832c9d409a999605fae058dd19
timeCreated: 1671624226

32
Editor/CreateBlendTree.cs Normal file
View File

@ -0,0 +1,32 @@
using System.IO;
using UnityEditor;
using UnityEditor.Animations;
using UnityEditor.ProjectWindowCallback;
using UnityEngine;
namespace nadena.dev.modular_avatar.core.editor
{
internal static class CreateBlendTree
{
[MenuItem("Assets/Create/BlendTree", priority = 411)]
static void CreateNewBlendTree()
{
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(
0,
Editor.CreateInstance<DoCreateBlendTree>(),
"New BlendTree.asset",
EditorGUIUtility.IconContent("BlendTree Icon").image as Texture2D,
null);
}
class DoCreateBlendTree : EndNameEditAction
{
public override void Action(int instanceId, string pathName, string resourceFile)
{
BlendTree blendTree = new BlendTree { name = Path.GetFileNameWithoutExtension(pathName) };
AssetDatabase.CreateAsset(blendTree, pathName);
Selection.activeObject = blendTree;
}
}
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d75fcaecb8b9e7f4bbe783e5f4c9838a
guid: e608a27c3d14edf43858004513948da1
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: 0fb1980d53a548a996bdfca622d468ca
timeCreated: 1674039787
folderAsset: yes

View File

@ -0,0 +1,161 @@
using System.Collections.Generic;
using nadena.dev.modular_avatar.core;
using nadena.dev.ndmf;
#if MA_VRCSDK3_AVATARS
using nadena.dev.modular_avatar.core.menu;
#endif
using UnityEngine;
namespace nadena.dev.modular_avatar.editor.ErrorReporting
{
internal static class ComponentValidation
{
/// <summary>
/// Validates the provided tag component.
/// </summary>
/// <param name="tagComponent"></param>
/// <returns>Null if valid, otherwise a list of configuration errors</returns>
internal static void CheckComponent(this AvatarTagComponent tagComponent)
{
ErrorReport.WithContextObject(tagComponent, () =>
{
switch (tagComponent)
{
case ModularAvatarBlendshapeSync bs:
CheckInternal(bs);
break;
case ModularAvatarBoneProxy bp:
CheckInternal(bp);
break;
#if MA_VRCSDK3_AVATARS
case ModularAvatarMenuInstaller mi:
CheckInternal(mi);
break;
case ModularAvatarMergeAnimator obj:
CheckInternal(obj);
break;
#endif
case ModularAvatarMergeArmature obj:
CheckInternal(obj);
break;
default:
return;
}
});
}
internal static void ValidateAll(GameObject root)
{
foreach (var component in root.GetComponentsInChildren<AvatarTagComponent>(true))
{
component.CheckComponent();
}
}
private static void CheckInternal(ModularAvatarBlendshapeSync bs)
{
var localMesh = bs.GetComponent<SkinnedMeshRenderer>();
if (localMesh == null)
{
BuildReport.Log(ErrorSeverity.NonFatal, "validation.blendshape_sync.no_local_renderer", bs);
}
if (localMesh.sharedMesh == null)
{
BuildReport.Log(ErrorSeverity.NonFatal, "validation.blendshape_sync.no_local_mesh", bs);
}
if (bs.Bindings == null || bs.Bindings.Count == 0)
{
BuildReport.Log(ErrorSeverity.Information,"validation.blendshape_sync.no_bindings", bs);
}
foreach (var binding in bs.Bindings)
{
var localShape = string.IsNullOrWhiteSpace(binding.LocalBlendshape)
? binding.Blendshape
: binding.LocalBlendshape;
if (localMesh.sharedMesh.GetBlendShapeIndex(localShape) == -1)
{
BuildReport.Log(ErrorSeverity.NonFatal, "validation.blendshape_sync.missing_local_shape",
localShape, bs);
}
var targetObj = binding.ReferenceMesh.Get(bs.transform);
if (targetObj == null)
{
BuildReport.Log(ErrorSeverity.NonFatal, "validation.blendshape_sync.no_target", bs);
continue;
}
var targetRenderer = targetObj.GetComponent<SkinnedMeshRenderer>();
if (targetRenderer == null)
{
BuildReport.Log(ErrorSeverity.NonFatal,
"validation.blendshape_sync.missing_target_renderer", bs, targetRenderer);
continue;
}
var targetMesh = targetRenderer.sharedMesh;
if (targetMesh == null)
{
BuildReport.Log(ErrorSeverity.NonFatal, "validation.blendshape_sync.missing_target_mesh",
bs, targetRenderer);
continue;
}
if (targetMesh.GetBlendShapeIndex(binding.Blendshape) == -1)
{
BuildReport.Log(ErrorSeverity.NonFatal,
"validation.blendshape_sync.missing_target_shape", binding.Blendshape, bs,
targetRenderer);
}
}
}
private static void CheckInternal(ModularAvatarBoneProxy bp)
{
if (bp.target == null)
{
BuildReport.Log(ErrorSeverity.NonFatal, "validation.bone_proxy.no_target", bp);
}
}
#if MA_VRCSDK3_AVATARS
private static void CheckInternal(ModularAvatarMenuInstaller mi)
{
// TODO - check that target menu is in the avatar
if (mi.menuToAppend == null && mi.GetComponent<MenuSource>() == null)
{
BuildReport.Log(ErrorSeverity.NonFatal, "validation.menu_installer.no_menu", mi);
}
}
private static void CheckInternal(ModularAvatarMergeAnimator ma)
{
if (ma.animator == null)
{
BuildReport.Log(ErrorSeverity.NonFatal, "validation.merge_animator.no_animator", ma);
}
}
#endif
private static void CheckInternal(ModularAvatarMergeArmature ma)
{
if (ma.mergeTargetObject == null)
{
BuildReport.Log(ErrorSeverity.NonFatal, "validation.merge_armature.no_target", ma);
return;
}
if (ma.mergeTargetObject == ma.gameObject || ma.mergeTargetObject.transform.IsChildOf(ma.transform))
{
BuildReport.Log(ErrorSeverity.Error, "error.merge_armature.circular_dependency", ma,
ma.mergeTargetObject);
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 3b500f7714e4401aa090eef81c0bab01
timeCreated: 1675855192

View File

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using nadena.dev.modular_avatar.core;
using nadena.dev.modular_avatar.core.editor;
using nadena.dev.ndmf;
using Newtonsoft.Json;
using UnityEngine;
using UnityEditor;
using UnityEngine.SceneManagement;
using Object = UnityEngine.Object;
namespace nadena.dev.modular_avatar.editor.ErrorReporting
{
internal class BuildReport
{
private const string Path = "Library/ModularAvatarBuildReport.json";
internal static void Log(ErrorSeverity severity, string code, params object[] objects)
{
ErrorReport.ReportError(Localization.L, severity, code, objects);
}
internal static void LogFatal(string code, params object[] objects)
{
ErrorReport.ReportError(Localization.L, ErrorSeverity.Error, code, objects);
}
internal static void LogException(Exception e, string additionalStackTrace = "")
{
ErrorReport.ReportException(e, additionalStackTrace);
}
internal static T ReportingObject<T>(UnityEngine.Object obj, Func<T> action)
{
return ErrorReport.WithContextObject(obj, action);
}
internal static void ReportingObject(UnityEngine.Object obj, Action action)
{
ErrorReport.WithContextObject(obj, action);
}
[Obsolete("Use NDMF's ObjectRegistry instead")]
public static void RemapPaths(string original, string cloned)
{
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 08d5f5d12365416d94e2d97970a24f5d
timeCreated: 1674039799

3
Editor/FixupPasses.meta Normal file
View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 597d4035b7eb43e180a013ceac128a84
timeCreated: 1694687629

View File

@ -0,0 +1,183 @@
#if MA_VRCSDK3_AVATARS
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using UnityEditor;
using UnityEngine;
using VRC.SDK3.Avatars.ScriptableObjects;
using Object = UnityEngine.Object;
namespace nadena.dev.modular_avatar.core.editor
{
internal class FixupExpressionsMenuPass
{
private const string DEFAULT_EXP_MENU_GUID = "024fb8ef5b3988c46b446863c92f4522";
private const string DEFAULT_EXP_PARAM_GUID = "03a6d797deb62f0429471c4e17ea99a7";
internal static void FixupExpressionsMenu(BuildContext context)
{
if (!context.AvatarDescriptor) return;
context.AvatarDescriptor.customExpressions = true;
var expressionsMenu = context.AvatarDescriptor.expressionsMenu;
if (expressionsMenu == null)
{
var defaultExpMenu = AssetDatabase.LoadAssetAtPath<VRCExpressionsMenu>(
AssetDatabase.GUIDToAssetPath(DEFAULT_EXP_MENU_GUID)
);
expressionsMenu = Object.Instantiate(defaultExpMenu);
context.AvatarDescriptor.expressionsMenu = expressionsMenu;
}
if (context.AvatarDescriptor.expressionParameters == null)
{
var defaultExpParam = AssetDatabase.LoadAssetAtPath<VRCExpressionParameters>(
AssetDatabase.GUIDToAssetPath(DEFAULT_EXP_PARAM_GUID)
);
context.AvatarDescriptor.expressionParameters = Object.Instantiate(defaultExpParam);
}
var parameters = context.AvatarDescriptor.expressionParameters.parameters
?? Array.Empty<VRCExpressionParameters.Parameter>();
var parameterNames = parameters.Select(p => p.name).ToImmutableHashSet();
if (!context.PluginBuildContext.IsTemporaryAsset(expressionsMenu))
{
expressionsMenu = context.CloneMenu(expressionsMenu);
context.AvatarDescriptor.expressionsMenu = expressionsMenu;
}
// Walk menu recursively
var visitedMenus = new HashSet<VRCExpressionsMenu>();
var iconMapping = new Dictionary<Texture2D, Texture2D>();
VisitMenu(expressionsMenu);
void VisitMenu(VRCExpressionsMenu menu)
{
if (!visitedMenus.Add(menu)) return;
foreach (var control in menu.controls)
{
if (control.parameter != null &&
!string.IsNullOrEmpty(control.parameter.name) &&
!parameterNames.Contains(control.parameter.name))
{
control.parameter.name = "";
}
foreach (var subParam in control.subParameters ??
Array.Empty<VRCExpressionsMenu.Control.Parameter>())
{
if (subParam != null &&
!string.IsNullOrEmpty(subParam.name) &&
!parameterNames.Contains(subParam.name))
{
subParam.name = "";
}
}
if (control.icon != null)
{
if (!iconMapping.TryGetValue(control.icon, out var newIcon))
{
iconMapping[control.icon] = newIcon = MaybeScaleIcon(context, control.icon);
}
control.icon = newIcon;
}
if (control.subMenu != null)
{
VisitMenu(control.subMenu);
}
if (control.labels != null)
{
for (int i = 0; i < control.labels.Length; i++)
{
var label = control.labels[i];
if (label.icon != null)
{
if (!iconMapping.TryGetValue(label.icon, out var newIcon))
{
iconMapping[label.icon] = newIcon = MaybeScaleIcon(context, label.icon);
}
label.icon = newIcon;
control.labels[i] = label;
}
}
}
}
}
}
internal static TextureFormat TargetFormat
{
get
{
switch (EditorUserBuildSettings.activeBuildTarget)
{
case BuildTarget.StandaloneWindows64:
return TextureFormat.DXT5;
default:
return TextureFormat.ASTC_4x4;
}
}
}
private static Texture2D MaybeScaleIcon(BuildContext context, Texture2D original)
{
if (original.width <= 256 && original.height <= 256 && IsCompressedFormat(original.format))
{
return original;
}
var newRatio = Math.Min(1, Math.Min(256f / original.width, 256f / original.height));
var newWidth = Math.Min(256, Mathf.RoundToInt(original.width * newRatio));
var newHeight = Math.Min(256, Mathf.RoundToInt(original.height * newRatio));
// Round up to a multiple of four
newWidth = (newWidth + 3) & ~3;
newHeight = (newHeight + 3) & ~3;
var newTex = new Texture2D(newWidth, newHeight, TextureFormat.RGBA32, true);
context.SaveAsset(newTex);
var tmpRenderTex = RenderTexture.GetTemporary(newWidth, newHeight, 0, RenderTextureFormat.ARGB32);
var originalActiveRenderTex = RenderTexture.active;
try
{
Graphics.Blit(original, tmpRenderTex);
RenderTexture.active = tmpRenderTex;
newTex.ReadPixels(new Rect(0, 0, newWidth, newHeight), 0, 0);
newTex.Apply();
EditorUtility.CompressTexture(newTex, TargetFormat, TextureCompressionQuality.Normal);
return newTex;
}
finally
{
RenderTexture.active = originalActiveRenderTex;
RenderTexture.ReleaseTemporary(tmpRenderTex);
}
}
private static bool IsCompressedFormat(TextureFormat format)
{
var name = format.ToString();
return name.StartsWith("DXT") || name.StartsWith("ASTC");
}
}
}
#endif

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1020bef86d91452ba6b138c249d25bb5
timeCreated: 1694688050

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cf056e4454ad43ababbfff1dd06ec1d0
timeCreated: 1708235917

View File

@ -0,0 +1,41 @@
#region
using System;
using HarmonyLib;
using UnityEditor;
using UnityEngine;
#endregion
namespace nadena.dev.modular_avatar.core.editor.HarmonyPatches
{
internal class PatchLoader
{
private const string HarmonyId = "nadena.dev.modular_avatar";
private static readonly Action<Harmony>[] patches = new Action<Harmony>[]
{
//HierarchyViewPatches.Patch,
};
[InitializeOnLoadMethod]
static void ApplyPatches()
{
var harmony = new Harmony(HarmonyId);
foreach (var patch in patches)
{
try
{
patch(harmony);
}
catch (Exception e)
{
Debug.LogException(e);
}
}
AssemblyReloadEvents.beforeAssemblyReload += () => { harmony.UnpatchAll(HarmonyId); };
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e92aedf0fa324b8fb1b425a7fc2b1771
timeCreated: 1708235934

View File

@ -0,0 +1,29 @@
{
"name": "nadena.dev.modular-avatar.harmony-patches",
"rootNamespace": "",
"references": [
"nadena.dev.modular-avatar.core",
"nadena.dev.modular-avatar.core.editor",
"VRC.SDKBase.Editor",
"nadena.dev.modular-avatar.param-introspection"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [
"VRCSDK_HAS_HARMONY"
],
"versionDefines": [
{
"name": "com.vrchat.base",
"expression": "(3.3.99999,)",
"define": "VRCSDK_HAS_HARMONY"
}
],
"noEngineReferences": false
}

Some files were not shown because too many files have changed in this diff Show More