mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2024-12-29 18:55:06 +08:00
Merge remote-tracking branch 'origin/main' into dev-merge
This commit is contained in:
commit
a910fa5c05
4
.github/dependabot.yml
vendored
4
.github/dependabot.yml
vendored
@ -9,3 +9,7 @@ updates:
|
||||
directory: "/docs" # Location of package manifests
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
- package-ecosystem: "github-actions"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
directory: .github/workflows
|
||||
|
6
.github/workflows/build-release.yml
vendored
6
.github/workflows/build-release.yml
vendored
@ -34,7 +34,7 @@ jobs:
|
||||
|
||||
- name: get version
|
||||
id: version
|
||||
uses: notiz-dev/github-action-json-property@7c8cf5cc36eb85d8d287a8086a39dac59628eb31
|
||||
uses: notiz-dev/github-action-json-property@a5a9c668b16513c737c3e1f8956772c99c73f6e8
|
||||
with:
|
||||
path: "Packages/${{env.packageName}}/package.json"
|
||||
prop_path: "version"
|
||||
@ -55,7 +55,7 @@ jobs:
|
||||
echo "unityPackage=${{ env.packageName }}-${{ steps.version.outputs.prop }}.unitypackage" >> $GITHUB_ENV
|
||||
|
||||
- name: Create Zip
|
||||
uses: thedoctor0/zip-release@09336613be18a8208dfa66bd57efafd9e2685657
|
||||
uses: thedoctor0/zip-release@a24011d8d445e4da5935a7e73c1f98e22a439464
|
||||
with:
|
||||
type: "zip"
|
||||
directory: "Packages/${{env.packageName}}/"
|
||||
@ -70,7 +70,7 @@ jobs:
|
||||
include-files: metaList
|
||||
|
||||
- name: Make Release
|
||||
uses: softprops/action-gh-release@1e07f4398721186383de40550babbdf2b84acfc5
|
||||
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
draft: true
|
||||
|
36
.github/workflows/build-test-docs.yml
vendored
36
.github/workflows/build-test-docs.yml
vendored
@ -1,8 +1,21 @@
|
||||
name: Build documentation
|
||||
name: Build documentation
|
||||
|
||||
on:
|
||||
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
|
||||
|
||||
jobs:
|
||||
build-docs:
|
||||
@ -13,6 +26,11 @@ jobs:
|
||||
with:
|
||||
node-version: 18
|
||||
- uses: actions/checkout@v3 # check out this repo
|
||||
if: ${{ !inputs.ref }}
|
||||
- uses: actions/checkout@v3 # check out the repo we're building docs for
|
||||
if: ${{ inputs.ref }}
|
||||
with:
|
||||
ref: ${{ inputs.ref }}
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: bdunderscore/modular-avatar-images
|
||||
@ -38,15 +56,27 @@ jobs:
|
||||
restore-keys: |
|
||||
${{ runner.os }}-yarn-
|
||||
|
||||
- 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: Build docs
|
||||
run: |
|
||||
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: Upload artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: docs
|
||||
name: ${{ inputs.artifact || 'docs' }}
|
||||
path: docs/build
|
28
.github/workflows/deploy-pages.yml
vendored
28
.github/workflows/deploy-pages.yml
vendored
@ -2,7 +2,9 @@ name: Deploy documentation
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- ci
|
||||
- main
|
||||
- dev
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
@ -18,9 +20,18 @@ jobs:
|
||||
build-docs:
|
||||
name: Build documentation
|
||||
uses: bdunderscore/modular-avatar/.github/workflows/build-test-docs.yml@main
|
||||
build-docs-dev:
|
||||
name: Build documentation (dev branch)
|
||||
uses: bdunderscore/modular-avatar/.github/workflows/build-test-docs.yml@main
|
||||
with:
|
||||
ref: dev
|
||||
path: dev
|
||||
artifact: docs-dev
|
||||
deploy-docs:
|
||||
name: Deploy documentation
|
||||
needs: build-docs
|
||||
needs:
|
||||
- build-docs
|
||||
- build-docs-dev
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
@ -28,13 +39,22 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Download artifact
|
||||
uses: actions/download-artifact@v2
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: docs
|
||||
path: docs/build
|
||||
- name: Download artifact
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: docs-dev
|
||||
path: docs/build/dev
|
||||
|
||||
- name: Dump file listing
|
||||
run: |
|
||||
ls -lR docs/build
|
||||
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v2
|
||||
uses: actions/configure-pages@v3
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v1
|
||||
@ -43,4 +63,4 @@ jobs:
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v1
|
||||
uses: actions/deploy-pages@v2
|
77
.github/workflows/gameci.yml
vendored
Normal file
77
.github/workflows/gameci.yml
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
# 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: [master, dev]
|
||||
# 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:
|
||||
paths:
|
||||
- 'Packages/**'
|
||||
- 'Assets/**'
|
||||
- 'ProjectSettings/**'
|
||||
- '.github/workflows/gameci.yml'
|
||||
workflow_dispatch: {}
|
||||
|
||||
# pull_request_target grants access to a privileged GITHUB_TOKEN by default, revoke this
|
||||
permissions:
|
||||
contents: read
|
||||
checks: write
|
||||
|
||||
jobs:
|
||||
build-and-test:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
checks: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
- uses: anatawa12/sh-actions/resolve-vpm-packages@master
|
||||
|
||||
- uses: game-ci/unity-test-runner@v2
|
||||
id: gameci
|
||||
env:
|
||||
# meh, just a personal license...
|
||||
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
|
||||
with:
|
||||
testMode: EditMode
|
||||
githubToken: ${{ github.token }}
|
||||
coverageOptions: generateAdditionalMetrics;generateHtmlReport;generateBadgeReport;assemblyFilters:+nadena.dev.*
|
||||
customParameters: -nographics -assemblyNames Tests
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
if: always()
|
||||
with:
|
||||
name: Test results
|
||||
path: ${{ steps.gameci.outputs.artifactsPath }}
|
||||
- uses: actions/upload-artifact@v3
|
||||
if: always()
|
||||
with:
|
||||
name: Coverage results
|
||||
path: ${{ steps.gameci.outputs.coveragePath }}
|
39
.github/workflows/gamici-activation.yml
vendored
Normal file
39
.github/workflows/gamici-activation.yml
vendored
Normal 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@v3
|
||||
with:
|
||||
name: ${{ steps.getManualLicenseFile.outputs.filePath }}
|
||||
path: ${{ steps.getManualLicenseFile.outputs.filePath }}
|
@ -22,7 +22,7 @@ namespace modular_avatar_tests.AnimateAddedBones
|
||||
|
||||
var layerName = "merged";
|
||||
|
||||
var motion = findFxMotion(prefab, layerName);
|
||||
var motion = findFxClip(prefab, layerName);
|
||||
|
||||
var cubeObject = prefab.transform.Find("Armature/Hips").GetChild(0).gameObject;
|
||||
Assert.True(cubeObject.name.StartsWith("Cube$"));
|
||||
|
@ -0,0 +1,53 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!74 &7400000
|
||||
AnimationClip:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: DBTP
|
||||
serializedVersion: 6
|
||||
m_Legacy: 0
|
||||
m_Compressed: 0
|
||||
m_UseHighQualityCurve: 1
|
||||
m_RotationCurves: []
|
||||
m_CompressedRotationCurves: []
|
||||
m_EulerCurves: []
|
||||
m_PositionCurves: []
|
||||
m_ScaleCurves: []
|
||||
m_FloatCurves: []
|
||||
m_PPtrCurves: []
|
||||
m_SampleRate: 60
|
||||
m_WrapMode: 0
|
||||
m_Bounds:
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
m_Extent: {x: 0, y: 0, z: 0}
|
||||
m_ClipBindingConstant:
|
||||
genericBindings: []
|
||||
pptrCurveMapping: []
|
||||
m_AnimationClipSettings:
|
||||
serializedVersion: 2
|
||||
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||
m_AdditiveReferencePoseTime: 0
|
||||
m_StartTime: 0
|
||||
m_StopTime: 1
|
||||
m_OrientationOffsetY: 0
|
||||
m_Level: 0
|
||||
m_CycleOffset: 0
|
||||
m_HasAdditiveReferencePose: 0
|
||||
m_LoopTime: 0
|
||||
m_LoopBlend: 0
|
||||
m_LoopBlendOrientation: 0
|
||||
m_LoopBlendPositionY: 0
|
||||
m_LoopBlendPositionXZ: 0
|
||||
m_KeepOriginalOrientation: 0
|
||||
m_KeepOriginalPositionY: 1
|
||||
m_KeepOriginalPositionXZ: 0
|
||||
m_HeightFromFeet: 0
|
||||
m_Mirror: 0
|
||||
m_EditorCurves: []
|
||||
m_EulerEditorCurves: []
|
||||
m_HasGenericRootTransform: 0
|
||||
m_HasMotionFloatCurves: 0
|
||||
m_Events: []
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 822fa250a223d354b8f2c1e5e4a71beb
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 7400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,115 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1107 &-2231289259402408727
|
||||
AnimatorStateMachine:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: merged
|
||||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 6794198557188456209}
|
||||
m_Position: {x: 30, y: 220, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: 6794198557188456209}
|
||||
--- !u!206 &-43520952576507180
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Blend Tree
|
||||
m_Childs:
|
||||
- serializedVersion: 2
|
||||
m_Motion: {fileID: 7400000, guid: 822fa250a223d354b8f2c1e5e4a71beb, type: 2}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendParameter: A
|
||||
m_Mirror: 0
|
||||
- serializedVersion: 2
|
||||
m_Motion: {fileID: 7400000, guid: 822fa250a223d354b8f2c1e5e4a71beb, type: 2}
|
||||
m_Threshold: 1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendParameter: B
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Blend
|
||||
m_BlendParameterY: Blend
|
||||
m_MinThreshold: 0
|
||||
m_MaxThreshold: 1
|
||||
m_UseAutomaticThresholds: 1
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 4
|
||||
--- !u!91 &9100000
|
||||
AnimatorController:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: DBTP
|
||||
serializedVersion: 5
|
||||
m_AnimatorParameters:
|
||||
- m_Name: A
|
||||
m_Type: 1
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: B
|
||||
m_Type: 1
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: merged
|
||||
m_StateMachine: {fileID: -2231289259402408727}
|
||||
m_Mask: {fileID: 0}
|
||||
m_Motions: []
|
||||
m_Behaviours: []
|
||||
m_BlendingMode: 0
|
||||
m_SyncedLayerIndex: -1
|
||||
m_DefaultWeight: 0
|
||||
m_IKPass: 0
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!1102 &6794198557188456209
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Blend Tree
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -43520952576507180}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 10117b7b37cd8844c93d0c5c18929fcf
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 9100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,28 @@
|
||||
using nadena.dev.modular_avatar.core.editor;
|
||||
using NUnit.Framework;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Animations;
|
||||
using UnityEngine;
|
||||
|
||||
namespace modular_avatar_tests.DirectBlendTreeParameters
|
||||
{
|
||||
public class DirectBlendTreeParameters : TestBase
|
||||
{
|
||||
[Test]
|
||||
public void RemapsDirectBlendTreeParameters()
|
||||
{
|
||||
var prefab = CreatePrefab("DirectBlendTreeParameters.prefab");
|
||||
AvatarProcessor.ProcessAvatar(prefab);
|
||||
|
||||
var layerName = "merged";
|
||||
|
||||
var motion = findFxMotion(prefab, layerName);
|
||||
var blendTree = motion as BlendTree;
|
||||
Assert.NotNull(blendTree);
|
||||
|
||||
var children = blendTree.children;
|
||||
Assert.AreEqual(children[0].directBlendParameter, "A"); //not remapped
|
||||
Assert.AreEqual(children[1].directBlendParameter, "C"); //remapped
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 355678dd0cdf4503b1b6545427ff5e8e
|
||||
timeCreated: 1679719502
|
@ -0,0 +1,390 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &358086172465847897
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4301418309833736947}
|
||||
- component: {fileID: 8166779794048720401}
|
||||
- component: {fileID: 3545031262107578409}
|
||||
m_Layer: 0
|
||||
m_Name: GameObject
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4301418309833736947
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 358086172465847897}
|
||||
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: 4724854421498416451}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &8166779794048720401
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 358086172465847897}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
parameters:
|
||||
- nameOrPrefix: B
|
||||
remapTo: C
|
||||
internalParameter: 0
|
||||
isPrefix: 0
|
||||
syncType: 0
|
||||
defaultValue: 0
|
||||
saved: 0
|
||||
--- !u!114 &3545031262107578409
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 358086172465847897}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1bb122659f724ebf85fe095ac02dc339, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
animator: {fileID: 9100000, guid: 10117b7b37cd8844c93d0c5c18929fcf, type: 2}
|
||||
layerType: 5
|
||||
deleteAttachedAnimator: 0
|
||||
pathMode: 0
|
||||
matchAvatarWriteDefaults: 0
|
||||
--- !u!1 &6524782399038551043
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4724854421498416451}
|
||||
- component: {fileID: 2239338889414089943}
|
||||
- component: {fileID: 3030341108566167033}
|
||||
- component: {fileID: 5629002289773137650}
|
||||
m_Layer: 0
|
||||
m_Name: DirectBlendTreeParameters
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4724854421498416451
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6524782399038551043}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 4.1121078, y: 0.04631436, z: -0.7135619}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 4301418309833736947}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &2239338889414089943
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6524782399038551043}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 542108242, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
Name:
|
||||
ViewPosition: {x: 0, y: 1.6, z: 0.2}
|
||||
Animations: 0
|
||||
ScaleIPD: 1
|
||||
lipSync: 0
|
||||
lipSyncJawBone: {fileID: 0}
|
||||
lipSyncJawClosed: {x: 0, y: 0, z: 0, w: 1}
|
||||
lipSyncJawOpen: {x: 0, y: 0, z: 0, w: 1}
|
||||
VisemeSkinnedMesh: {fileID: 0}
|
||||
MouthOpenBlendShapeName: Facial_Blends.Jaw_Down
|
||||
VisemeBlendShapes: []
|
||||
unityVersion:
|
||||
portraitCameraPositionOffset: {x: 0, y: 0, z: 0}
|
||||
portraitCameraRotationOffset: {x: 0, y: 1, z: 0, w: -0.00000004371139}
|
||||
customExpressions: 0
|
||||
expressionsMenu: {fileID: 0}
|
||||
expressionParameters: {fileID: 0}
|
||||
enableEyeLook: 0
|
||||
customEyeLookSettings:
|
||||
eyeMovement:
|
||||
confidence: 0.5
|
||||
excitement: 0.5
|
||||
leftEye: {fileID: 0}
|
||||
rightEye: {fileID: 0}
|
||||
eyesLookingStraight:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
eyesLookingUp:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
eyesLookingDown:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
eyesLookingLeft:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
eyesLookingRight:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
eyelidType: 0
|
||||
upperLeftEyelid: {fileID: 0}
|
||||
upperRightEyelid: {fileID: 0}
|
||||
lowerLeftEyelid: {fileID: 0}
|
||||
lowerRightEyelid: {fileID: 0}
|
||||
eyelidsDefault:
|
||||
upper:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
lower:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
eyelidsClosed:
|
||||
upper:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
lower:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
eyelidsLookingUp:
|
||||
upper:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
lower:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
eyelidsLookingDown:
|
||||
upper:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
lower:
|
||||
linked: 1
|
||||
left: {x: 0, y: 0, z: 0, w: 0}
|
||||
right: {x: 0, y: 0, z: 0, w: 0}
|
||||
eyelidsSkinnedMesh: {fileID: 0}
|
||||
eyelidsBlendshapes:
|
||||
customizeAnimationLayers: 0
|
||||
baseAnimationLayers:
|
||||
- isEnabled: 0
|
||||
type: 0
|
||||
animatorController: {fileID: 0}
|
||||
mask: {fileID: 0}
|
||||
isDefault: 1
|
||||
- isEnabled: 0
|
||||
type: 4
|
||||
animatorController: {fileID: 0}
|
||||
mask: {fileID: 0}
|
||||
isDefault: 1
|
||||
- isEnabled: 0
|
||||
type: 5
|
||||
animatorController: {fileID: 0}
|
||||
mask: {fileID: 0}
|
||||
isDefault: 1
|
||||
specialAnimationLayers:
|
||||
- isEnabled: 0
|
||||
type: 6
|
||||
animatorController: {fileID: 0}
|
||||
mask: {fileID: 0}
|
||||
isDefault: 1
|
||||
- isEnabled: 0
|
||||
type: 7
|
||||
animatorController: {fileID: 0}
|
||||
mask: {fileID: 0}
|
||||
isDefault: 1
|
||||
- isEnabled: 0
|
||||
type: 8
|
||||
animatorController: {fileID: 0}
|
||||
mask: {fileID: 0}
|
||||
isDefault: 1
|
||||
AnimationPreset: {fileID: 0}
|
||||
animationHashSet: []
|
||||
autoFootsteps: 1
|
||||
autoLocomotion: 1
|
||||
collider_head:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_torso:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_footR:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_footL:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_handR:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_handL:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_fingerIndexL:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_fingerMiddleL:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_fingerRingL:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_fingerLittleL:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_fingerIndexR:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_fingerMiddleR:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_fingerRingR:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
collider_fingerLittleR:
|
||||
isMirrored: 1
|
||||
state: 0
|
||||
transform: {fileID: 0}
|
||||
radius: 0
|
||||
height: 0
|
||||
position: {x: 0, y: 0, z: 0}
|
||||
rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
--- !u!114 &3030341108566167033
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6524782399038551043}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: -1427037861, guid: 4ecd63eff847044b68db9453ce219299, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
launchedFromSDKPipeline: 0
|
||||
completedSDKPipeline: 0
|
||||
blueprintId:
|
||||
contentType: 0
|
||||
assetBundleUnityVersion:
|
||||
fallbackStatus: 0
|
||||
--- !u!95 &5629002289773137650
|
||||
Animator:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6524782399038551043}
|
||||
m_Enabled: 1
|
||||
m_Avatar: {fileID: 0}
|
||||
m_Controller: {fileID: 0}
|
||||
m_CullingMode: 0
|
||||
m_UpdateMode: 0
|
||||
m_ApplyRootMotion: 0
|
||||
m_LinearVelocityBlending: 0
|
||||
m_WarningMessage:
|
||||
m_HasTransformHierarchy: 1
|
||||
m_AllowConstantClipSamplingOptimization: 1
|
||||
m_KeepAnimatorControllerStateOnDisable: 0
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 70484dfc143c0904cb1facfb29d5ee16
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
24
Assets/_ModularAvatar/EditModeTests/NullSubparameterTest.cs
Normal file
24
Assets/_ModularAvatar/EditModeTests/NullSubparameterTest.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using nadena.dev.modular_avatar.core.editor;
|
||||
using NUnit.Framework;
|
||||
using UnityEngine;
|
||||
using VRC.SDK3.Avatars.Components;
|
||||
using VRC.SDK3.Avatars.ScriptableObjects;
|
||||
|
||||
namespace modular_avatar_tests
|
||||
{
|
||||
public class NullSubparameterTest : TestBase
|
||||
{
|
||||
[Test]
|
||||
public void TestNullSubparametersField()
|
||||
{
|
||||
VRCExpressionsMenu menu = ScriptableObject.CreateInstance<VRCExpressionsMenu>();
|
||||
var root = CreateRoot("root");
|
||||
|
||||
var avatar = root.GetComponent<VRCAvatarDescriptor>();
|
||||
avatar.expressionsMenu = menu;
|
||||
|
||||
// This should not throw an exception
|
||||
ParameterPolicy.ProbeParameters(root);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: af0baf421bd9450d974871db9d25c2c4
|
||||
timeCreated: 1681041544
|
53
Assets/_ModularAvatar/EditModeTests/RetargetMeshesTest.cs
Normal file
53
Assets/_ModularAvatar/EditModeTests/RetargetMeshesTest.cs
Normal file
@ -0,0 +1,53 @@
|
||||
using nadena.dev.modular_avatar.core.editor;
|
||||
using NUnit.Framework;
|
||||
using UnityEngine;
|
||||
using VRC.SDK3.Avatars.Components;
|
||||
|
||||
namespace modular_avatar_tests
|
||||
{
|
||||
public class RetargetMeshesTest : TestBase
|
||||
{
|
||||
// Real world case of this test case is with skinned mesh without bones or skinned mesh renderer with null mesh.
|
||||
[Test]
|
||||
public void RootBoneOnly()
|
||||
{
|
||||
var root = CreateRoot("root");
|
||||
var a = CreateChild(root, "a");
|
||||
var b = CreateChild(a, "b");
|
||||
|
||||
var skinnedMeshRenderer = root.AddComponent<SkinnedMeshRenderer>();
|
||||
skinnedMeshRenderer.sharedMesh = new Mesh();
|
||||
skinnedMeshRenderer.rootBone = b.transform;
|
||||
Debug.Assert(skinnedMeshRenderer.bones.Length == 0);
|
||||
|
||||
BoneDatabase.AddMergedBone(b.transform);
|
||||
var context = new BuildContext(root.GetComponent<VRCAvatarDescriptor>());
|
||||
new RetargetMeshes().OnPreprocessAvatar(root, context);
|
||||
|
||||
Assert.AreEqual(a.transform, skinnedMeshRenderer.rootBone);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void NoMeshRootBoneOnly()
|
||||
{
|
||||
var root = CreateRoot("root");
|
||||
var a = CreateChild(root, "a");
|
||||
var b = CreateChild(a, "b");
|
||||
b.transform.localScale = new Vector3(2, 2, 2);
|
||||
|
||||
var skinnedMeshRenderer = root.AddComponent<SkinnedMeshRenderer>();
|
||||
skinnedMeshRenderer.sharedMesh = null;
|
||||
skinnedMeshRenderer.localBounds = new Bounds(new Vector3(0, 0, 0), new Vector3(1, 1, 1));
|
||||
skinnedMeshRenderer.rootBone = b.transform;
|
||||
Debug.Assert(skinnedMeshRenderer.bones.Length == 0);
|
||||
|
||||
BoneDatabase.AddMergedBone(b.transform);
|
||||
var context = new BuildContext(root.GetComponent<VRCAvatarDescriptor>());
|
||||
new RetargetMeshes().OnPreprocessAvatar(root, context);
|
||||
|
||||
Assert.AreEqual(a.transform, skinnedMeshRenderer.rootBone);
|
||||
Assert.AreEqual(new Bounds(new Vector3(0, 0, 0), new Vector3(2, 2, 2)),
|
||||
skinnedMeshRenderer.localBounds);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c1eeed79228433d8f9ee98d2ae852d1
|
||||
timeCreated: 1679738453
|
@ -17,7 +17,7 @@ namespace modular_avatar_tests.SimpleArmatureToggle
|
||||
AvatarProcessor.ProcessAvatar(prefab);
|
||||
|
||||
var layerName = "merged";
|
||||
var motion = findFxMotion(prefab, layerName);
|
||||
var motion = findFxClip(prefab, layerName);
|
||||
|
||||
var obj1 = prefab.transform.Find("Armature/Hips").GetChild(1);
|
||||
var obj2 = prefab.transform.Find("Armature/Hips/Chest").GetChild(0);
|
||||
|
@ -62,15 +62,20 @@ namespace modular_avatar_tests
|
||||
}
|
||||
|
||||
|
||||
protected static AnimationClip findFxMotion(GameObject prefab, string layerName)
|
||||
protected static AnimationClip findFxClip(GameObject prefab, string layerName)
|
||||
{
|
||||
var motion = findFxMotion(prefab, layerName) as AnimationClip;
|
||||
Assert.NotNull(motion);
|
||||
return motion;
|
||||
}
|
||||
|
||||
protected static Motion findFxMotion(GameObject prefab, string layerName)
|
||||
{
|
||||
var layer = findFxLayer(prefab, layerName);
|
||||
var state = layer.stateMachine.states[0].state;
|
||||
Assert.NotNull(state);
|
||||
|
||||
var motion = state.motion as AnimationClip;
|
||||
Assert.NotNull(motion);
|
||||
return motion;
|
||||
return state.motion;
|
||||
}
|
||||
|
||||
protected static AnimatorState FindStateInLayer(AnimatorControllerLayer layer, string stateName)
|
||||
|
@ -17,7 +17,7 @@ namespace modular_avatar_tests.TransformMappingThroughSwitchedObject
|
||||
var prefab = CreatePrefab("TransformMappingThroughSwitchedObject.prefab");
|
||||
AvatarProcessor.ProcessAvatar(prefab);
|
||||
|
||||
var motion = findFxMotion(prefab, "child_controller");
|
||||
var motion = findFxClip(prefab, "child_controller");
|
||||
|
||||
var binding = EditorCurveBinding.FloatCurve("Armature/Hips", typeof(Transform), "localEulerAnglesRaw.x");
|
||||
var curve = AnimationUtility.GetEditorCurve(motion, binding);
|
||||
|
Binary file not shown.
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEditor;
|
||||
using UnityEditor.UIElements;
|
||||
@ -31,6 +32,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
{
|
||||
_targetAssetFolderField.SetValueWithoutNotify(_windowData.targetAssetFolder);
|
||||
}
|
||||
|
||||
_packageIDField.SetValueWithoutNotify(_windowData.packageID);
|
||||
_targetVRCPackageField.SetValueWithoutNotify(_windowData.relatedPackage);
|
||||
|
||||
@ -51,29 +53,33 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
}
|
||||
|
||||
[MenuItem("Assets/Export VPM as UnityPackage")]
|
||||
private static void ExportAsUnityPackage ()
|
||||
private static void ExportAsUnityPackage()
|
||||
{
|
||||
if (Selection.assetGUIDs.Length != 1)
|
||||
var foldersToExport = new List<string>();
|
||||
StringBuilder exportFilename = new StringBuilder("exported");
|
||||
foreach (string guid in Selection.assetGUIDs)
|
||||
{
|
||||
Debug.LogWarning($"Cannot export selection, must be a single Folder.");
|
||||
return;
|
||||
}
|
||||
|
||||
string selectedFolder = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]);
|
||||
string selectedFolder = AssetDatabase.GUIDToAssetPath(guid);
|
||||
var manifestPath = Path.Combine(selectedFolder, VRCPackageManifest.Filename);
|
||||
var manifest = VRCPackageManifest.GetManifestAtPath(manifestPath);
|
||||
if (manifest == null)
|
||||
{
|
||||
Debug.LogWarning($"Could not read valid Package Manifest at {manifestPath}. You need to create this first.");
|
||||
return;
|
||||
Debug.LogWarning(
|
||||
$"Could not read valid Package Manifest at {manifestPath}. You need to create this first to export a VPM Package.");
|
||||
continue;
|
||||
}
|
||||
|
||||
exportFilename.Append($"-{manifest.Id}-{manifest.Version}");
|
||||
foldersToExport.Add(selectedFolder);
|
||||
}
|
||||
|
||||
exportFilename.Append(".unitypackage");
|
||||
var exportDir = Path.Combine(Directory.GetCurrentDirectory(), "Exports");
|
||||
Directory.CreateDirectory(exportDir);
|
||||
AssetDatabase.ExportPackage
|
||||
(
|
||||
selectedFolder,
|
||||
Path.Combine(exportDir, $"{manifest.Id}-{manifest.Version}.unitypackage"),
|
||||
foldersToExport.ToArray(),
|
||||
Path.Combine(exportDir, exportFilename.ToString()),
|
||||
ExportPackageOptions.Recurse | ExportPackageOptions.Interactive
|
||||
);
|
||||
}
|
||||
@ -144,7 +150,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
|
||||
private void OnTargetVRCPackageChanged(ChangeEvent<Enum> evt)
|
||||
{
|
||||
_windowData.relatedPackage = (VRCPackageEnum)evt.newValue;
|
||||
_windowData.relatedPackage = (VRCPackageEnum) evt.newValue;
|
||||
_windowData.Save();
|
||||
}
|
||||
|
||||
@ -173,11 +179,12 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
}
|
||||
}
|
||||
|
||||
public static void ForceRefresh ()
|
||||
public static void ForceRefresh()
|
||||
{
|
||||
MethodInfo method = typeof( UnityEditor.PackageManager.Client ).GetMethod( "Resolve", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly );
|
||||
if( method != null )
|
||||
method.Invoke( null, null );
|
||||
MethodInfo method = typeof(UnityEditor.PackageManager.Client).GetMethod("Resolve",
|
||||
BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
|
||||
if (method != null)
|
||||
method.Invoke(null, null);
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
@ -195,14 +202,16 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
|
||||
box.Add(new Label("Lowercase letters, numbers and dots only.")
|
||||
{
|
||||
name="description",
|
||||
tooltip = "Standard practice is reverse domain notation like com.vrchat.packagename. Needs to be unique across VRChat, so if you don't own a domain you can try your username.",
|
||||
name = "description",
|
||||
tooltip =
|
||||
"Standard practice is reverse domain notation like com.vrchat.packagename. Needs to be unique across VRChat, so if you don't own a domain you can try your username.",
|
||||
});
|
||||
|
||||
return box;
|
||||
}
|
||||
|
||||
private Regex packageIdRegex = new Regex("[^a-z0-9.]");
|
||||
|
||||
private void OnPackageIDChanged(ChangeEvent<string> evt)
|
||||
{
|
||||
if (evt.newValue != null)
|
||||
@ -212,6 +221,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
_windowData.packageID = newId;
|
||||
_windowData.Save();
|
||||
}
|
||||
|
||||
RefreshActionButtonState();
|
||||
}
|
||||
|
||||
@ -223,15 +233,20 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
};
|
||||
|
||||
_targetAssetFolderField = new TextField("Target Folder");
|
||||
_targetAssetFolderField.RegisterCallback<DragEnterEvent>(OnTargetAssetFolderDragEnter, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragLeaveEvent>(OnTargetAssetFolderDragLeave, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragUpdatedEvent>(OnTargetAssetFolderDragUpdated, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragPerformEvent>(OnTargetAssetFolderDragPerform, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragExitedEvent>(OnTargetAssetFolderDragExited, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragEnterEvent>(OnTargetAssetFolderDragEnter,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragLeaveEvent>(OnTargetAssetFolderDragLeave,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragUpdatedEvent>(OnTargetAssetFolderDragUpdated,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragPerformEvent>(OnTargetAssetFolderDragPerform,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragExitedEvent>(OnTargetAssetFolderDragExited,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterValueChangedCallback(OnTargetAssetFolderValueChanged);
|
||||
targetFolderBox.Add(_targetAssetFolderField);
|
||||
|
||||
targetFolderBox.Add(new Label("Drag and Drop an Assets Folder to Convert Above"){name="description"});
|
||||
targetFolderBox.Add(new Label("Drag and Drop an Assets Folder to Convert Above") {name = "description"});
|
||||
return targetFolderBox;
|
||||
}
|
||||
|
||||
@ -309,7 +324,6 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
|
||||
private void DoMigration(string corePath, string targetDir)
|
||||
{
|
||||
|
||||
EditorUtility.DisplayProgressBar("Migrating Package", "Creating Starter Package", 0.1f);
|
||||
|
||||
// Convert PackageType enum to VRC Package ID string
|
||||
@ -337,7 +351,6 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
|
||||
// Clear target asset folder since it should no longer exist
|
||||
_windowData.targetAssetFolder = "";
|
||||
|
||||
}
|
||||
|
||||
private static IEnumerable<string> GetAllFiles(string path)
|
||||
@ -408,5 +421,4 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
@ -11,16 +11,17 @@ using UnityEngine;
|
||||
using VRC.PackageManagement.Core;
|
||||
using VRC.PackageManagement.Core.Types;
|
||||
using VRC.PackageManagement.Core.Types.Packages;
|
||||
using Version = VRC.PackageManagement.Core.Types.VPMVersion.Version;
|
||||
|
||||
namespace VRC.PackageManagement.Resolver
|
||||
{
|
||||
|
||||
[InitializeOnLoad]
|
||||
public class Resolver
|
||||
{
|
||||
private const string _projectLoadedKey = "PROJECT_LOADED";
|
||||
|
||||
private static string _projectDir;
|
||||
|
||||
public static string ProjectDir
|
||||
{
|
||||
get
|
||||
@ -76,7 +77,6 @@ namespace VRC.PackageManagement.Resolver
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
if (string.IsNullOrWhiteSpace(ProjectDir))
|
||||
{
|
||||
return;
|
||||
@ -186,14 +186,14 @@ namespace VRC.PackageManagement.Resolver
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void ForceRefresh ()
|
||||
public static void ForceRefresh()
|
||||
{
|
||||
MethodInfo method = typeof( UnityEditor.PackageManager.Client ).GetMethod( "Resolve", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly );
|
||||
if( method != null )
|
||||
method.Invoke( null, null );
|
||||
MethodInfo method = typeof(UnityEditor.PackageManager.Client).GetMethod("Resolve",
|
||||
BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
|
||||
if (method != null)
|
||||
method.Invoke(null, null);
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "com.vrchat.core.vpm-resolver",
|
||||
"displayName": "VRChat Package Resolver Tool",
|
||||
"version": "0.1.17",
|
||||
"version": "0.1.18",
|
||||
"unity": "2019.4",
|
||||
"description": "Tool to Download VPM Packages",
|
||||
"vrchatVersion": "2022.1.1",
|
||||
|
@ -1,132 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace nadena.dev.modular_avatar.core.editor
|
||||
{
|
||||
[InitializeOnLoad]
|
||||
internal static class ComponentAllowlistPatch
|
||||
{
|
||||
internal static readonly bool PATCH_OK;
|
||||
|
||||
static ComponentAllowlistPatch()
|
||||
{
|
||||
try
|
||||
{
|
||||
PatchAllowlist();
|
||||
PATCH_OK = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogException(e);
|
||||
PATCH_OK = false;
|
||||
}
|
||||
}
|
||||
|
||||
static void PatchAllowlist()
|
||||
{
|
||||
// The below APIs are all public, but undocumented and likely to change in the future.
|
||||
// As such, we use reflection to access them (allowing us to catch exceptions instead of just breaking the
|
||||
// build - and allowing the user to manually bake as a workaround).
|
||||
|
||||
// The basic idea is to retrieve the HashSet of whitelisted components, and add all components extending
|
||||
// from AvatarTagComponent to it. This HashSet is cached on first access, but the lists of allowed
|
||||
// components used to initially populate it are private. So, we'll start off by making a call that (as a
|
||||
// side-effect) causes the list to be initially cached. This call will throw a NPE because we're passing
|
||||
// a null GameObject, but that's okay.
|
||||
|
||||
var avatarValidation = Util.FindType("VRC.SDK3.Validation.AvatarValidation");
|
||||
var findIllegalComponents =
|
||||
avatarValidation?.GetMethod("FindIllegalComponents", BindingFlags.Public | BindingFlags.Static);
|
||||
|
||||
if (findIllegalComponents == null)
|
||||
{
|
||||
Debug.LogError(
|
||||
"[ModularAvatar] Unsupported VRCSDK version: Failed to find AvatarValidation.FindIllegalComponents");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
findIllegalComponents.Invoke(null, new[] {(object) null});
|
||||
}
|
||||
catch (TargetInvocationException e)
|
||||
{
|
||||
if (e.InnerException is NullReferenceException)
|
||||
{
|
||||
// ok!
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Diagnostics.Debug.Assert(e.InnerException != null, "e.InnerException != null");
|
||||
throw e.InnerException;
|
||||
}
|
||||
}
|
||||
|
||||
// Now fetch the cached allowlist and add our components to it.
|
||||
var validationUtils = Util.FindType("VRC.SDKBase.Validation.ValidationUtils");
|
||||
var whitelistedTypes = validationUtils?.GetMethod(
|
||||
"WhitelistedTypes",
|
||||
BindingFlags.Public | BindingFlags.Static,
|
||||
null,
|
||||
new[] {typeof(string), typeof(IEnumerable<Type>)},
|
||||
null
|
||||
);
|
||||
|
||||
if (whitelistedTypes == null)
|
||||
{
|
||||
Debug.LogError(
|
||||
"[ModularAvatar] Unsupported VRCSDK version: Failed to find ValidationUtils.WhitelistedTypes");
|
||||
return;
|
||||
}
|
||||
|
||||
var allowlist = whitelistedTypes.Invoke(null, new object[] {"avatar-sdk3", null}) as HashSet<Type>;
|
||||
if (allowlist == null)
|
||||
{
|
||||
Debug.LogError("[ModularAvatar] Unsupported VRCSDK version: Failed to retrieve component whitelist");
|
||||
return;
|
||||
}
|
||||
|
||||
allowlist.Add(typeof(AvatarTagComponent));
|
||||
|
||||
// We'll need to find all types which derive from AvatarTagComponent and inject them into the allowlist
|
||||
// as well.
|
||||
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
|
||||
{
|
||||
foreach (var ty in assembly.GetTypes())
|
||||
{
|
||||
if (typeof(AvatarTagComponent).IsAssignableFrom(ty))
|
||||
{
|
||||
allowlist.Add(ty);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 657f099f7fc04609a5cfc9ac5461d7e3
|
||||
timeCreated: 1661563992
|
@ -10,62 +10,65 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
// This list is originally from https://github.com/HhotateA/AvatarModifyTools/blob/d8ae75fed8577707253d6b63a64d6053eebbe78b/Assets/HhotateA/AvatarModifyTool/Editor/EnvironmentVariable.cs#L81-L139
|
||||
// Copyright (c) 2021 @HhotateA_xR
|
||||
// Licensed under the MIT License
|
||||
// In addition, some part is copied from from https://github.com/Azukimochi/BoneRenamer/blob/e9f68acd631d2a0fc3d8b382d361649ac971e988/BoneRenamer/Editor/BoneNames.xml
|
||||
// Copyright (c) 2023 Azukimochi
|
||||
// Licensed under the MIT License
|
||||
private static string[][] boneNamePatterns = new[]
|
||||
{
|
||||
new[] {"Hips", "Hip"},
|
||||
new[] {"LeftUpperLeg", "UpperLeg_Left", "UpperLeg_L", "Leg_Left", "Leg_L", "ULeg_L"},
|
||||
new[] {"RightUpperLeg", "UpperLeg_Right", "UpperLeg_R", "Leg_Right", "Leg_R", "ULeg_R"},
|
||||
new[] {"LeftLowerLeg", "LowerLeg_Left", "LowerLeg_L", "Knee_Left", "Knee_L", "LLeg_L"},
|
||||
new[] {"RightLowerLeg", "LowerLeg_Right", "LowerLeg_R", "Knee_Right", "Knee_R", "LLeg_R"},
|
||||
new[] {"LeftFoot", "Foot_Left", "Foot_L"},
|
||||
new[] {"RightFoot", "Foot_Right", "Foot_R"},
|
||||
new[] {"LeftUpperLeg", "UpperLeg_Left", "UpperLeg_L", "Leg_Left", "Leg_L", "ULeg_L", "Left leg", "LeftUpLeg"},
|
||||
new[] {"RightUpperLeg", "UpperLeg_Right", "UpperLeg_R", "Leg_Right", "Leg_R", "ULeg_R", "Right leg", "RightUpLeg"},
|
||||
new[] {"LeftLowerLeg", "LowerLeg_Left", "LowerLeg_L", "Knee_Left", "Knee_L", "LLeg_L", "Left knee", "LeftLeg"},
|
||||
new[] {"RightLowerLeg", "LowerLeg_Right", "LowerLeg_R", "Knee_Right", "Knee_R", "LLeg_R", "Right knee", "RightLeg"},
|
||||
new[] {"LeftFoot", "Foot_Left", "Foot_L", "Ankle_L", "Foot.L.001", "Left ankle"},
|
||||
new[] {"RightFoot", "Foot_Right", "Foot_R", "Ankle_R", "Foot.R.001", "Right ankle"},
|
||||
new[] {"Spine"},
|
||||
new[] {"Chest", "Bust"},
|
||||
new[] {"Neck"},
|
||||
new[] {"Head"},
|
||||
new[] {"LeftShoulder", "Shoulder_Left", "Shoulder_L"},
|
||||
new[] {"RightShoulder", "Shoulder_Right", "Shoulder_R"},
|
||||
new[] {"LeftUpperArm", "UpperArm_Left", "UpperArm_L", "Arm_Left", "Arm_L", "UArm_L"},
|
||||
new[] {"RightUpperArm", "UpperArm_Right", "UpperArm_R", "Arm_Right", "Arm_R", "UArm_R"},
|
||||
new[] {"LeftLowerArm", "LowerArm_Left", "LowerArm_L", "LArm_L"},
|
||||
new[] {"RightLowerArm", "LowerArm_Right", "LowerArm_R", "LArm_R"},
|
||||
new[] {"LeftHand", "Hand_Left", "Hand_L"},
|
||||
new[] {"RightHand", "Hand_Right", "Hand_R"},
|
||||
new[] {"LeftToes", "Toes_Left", "Toe_Left", "ToeIK_L", "Toes_L", "Toe_L"},
|
||||
new[] {"RightToes", "Toes_Right", "Toe_Right", "ToeIK_R", "Toes_R", "Toe_R"},
|
||||
new[] {"LeftUpperArm", "UpperArm_Left", "UpperArm_L", "Arm_Left", "Arm_L", "UArm_L", "Left arm", "UpperLeftArm"},
|
||||
new[] {"RightUpperArm", "UpperArm_Right", "UpperArm_R", "Arm_Right", "Arm_R", "UArm_R", "Right arm", "UpperRightArm"},
|
||||
new[] {"LeftLowerArm", "LowerArm_Left", "LowerArm_L", "LArm_L", "Left elbow", "LeftForeArm"},
|
||||
new[] {"RightLowerArm", "LowerArm_Right", "LowerArm_R", "LArm_R", "Right elbow", "RightForeArm"},
|
||||
new[] {"LeftHand", "Hand_Left", "Hand_L", "Left wrist", "Wrist_L"},
|
||||
new[] {"RightHand", "Hand_Right", "Hand_R", "Right wrist", "Wrist_R"},
|
||||
new[] {"LeftToes", "Toes_Left", "Toe_Left", "ToeIK_L", "Toes_L", "Toe_L", "Foot.L.002", "Left Toe", "LeftToeBase"},
|
||||
new[] {"RightToes", "Toes_Right", "Toe_Right", "ToeIK_R", "Toes_R", "Toe_R", "Foot.R.002", "Right Toe", "RightToeBase"},
|
||||
new[] {"LeftEye", "Eye_Left", "Eye_L"},
|
||||
new[] {"RightEye", "Eye_Right", "Eye_R"},
|
||||
new[] {"Jaw"},
|
||||
new[] {"LeftThumbProximal", "ProximalThumb_Left", "ProximalThumb_L", "Thumb1_L"},
|
||||
new[] {"LeftThumbIntermediate", "IntermediateThumb_Left", "IntermediateThumb_L", "Thumb2_L"},
|
||||
new[] {"LeftThumbDistal", "DistalThumb_Left", "DistalThumb_L", "Thumb3_L"},
|
||||
new[] {"LeftIndexProximal", "ProximalIndex_Left", "ProximalIndex_L", "Index1_L"},
|
||||
new[] {"LeftIndexIntermediate", "IntermediateIndex_Left", "IntermediateIndex_L", "Index2_L"},
|
||||
new[] {"LeftIndexDistal", "DistalIndex_Left", "DistalIndex_L", "Index3_L"},
|
||||
new[] {"LeftMiddleProximal", "ProximalMiddle_Left", "ProximalMiddle_L", "Middle1_L"},
|
||||
new[] {"LeftMiddleIntermediate", "IntermediateMiddle_Left", "IntermediateMiddle_L", "Middle2_L"},
|
||||
new[] {"LeftMiddleDistal", "DistalMiddle_Left", "DistalMiddle_L", "Middle3_L"},
|
||||
new[] {"LeftRingProximal", "ProximalRing_Left", "ProximalRing_L", "Ring1_L"},
|
||||
new[] {"LeftRingIntermediate", "IntermediateRing_Left", "IntermediateRing_L", "Ring2_L"},
|
||||
new[] {"LeftRingDistal", "DistalRing_Left", "DistalRing_L", "Ring3_L"},
|
||||
new[] {"LeftLittleProximal", "ProximalLittle_Left", "ProximalLittle_L", "Little1_L"},
|
||||
new[] {"LeftLittleIntermediate", "IntermediateLittle_Left", "IntermediateLittle_L", "Little2_L"},
|
||||
new[] {"LeftLittleDistal", "DistalLittle_Left", "DistalLittle_L", "Little3_L"},
|
||||
new[] {"RightThumbProximal", "ProximalThumb_Right", "ProximalThumb_R", "Thumb1_R"},
|
||||
new[] {"RightThumbIntermediate", "IntermediateThumb_Right", "IntermediateThumb_R", "Thumb2_R"},
|
||||
new[] {"RightThumbDistal", "DistalThumb_Right", "DistalThumb_R", "Thumb3_R"},
|
||||
new[] {"RightIndexProximal", "ProximalIndex_Right", "ProximalIndex_R", "Index1_R"},
|
||||
new[] {"RightIndexIntermediate", "IntermediateIndex_Right", "IntermediateIndex_R", "Index2_R"},
|
||||
new[] {"RightIndexDistal", "DistalIndex_Right", "DistalIndex_R", "Index3_R"},
|
||||
new[] {"RightMiddleProximal", "ProximalMiddle_Right", "ProximalMiddle_R", "Middle1_R"},
|
||||
new[] {"RightMiddleIntermediate", "IntermediateMiddle_Right", "IntermediateMiddle_R", "Middle2_R"},
|
||||
new[] {"RightMiddleDistal", "DistalMiddle_Right", "DistalMiddle_R", "Middle3_R"},
|
||||
new[] {"RightRingProximal", "ProximalRing_Right", "ProximalRing_R", "Ring1_R"},
|
||||
new[] {"RightRingIntermediate", "IntermediateRing_Right", "IntermediateRing_R", "Ring2_R"},
|
||||
new[] {"RightRingDistal", "DistalRing_Right", "DistalRing_R", "Ring3_R"},
|
||||
new[] {"RightLittleProximal", "ProximalLittle_Right", "ProximalLittle_R", "Little1_R"},
|
||||
new[] {"RightLittleIntermediate", "IntermediateLittle_Right", "IntermediateLittle_R", "Little2_R"},
|
||||
new[] {"RightLittleDistal", "DistalLittle_Right", "DistalLittle_R", "Little3_R"},
|
||||
new[] {"LeftThumbProximal", "ProximalThumb_Left", "ProximalThumb_L", "Thumb1_L", "ThumbFinger1_L", "LeftHandThumb1", "Thumb Proximal.L", "Thunb1_L"},
|
||||
new[] {"LeftThumbIntermediate", "IntermediateThumb_Left", "IntermediateThumb_L", "Thumb2_L", "ThumbFinger2_L", "LeftHandThumb2", "Thumb Intermediate.L", "Thunb2_L"},
|
||||
new[] {"LeftThumbDistal", "DistalThumb_Left", "DistalThumb_L", "Thumb3_L", "ThumbFinger3_L", "LeftHandThumb3", "Thumb Distal.L", "Thunb3_L"},
|
||||
new[] {"LeftIndexProximal", "ProximalIndex_Left", "ProximalIndex_L", "Index1_L", "IndexFinger1_L", "LeftHandIndex1", "Index Proximal.L"},
|
||||
new[] {"LeftIndexIntermediate", "IntermediateIndex_Left", "IntermediateIndex_L", "Index2_L", "IndexFinger2_L", "LeftHandIndex2", "Index Intermediate.L"},
|
||||
new[] {"LeftIndexDistal", "DistalIndex_Left", "DistalIndex_L", "Index3_L", "IndexFinger3_L", "LeftHandIndex3", "Index Distal.L"},
|
||||
new[] {"LeftMiddleProximal", "ProximalMiddle_Left", "ProximalMiddle_L", "Middle1_L", "MiddleFinger1_L", "LeftHandMiddle1", "Middle Proximal.L"},
|
||||
new[] {"LeftMiddleIntermediate", "IntermediateMiddle_Left", "IntermediateMiddle_L", "Middle2_L", "MiddleFinger2_L", "LeftHandMiddle2", "Middle Intermediate.L"},
|
||||
new[] {"LeftMiddleDistal", "DistalMiddle_Left", "DistalMiddle_L", "Middle3_L", "MiddleFinger3_L", "LeftHandMiddle3", "Middle Distal.L"},
|
||||
new[] {"LeftRingProximal", "ProximalRing_Left", "ProximalRing_L", "Ring1_L", "RingFinger1_L", "LeftHandRing1", "Ring Proximal.L"},
|
||||
new[] {"LeftRingIntermediate", "IntermediateRing_Left", "IntermediateRing_L", "Ring2_L", "RingFinger2_L", "LeftHandRing2", "Ring Intermediate.L"},
|
||||
new[] {"LeftRingDistal", "DistalRing_Left", "DistalRing_L", "Ring3_L", "RingFinger3_L", "LeftHandRing3", "Ring Distal.L"},
|
||||
new[] {"LeftLittleProximal", "ProximalLittle_Left", "ProximalLittle_L", "Little1_L", "LittleFinger1_L", "LeftHandPinky1", "Little Proximal.L"},
|
||||
new[] {"LeftLittleIntermediate", "IntermediateLittle_Left", "IntermediateLittle_L", "Little2_L", "LittleFinger2_L", "LeftHandPinky2", "Little Intermediate.L"},
|
||||
new[] {"LeftLittleDistal", "DistalLittle_Left", "DistalLittle_L", "Little3_L", "LittleFinger3_L", "LeftHandPinky3", "Little Distal.L"},
|
||||
new[] {"RightThumbProximal", "ProximalThumb_Right", "ProximalThumb_R", "Thumb1_R", "ThumbFinger1_R", "RightHandThumb1", "Thumb Proximal.R", "Thunb1_R"},
|
||||
new[] {"RightThumbIntermediate", "IntermediateThumb_Right", "IntermediateThumb_R", "Thumb2_R", "ThumbFinger2_R", "RightHandThumb2", "Thumb Intermediate.R", "Thunb2_R"},
|
||||
new[] {"RightThumbDistal", "DistalThumb_Right", "DistalThumb_R", "Thumb3_R", "ThumbFinger3_R", "RightHandThumb3", "Thumb Distal.R", "Thunb3_R"},
|
||||
new[] {"RightIndexProximal", "ProximalIndex_Right", "ProximalIndex_R", "Index1_R", "IndexFinger1_R", "RightHandIndex1", "Index Proximal.R"},
|
||||
new[] {"RightIndexIntermediate", "IntermediateIndex_Right", "IntermediateIndex_R", "Index2_R", "IndexFinger2_R", "RightHandIndex2", "Index Intermediate.R"},
|
||||
new[] {"RightIndexDistal", "DistalIndex_Right", "DistalIndex_R", "Index3_R", "IndexFinger3_R", "RightHandIndex3", "Index Distal.R"},
|
||||
new[] {"RightMiddleProximal", "ProximalMiddle_Right", "ProximalMiddle_R", "Middle1_R", "MiddleFinger1_R", "RightHandMiddle1", "Middle Proximal.R"},
|
||||
new[] {"RightMiddleIntermediate", "IntermediateMiddle_Right", "IntermediateMiddle_R", "Middle2_R", "MiddleFinger2_R", "RightHandMiddle2", "Middle Intermediate.R"},
|
||||
new[] {"RightMiddleDistal", "DistalMiddle_Right", "DistalMiddle_R", "Middle3_R", "MiddleFinger3_R", "RightHandMiddle3", "Middle Distal.R"},
|
||||
new[] {"RightRingProximal", "ProximalRing_Right", "ProximalRing_R", "Ring1_R", "RingFinger1_R", "RightHandRing1", "Ring Proximal.R"},
|
||||
new[] {"RightRingIntermediate", "IntermediateRing_Right", "IntermediateRing_R", "Ring2_R", "RingFinger2_R", "RightHandRing2", "Ring Intermediate.R"},
|
||||
new[] {"RightRingDistal", "DistalRing_Right", "DistalRing_R", "Ring3_R", "RingFinger3_R", "RightHandRing3", "Ring Distal.R"},
|
||||
new[] {"RightLittleProximal", "ProximalLittle_Right", "ProximalLittle_R", "Little1_R", "LittleFinger1_R", "RightHandPinky1", "Little Proximal.R"},
|
||||
new[] {"RightLittleIntermediate", "IntermediateLittle_Right", "IntermediateLittle_R", "Little2_R", "LittleFinger2_R", "RightHandPinky2", "Little Intermediate.R"},
|
||||
new[] {"RightLittleDistal", "DistalLittle_Right", "DistalLittle_R", "Little3_R", "LittleFinger3_R", "RightHandPinky3", "Little Distal.R"},
|
||||
new[] {"UpperChest", "UChest"},
|
||||
};
|
||||
|
||||
|
@ -122,7 +122,6 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
}
|
||||
|
||||
InspectorCommon.DisplayOutOfAvatarWarning(targets);
|
||||
if (!ComponentAllowlistPatch.PATCH_OK) InspectorCommon.DisplayVRCSDKVersionWarning();
|
||||
|
||||
OnInnerInspectorGUI();
|
||||
}
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using JetBrains.Annotations;
|
||||
using nadena.dev.modular_avatar.editor.ErrorReporting;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
@ -88,8 +89,6 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
{
|
||||
BuildReport.ReportingObject(renderer, () =>
|
||||
{
|
||||
if (renderer.sharedMesh == null) return;
|
||||
|
||||
bool isRetargetable = false;
|
||||
foreach (var bone in renderer.bones)
|
||||
{
|
||||
@ -100,10 +99,12 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
}
|
||||
}
|
||||
|
||||
isRetargetable |= BoneDatabase.GetRetargetedBone(renderer.rootBone);
|
||||
|
||||
if (isRetargetable)
|
||||
{
|
||||
var newMesh = new MeshRetargeter(renderer).Retarget();
|
||||
_context.SaveAsset(newMesh);
|
||||
if (newMesh) _context.SaveAsset(newMesh);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -143,13 +144,14 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
internal class MeshRetargeter
|
||||
{
|
||||
private readonly SkinnedMeshRenderer renderer;
|
||||
private Mesh src, dst;
|
||||
[CanBeNull] private Mesh src, dst;
|
||||
|
||||
public MeshRetargeter(SkinnedMeshRenderer renderer)
|
||||
{
|
||||
this.renderer = renderer;
|
||||
}
|
||||
|
||||
[CanBeNull]
|
||||
public Mesh Retarget()
|
||||
{
|
||||
var avatar = RuntimeUtil.FindAvatarInParents(renderer.transform);
|
||||
@ -165,8 +167,11 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
avatarTransform.localScale = Vector3.one;
|
||||
|
||||
src = renderer.sharedMesh;
|
||||
if (src != null)
|
||||
{
|
||||
dst = Mesh.Instantiate(src);
|
||||
dst.name = "RETARGETED: " + src.name;
|
||||
}
|
||||
|
||||
RetargetBones();
|
||||
AdjustShapeKeys();
|
||||
@ -185,23 +190,26 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
|
||||
private void RetargetBones()
|
||||
{
|
||||
var originalBindPoses = src.bindposes;
|
||||
var originalBindPoses = src ? src.bindposes : null;
|
||||
var originalBones = renderer.bones;
|
||||
|
||||
var newBones = (Transform[]) originalBones.Clone();
|
||||
var newBindPoses = (Matrix4x4[]) originalBindPoses.Clone();
|
||||
var newBindPoses = (Matrix4x4[]) originalBindPoses?.Clone();
|
||||
|
||||
for (int i = 0; i < originalBones.Length; i++)
|
||||
{
|
||||
Transform newBindTarget = BoneDatabase.GetRetargetedBone(originalBones[i]);
|
||||
if (newBindTarget == null) continue;
|
||||
newBones[i] = newBindTarget;
|
||||
|
||||
if (originalBindPoses != null)
|
||||
{
|
||||
Matrix4x4 Bp = newBindTarget.worldToLocalMatrix * originalBones[i].localToWorldMatrix *
|
||||
originalBindPoses[i];
|
||||
|
||||
newBones[i] = newBindTarget;
|
||||
newBindPoses[i] = Bp;
|
||||
}
|
||||
}
|
||||
|
||||
var rootBone = renderer.rootBone;
|
||||
var scaleBone = rootBone;
|
||||
@ -212,9 +220,12 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
scaleBone = renderer.bones[0];
|
||||
}
|
||||
|
||||
dst.bindposes = newBindPoses;
|
||||
renderer.bones = newBones;
|
||||
if (dst)
|
||||
{
|
||||
dst.bindposes = newBindPoses;
|
||||
renderer.sharedMesh = dst;
|
||||
}
|
||||
|
||||
var newRootBone = BoneDatabase.GetRetargetedBone(rootBone, true);
|
||||
var newScaleBone = BoneDatabase.GetRetargetedBone(scaleBone, true);
|
||||
|
@ -171,6 +171,8 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
AddParam(control.parameter.name);
|
||||
}
|
||||
|
||||
if (control.subParameters != null)
|
||||
{
|
||||
foreach (var subParam in control.subParameters)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(subParam.name))
|
||||
@ -178,6 +180,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
AddParam(subParam.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (control.type == VRCExpressionsMenu.Control.ControlType.SubMenu)
|
||||
{
|
||||
|
@ -347,13 +347,20 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
blendTree.blendParameter = remap(remaps, blendTree.blendParameter);
|
||||
blendTree.blendParameterY = remap(remaps, blendTree.blendParameterY);
|
||||
|
||||
foreach (var childMotion in blendTree.children)
|
||||
var children = blendTree.children;
|
||||
for (int i = 0; i < children.Length; i++)
|
||||
{
|
||||
var childMotion = children[i];
|
||||
if (childMotion.motion is BlendTree subTree)
|
||||
{
|
||||
ProcessBlendtree(subTree, remaps);
|
||||
}
|
||||
|
||||
childMotion.directBlendParameter = remap(remaps, childMotion.directBlendParameter);
|
||||
children[i] = childMotion;
|
||||
}
|
||||
|
||||
blendTree.children = children;
|
||||
}
|
||||
|
||||
private void ProcessDriver(VRCAvatarParameterDriver driver, ImmutableDictionary<string, string> remaps)
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using VRC.SDKBase;
|
||||
|
||||
namespace nadena.dev.modular_avatar.core
|
||||
{
|
||||
@ -31,7 +32,7 @@ namespace nadena.dev.modular_avatar.core
|
||||
* This abstract base class is injected into the VRCSDK avatar component allowlist to avoid
|
||||
*/
|
||||
[DefaultExecutionOrder(-9999)] // run before av3emu
|
||||
public abstract class AvatarTagComponent : MonoBehaviour
|
||||
public abstract class AvatarTagComponent : MonoBehaviour, IEditorOnly
|
||||
{
|
||||
internal static event Action OnChangeAction;
|
||||
|
||||
|
@ -14,7 +14,7 @@ AudioImporter:
|
||||
forceToMono: 1
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
loadInBackground: 1
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
|
@ -15,6 +15,6 @@
|
||||
"com.unity.nuget.newtonsoft-json": "2.0.0"
|
||||
},
|
||||
"vpmDependencies": {
|
||||
"com.vrchat.avatars": ">=3.1.9"
|
||||
"com.vrchat.avatars": ">=3.1.13"
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"com.vrchat.avatars": {
|
||||
"version": "3.1.9"
|
||||
"version": "3.1.13"
|
||||
},
|
||||
"com.vrchat.core.vpm-resolver": {
|
||||
"version": "0.1.13"
|
||||
@ -22,7 +22,8 @@
|
||||
"dependencies": {}
|
||||
},
|
||||
"com.vrchat.core.vpm-resolver": {
|
||||
"version": "0.1.17"
|
||||
"version": "0.1.18",
|
||||
"dependencies": {}
|
||||
},
|
||||
"vrchat.blackstartx.gesture-manager": {
|
||||
"version": "3.8.3",
|
||||
|
@ -8,7 +8,7 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula');
|
||||
const config = {
|
||||
title: 'Modular Avatar',
|
||||
tagline: 'Drag-and-drop avatar assembly',
|
||||
url: 'https://modular-avatar.fushizen.net',
|
||||
url: 'https://modular-avatar.nadena.dev',
|
||||
baseUrl: '/',
|
||||
onBrokenLinks: 'throw',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
|
@ -15,21 +15,21 @@
|
||||
"typecheck": "tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@algolia/client-search": "^4.14.3",
|
||||
"@docusaurus/core": "^2.3.1",
|
||||
"@docusaurus/preset-classic": "^2.3.1",
|
||||
"@algolia/client-search": "^4.17.0",
|
||||
"@docusaurus/core": "^2.4.0",
|
||||
"@docusaurus/preset-classic": "^2.4.0",
|
||||
"@mdx-js/react": "^1.6.22",
|
||||
"clsx": "^1.2.1",
|
||||
"prism-react-renderer": "^1.3.5",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-loadable": "^5.5.0",
|
||||
"react-player": "^2.11.2"
|
||||
"react-player": "^2.12.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "2.3.1",
|
||||
"@tsconfig/docusaurus": "^1.0.6",
|
||||
"typescript": "^4.9.5"
|
||||
"@docusaurus/module-type-aliases": "2.4.0",
|
||||
"@tsconfig/docusaurus": "^1.0.7",
|
||||
"typescript": "^5.0.4"
|
||||
},
|
||||
"resolutions": {
|
||||
"trim": "1.0.1",
|
||||
|
4
docs/robots.txt
Normal file
4
docs/robots.txt
Normal file
@ -0,0 +1,4 @@
|
||||
User-agent: *
|
||||
Disallow: /dev/
|
||||
|
||||
Sitemap: https://modular-avatar.nadena.dev/sitemap.xml
|
477
docs/yarn.lock
477
docs/yarn.lock
@ -49,10 +49,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@algolia/cache-common@npm:4.14.3":
|
||||
version: 4.14.3
|
||||
resolution: "@algolia/cache-common@npm:4.14.3"
|
||||
checksum: 56af1684870b072bb5e8acd6539c1cca69e826f790064df373bc8b86b9bc6a80c9b53fce8aa1c74f2d2bcd917196e712d5aef39fc566cebbea499e2acacea0fe
|
||||
"@algolia/cache-common@npm:4.17.0":
|
||||
version: 4.17.0
|
||||
resolution: "@algolia/cache-common@npm:4.17.0"
|
||||
checksum: cbf8d6ca4ee653f2bef6665eb36b7afee2d4031abe5444cd121d60614189f2c96d0e00cfef990cbe68d318dbcef9b38f5df70476f9088ef43f8c83d69d0802b8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -98,13 +98,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@algolia/client-common@npm:4.14.3":
|
||||
version: 4.14.3
|
||||
resolution: "@algolia/client-common@npm:4.14.3"
|
||||
"@algolia/client-common@npm:4.17.0":
|
||||
version: 4.17.0
|
||||
resolution: "@algolia/client-common@npm:4.17.0"
|
||||
dependencies:
|
||||
"@algolia/requester-common": 4.14.3
|
||||
"@algolia/transporter": 4.14.3
|
||||
checksum: 44799afbbb7955e0577cf199799e44aea6890136d277d56af5ea8628cdabb1cd67d3289eca035a6792a771c0a886164108351be438158d6d23a6c762cfe6abf0
|
||||
"@algolia/requester-common": 4.17.0
|
||||
"@algolia/transporter": 4.17.0
|
||||
checksum: 05791d5483e16a0776a1fb16f42a8e62c67be844e82ff506b5ed82669367f6ea5fba79bcffa90ff4af2039bd8fb16db395edc4c0b1e0c11c050de8a118642180
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -130,14 +130,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@algolia/client-search@npm:^4.14.3":
|
||||
version: 4.14.3
|
||||
resolution: "@algolia/client-search@npm:4.14.3"
|
||||
"@algolia/client-search@npm:^4.17.0":
|
||||
version: 4.17.0
|
||||
resolution: "@algolia/client-search@npm:4.17.0"
|
||||
dependencies:
|
||||
"@algolia/client-common": 4.14.3
|
||||
"@algolia/requester-common": 4.14.3
|
||||
"@algolia/transporter": 4.14.3
|
||||
checksum: fb32e68d9bc815afab7199ae59d71d51f785f98fc3eb1d2bdb3065bc11424d797d1b1a2755397785bc715c2085dc1ddcf2b46d677b95dd95a825f597ba04505b
|
||||
"@algolia/client-common": 4.17.0
|
||||
"@algolia/requester-common": 4.17.0
|
||||
"@algolia/transporter": 4.17.0
|
||||
checksum: ca6aedd67e69112e3a86086e48de4f38b9d127c2e606b345de58a528dd2d2016e70783cf446dfa669036c69ffbd0616f27b180cacb6ab0fafe85065b2b8d323f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -155,10 +155,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@algolia/logger-common@npm:4.14.3":
|
||||
version: 4.14.3
|
||||
resolution: "@algolia/logger-common@npm:4.14.3"
|
||||
checksum: c42bb686637ca32ab6636055b0d0ef368bc9e3e2ea71e3e3becece68a88896b34cfa6d657ccdf1b6a01fcabc075f78d10fb813f399e88323a9b17ea80dba33f5
|
||||
"@algolia/logger-common@npm:4.17.0":
|
||||
version: 4.17.0
|
||||
resolution: "@algolia/logger-common@npm:4.17.0"
|
||||
checksum: e6359266544ed9d9eab8d4217c126a8209f74fbd1e407f2249b886915a521e89e419dc6401a65389523f3bdffb3880c0a95578c3c437653f941ddb1095c37e08
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -187,10 +187,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@algolia/requester-common@npm:4.14.3":
|
||||
version: 4.14.3
|
||||
resolution: "@algolia/requester-common@npm:4.14.3"
|
||||
checksum: 1bc8400b18613c9d65b5ee07dd23e9e324669338d849fae987ed0b518567fb00a61a2ef00279fe65148c8f51603f2df6e4137c6693d2aca30bf453b8b759aa44
|
||||
"@algolia/requester-common@npm:4.17.0":
|
||||
version: 4.17.0
|
||||
resolution: "@algolia/requester-common@npm:4.17.0"
|
||||
checksum: 13ace23f53fc88677d896ae4506f04a5defd17f69b9611571e19dd45c91fda74a71acd27f799f55f88d550264b8f4477831d9ff546ffeb7257e35ec4ee983ca8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -214,14 +214,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@algolia/transporter@npm:4.14.3":
|
||||
version: 4.14.3
|
||||
resolution: "@algolia/transporter@npm:4.14.3"
|
||||
"@algolia/transporter@npm:4.17.0":
|
||||
version: 4.17.0
|
||||
resolution: "@algolia/transporter@npm:4.17.0"
|
||||
dependencies:
|
||||
"@algolia/cache-common": 4.14.3
|
||||
"@algolia/logger-common": 4.14.3
|
||||
"@algolia/requester-common": 4.14.3
|
||||
checksum: ad959c648d987726cc1e138cf68fd11673dbf12498ee3e3ccd573c5a2d63f9e20b0f58ab130c2b9807f7c2ff029c8e040923366d75c1e7ad62b02f40fb822ee2
|
||||
"@algolia/cache-common": 4.17.0
|
||||
"@algolia/logger-common": 4.17.0
|
||||
"@algolia/requester-common": 4.17.0
|
||||
checksum: 1864bf9ccdf63f5090a89f44358c30317f549b4dc37dd8ce446383ca217c1a9737ab2749ca92394a320574690ea04134ae600c2a3f1f9d393549a5124079c2a6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -1724,9 +1724,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/core@npm:2.3.1, @docusaurus/core@npm:^2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/core@npm:2.3.1"
|
||||
"@docusaurus/core@npm:2.4.0, @docusaurus/core@npm:^2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/core@npm:2.4.0"
|
||||
dependencies:
|
||||
"@babel/core": ^7.18.6
|
||||
"@babel/generator": ^7.18.7
|
||||
@ -1738,13 +1738,13 @@ __metadata:
|
||||
"@babel/runtime": ^7.18.6
|
||||
"@babel/runtime-corejs3": ^7.18.6
|
||||
"@babel/traverse": ^7.18.8
|
||||
"@docusaurus/cssnano-preset": 2.3.1
|
||||
"@docusaurus/logger": 2.3.1
|
||||
"@docusaurus/mdx-loader": 2.3.1
|
||||
"@docusaurus/cssnano-preset": 2.4.0
|
||||
"@docusaurus/logger": 2.4.0
|
||||
"@docusaurus/mdx-loader": 2.4.0
|
||||
"@docusaurus/react-loadable": 5.5.2
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/utils-common": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/utils": 2.4.0
|
||||
"@docusaurus/utils-common": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
"@slorber/static-site-generator-webpack-plugin": ^4.0.7
|
||||
"@svgr/webpack": ^6.2.1
|
||||
autoprefixer: ^10.4.7
|
||||
@ -1804,40 +1804,40 @@ __metadata:
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
bin:
|
||||
docusaurus: bin/docusaurus.mjs
|
||||
checksum: 812aecae45af3f4d02fd16e89517ca9f1ba22821a078aaa890f5797ac7e0cc0c79e7623eb999e885cf7e7652a6ffda8ff7c06dfd85ca29aaab600993c3d9980d
|
||||
checksum: 04d30e31e9c4198ce3f4a47c4f59943f357ef96a5cfa10674fd3049d4cf067c15fa0ae184383ba3e420f59a9b3077ed1cf1f373626399f0e46cea6fcf0897d7b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/cssnano-preset@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/cssnano-preset@npm:2.3.1"
|
||||
"@docusaurus/cssnano-preset@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/cssnano-preset@npm:2.4.0"
|
||||
dependencies:
|
||||
cssnano-preset-advanced: ^5.3.8
|
||||
postcss: ^8.4.14
|
||||
postcss-sort-media-queries: ^4.2.1
|
||||
tslib: ^2.4.0
|
||||
checksum: a3d00ce86b16caffde36734bb2f4541d2c0df5e8ab6891a78ad05bccc631a895fecb04c385626ebcb8f905510c28fa6158288585673ae96565532d4ee4b60d4f
|
||||
checksum: b8982230ec014378a5453453df400a328a6ecdeecffb666ead5cfbeb5dc689610f0e62ee818ffcc8adc270c7c47cb818ad730c769eb8fa689dd79d4f9d448b6d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/logger@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/logger@npm:2.3.1"
|
||||
"@docusaurus/logger@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/logger@npm:2.4.0"
|
||||
dependencies:
|
||||
chalk: ^4.1.2
|
||||
tslib: ^2.4.0
|
||||
checksum: eff5f258aeac9c643431426256e3bc4515074cc3cc754fa643579ba427ba232ecace9a9579ae5af542330b22d7361892a1eaf84526983a0c821c5ca3ee895176
|
||||
checksum: 0424b77e2abaa50f20d6042ededf831157852656d1242ae9b0829b897e6f5b1e1e5ea30df599839e0ec51c72e42a5a867b136387dd5359032c735f431eddd078
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/mdx-loader@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/mdx-loader@npm:2.3.1"
|
||||
"@docusaurus/mdx-loader@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/mdx-loader@npm:2.4.0"
|
||||
dependencies:
|
||||
"@babel/parser": ^7.18.8
|
||||
"@babel/traverse": ^7.18.8
|
||||
"@docusaurus/logger": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/logger": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
"@mdx-js/mdx": ^1.6.22
|
||||
escape-html: ^1.0.3
|
||||
file-loader: ^6.2.0
|
||||
@ -1854,16 +1854,16 @@ __metadata:
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: 4a1c9ef0e8506ab4d9cb4714ff7437664e238e0f2878a5eb4a2e082897bbee7ae8d0b61ba9d45ffa820beb5ce75aa0050201db815b00c18fc136aaa4c6411c21
|
||||
checksum: 3d4e7bf6840fa7dcf4250aa5ea019f80dac6cc38e9f8b9a0515b81b6c0f6d6f4ed4103f521784e70db856aec06cff4be176ef281e1cac53afc82bc1182bbf9ad
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/module-type-aliases@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/module-type-aliases@npm:2.3.1"
|
||||
"@docusaurus/module-type-aliases@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/module-type-aliases@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/react-loadable": 5.5.2
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@types/history": ^4.7.11
|
||||
"@types/react": "*"
|
||||
"@types/react-router-config": "*"
|
||||
@ -1873,21 +1873,21 @@ __metadata:
|
||||
peerDependencies:
|
||||
react: "*"
|
||||
react-dom: "*"
|
||||
checksum: 74f799f81455dc8ff3e6edf07428996764014c2c7b416e6b5d160af15f00ad3aa1ab75dee5356645ec7f2ea832fb2aca6e9a32b19d64abeb9e3d57c4195f1e50
|
||||
checksum: fc655d9dc77d88ba9d10abe602c9fd5533992b14de495e4f3e4caea368693a7b7e5a805fb2938287bed949900e7e3d7f94bea3c1a8727b45e19c85996965d0c7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/plugin-content-blog@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/plugin-content-blog@npm:2.3.1"
|
||||
"@docusaurus/plugin-content-blog@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/plugin-content-blog@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/logger": 2.3.1
|
||||
"@docusaurus/mdx-loader": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/utils-common": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/logger": 2.4.0
|
||||
"@docusaurus/mdx-loader": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
"@docusaurus/utils-common": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
cheerio: ^1.0.0-rc.12
|
||||
feed: ^4.2.2
|
||||
fs-extra: ^10.1.0
|
||||
@ -1900,21 +1900,21 @@ __metadata:
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: abc668ceab15269f57be7f74acbec2e139b4f6b90af8771d246a9036d124b49b0d9fd4890e9566df7a4ba960f2da0316c18741eed1be0646f2b4602465219ddd
|
||||
checksum: e912ea1a01c1769b374aecf1af72cef96dbed5faa01b74cc12d951dd5dccc089994ff649f0a18f994e39730338f99c0aa12f3b2a1eefc40888f1fb7956cece29
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/plugin-content-docs@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/plugin-content-docs@npm:2.3.1"
|
||||
"@docusaurus/plugin-content-docs@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/plugin-content-docs@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/logger": 2.3.1
|
||||
"@docusaurus/mdx-loader": 2.3.1
|
||||
"@docusaurus/module-type-aliases": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/logger": 2.4.0
|
||||
"@docusaurus/mdx-loader": 2.4.0
|
||||
"@docusaurus/module-type-aliases": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
"@types/react-router-config": ^5.0.6
|
||||
combine-promises: ^1.1.0
|
||||
fs-extra: ^10.1.0
|
||||
@ -1927,132 +1927,132 @@ __metadata:
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: bcf8d921407d11b497926a1f61a1dc8c96f82fbe5a1959cc106b082e555f8fb6f42cf9262a658acf33d9543e5eb3e778049d91f71e4a2855993dc759c845cf31
|
||||
checksum: 5a273e80f2c28e4a33ab994e8702b3afaff04eb73f156a0a3e42cd9d182f8e1ed2b794348b090ec170cc1e4aba2e997d1fb6e8684f73ac6698bf66d96114c57b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/plugin-content-pages@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/plugin-content-pages@npm:2.3.1"
|
||||
"@docusaurus/plugin-content-pages@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/plugin-content-pages@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/mdx-loader": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/mdx-loader": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
fs-extra: ^10.1.0
|
||||
tslib: ^2.4.0
|
||||
webpack: ^5.73.0
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: 8543050ed7330f54a28c0daeef11662eed3f3a08a6d0015b1a32db3d5e9ec46f0c6a8a5a4cb3e871ce953074d60424cc418b7ffa280695294626855a7a1a146a
|
||||
checksum: 5381e913101f271476cbdc264e6058a0cbe0835ed4a823e430540da545253c1dc56578c66a6d978ee2f1aca114110aba529443ae835f26ef0eaf7de1ed6a5001
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/plugin-debug@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/plugin-debug@npm:2.3.1"
|
||||
"@docusaurus/plugin-debug@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/plugin-debug@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
fs-extra: ^10.1.0
|
||||
react-json-view: ^1.21.3
|
||||
tslib: ^2.4.0
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: e660575f900eedbeab6e222eb4f8ef6a7a49815c91a97839a4839737c0b3101698bf7c6e035cbafaa49010340010a9ec0d37270dc81a470b3bae42662c7a24b8
|
||||
checksum: 921614843453ef189dfa2ada31e7abed8f976b0c314f7486fde35f976911de2ab307863608326e96bea67468e98dc648aeea82dbad04d0701c3c48c92bd40c6c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/plugin-google-analytics@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/plugin-google-analytics@npm:2.3.1"
|
||||
"@docusaurus/plugin-google-analytics@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/plugin-google-analytics@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
tslib: ^2.4.0
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: 9306ae89cd5fb8ca86fd58809d7e624f988411d8908a151e9b6d9e8d0b84e08f1e3eba46024bc4321bcaeb3e9bc38e919b0bcf561adc9d40fa97c8ffeb232888
|
||||
checksum: 2d8c7e5689675ced9acffe1e2187144d6ebeea471a5992139c3eea87094e315e272263da5499591e85bc3501b7583f693d33c660507b36a835fc9eb75584c706
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/plugin-google-gtag@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/plugin-google-gtag@npm:2.3.1"
|
||||
"@docusaurus/plugin-google-gtag@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/plugin-google-gtag@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
tslib: ^2.4.0
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: 494f0405d79aa9cb36d1ea4cf739499ad15b59fe876573ab5b304b5e84ab6ef4d428ebdc26647777b0816af452f62959b5ddb25e5bbf73c7fb3d6568258980d0
|
||||
checksum: 6aa0bb6ac5e410ea438db2de20c95a4a34d7056855b2e0baa7685e31bd9b3f48ef55f8135ca496688ccbfaba88945219acae146a244141bfb7e2372ba54c0ce2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/plugin-google-tag-manager@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/plugin-google-tag-manager@npm:2.3.1"
|
||||
"@docusaurus/plugin-google-tag-manager@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/plugin-google-tag-manager@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
tslib: ^2.4.0
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: d0b2ccc212652bb4f1c1bd61420e7f235325d4f2e8de0f5b25282305f54209d05da981c1253325bcae9afbc7575bd5c246d037d2be5fbda06f2842ba8335ab47
|
||||
checksum: 2df57cd95808ed7cf58ade342dcc3382e167ecebaedc7184588c214f6b64eab60fa0145ab0ce7e25803acfe3952412c1134d52ad0ea636cef652a73ccd79a5cb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/plugin-sitemap@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/plugin-sitemap@npm:2.3.1"
|
||||
"@docusaurus/plugin-sitemap@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/plugin-sitemap@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/logger": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/utils-common": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/logger": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
"@docusaurus/utils-common": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
fs-extra: ^10.1.0
|
||||
sitemap: ^7.1.1
|
||||
tslib: ^2.4.0
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: 667d2abbf46efffc4d20e38fe435a19392f07726446193a017306652ee9db3d478e971eefb209e1a5c243b6b82af3de72d4b975b8e74aa93bda4711ce8c309bc
|
||||
checksum: e96fcc84352880da6a3e566cdc249e44ad825b400f2d798746201c3a4a255b196b999f5bf5d0a5b52c752acf9e9eb1169111b463914502a6cae9c114800fa09e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/preset-classic@npm:^2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/preset-classic@npm:2.3.1"
|
||||
"@docusaurus/preset-classic@npm:^2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/preset-classic@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/plugin-content-blog": 2.3.1
|
||||
"@docusaurus/plugin-content-docs": 2.3.1
|
||||
"@docusaurus/plugin-content-pages": 2.3.1
|
||||
"@docusaurus/plugin-debug": 2.3.1
|
||||
"@docusaurus/plugin-google-analytics": 2.3.1
|
||||
"@docusaurus/plugin-google-gtag": 2.3.1
|
||||
"@docusaurus/plugin-google-tag-manager": 2.3.1
|
||||
"@docusaurus/plugin-sitemap": 2.3.1
|
||||
"@docusaurus/theme-classic": 2.3.1
|
||||
"@docusaurus/theme-common": 2.3.1
|
||||
"@docusaurus/theme-search-algolia": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/plugin-content-blog": 2.4.0
|
||||
"@docusaurus/plugin-content-docs": 2.4.0
|
||||
"@docusaurus/plugin-content-pages": 2.4.0
|
||||
"@docusaurus/plugin-debug": 2.4.0
|
||||
"@docusaurus/plugin-google-analytics": 2.4.0
|
||||
"@docusaurus/plugin-google-gtag": 2.4.0
|
||||
"@docusaurus/plugin-google-tag-manager": 2.4.0
|
||||
"@docusaurus/plugin-sitemap": 2.4.0
|
||||
"@docusaurus/theme-classic": 2.4.0
|
||||
"@docusaurus/theme-common": 2.4.0
|
||||
"@docusaurus/theme-search-algolia": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: e4128a1bcb64d5ced04a281476ec1ae2d5523040d41ed57a8f744fb83659a2a2be902e94989de69ab1e6d693ec26c60d1ef6b2fe3ec96d5af6c9b3ef58f5b0cd
|
||||
checksum: 33961a1edd445f13971e640db9445a0fae418babf0fe5f4078f21e605f9d945f7a3a4b7ad53ac7b578a7302f093c708429f462a76a3f297b3439d8e23b3990aa
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2068,26 +2068,26 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/theme-classic@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/theme-classic@npm:2.3.1"
|
||||
"@docusaurus/theme-classic@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/theme-classic@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/mdx-loader": 2.3.1
|
||||
"@docusaurus/module-type-aliases": 2.3.1
|
||||
"@docusaurus/plugin-content-blog": 2.3.1
|
||||
"@docusaurus/plugin-content-docs": 2.3.1
|
||||
"@docusaurus/plugin-content-pages": 2.3.1
|
||||
"@docusaurus/theme-common": 2.3.1
|
||||
"@docusaurus/theme-translations": 2.3.1
|
||||
"@docusaurus/types": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/utils-common": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/mdx-loader": 2.4.0
|
||||
"@docusaurus/module-type-aliases": 2.4.0
|
||||
"@docusaurus/plugin-content-blog": 2.4.0
|
||||
"@docusaurus/plugin-content-docs": 2.4.0
|
||||
"@docusaurus/plugin-content-pages": 2.4.0
|
||||
"@docusaurus/theme-common": 2.4.0
|
||||
"@docusaurus/theme-translations": 2.4.0
|
||||
"@docusaurus/types": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
"@docusaurus/utils-common": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
"@mdx-js/react": ^1.6.22
|
||||
clsx: ^1.2.1
|
||||
copy-text-to-clipboard: ^3.0.1
|
||||
infima: 0.2.0-alpha.42
|
||||
infima: 0.2.0-alpha.43
|
||||
lodash: ^4.17.21
|
||||
nprogress: ^0.2.0
|
||||
postcss: ^8.4.14
|
||||
@ -2100,20 +2100,21 @@ __metadata:
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: 273812924fc29b2316aff554ae0302509ebeaca5aa829b58253e74d22a66e69444f1c324a2d5e8e170e6c6f27dd0d6927e6c6a22a7e0c14567ff777d04a5b0c1
|
||||
checksum: 7f3161d7be653b6a86ffd58d8a6c6d62f464db919c32b7b9ab2ec9ca1b79136e2278fdc908e90cfa31cf21385d87cd7496d5bf9c80d30c2279ef95e7f7be28aa
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/theme-common@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/theme-common@npm:2.3.1"
|
||||
"@docusaurus/theme-common@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/theme-common@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/mdx-loader": 2.3.1
|
||||
"@docusaurus/module-type-aliases": 2.3.1
|
||||
"@docusaurus/plugin-content-blog": 2.3.1
|
||||
"@docusaurus/plugin-content-docs": 2.3.1
|
||||
"@docusaurus/plugin-content-pages": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/mdx-loader": 2.4.0
|
||||
"@docusaurus/module-type-aliases": 2.4.0
|
||||
"@docusaurus/plugin-content-blog": 2.4.0
|
||||
"@docusaurus/plugin-content-docs": 2.4.0
|
||||
"@docusaurus/plugin-content-pages": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
"@docusaurus/utils-common": 2.4.0
|
||||
"@types/history": ^4.7.11
|
||||
"@types/react": "*"
|
||||
"@types/react-router-config": "*"
|
||||
@ -2126,22 +2127,22 @@ __metadata:
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: 6b902e9e782721c3c49bcdee5d969ea1c1138ebcb03891e34f827b16f2c06f43a86d95f240a60ed084539e9b16435312a41be7bff4e724f4fb209998dd4d3a59
|
||||
checksum: 0790c6e5ad14bc8518173314a058e01837321d5992364d1ae4f9907f1d055f5852f883512d7a64e5add95dcfe362a009b374220de6493b32624a406d8ce74750
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/theme-search-algolia@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/theme-search-algolia@npm:2.3.1"
|
||||
"@docusaurus/theme-search-algolia@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/theme-search-algolia@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docsearch/react": ^3.1.1
|
||||
"@docusaurus/core": 2.3.1
|
||||
"@docusaurus/logger": 2.3.1
|
||||
"@docusaurus/plugin-content-docs": 2.3.1
|
||||
"@docusaurus/theme-common": 2.3.1
|
||||
"@docusaurus/theme-translations": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/utils-validation": 2.3.1
|
||||
"@docusaurus/core": 2.4.0
|
||||
"@docusaurus/logger": 2.4.0
|
||||
"@docusaurus/plugin-content-docs": 2.4.0
|
||||
"@docusaurus/theme-common": 2.4.0
|
||||
"@docusaurus/theme-translations": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
"@docusaurus/utils-validation": 2.4.0
|
||||
algoliasearch: ^4.13.1
|
||||
algoliasearch-helper: ^3.10.0
|
||||
clsx: ^1.2.1
|
||||
@ -2153,23 +2154,23 @@ __metadata:
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: 965303068e43b11f58d20b95bb6dfc01d5e575c2070d2730b94303bd2a1d33794075cae43bfe472f08061bd8770f14c8eb54932274e6b39f954ab34e7cfc5689
|
||||
checksum: a74a199faf6bab1d663cd41f9477c65c17f8dd2080664d5c00f998eb7c57345f1c30ff4f2c3bc88863f2e606c6f7475300747480dc145e61dd42798ca4fd435e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/theme-translations@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/theme-translations@npm:2.3.1"
|
||||
"@docusaurus/theme-translations@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/theme-translations@npm:2.4.0"
|
||||
dependencies:
|
||||
fs-extra: ^10.1.0
|
||||
tslib: ^2.4.0
|
||||
checksum: dd3796be63c4c946af789c3da18ed2704a2fa90d8e752ba2b780a124dc13369ba590218afad0ac4ea2342f7331ccb9eb1be086226c950b8384978d94a15c57ad
|
||||
checksum: 37f329eb74fcb16c14bd370038d8bd1e18017fb1f78564d960c53fd4e110eb166f6f1c03f323dea28ede95873ebe28a659554d02cc26d1c3e748a772f9d2313a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/types@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/types@npm:2.3.1"
|
||||
"@docusaurus/types@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/types@npm:2.4.0"
|
||||
dependencies:
|
||||
"@types/history": ^4.7.11
|
||||
"@types/react": "*"
|
||||
@ -2182,13 +2183,13 @@ __metadata:
|
||||
peerDependencies:
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
checksum: 91e52f37b97964112aa0d50ee4a6f534d7da941443af5ddc96418817c6ce532a98c73e67045ac703b582c7ed703ebb360205eec30da7f738c0105f2b3ae1a246
|
||||
checksum: 54b0cd8992269ab0508d94ce19a7fcc2b3e7c9700eb112c9b859ddac8228dcc64282c414b602ba44894be87be79eeeef730fb8e569be68b6e26453e18addcf21
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/utils-common@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/utils-common@npm:2.3.1"
|
||||
"@docusaurus/utils-common@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/utils-common@npm:2.4.0"
|
||||
dependencies:
|
||||
tslib: ^2.4.0
|
||||
peerDependencies:
|
||||
@ -2196,28 +2197,28 @@ __metadata:
|
||||
peerDependenciesMeta:
|
||||
"@docusaurus/types":
|
||||
optional: true
|
||||
checksum: 405dc5b8aba9a97b2670ba8ff3911bbdaed274edc15214ab482a7159a07ad1c9b3198835a7bee42de4e0320d42bd402ed89ae6896744a364d64d89d9f78bcfb0
|
||||
checksum: 711e61e899b133fc7cd755e6de75fd79a712eeabbd9853b9122e3929c8390e015bb9e4bca2284028e40e7a0fb2b89ef1c184f7e4149097ffd7b64821b38c11da
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/utils-validation@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/utils-validation@npm:2.3.1"
|
||||
"@docusaurus/utils-validation@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/utils-validation@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/logger": 2.3.1
|
||||
"@docusaurus/utils": 2.3.1
|
||||
"@docusaurus/logger": 2.4.0
|
||||
"@docusaurus/utils": 2.4.0
|
||||
joi: ^17.6.0
|
||||
js-yaml: ^4.1.0
|
||||
tslib: ^2.4.0
|
||||
checksum: 1e5529d1d0c4fcd9006adf2e5b545458a7dba3877563fb444dcec472f27a3d8492d4c6fb5dd1071bb6e668a13a845d74b8f6c4b6387babfa0e467a9b8b237fda
|
||||
checksum: 21a229858ed9254830b68dd08de6456dc19b68adead581f86e854ea3e55b64b9616a3bbca521e74f754c9c7bc835ca348dfe9f0949d9a8d189db5b39bcdb9f6b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@docusaurus/utils@npm:2.3.1":
|
||||
version: 2.3.1
|
||||
resolution: "@docusaurus/utils@npm:2.3.1"
|
||||
"@docusaurus/utils@npm:2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "@docusaurus/utils@npm:2.4.0"
|
||||
dependencies:
|
||||
"@docusaurus/logger": 2.3.1
|
||||
"@docusaurus/logger": 2.4.0
|
||||
"@svgr/webpack": ^6.2.1
|
||||
escape-string-regexp: ^4.0.0
|
||||
file-loader: ^6.2.0
|
||||
@ -2238,7 +2239,7 @@ __metadata:
|
||||
peerDependenciesMeta:
|
||||
"@docusaurus/types":
|
||||
optional: true
|
||||
checksum: e8bce9bbd98bf63664fcd7c0a5f8dec30dad31ed19e18d724b43189b04ecdc1174537e1d987293575ec18d421236fb92d3d39d28477e921507260a39c3f6d6d0
|
||||
checksum: 7ba6634b6ff71bb7cc64b0eb3c6d2892a21873bce8559bcd460693a80ca0229828c04da751277cdb17c6f18e80e061322bbcd84e9b743adc96c594b43e8a2165
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2700,10 +2701,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@tsconfig/docusaurus@npm:^1.0.6":
|
||||
version: 1.0.6
|
||||
resolution: "@tsconfig/docusaurus@npm:1.0.6"
|
||||
checksum: fb0d7965c01fe64fc6369a72695b903d654bd5fb145f373d707c2bae3c2d828703517d812cef1c041ae44b108f44e52778b9d9837a54fdf782e68e6619a90a4d
|
||||
"@tsconfig/docusaurus@npm:^1.0.7":
|
||||
version: 1.0.7
|
||||
resolution: "@tsconfig/docusaurus@npm:1.0.7"
|
||||
checksum: 8f5b14005d90b2008f10daf03a5edec86d2a7603e5641c579ea936a5c2d165a8c3007a72254fc4c2adb0554d73062f52bb97b30ff818f01c9215957822f3c4db
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -6283,10 +6284,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"infima@npm:0.2.0-alpha.42":
|
||||
version: 0.2.0-alpha.42
|
||||
resolution: "infima@npm:0.2.0-alpha.42"
|
||||
checksum: 7206f36639c00a08daab811fedc748068951497efb5ec948cba846fb23856443668015f6bd65ddebe857cc2235f6ca98429f7018c73dcac47b0361ef4721bb8f
|
||||
"infima@npm:0.2.0-alpha.43":
|
||||
version: 0.2.0-alpha.43
|
||||
resolution: "infima@npm:0.2.0-alpha.43"
|
||||
checksum: fc5f79240e940eddd750439511767092ccb4051e5e91d253ec7630a9e7ce691812da3aa0f05e46b4c0a95dbfadeae5714fd0073f8d2df12e5aaff0697a1d6aa2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -7357,19 +7358,19 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "modular-avatar-docs@workspace:."
|
||||
dependencies:
|
||||
"@algolia/client-search": ^4.14.3
|
||||
"@docusaurus/core": ^2.3.1
|
||||
"@docusaurus/module-type-aliases": 2.3.1
|
||||
"@docusaurus/preset-classic": ^2.3.1
|
||||
"@algolia/client-search": ^4.17.0
|
||||
"@docusaurus/core": ^2.4.0
|
||||
"@docusaurus/module-type-aliases": 2.4.0
|
||||
"@docusaurus/preset-classic": ^2.4.0
|
||||
"@mdx-js/react": ^1.6.22
|
||||
"@tsconfig/docusaurus": ^1.0.6
|
||||
"@tsconfig/docusaurus": ^1.0.7
|
||||
clsx: ^1.2.1
|
||||
prism-react-renderer: ^1.3.5
|
||||
react: ^17.0.2
|
||||
react-dom: ^17.0.2
|
||||
react-loadable: ^5.5.0
|
||||
react-player: ^2.11.2
|
||||
typescript: ^4.9.5
|
||||
react-player: ^2.12.0
|
||||
typescript: ^5.0.4
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -8770,9 +8771,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-player@npm:^2.11.2":
|
||||
version: 2.11.2
|
||||
resolution: "react-player@npm:2.11.2"
|
||||
"react-player@npm:^2.12.0":
|
||||
version: 2.12.0
|
||||
resolution: "react-player@npm:2.12.0"
|
||||
dependencies:
|
||||
deepmerge: ^4.0.0
|
||||
load-script: ^1.0.0
|
||||
@ -8781,7 +8782,7 @@ __metadata:
|
||||
react-fast-compare: ^3.0.1
|
||||
peerDependencies:
|
||||
react: ">=16.6.0"
|
||||
checksum: 003bfcfb00692f3b5e8dd831411a26a66474b7cb8003284ea835c50f7e9ca831895f8557c9ceafdb29ab9915a3ce0f5ba655c8c88fbff6acae3d4554de9986ee
|
||||
checksum: 77d3e55ed67cd9c1e2300a990d8015d270072daad41f8a0750c32748f3fbfbc5bd2a2f06e78ac6828c2260b84537b9571d0abac31d3e888b74a3dccb59a56365
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -10132,23 +10133,23 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:^4.9.5":
|
||||
version: 4.9.5
|
||||
resolution: "typescript@npm:4.9.5"
|
||||
"typescript@npm:^5.0.4":
|
||||
version: 5.0.4
|
||||
resolution: "typescript@npm:5.0.4"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db
|
||||
checksum: 82b94da3f4604a8946da585f7d6c3025fff8410779e5bde2855ab130d05e4fd08938b9e593b6ebed165bda6ad9292b230984f10952cf82f0a0ca07bbeaa08172
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@patch:typescript@^4.9.5#~builtin<compat/typescript>":
|
||||
version: 4.9.5
|
||||
resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=23ec76"
|
||||
"typescript@patch:typescript@^5.0.4#~builtin<compat/typescript>":
|
||||
version: 5.0.4
|
||||
resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin<compat/typescript>::version=5.0.4&hash=1f5320"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: ab417a2f398380c90a6cf5a5f74badd17866adf57f1165617d6a551f059c3ba0a3e4da0d147b3ac5681db9ac76a303c5876394b13b3de75fdd5b1eaa06181c9d
|
||||
checksum: 6a1fe9a77bb9c5176ead919cc4a1499ee63e46b4e05bf667079f11bf3a8f7887f135aa72460a4c3b016e6e6bb65a822cb8689a6d86cbfe92d22cc9f501f09213
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -10675,8 +10676,8 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"webpack@npm:^5.73.0":
|
||||
version: 5.75.0
|
||||
resolution: "webpack@npm:5.75.0"
|
||||
version: 5.76.3
|
||||
resolution: "webpack@npm:5.76.3"
|
||||
dependencies:
|
||||
"@types/eslint-scope": ^3.7.3
|
||||
"@types/estree": ^0.0.51
|
||||
@ -10707,7 +10708,7 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
webpack: bin/webpack.js
|
||||
checksum: 2bcc5f3c195f375944e8af2f00bf2feea39cb9fda5f763b0d1b00077f1c51783db25c94d3fae96a07dead9fa085e6ae7474417e5ab31719c9776ea5969ceb83a
|
||||
checksum: 363f536b56971d056e34ab4cffa4cbc630b220e51be1a8c3adea87d9f0b51c49cfc7c3720d6614a1fd2c8c63f1ab3100db916fe8367c8bb9299327ff8c3f856d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user