Update to Cubism 4 SDK for Web R5
parent
e115df6e1e
commit
e3df50532b
11
CHANGELOG.md
11
CHANGELOG.md
|
@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
|
|
||||||
|
|
||||||
|
## [4-r.5] - 2022-09-08
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* Add the multilingual supported documents.
|
||||||
|
* Add immediate stabilization of physics.
|
||||||
|
* Implemented a process to switch between `CubismJson` parsing and `JSON.parse()`.
|
||||||
|
|
||||||
|
|
||||||
## [4-r.5-beta.5] - 2022-08-04
|
## [4-r.5-beta.5] - 2022-08-04
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
@ -116,6 +126,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
* Reformat code using Prettier and ESLint.
|
* Reformat code using Prettier and ESLint.
|
||||||
|
|
||||||
|
|
||||||
|
[4-r.5]: https://github.com/Live2D/CubismWebFramework/compare/4-r.5-beta.5...4-r.5
|
||||||
[4-r.5-beta.5]: https://github.com/Live2D/CubismWebFramework/compare/4-r.5-beta.4...4-r.5-beta.5
|
[4-r.5-beta.5]: https://github.com/Live2D/CubismWebFramework/compare/4-r.5-beta.4...4-r.5-beta.5
|
||||||
[4-r.5-beta.4]: https://github.com/Live2D/CubismWebFramework/compare/4-r.5-beta.3...4-r.5-beta.4
|
[4-r.5-beta.4]: https://github.com/Live2D/CubismWebFramework/compare/4-r.5-beta.3...4-r.5-beta.4
|
||||||
[4-r.5-beta.3]: https://github.com/Live2D/CubismWebFramework/compare/4-r.5-beta.2...4-r.5-beta.3
|
[4-r.5-beta.3]: https://github.com/Live2D/CubismWebFramework/compare/4-r.5-beta.2...4-r.5-beta.3
|
||||||
|
|
|
@ -0,0 +1,164 @@
|
||||||
|
[English](README.md) / [日本語](README.ja.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Cubism Web Framework
|
||||||
|
|
||||||
|
Live2D Cubism 4 Editor で出力したモデルをアプリケーションで利用するためのフレームワークです。
|
||||||
|
|
||||||
|
モデルを表示、操作するための各種機能を提供します。
|
||||||
|
モデルをロードするには Live2D Cubism Core ライブラリと組み合わせて使用します。
|
||||||
|
|
||||||
|
ビルドを行うことで、ブラウザで利用可能な JavaScript ライブラリとして利用することができます。
|
||||||
|
|
||||||
|
|
||||||
|
## ライセンス
|
||||||
|
|
||||||
|
本 SDK を使用する前に、[ライセンス](LICENSE.md)をご確認ください。
|
||||||
|
|
||||||
|
|
||||||
|
## 開発環境
|
||||||
|
|
||||||
|
### Node.js
|
||||||
|
|
||||||
|
* 18.8.0
|
||||||
|
* 16.17.0
|
||||||
|
* 14.20.0
|
||||||
|
|
||||||
|
|
||||||
|
### TypeScript
|
||||||
|
|
||||||
|
4.8.2
|
||||||
|
|
||||||
|
|
||||||
|
## 開発環境構築
|
||||||
|
|
||||||
|
1. [Node.js] と [Visual Studio Code] をインストールします
|
||||||
|
1. Visual Studio Code で本プロジェクトを開き、推奨拡張機能をインストールします
|
||||||
|
* 拡張機能タブから `@recommended` と入力することで確認できます
|
||||||
|
1. コマンドパレット(*View > Command Palette...*)で `>Tasks: Run Task` を入力してタスク一覧を表示します
|
||||||
|
1. `npm: install` を選択して依存パッケージのダウンロードを行います
|
||||||
|
|
||||||
|
コマンドパレットのタスク一覧から各種コマンドを実行することができます。
|
||||||
|
|
||||||
|
NOTE: デバック用の設定は、`.vscode/tasks.json` に記述しています。
|
||||||
|
|
||||||
|
## タスク一覧
|
||||||
|
|
||||||
|
### `npm: build`
|
||||||
|
|
||||||
|
ソースファイルのビルドを行い、`dist` ディレクトリに出力します。
|
||||||
|
|
||||||
|
`tsconfig.json` を編集することで設定内容を変更できます。
|
||||||
|
|
||||||
|
### `npm: test`
|
||||||
|
|
||||||
|
TypeScript の型チェックテストを行います。
|
||||||
|
|
||||||
|
`tsconfig.json` を編集することで設定内容を変更できます。
|
||||||
|
|
||||||
|
### `npm: lint`
|
||||||
|
|
||||||
|
`src` ディレクトリ内の TypeScript ファイルの静的解析を行います。
|
||||||
|
|
||||||
|
`.eslintrc.yml` を編集することで設定内容を変更できます。
|
||||||
|
|
||||||
|
### `npm: lint:fix`
|
||||||
|
|
||||||
|
`src` ディレクトリ内の TypeScript ファイルの静的解析及び自動修正を行います。
|
||||||
|
|
||||||
|
`.eslintrc.yml` を編集することで設定内容を変更できます。
|
||||||
|
|
||||||
|
### `npm: clean`
|
||||||
|
|
||||||
|
ビルド成果物ディレクトリ(`dist`)を削除します。
|
||||||
|
|
||||||
|
|
||||||
|
## コンポーネント
|
||||||
|
|
||||||
|
### effect
|
||||||
|
|
||||||
|
自動まばたきやリップシンクなど、モデルに対してモーション情報をエフェクト的に付加する機能を提供します。
|
||||||
|
|
||||||
|
### id
|
||||||
|
|
||||||
|
モデルに設定されたパラメータ名・パーツ名・Drawable名を独自の型で管理する機能を提供します。
|
||||||
|
|
||||||
|
### math
|
||||||
|
|
||||||
|
行列計算やベクトル計算など、モデルの操作や描画に必要な算術演算の機能を提供します。
|
||||||
|
|
||||||
|
### model
|
||||||
|
|
||||||
|
モデルを取り扱うための各種機能(生成、更新、破棄)を提供します。
|
||||||
|
|
||||||
|
### motion
|
||||||
|
|
||||||
|
モデルにモーションデータを適用するための各種機能(モーション再生、パラメータブレンド)を提供します。
|
||||||
|
|
||||||
|
### physics
|
||||||
|
|
||||||
|
モデルに物理演算による変形操作を適用するための機能を提供します。
|
||||||
|
|
||||||
|
### rendering
|
||||||
|
|
||||||
|
モデルを描画するためのグラフィックス命令を実装したレンダラを提供します。
|
||||||
|
|
||||||
|
### type
|
||||||
|
|
||||||
|
フレームワーク内で使用する型定義を提供します。
|
||||||
|
|
||||||
|
### utils
|
||||||
|
|
||||||
|
JSONパーサーやログ出力などのユーティリティ機能を提供します。
|
||||||
|
|
||||||
|
|
||||||
|
## Live2D Cubism Core for Web
|
||||||
|
|
||||||
|
当リポジトリには Cubism Core for Web は同梱されていません。
|
||||||
|
|
||||||
|
[Cubism SDK for Web] からダウンロードしてください。
|
||||||
|
|
||||||
|
[Cubism SDK for Web]: https://www.live2d.com/download/cubism-sdk/download-web/
|
||||||
|
|
||||||
|
|
||||||
|
## サンプル
|
||||||
|
|
||||||
|
標準的なアプリケーションの実装例は [CubismWebSamples] を参照ください。
|
||||||
|
|
||||||
|
[CubismWebSamples]: https://github.com/Live2D/CubismWebSamples
|
||||||
|
|
||||||
|
|
||||||
|
## マニュアル
|
||||||
|
|
||||||
|
[Cubism SDK Manual](https://docs.live2d.com/cubism-sdk-manual/top/)
|
||||||
|
|
||||||
|
|
||||||
|
## 変更履歴
|
||||||
|
|
||||||
|
当リポジトリの変更履歴については [CHANGELOG.md](CHANGELOG.md) を参照ください。
|
||||||
|
|
||||||
|
|
||||||
|
## プロジェクトへの貢献
|
||||||
|
|
||||||
|
プロジェクトに貢献する方法はたくさんあります。バグのログの記録、このGitHubでのプルリクエストの送信、Live2Dコミュニティでの問題の報告と提案の作成です。
|
||||||
|
|
||||||
|
### フォークとプルリクエスト
|
||||||
|
|
||||||
|
修正、改善、さらには新機能をもたらすかどうかにかかわらず、プルリクエストに感謝します。ただし、ラッパーは可能な限り軽量で浅くなるように設計されているため、バグ修正とメモリ/パフォーマンスの改善のみを行う必要があることに注意してください。メインリポジトリを可能な限りクリーンに保つために、必要に応じて個人用フォークと機能ブランチを作成してください。
|
||||||
|
|
||||||
|
### バグ
|
||||||
|
|
||||||
|
Live2Dコミュニティでは、問題のレポートと機能リクエストを定期的にチェックしています。バグレポートを提出する前に、Live2Dコミュニティで検索して、問題のレポートまたは機能リクエストがすでに投稿されているかどうかを確認してください。問題がすでに存在する場合は、関連するコメントを追記してください。
|
||||||
|
|
||||||
|
### 提案
|
||||||
|
|
||||||
|
SDKの将来についてのフィードバックにも関心があります。Live2Dコミュニティで提案や機能のリクエストを送信できます。このプロセスをより効果的にするために、それらをより明確に定義するのに役立つより多くの情報を含めるようお願いしています。
|
||||||
|
|
||||||
|
|
||||||
|
## コミュニティ
|
||||||
|
|
||||||
|
ユーザー同士でCubism SDKの活用方法の提案や質問をしたい場合は、是非コミュニティをご活用ください。
|
||||||
|
|
||||||
|
- [Live2D 公式コミュニティ](https://creatorsforum.live2d.com/)
|
||||||
|
- [Live2D community(English)](https://community.live2d.com/)
|
119
README.md
119
README.md
|
@ -1,143 +1,164 @@
|
||||||
|
[English](README.md) / [日本語](README.ja.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# Cubism Web Framework
|
# Cubism Web Framework
|
||||||
|
|
||||||
Live2D Cubism 4 Editor で出力したモデルをアプリケーションで利用するためのフレームワークです。
|
This is a framework for using models output by Live2D Cubism 4 Editor in applications.
|
||||||
|
|
||||||
モデルを表示、操作するための各種機能を提供します。
|
It provides various functions for displaying and manipulating the model.
|
||||||
モデルをロードするには Live2D Cubism Core ライブラリと組み合わせて使用します。
|
It is used in conjunction with the Live2D Cubism Core library to load the model.
|
||||||
|
|
||||||
ビルドを行うことで、ブラウザで利用可能な JavaScript ライブラリとして利用することができます。
|
You can use it as a JavaScript library that can be used in the browser by building.
|
||||||
|
|
||||||
|
|
||||||
## ライセンス
|
## License
|
||||||
|
|
||||||
本 SDK を使用する前に、[ライセンス](LICENSE.md)をご確認ください。
|
Please check the [license](LICENSE.md) before using this SDK.
|
||||||
|
|
||||||
|
|
||||||
## 開発環境
|
## Development environment
|
||||||
|
|
||||||
### Node.js
|
### Node.js
|
||||||
|
|
||||||
* 18.7.0
|
* 18.8.0
|
||||||
* 16.16.0
|
* 16.17.0
|
||||||
* 14.20.0
|
* 14.20.0
|
||||||
|
|
||||||
|
|
||||||
### TypeScript
|
### TypeScript
|
||||||
|
|
||||||
4.7.4
|
4.8.2
|
||||||
|
|
||||||
|
|
||||||
## 開発環境構築
|
## Development environment construction
|
||||||
|
|
||||||
1. [Node.js] と [Visual Studio Code] をインストールします
|
1. Install [Node.js] and [Visual Studio Code]
|
||||||
1. Visual Studio Code で本プロジェクトを開き、推奨拡張機能をインストールします
|
1. Open this project in Visual Studio Code and install the recommended extensions
|
||||||
* 拡張機能タブから `@recommended` と入力することで確認できます
|
* You can check them by typing `@recommended` from the Extensions tab
|
||||||
1. コマンドパレット(*View > Command Palette...*)で `>Tasks: Run Task` を入力してタスク一覧を表示します
|
1. Enter `>Tasks: Run Task` in the command palette (*View > Command Palette...*) to display the task list
|
||||||
1. `npm: install` を選択して依存パッケージのダウンロードを行います
|
1. Select `npm: install` to download the dependent packages
|
||||||
|
|
||||||
コマンドパレットのタスク一覧から各種コマンドを実行することができます。
|
You can execute various commands from the task list on the command palette.
|
||||||
|
|
||||||
NOTE: デバック用の設定は、`.vscode/tasks.json` に記述しています。
|
NOTE: Settings for debugging are described in `.vscode/tasks.json`.
|
||||||
|
|
||||||
## タスク一覧
|
## Task list
|
||||||
|
|
||||||
### `npm: build`
|
### `npm: build`
|
||||||
|
|
||||||
ソースファイルのビルドを行い、`dist` ディレクトリに出力します。
|
Builds the source file and outputs to the `dist` directory.
|
||||||
|
|
||||||
`tsconfig.json` を編集することで設定内容を変更できます。
|
You can change the settings by editing `tsconfig.json`.
|
||||||
|
|
||||||
### `npm: test`
|
### `npm: test`
|
||||||
|
|
||||||
TypeScript の型チェックテストを行います。
|
Performs a TypeScript type check test.
|
||||||
|
|
||||||
`tsconfig.json` を編集することで設定内容を変更できます。
|
You can change the settings by editing `tsconfig.json`.
|
||||||
|
|
||||||
### `npm: lint`
|
### `npm: lint`
|
||||||
|
|
||||||
`src` ディレクトリ内の TypeScript ファイルの静的解析を行います。
|
Performs static analysis of TypeScript files in the `src` directory.
|
||||||
|
|
||||||
`.eslintrc.yml` を編集することで設定内容を変更できます。
|
You can change the settings by editing `.eslintrc.yml`.
|
||||||
|
|
||||||
### `npm: lint:fix`
|
### `npm: lint:fix`
|
||||||
|
|
||||||
`src` ディレクトリ内の TypeScript ファイルの静的解析及び自動修正を行います。
|
Performs static analysis and automatic modification of TypeScript files in the `src` directory.
|
||||||
|
|
||||||
`.eslintrc.yml` を編集することで設定内容を変更できます。
|
You can change the settings by editing `.eslintrc.yml`.
|
||||||
|
|
||||||
### `npm: clean`
|
### `npm: clean`
|
||||||
|
|
||||||
ビルド成果物ディレクトリ(`dist`)を削除します。
|
Deletes the build deliverable directory (`dist`).
|
||||||
|
|
||||||
|
|
||||||
## コンポーネント
|
## Components
|
||||||
|
|
||||||
### effect
|
### effect
|
||||||
|
|
||||||
自動まばたきやリップシンクなど、モデルに対してモーション情報をエフェクト的に付加する機能を提供します。
|
Provides functions such as automatic blinking and lip sync to add motion information as an effect to the model.
|
||||||
|
|
||||||
### id
|
### id
|
||||||
|
|
||||||
モデルに設定されたパラメータ名・パーツ名・Drawable名を独自の型で管理する機能を提供します。
|
Provides functions to manage the parameter name, part name, and Drawable name set in the model with unique types.
|
||||||
|
|
||||||
### math
|
### math
|
||||||
|
|
||||||
行列計算やベクトル計算など、モデルの操作や描画に必要な算術演算の機能を提供します。
|
Provides arithmetic functions required for manipulating and drawing the model, such as matrix and vector calculations.
|
||||||
|
|
||||||
### model
|
### model
|
||||||
|
|
||||||
モデルを取り扱うための各種機能(生成、更新、破棄)を提供します。
|
Provides various functions (generate, update, destroy) for handling the model.
|
||||||
|
|
||||||
### motion
|
### motion
|
||||||
|
|
||||||
モデルにモーションデータを適用するための各種機能(モーション再生、パラメータブレンド)を提供します。
|
Provides various functions (motion playback, parameter blending) for applying motion data to the model.
|
||||||
|
|
||||||
### physics
|
### physics
|
||||||
|
|
||||||
モデルに物理演算による変形操作を適用するための機能を提供します。
|
Provides functions for applying transformation manipulations due to physics to the model.
|
||||||
|
|
||||||
### rendering
|
### rendering
|
||||||
|
|
||||||
モデルを描画するためのグラフィックス命令を実装したレンダラを提供します。
|
Provides a renderer that implements graphics instructions for drawing the model.
|
||||||
|
|
||||||
### type
|
### type
|
||||||
|
|
||||||
フレームワーク内で使用する型定義を提供します。
|
Provides type definitions for use within the framework.
|
||||||
|
|
||||||
### utils
|
### utils
|
||||||
|
|
||||||
JSONパーサーやログ出力などのユーティリティ機能を提供します。
|
Provides utility functions such as JSON parser and log output.
|
||||||
|
|
||||||
|
|
||||||
## Live2D Cubism Core for Web
|
## Live2D Cubism Core for Web
|
||||||
|
|
||||||
当リポジトリには Cubism Core for Web は同梱されていません。
|
Cubism Core for Web is not included in this repository.
|
||||||
|
|
||||||
[Cubism SDK for Web] からダウンロードしてください。
|
Please download it from the [Cubism SDK for Web].
|
||||||
|
|
||||||
[Cubism SDK for Web]: https://www.live2d.com/download/cubism-sdk/download-web/
|
[Cubism SDK for Web]: https://www.live2d.com/download/cubism-sdk/download-web/
|
||||||
|
|
||||||
|
|
||||||
## サンプル
|
## Samples
|
||||||
|
|
||||||
標準的なアプリケーションの実装例は [CubismWebSamples] を参照ください。
|
Please refer to [CubismWebSamples] for implementation examples of standard applications.
|
||||||
|
|
||||||
[CubismWebSamples]: https://github.com/Live2D/CubismWebSamples
|
[CubismWebSamples]: https://github.com/Live2D/CubismWebSamples
|
||||||
|
|
||||||
|
|
||||||
## マニュアル
|
## Manual
|
||||||
|
|
||||||
[Cubism SDK Manual](https://docs.live2d.com/cubism-sdk-manual/top/)
|
[Cubism SDK Manual](https://docs.live2d.com/cubism-sdk-manual/top/)
|
||||||
|
|
||||||
|
|
||||||
## 変更履歴
|
## Changelog
|
||||||
|
|
||||||
当リポジトリの変更履歴については [CHANGELOG.md](CHANGELOG.md) を参照ください。
|
Please refer to [CHANGELOG.md](CHANGELOG.md) for the changelog of this repository.
|
||||||
|
|
||||||
|
|
||||||
## コミュニティ
|
## Contributing
|
||||||
|
|
||||||
ユーザー同士でCubism SDKの活用方法の提案や質問をしたい場合は、是非コミュニティをご活用ください。
|
There are many ways to contribute to the project: logging bugs, submitting pull requests on this GitHub, and reporting issues and making suggestions in Live2D Community.
|
||||||
|
|
||||||
- [Live2D 公式コミュニティ](https://creatorsforum.live2d.com/)
|
### Forking And Pull Requests
|
||||||
- [Live2D community(English)](https://community.live2d.com/)
|
|
||||||
|
We very much appreciate your pull requests, whether they bring fixes, improvements, or even new features. Note, however, that the wrapper is designed to be as lightweight and shallow as possible and should therefore only be subject to bug fixes and memory/performance improvements. To keep the main repository as clean as possible, create a personal fork and feature branches there as needed.
|
||||||
|
|
||||||
|
### Bugs
|
||||||
|
|
||||||
|
We are regularly checking issue-reports and feature requests at Live2D Community. Before filing a bug report, please do a search in Live2D Community to see if the issue-report or feature request has already been posted. If you find your issue already exists, make relevant comments and add your reaction.
|
||||||
|
|
||||||
|
### Suggestions
|
||||||
|
|
||||||
|
We're also interested in your feedback for the future of the SDK. You can submit a suggestion or feature request at Live2D Community. To make this process more effective, we're asking that you include more information to help define them more clearly.
|
||||||
|
|
||||||
|
|
||||||
|
## Community
|
||||||
|
|
||||||
|
If you want to suggest or ask questions about how to use the Cubism SDK between users, please use the community.
|
||||||
|
|
||||||
|
- [Live2D community](https://community.live2d.com/)
|
||||||
|
- [Live2D 公式コミュニティ (Japanese)](https://creatorsforum.live2d.com/)
|
||||||
|
|
|
@ -5,25 +5,25 @@
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^5.31.0",
|
"@typescript-eslint/eslint-plugin": "^5.35.1",
|
||||||
"@typescript-eslint/parser": "^5.31.0",
|
"@typescript-eslint/parser": "^5.35.1",
|
||||||
"eslint": "^8.20.0",
|
"eslint": "^8.23.0",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^8.5.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"typescript": "^4.7.4"
|
"typescript": "^4.8.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/eslintrc": {
|
"node_modules/@eslint/eslintrc": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz",
|
||||||
"integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==",
|
"integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": "^6.12.4",
|
"ajv": "^6.12.4",
|
||||||
"debug": "^4.3.2",
|
"debug": "^4.3.2",
|
||||||
"espree": "^9.3.2",
|
"espree": "^9.4.0",
|
||||||
"globals": "^13.15.0",
|
"globals": "^13.15.0",
|
||||||
"ignore": "^5.2.0",
|
"ignore": "^5.2.0",
|
||||||
"import-fresh": "^3.2.1",
|
"import-fresh": "^3.2.1",
|
||||||
|
@ -33,12 +33,15 @@
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/eslint"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@humanwhocodes/config-array": {
|
"node_modules/@humanwhocodes/config-array": {
|
||||||
"version": "0.9.5",
|
"version": "0.10.4",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz",
|
||||||
"integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
|
"integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@humanwhocodes/object-schema": "^1.2.1",
|
"@humanwhocodes/object-schema": "^1.2.1",
|
||||||
|
@ -49,6 +52,29 @@
|
||||||
"node": ">=10.10.0"
|
"node": ">=10.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@humanwhocodes/gitignore-to-minimatch": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/nzakas"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@humanwhocodes/module-importer": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.22"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/nzakas"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@humanwhocodes/object-schema": {
|
"node_modules/@humanwhocodes/object-schema": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
|
||||||
|
@ -97,14 +123,14 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz",
|
||||||
"integrity": "sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==",
|
"integrity": "sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "5.31.0",
|
"@typescript-eslint/scope-manager": "5.35.1",
|
||||||
"@typescript-eslint/type-utils": "5.31.0",
|
"@typescript-eslint/type-utils": "5.35.1",
|
||||||
"@typescript-eslint/utils": "5.31.0",
|
"@typescript-eslint/utils": "5.35.1",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"functional-red-black-tree": "^1.0.1",
|
"functional-red-black-tree": "^1.0.1",
|
||||||
"ignore": "^5.2.0",
|
"ignore": "^5.2.0",
|
||||||
|
@ -130,14 +156,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz",
|
||||||
"integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==",
|
"integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "5.31.0",
|
"@typescript-eslint/scope-manager": "5.35.1",
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"@typescript-eslint/typescript-estree": "5.31.0",
|
"@typescript-eslint/typescript-estree": "5.35.1",
|
||||||
"debug": "^4.3.4"
|
"debug": "^4.3.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -157,13 +183,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz",
|
||||||
"integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==",
|
"integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"@typescript-eslint/visitor-keys": "5.31.0"
|
"@typescript-eslint/visitor-keys": "5.35.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
|
@ -174,12 +200,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz",
|
||||||
"integrity": "sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==",
|
"integrity": "sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/utils": "5.31.0",
|
"@typescript-eslint/utils": "5.35.1",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"tsutils": "^3.21.0"
|
"tsutils": "^3.21.0"
|
||||||
},
|
},
|
||||||
|
@ -200,9 +226,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz",
|
||||||
"integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==",
|
"integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
|
@ -213,13 +239,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz",
|
||||||
"integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==",
|
"integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"@typescript-eslint/visitor-keys": "5.31.0",
|
"@typescript-eslint/visitor-keys": "5.35.1",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
|
@ -240,15 +266,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.35.1.tgz",
|
||||||
"integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==",
|
"integrity": "sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/json-schema": "^7.0.9",
|
"@types/json-schema": "^7.0.9",
|
||||||
"@typescript-eslint/scope-manager": "5.31.0",
|
"@typescript-eslint/scope-manager": "5.35.1",
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"@typescript-eslint/typescript-estree": "5.31.0",
|
"@typescript-eslint/typescript-estree": "5.35.1",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0"
|
"eslint-utils": "^3.0.0"
|
||||||
},
|
},
|
||||||
|
@ -264,12 +290,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz",
|
||||||
"integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==",
|
"integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"eslint-visitor-keys": "^3.3.0"
|
"eslint-visitor-keys": "^3.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -507,13 +533,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "8.20.0",
|
"version": "8.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz",
|
||||||
"integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==",
|
"integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/eslintrc": "^1.3.0",
|
"@eslint/eslintrc": "^1.3.1",
|
||||||
"@humanwhocodes/config-array": "^0.9.2",
|
"@humanwhocodes/config-array": "^0.10.4",
|
||||||
|
"@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
|
||||||
|
"@humanwhocodes/module-importer": "^1.0.1",
|
||||||
"ajv": "^6.10.0",
|
"ajv": "^6.10.0",
|
||||||
"chalk": "^4.0.0",
|
"chalk": "^4.0.0",
|
||||||
"cross-spawn": "^7.0.2",
|
"cross-spawn": "^7.0.2",
|
||||||
|
@ -523,14 +551,17 @@
|
||||||
"eslint-scope": "^7.1.1",
|
"eslint-scope": "^7.1.1",
|
||||||
"eslint-utils": "^3.0.0",
|
"eslint-utils": "^3.0.0",
|
||||||
"eslint-visitor-keys": "^3.3.0",
|
"eslint-visitor-keys": "^3.3.0",
|
||||||
"espree": "^9.3.2",
|
"espree": "^9.4.0",
|
||||||
"esquery": "^1.4.0",
|
"esquery": "^1.4.0",
|
||||||
"esutils": "^2.0.2",
|
"esutils": "^2.0.2",
|
||||||
"fast-deep-equal": "^3.1.3",
|
"fast-deep-equal": "^3.1.3",
|
||||||
"file-entry-cache": "^6.0.1",
|
"file-entry-cache": "^6.0.1",
|
||||||
|
"find-up": "^5.0.0",
|
||||||
"functional-red-black-tree": "^1.0.1",
|
"functional-red-black-tree": "^1.0.1",
|
||||||
"glob-parent": "^6.0.1",
|
"glob-parent": "^6.0.1",
|
||||||
"globals": "^13.15.0",
|
"globals": "^13.15.0",
|
||||||
|
"globby": "^11.1.0",
|
||||||
|
"grapheme-splitter": "^1.0.4",
|
||||||
"ignore": "^5.2.0",
|
"ignore": "^5.2.0",
|
||||||
"import-fresh": "^3.0.0",
|
"import-fresh": "^3.0.0",
|
||||||
"imurmurhash": "^0.1.4",
|
"imurmurhash": "^0.1.4",
|
||||||
|
@ -545,8 +576,7 @@
|
||||||
"regexpp": "^3.2.0",
|
"regexpp": "^3.2.0",
|
||||||
"strip-ansi": "^6.0.1",
|
"strip-ansi": "^6.0.1",
|
||||||
"strip-json-comments": "^3.1.0",
|
"strip-json-comments": "^3.1.0",
|
||||||
"text-table": "^0.2.0",
|
"text-table": "^0.2.0"
|
||||||
"v8-compile-cache": "^2.0.3"
|
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"eslint": "bin/eslint.js"
|
"eslint": "bin/eslint.js"
|
||||||
|
@ -663,17 +693,20 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/espree": {
|
"node_modules/espree": {
|
||||||
"version": "9.3.2",
|
"version": "9.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz",
|
||||||
"integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==",
|
"integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"acorn": "^8.7.1",
|
"acorn": "^8.8.0",
|
||||||
"acorn-jsx": "^5.3.2",
|
"acorn-jsx": "^5.3.2",
|
||||||
"eslint-visitor-keys": "^3.3.0"
|
"eslint-visitor-keys": "^3.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/eslint"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esquery": {
|
"node_modules/esquery": {
|
||||||
|
@ -821,6 +854,22 @@
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/find-up": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"locate-path": "^6.0.0",
|
||||||
|
"path-exists": "^4.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/flat-cache": {
|
"node_modules/flat-cache": {
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
|
||||||
|
@ -835,9 +884,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/flatted": {
|
"node_modules/flatted": {
|
||||||
"version": "3.2.6",
|
"version": "3.2.7",
|
||||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
|
||||||
"integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
|
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/fs.realpath": {
|
"node_modules/fs.realpath": {
|
||||||
|
@ -919,6 +968,12 @@
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/grapheme-splitter": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/has-flag": {
|
"node_modules/has-flag": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||||
|
@ -1051,6 +1106,21 @@
|
||||||
"node": ">= 0.8.0"
|
"node": ">= 0.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/locate-path": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"p-locate": "^5.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/lodash.merge": {
|
"node_modules/lodash.merge": {
|
||||||
"version": "4.6.2",
|
"version": "4.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||||
|
@ -1141,6 +1211,36 @@
|
||||||
"node": ">= 0.8.0"
|
"node": ">= 0.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/p-limit": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"yocto-queue": "^0.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/p-locate": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"p-limit": "^3.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/parent-module": {
|
"node_modules/parent-module": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
||||||
|
@ -1153,6 +1253,15 @@
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/path-exists": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/path-is-absolute": {
|
"node_modules/path-is-absolute": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
|
@ -1471,9 +1580,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/typescript": {
|
"node_modules/typescript": {
|
||||||
"version": "4.7.4",
|
"version": "4.8.2",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz",
|
||||||
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
|
"integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsc": "bin/tsc",
|
"tsc": "bin/tsc",
|
||||||
|
@ -1492,12 +1601,6 @@
|
||||||
"punycode": "^2.1.0"
|
"punycode": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/v8-compile-cache": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/which": {
|
"node_modules/which": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
|
@ -1533,18 +1636,30 @@
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/yocto-queue": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||||
|
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/eslintrc": {
|
"@eslint/eslintrc": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz",
|
||||||
"integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==",
|
"integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ajv": "^6.12.4",
|
"ajv": "^6.12.4",
|
||||||
"debug": "^4.3.2",
|
"debug": "^4.3.2",
|
||||||
"espree": "^9.3.2",
|
"espree": "^9.4.0",
|
||||||
"globals": "^13.15.0",
|
"globals": "^13.15.0",
|
||||||
"ignore": "^5.2.0",
|
"ignore": "^5.2.0",
|
||||||
"import-fresh": "^3.2.1",
|
"import-fresh": "^3.2.1",
|
||||||
|
@ -1554,9 +1669,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@humanwhocodes/config-array": {
|
"@humanwhocodes/config-array": {
|
||||||
"version": "0.9.5",
|
"version": "0.10.4",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz",
|
||||||
"integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
|
"integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@humanwhocodes/object-schema": "^1.2.1",
|
"@humanwhocodes/object-schema": "^1.2.1",
|
||||||
|
@ -1564,6 +1679,18 @@
|
||||||
"minimatch": "^3.0.4"
|
"minimatch": "^3.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@humanwhocodes/gitignore-to-minimatch": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"@humanwhocodes/module-importer": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@humanwhocodes/object-schema": {
|
"@humanwhocodes/object-schema": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
|
||||||
|
@ -1603,14 +1730,14 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@typescript-eslint/eslint-plugin": {
|
"@typescript-eslint/eslint-plugin": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz",
|
||||||
"integrity": "sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==",
|
"integrity": "sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/scope-manager": "5.31.0",
|
"@typescript-eslint/scope-manager": "5.35.1",
|
||||||
"@typescript-eslint/type-utils": "5.31.0",
|
"@typescript-eslint/type-utils": "5.35.1",
|
||||||
"@typescript-eslint/utils": "5.31.0",
|
"@typescript-eslint/utils": "5.35.1",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"functional-red-black-tree": "^1.0.1",
|
"functional-red-black-tree": "^1.0.1",
|
||||||
"ignore": "^5.2.0",
|
"ignore": "^5.2.0",
|
||||||
|
@ -1620,52 +1747,52 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/parser": {
|
"@typescript-eslint/parser": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz",
|
||||||
"integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==",
|
"integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/scope-manager": "5.31.0",
|
"@typescript-eslint/scope-manager": "5.35.1",
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"@typescript-eslint/typescript-estree": "5.31.0",
|
"@typescript-eslint/typescript-estree": "5.35.1",
|
||||||
"debug": "^4.3.4"
|
"debug": "^4.3.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/scope-manager": {
|
"@typescript-eslint/scope-manager": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz",
|
||||||
"integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==",
|
"integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"@typescript-eslint/visitor-keys": "5.31.0"
|
"@typescript-eslint/visitor-keys": "5.35.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/type-utils": {
|
"@typescript-eslint/type-utils": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz",
|
||||||
"integrity": "sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==",
|
"integrity": "sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/utils": "5.31.0",
|
"@typescript-eslint/utils": "5.35.1",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"tsutils": "^3.21.0"
|
"tsutils": "^3.21.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/types": {
|
"@typescript-eslint/types": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz",
|
||||||
"integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==",
|
"integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@typescript-eslint/typescript-estree": {
|
"@typescript-eslint/typescript-estree": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz",
|
||||||
"integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==",
|
"integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"@typescript-eslint/visitor-keys": "5.31.0",
|
"@typescript-eslint/visitor-keys": "5.35.1",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
|
@ -1674,26 +1801,26 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/utils": {
|
"@typescript-eslint/utils": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.35.1.tgz",
|
||||||
"integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==",
|
"integrity": "sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/json-schema": "^7.0.9",
|
"@types/json-schema": "^7.0.9",
|
||||||
"@typescript-eslint/scope-manager": "5.31.0",
|
"@typescript-eslint/scope-manager": "5.35.1",
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"@typescript-eslint/typescript-estree": "5.31.0",
|
"@typescript-eslint/typescript-estree": "5.35.1",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0"
|
"eslint-utils": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/visitor-keys": {
|
"@typescript-eslint/visitor-keys": {
|
||||||
"version": "5.31.0",
|
"version": "5.35.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz",
|
||||||
"integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==",
|
"integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.31.0",
|
"@typescript-eslint/types": "5.35.1",
|
||||||
"eslint-visitor-keys": "^3.3.0"
|
"eslint-visitor-keys": "^3.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1862,13 +1989,15 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"eslint": {
|
"eslint": {
|
||||||
"version": "8.20.0",
|
"version": "8.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz",
|
||||||
"integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==",
|
"integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@eslint/eslintrc": "^1.3.0",
|
"@eslint/eslintrc": "^1.3.1",
|
||||||
"@humanwhocodes/config-array": "^0.9.2",
|
"@humanwhocodes/config-array": "^0.10.4",
|
||||||
|
"@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
|
||||||
|
"@humanwhocodes/module-importer": "^1.0.1",
|
||||||
"ajv": "^6.10.0",
|
"ajv": "^6.10.0",
|
||||||
"chalk": "^4.0.0",
|
"chalk": "^4.0.0",
|
||||||
"cross-spawn": "^7.0.2",
|
"cross-spawn": "^7.0.2",
|
||||||
|
@ -1878,14 +2007,17 @@
|
||||||
"eslint-scope": "^7.1.1",
|
"eslint-scope": "^7.1.1",
|
||||||
"eslint-utils": "^3.0.0",
|
"eslint-utils": "^3.0.0",
|
||||||
"eslint-visitor-keys": "^3.3.0",
|
"eslint-visitor-keys": "^3.3.0",
|
||||||
"espree": "^9.3.2",
|
"espree": "^9.4.0",
|
||||||
"esquery": "^1.4.0",
|
"esquery": "^1.4.0",
|
||||||
"esutils": "^2.0.2",
|
"esutils": "^2.0.2",
|
||||||
"fast-deep-equal": "^3.1.3",
|
"fast-deep-equal": "^3.1.3",
|
||||||
"file-entry-cache": "^6.0.1",
|
"file-entry-cache": "^6.0.1",
|
||||||
|
"find-up": "^5.0.0",
|
||||||
"functional-red-black-tree": "^1.0.1",
|
"functional-red-black-tree": "^1.0.1",
|
||||||
"glob-parent": "^6.0.1",
|
"glob-parent": "^6.0.1",
|
||||||
"globals": "^13.15.0",
|
"globals": "^13.15.0",
|
||||||
|
"globby": "^11.1.0",
|
||||||
|
"grapheme-splitter": "^1.0.4",
|
||||||
"ignore": "^5.2.0",
|
"ignore": "^5.2.0",
|
||||||
"import-fresh": "^3.0.0",
|
"import-fresh": "^3.0.0",
|
||||||
"imurmurhash": "^0.1.4",
|
"imurmurhash": "^0.1.4",
|
||||||
|
@ -1900,8 +2032,7 @@
|
||||||
"regexpp": "^3.2.0",
|
"regexpp": "^3.2.0",
|
||||||
"strip-ansi": "^6.0.1",
|
"strip-ansi": "^6.0.1",
|
||||||
"strip-json-comments": "^3.1.0",
|
"strip-json-comments": "^3.1.0",
|
||||||
"text-table": "^0.2.0",
|
"text-table": "^0.2.0"
|
||||||
"v8-compile-cache": "^2.0.3"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"eslint-scope": {
|
"eslint-scope": {
|
||||||
|
@ -1972,12 +2103,12 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"espree": {
|
"espree": {
|
||||||
"version": "9.3.2",
|
"version": "9.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz",
|
||||||
"integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==",
|
"integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"acorn": "^8.7.1",
|
"acorn": "^8.8.0",
|
||||||
"acorn-jsx": "^5.3.2",
|
"acorn-jsx": "^5.3.2",
|
||||||
"eslint-visitor-keys": "^3.3.0"
|
"eslint-visitor-keys": "^3.3.0"
|
||||||
}
|
}
|
||||||
|
@ -2103,6 +2234,16 @@
|
||||||
"to-regex-range": "^5.0.1"
|
"to-regex-range": "^5.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"find-up": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"locate-path": "^6.0.0",
|
||||||
|
"path-exists": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flat-cache": {
|
"flat-cache": {
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
|
||||||
|
@ -2114,9 +2255,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flatted": {
|
"flatted": {
|
||||||
"version": "3.2.6",
|
"version": "3.2.7",
|
||||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
|
||||||
"integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
|
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"fs.realpath": {
|
"fs.realpath": {
|
||||||
|
@ -2177,6 +2318,12 @@
|
||||||
"slash": "^3.0.0"
|
"slash": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"grapheme-splitter": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"has-flag": {
|
"has-flag": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||||
|
@ -2279,6 +2426,15 @@
|
||||||
"type-check": "~0.4.0"
|
"type-check": "~0.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"locate-path": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"p-locate": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"lodash.merge": {
|
"lodash.merge": {
|
||||||
"version": "4.6.2",
|
"version": "4.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||||
|
@ -2354,6 +2510,24 @@
|
||||||
"word-wrap": "^1.2.3"
|
"word-wrap": "^1.2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"p-limit": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"yocto-queue": "^0.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"p-locate": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"p-limit": "^3.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"parent-module": {
|
"parent-module": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
||||||
|
@ -2363,6 +2537,12 @@
|
||||||
"callsites": "^3.0.0"
|
"callsites": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"path-exists": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"path-is-absolute": {
|
"path-is-absolute": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
|
@ -2556,9 +2736,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "4.7.4",
|
"version": "4.8.2",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz",
|
||||||
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
|
"integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"uri-js": {
|
"uri-js": {
|
||||||
|
@ -2570,12 +2750,6 @@
|
||||||
"punycode": "^2.1.0"
|
"punycode": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"v8-compile-cache": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"which": {
|
"which": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
|
@ -2602,6 +2776,12 @@
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
|
},
|
||||||
|
"yocto-queue": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||||
|
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
|
||||||
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
"clean": "rimraf dist"
|
"clean": "rimraf dist"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^5.31.0",
|
"@typescript-eslint/eslint-plugin": "^5.35.1",
|
||||||
"@typescript-eslint/parser": "^5.31.0",
|
"@typescript-eslint/parser": "^5.35.1",
|
||||||
"eslint": "^8.20.0",
|
"eslint": "^8.23.0",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^8.5.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"typescript": "^4.7.4"
|
"typescript": "^4.8.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
import { CubismIdHandle } from '../id/cubismid';
|
import { CubismIdHandle } from '../id/cubismid';
|
||||||
import { CubismFramework } from '../live2dcubismframework';
|
import { CubismFramework } from '../live2dcubismframework';
|
||||||
import { csmString } from '../type/csmstring';
|
import { csmString } from '../type/csmstring';
|
||||||
import { CubismJson } from '../utils/cubismjson';
|
import { CubismJson, JsonMap } from '../utils/cubismjson';
|
||||||
|
|
||||||
// JSON keys
|
// JSON keys
|
||||||
const Meta = 'Meta';
|
const Meta = 'Meta';
|
||||||
|
|
|
@ -171,20 +171,20 @@ export class CubismPhysics {
|
||||||
this._physicsRig.settings.at(i).outputCount = json.getOutputCount(i);
|
this._physicsRig.settings.at(i).outputCount = json.getOutputCount(i);
|
||||||
this._physicsRig.settings.at(i).baseOutputIndex = outputIndex;
|
this._physicsRig.settings.at(i).baseOutputIndex = outputIndex;
|
||||||
|
|
||||||
let currentRigOutput = new PhysicsOutput();
|
const currentRigOutput = new PhysicsOutput();
|
||||||
currentRigOutput.output.resize(
|
currentRigOutput.outputs.resize(
|
||||||
this._physicsRig.settings.at(i).outputCount
|
this._physicsRig.settings.at(i).outputCount
|
||||||
);
|
);
|
||||||
|
|
||||||
let previousRigOutput = new PhysicsOutput();
|
const previousRigOutput = new PhysicsOutput();
|
||||||
previousRigOutput.output.resize(
|
previousRigOutput.outputs.resize(
|
||||||
this._physicsRig.settings.at(i).outputCount
|
this._physicsRig.settings.at(i).outputCount
|
||||||
);
|
);
|
||||||
|
|
||||||
for (let j = 0; j < this._physicsRig.settings.at(i).outputCount; ++j) {
|
for (let j = 0; j < this._physicsRig.settings.at(i).outputCount; ++j) {
|
||||||
// initialize
|
// initialize
|
||||||
currentRigOutput.output[j] = 0.0;
|
currentRigOutput.outputs[j] = 0.0;
|
||||||
previousRigOutput.output[j] = 0.0;
|
previousRigOutput.outputs[j] = 0.0;
|
||||||
|
|
||||||
this._physicsRig.outputs.at(outputIndex + j).destinationParameterIndex =
|
this._physicsRig.outputs.at(outputIndex + j).destinationParameterIndex =
|
||||||
-1;
|
-1;
|
||||||
|
@ -259,6 +259,175 @@ export class CubismPhysics {
|
||||||
json = null;
|
json = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 現在のパラメータ値で物理演算が安定化する状態を演算する。
|
||||||
|
* @param model 物理演算の結果を適用するモデル
|
||||||
|
*/
|
||||||
|
public stabilization(model: CubismModel): void {
|
||||||
|
let totalAngle: { angle: number };
|
||||||
|
let weight: number;
|
||||||
|
let radAngle: number;
|
||||||
|
let outputValue: number;
|
||||||
|
const totalTranslation: CubismVector2 = new CubismVector2();
|
||||||
|
let currentSetting: CubismPhysicsSubRig;
|
||||||
|
let currentInputs: CubismPhysicsInput[];
|
||||||
|
let currentOutputs: CubismPhysicsOutput[];
|
||||||
|
let currentParticles: CubismPhysicsParticle[];
|
||||||
|
|
||||||
|
let parameterValues: Float32Array;
|
||||||
|
let parameterMaximumValues: Float32Array;
|
||||||
|
let parameterMinimumValues: Float32Array;
|
||||||
|
let parameterDefaultValues: Float32Array;
|
||||||
|
|
||||||
|
parameterValues = model.getModel().parameters.values;
|
||||||
|
parameterMaximumValues = model.getModel().parameters.maximumValues;
|
||||||
|
parameterMinimumValues = model.getModel().parameters.minimumValues;
|
||||||
|
parameterDefaultValues = model.getModel().parameters.defaultValues;
|
||||||
|
|
||||||
|
if ((this._parameterCaches?.length ?? 0) < model.getParameterCount()) {
|
||||||
|
this._parameterCaches = new Float32Array(model.getParameterCount());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((this._parameterInputCaches?.length ?? 0) < model.getParameterCount()) {
|
||||||
|
this._parameterInputCaches = new Float32Array(model.getParameterCount());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let j = 0; j < model.getParameterCount(); ++j) {
|
||||||
|
this._parameterCaches[j] = parameterValues[j];
|
||||||
|
this._parameterInputCaches[j] = parameterValues[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (
|
||||||
|
let settingIndex = 0;
|
||||||
|
settingIndex < this._physicsRig.subRigCount;
|
||||||
|
++settingIndex
|
||||||
|
) {
|
||||||
|
totalAngle = { angle: 0.0 };
|
||||||
|
totalTranslation.x = 0.0;
|
||||||
|
totalTranslation.y = 0.0;
|
||||||
|
currentSetting = this._physicsRig.settings.at(settingIndex);
|
||||||
|
currentInputs = this._physicsRig.inputs.get(
|
||||||
|
currentSetting.baseInputIndex
|
||||||
|
);
|
||||||
|
currentOutputs = this._physicsRig.outputs.get(
|
||||||
|
currentSetting.baseOutputIndex
|
||||||
|
);
|
||||||
|
currentParticles = this._physicsRig.particles.get(
|
||||||
|
currentSetting.baseParticleIndex
|
||||||
|
);
|
||||||
|
|
||||||
|
// Load input parameters
|
||||||
|
for (let i = 0; i < currentSetting.inputCount; ++i) {
|
||||||
|
weight = currentInputs[i].weight / MaximumWeight;
|
||||||
|
|
||||||
|
if (currentInputs[i].sourceParameterIndex == -1) {
|
||||||
|
currentInputs[i].sourceParameterIndex = model.getParameterIndex(
|
||||||
|
currentInputs[i].source.id
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
currentInputs[i].getNormalizedParameterValue(
|
||||||
|
totalTranslation,
|
||||||
|
totalAngle,
|
||||||
|
parameterValues[currentInputs[i].sourceParameterIndex],
|
||||||
|
parameterMinimumValues[currentInputs[i].sourceParameterIndex],
|
||||||
|
parameterMaximumValues[currentInputs[i].sourceParameterIndex],
|
||||||
|
parameterDefaultValues[currentInputs[i].sourceParameterIndex],
|
||||||
|
currentSetting.normalizationPosition,
|
||||||
|
currentSetting.normalizationAngle,
|
||||||
|
currentInputs[i].reflect,
|
||||||
|
weight
|
||||||
|
);
|
||||||
|
|
||||||
|
this._parameterCaches[currentInputs[i].sourceParameterIndex] =
|
||||||
|
parameterValues[currentInputs[i].sourceParameterIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
radAngle = CubismMath.degreesToRadian(-totalAngle.angle);
|
||||||
|
|
||||||
|
totalTranslation.x =
|
||||||
|
totalTranslation.x * CubismMath.cos(radAngle) -
|
||||||
|
totalTranslation.y * CubismMath.sin(radAngle);
|
||||||
|
totalTranslation.y =
|
||||||
|
totalTranslation.x * CubismMath.sin(radAngle) +
|
||||||
|
totalTranslation.y * CubismMath.cos(radAngle);
|
||||||
|
|
||||||
|
// Calculate particles position.
|
||||||
|
updateParticlesForStabilization(
|
||||||
|
currentParticles,
|
||||||
|
currentSetting.particleCount,
|
||||||
|
totalTranslation,
|
||||||
|
totalAngle.angle,
|
||||||
|
this._options.wind,
|
||||||
|
MovementThreshold * currentSetting.normalizationPosition.maximum
|
||||||
|
);
|
||||||
|
|
||||||
|
// Update output parameters.
|
||||||
|
for (let i = 0; i < currentSetting.outputCount; ++i) {
|
||||||
|
const particleIndex = currentOutputs[i].vertexIndex;
|
||||||
|
|
||||||
|
if (currentOutputs[i].destinationParameterIndex == -1) {
|
||||||
|
currentOutputs[i].destinationParameterIndex = model.getParameterIndex(
|
||||||
|
currentOutputs[i].destination.id
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
particleIndex < 1 ||
|
||||||
|
particleIndex >= currentSetting.particleCount
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let translation: CubismVector2 = new CubismVector2();
|
||||||
|
translation = currentParticles[particleIndex].position.substract(
|
||||||
|
currentParticles[particleIndex - 1].position
|
||||||
|
);
|
||||||
|
|
||||||
|
outputValue = currentOutputs[i].getValue(
|
||||||
|
translation,
|
||||||
|
currentParticles,
|
||||||
|
particleIndex,
|
||||||
|
currentOutputs[i].reflect,
|
||||||
|
this._options.gravity
|
||||||
|
);
|
||||||
|
|
||||||
|
this._currentRigOutputs.at(settingIndex).outputs[i] = outputValue;
|
||||||
|
this._previousRigOutputs.at(settingIndex).outputs[i] = outputValue;
|
||||||
|
|
||||||
|
const destinationParameterIndex: number =
|
||||||
|
currentOutputs[i].destinationParameterIndex;
|
||||||
|
|
||||||
|
const outParameterCaches: Float32Array =
|
||||||
|
!Float32Array.prototype.slice && 'subarray' in Float32Array.prototype
|
||||||
|
? JSON.parse(
|
||||||
|
JSON.stringify(
|
||||||
|
parameterValues.subarray(destinationParameterIndex)
|
||||||
|
)
|
||||||
|
) // 値渡しするため、JSON.parse, JSON.stringify
|
||||||
|
: parameterValues.slice(destinationParameterIndex);
|
||||||
|
|
||||||
|
updateOutputParameterValue(
|
||||||
|
outParameterCaches,
|
||||||
|
parameterMinimumValues[destinationParameterIndex],
|
||||||
|
parameterMaximumValues[destinationParameterIndex],
|
||||||
|
outputValue,
|
||||||
|
currentOutputs[i]
|
||||||
|
);
|
||||||
|
|
||||||
|
// 値を反映
|
||||||
|
for (
|
||||||
|
let offset: number = destinationParameterIndex, outParamIndex = 0;
|
||||||
|
offset < this._parameterCaches.length;
|
||||||
|
offset++, outParamIndex++
|
||||||
|
) {
|
||||||
|
parameterValues[offset] = this._parameterCaches[offset] =
|
||||||
|
outParameterCaches[outParamIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物理演算の評価
|
* 物理演算の評価
|
||||||
*
|
*
|
||||||
|
@ -307,18 +476,18 @@ export class CubismPhysics {
|
||||||
let outputValue: number;
|
let outputValue: number;
|
||||||
const totalTranslation: CubismVector2 = new CubismVector2();
|
const totalTranslation: CubismVector2 = new CubismVector2();
|
||||||
let currentSetting: CubismPhysicsSubRig;
|
let currentSetting: CubismPhysicsSubRig;
|
||||||
let currentInput: CubismPhysicsInput[];
|
let currentInputs: CubismPhysicsInput[];
|
||||||
let currentOutput: CubismPhysicsOutput[];
|
let currentOutputs: CubismPhysicsOutput[];
|
||||||
let currentParticles: CubismPhysicsParticle[];
|
let currentParticles: CubismPhysicsParticle[];
|
||||||
|
|
||||||
if (0.0 >= deltaTimeSeconds) {
|
if (0.0 >= deltaTimeSeconds) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let parameterValue: Float32Array;
|
let parameterValues: Float32Array;
|
||||||
let parameterMaximumValue: Float32Array;
|
let parameterMaximumValues: Float32Array;
|
||||||
let parameterMinimumValue: Float32Array;
|
let parameterMinimumValues: Float32Array;
|
||||||
let parameterDefaultValue: Float32Array;
|
let parameterDefaultValues: Float32Array;
|
||||||
|
|
||||||
let physicsDeltaTime: number;
|
let physicsDeltaTime: number;
|
||||||
this._currentRemainTime += deltaTimeSeconds;
|
this._currentRemainTime += deltaTimeSeconds;
|
||||||
|
@ -326,19 +495,19 @@ export class CubismPhysics {
|
||||||
this._currentRemainTime = 0.0;
|
this._currentRemainTime = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameterValue = model.getModel().parameters.values;
|
parameterValues = model.getModel().parameters.values;
|
||||||
parameterMaximumValue = model.getModel().parameters.maximumValues;
|
parameterMaximumValues = model.getModel().parameters.maximumValues;
|
||||||
parameterMinimumValue = model.getModel().parameters.minimumValues;
|
parameterMinimumValues = model.getModel().parameters.minimumValues;
|
||||||
parameterDefaultValue = model.getModel().parameters.defaultValues;
|
parameterDefaultValues = model.getModel().parameters.defaultValues;
|
||||||
|
|
||||||
if ((this._parameterCache?.length ?? 0) < model.getParameterCount()) {
|
if ((this._parameterCaches?.length ?? 0) < model.getParameterCount()) {
|
||||||
this._parameterCache = new Float32Array(model.getParameterCount());
|
this._parameterCaches = new Float32Array(model.getParameterCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((this._parameterInputCache?.length ?? 0) < model.getParameterCount()) {
|
if ((this._parameterInputCaches?.length ?? 0) < model.getParameterCount()) {
|
||||||
this._parameterInputCache = new Float32Array(model.getParameterCount());
|
this._parameterInputCaches = new Float32Array(model.getParameterCount());
|
||||||
for (let j = 0; j < model.getParameterCount(); ++j) {
|
for (let j = 0; j < model.getParameterCount(); ++j) {
|
||||||
this._parameterInputCache[j] = parameterValue[j];
|
this._parameterInputCaches[j] = parameterValues[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -356,12 +525,12 @@ export class CubismPhysics {
|
||||||
++settingIndex
|
++settingIndex
|
||||||
) {
|
) {
|
||||||
currentSetting = this._physicsRig.settings.at(settingIndex);
|
currentSetting = this._physicsRig.settings.at(settingIndex);
|
||||||
currentOutput = this._physicsRig.outputs.get(
|
currentOutputs = this._physicsRig.outputs.get(
|
||||||
currentSetting.baseOutputIndex
|
currentSetting.baseOutputIndex
|
||||||
);
|
);
|
||||||
for (let i = 0; i < currentSetting.outputCount; ++i) {
|
for (let i = 0; i < currentSetting.outputCount; ++i) {
|
||||||
this._previousRigOutputs.at(settingIndex).output[i] =
|
this._previousRigOutputs.at(settingIndex).outputs[i] =
|
||||||
this._currentRigOutputs.at(settingIndex).output[i];
|
this._currentRigOutputs.at(settingIndex).outputs[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,10 +540,10 @@ export class CubismPhysics {
|
||||||
// _parameterCache needs to be separated from _parameterInputCache because of its role in propagating values between groups.
|
// _parameterCache needs to be separated from _parameterInputCache because of its role in propagating values between groups.
|
||||||
const inputWeight = physicsDeltaTime / this._currentRemainTime;
|
const inputWeight = physicsDeltaTime / this._currentRemainTime;
|
||||||
for (let j = 0; j < model.getParameterCount(); ++j) {
|
for (let j = 0; j < model.getParameterCount(); ++j) {
|
||||||
this._parameterCache[j] =
|
this._parameterCaches[j] =
|
||||||
this._parameterInputCache[j] * (1.0 - inputWeight) +
|
this._parameterInputCaches[j] * (1.0 - inputWeight) +
|
||||||
parameterValue[j] * inputWeight;
|
parameterValues[j] * inputWeight;
|
||||||
this._parameterInputCache[j] = this._parameterCache[j];
|
this._parameterInputCaches[j] = this._parameterCaches[j];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (
|
for (
|
||||||
|
@ -386,10 +555,10 @@ export class CubismPhysics {
|
||||||
totalTranslation.x = 0.0;
|
totalTranslation.x = 0.0;
|
||||||
totalTranslation.y = 0.0;
|
totalTranslation.y = 0.0;
|
||||||
currentSetting = this._physicsRig.settings.at(settingIndex);
|
currentSetting = this._physicsRig.settings.at(settingIndex);
|
||||||
currentInput = this._physicsRig.inputs.get(
|
currentInputs = this._physicsRig.inputs.get(
|
||||||
currentSetting.baseInputIndex
|
currentSetting.baseInputIndex
|
||||||
);
|
);
|
||||||
currentOutput = this._physicsRig.outputs.get(
|
currentOutputs = this._physicsRig.outputs.get(
|
||||||
currentSetting.baseOutputIndex
|
currentSetting.baseOutputIndex
|
||||||
);
|
);
|
||||||
currentParticles = this._physicsRig.particles.get(
|
currentParticles = this._physicsRig.particles.get(
|
||||||
|
@ -398,24 +567,24 @@ export class CubismPhysics {
|
||||||
|
|
||||||
// Load input parameters
|
// Load input parameters
|
||||||
for (let i = 0; i < currentSetting.inputCount; ++i) {
|
for (let i = 0; i < currentSetting.inputCount; ++i) {
|
||||||
weight = currentInput[i].weight / MaximumWeight;
|
weight = currentInputs[i].weight / MaximumWeight;
|
||||||
|
|
||||||
if (currentInput[i].sourceParameterIndex == -1) {
|
if (currentInputs[i].sourceParameterIndex == -1) {
|
||||||
currentInput[i].sourceParameterIndex = model.getParameterIndex(
|
currentInputs[i].sourceParameterIndex = model.getParameterIndex(
|
||||||
currentInput[i].source.id
|
currentInputs[i].source.id
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
currentInput[i].getNormalizedParameterValue(
|
currentInputs[i].getNormalizedParameterValue(
|
||||||
totalTranslation,
|
totalTranslation,
|
||||||
totalAngle,
|
totalAngle,
|
||||||
this._parameterCache[currentInput[i].sourceParameterIndex],
|
this._parameterCaches[currentInputs[i].sourceParameterIndex],
|
||||||
parameterMinimumValue[currentInput[i].sourceParameterIndex],
|
parameterMinimumValues[currentInputs[i].sourceParameterIndex],
|
||||||
parameterMaximumValue[currentInput[i].sourceParameterIndex],
|
parameterMaximumValues[currentInputs[i].sourceParameterIndex],
|
||||||
parameterDefaultValue[currentInput[i].sourceParameterIndex],
|
parameterDefaultValues[currentInputs[i].sourceParameterIndex],
|
||||||
currentSetting.normalizationPosition,
|
currentSetting.normalizationPosition,
|
||||||
currentSetting.normalizationAngle,
|
currentSetting.normalizationAngle,
|
||||||
currentInput[i].reflect,
|
currentInputs[i].reflect,
|
||||||
weight
|
weight
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -443,11 +612,11 @@ export class CubismPhysics {
|
||||||
|
|
||||||
// Update output parameters.
|
// Update output parameters.
|
||||||
for (let i = 0; i < currentSetting.outputCount; ++i) {
|
for (let i = 0; i < currentSetting.outputCount; ++i) {
|
||||||
const particleIndex = currentOutput[i].vertexIndex;
|
const particleIndex = currentOutputs[i].vertexIndex;
|
||||||
|
|
||||||
if (currentOutput[i].destinationParameterIndex == -1) {
|
if (currentOutputs[i].destinationParameterIndex == -1) {
|
||||||
currentOutput[i].destinationParameterIndex =
|
currentOutputs[i].destinationParameterIndex =
|
||||||
model.getParameterIndex(currentOutput[i].destination.id);
|
model.getParameterIndex(currentOutputs[i].destination.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -465,43 +634,43 @@ export class CubismPhysics {
|
||||||
currentParticles[particleIndex].position.y -
|
currentParticles[particleIndex].position.y -
|
||||||
currentParticles[particleIndex - 1].position.y;
|
currentParticles[particleIndex - 1].position.y;
|
||||||
|
|
||||||
outputValue = currentOutput[i].getValue(
|
outputValue = currentOutputs[i].getValue(
|
||||||
translation,
|
translation,
|
||||||
currentParticles,
|
currentParticles,
|
||||||
particleIndex,
|
particleIndex,
|
||||||
currentOutput[i].reflect,
|
currentOutputs[i].reflect,
|
||||||
this._options.gravity
|
this._options.gravity
|
||||||
);
|
);
|
||||||
|
|
||||||
this._currentRigOutputs.at(settingIndex).output[i] = outputValue;
|
this._currentRigOutputs.at(settingIndex).outputs[i] = outputValue;
|
||||||
|
|
||||||
const destinationParameterIndex: number =
|
const destinationParameterIndex: number =
|
||||||
currentOutput[i].destinationParameterIndex;
|
currentOutputs[i].destinationParameterIndex;
|
||||||
const outParameterCache: Float32Array =
|
const outParameterCaches: Float32Array =
|
||||||
!Float32Array.prototype.slice &&
|
!Float32Array.prototype.slice &&
|
||||||
'subarray' in Float32Array.prototype
|
'subarray' in Float32Array.prototype
|
||||||
? JSON.parse(
|
? JSON.parse(
|
||||||
JSON.stringify(
|
JSON.stringify(
|
||||||
this._parameterCache.subarray(destinationParameterIndex)
|
this._parameterCaches.subarray(destinationParameterIndex)
|
||||||
)
|
)
|
||||||
) // 値渡しするため、JSON.parse, JSON.stringify
|
) // 値渡しするため、JSON.parse, JSON.stringify
|
||||||
: this._parameterCache.slice(destinationParameterIndex);
|
: this._parameterCaches.slice(destinationParameterIndex);
|
||||||
|
|
||||||
updateOutputParameterValue(
|
updateOutputParameterValue(
|
||||||
outParameterCache,
|
outParameterCaches,
|
||||||
parameterMinimumValue[destinationParameterIndex],
|
parameterMinimumValues[destinationParameterIndex],
|
||||||
parameterMaximumValue[destinationParameterIndex],
|
parameterMaximumValues[destinationParameterIndex],
|
||||||
outputValue,
|
outputValue,
|
||||||
currentOutput[i]
|
currentOutputs[i]
|
||||||
);
|
);
|
||||||
|
|
||||||
// 値を反映
|
// 値を反映
|
||||||
for (
|
for (
|
||||||
let offset: number = destinationParameterIndex, outParamIndex = 0;
|
let offset: number = destinationParameterIndex, outParamIndex = 0;
|
||||||
offset < this._parameterCache.length;
|
offset < this._parameterCaches.length;
|
||||||
offset++, outParamIndex++
|
offset++, outParamIndex++
|
||||||
) {
|
) {
|
||||||
this._parameterCache[offset] = outParameterCache[outParamIndex];
|
this._parameterCaches[offset] = outParameterCaches[outParamIndex];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -519,15 +688,15 @@ export class CubismPhysics {
|
||||||
* @param weight 最新結果の重み
|
* @param weight 最新結果の重み
|
||||||
*/
|
*/
|
||||||
public interpolate(model: CubismModel, weight: number): void {
|
public interpolate(model: CubismModel, weight: number): void {
|
||||||
let currentOutput: CubismPhysicsOutput[];
|
let currentOutputs: CubismPhysicsOutput[];
|
||||||
let currentSetting: CubismPhysicsSubRig;
|
let currentSetting: CubismPhysicsSubRig;
|
||||||
let parameterValue: Float32Array;
|
let parameterValues: Float32Array;
|
||||||
let parameterMaximumValue: Float32Array;
|
let parameterMaximumValues: Float32Array;
|
||||||
let parameterMinimumValue: Float32Array;
|
let parameterMinimumValues: Float32Array;
|
||||||
|
|
||||||
parameterValue = model.getModel().parameters.values;
|
parameterValues = model.getModel().parameters.values;
|
||||||
parameterMaximumValue = model.getModel().parameters.maximumValues;
|
parameterMaximumValues = model.getModel().parameters.maximumValues;
|
||||||
parameterMinimumValue = model.getModel().parameters.minimumValues;
|
parameterMinimumValues = model.getModel().parameters.minimumValues;
|
||||||
|
|
||||||
for (
|
for (
|
||||||
let settingIndex = 0;
|
let settingIndex = 0;
|
||||||
|
@ -535,43 +704,43 @@ export class CubismPhysics {
|
||||||
++settingIndex
|
++settingIndex
|
||||||
) {
|
) {
|
||||||
currentSetting = this._physicsRig.settings.at(settingIndex);
|
currentSetting = this._physicsRig.settings.at(settingIndex);
|
||||||
currentOutput = this._physicsRig.outputs.get(
|
currentOutputs = this._physicsRig.outputs.get(
|
||||||
currentSetting.baseOutputIndex
|
currentSetting.baseOutputIndex
|
||||||
);
|
);
|
||||||
|
|
||||||
// Load input parameters.
|
// Load input parameters.
|
||||||
for (let i = 0; i < currentSetting.outputCount; ++i) {
|
for (let i = 0; i < currentSetting.outputCount; ++i) {
|
||||||
if (currentOutput[i].destinationParameterIndex == -1) {
|
if (currentOutputs[i].destinationParameterIndex == -1) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const destinationParameterIndex: number =
|
const destinationParameterIndex: number =
|
||||||
currentOutput[i].destinationParameterIndex;
|
currentOutputs[i].destinationParameterIndex;
|
||||||
const outParameterValue: Float32Array =
|
const outParameterValues: Float32Array =
|
||||||
!Float32Array.prototype.slice && 'subarray' in Float32Array.prototype
|
!Float32Array.prototype.slice && 'subarray' in Float32Array.prototype
|
||||||
? JSON.parse(
|
? JSON.parse(
|
||||||
JSON.stringify(
|
JSON.stringify(
|
||||||
parameterValue.subarray(destinationParameterIndex)
|
parameterValues.subarray(destinationParameterIndex)
|
||||||
)
|
)
|
||||||
) // 値渡しするため、JSON.parse, JSON.stringify
|
) // 値渡しするため、JSON.parse, JSON.stringify
|
||||||
: parameterValue.slice(destinationParameterIndex);
|
: parameterValues.slice(destinationParameterIndex);
|
||||||
|
|
||||||
updateOutputParameterValue(
|
updateOutputParameterValue(
|
||||||
outParameterValue,
|
outParameterValues,
|
||||||
parameterMinimumValue[destinationParameterIndex],
|
parameterMinimumValues[destinationParameterIndex],
|
||||||
parameterMaximumValue[destinationParameterIndex],
|
parameterMaximumValues[destinationParameterIndex],
|
||||||
this._previousRigOutputs.at(settingIndex).output[i] * (1 - weight) +
|
this._previousRigOutputs.at(settingIndex).outputs[i] * (1 - weight) +
|
||||||
this._currentRigOutputs.at(settingIndex).output[i] * weight,
|
this._currentRigOutputs.at(settingIndex).outputs[i] * weight,
|
||||||
currentOutput[i]
|
currentOutputs[i]
|
||||||
);
|
);
|
||||||
|
|
||||||
// 値を反映
|
// 値を反映
|
||||||
for (
|
for (
|
||||||
let offset: number = destinationParameterIndex, outParamIndex = 0;
|
let offset: number = destinationParameterIndex, outParamIndex = 0;
|
||||||
offset < parameterValue.length;
|
offset < parameterValues.length;
|
||||||
offset++, outParamIndex++
|
offset++, outParamIndex++
|
||||||
) {
|
) {
|
||||||
parameterValue[offset] = outParameterValue[outParamIndex];
|
parameterValues[offset] = outParameterValues[outParamIndex];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -608,8 +777,8 @@ export class CubismPhysics {
|
||||||
this._currentRigOutputs = new csmVector<PhysicsOutput>();
|
this._currentRigOutputs = new csmVector<PhysicsOutput>();
|
||||||
this._previousRigOutputs = new csmVector<PhysicsOutput>();
|
this._previousRigOutputs = new csmVector<PhysicsOutput>();
|
||||||
this._currentRemainTime = 0.0;
|
this._currentRemainTime = 0.0;
|
||||||
this._parameterCache = null;
|
this._parameterCaches = null;
|
||||||
this._parameterInputCache = null;
|
this._parameterInputCaches = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -679,8 +848,8 @@ export class CubismPhysics {
|
||||||
|
|
||||||
_currentRemainTime: number; ///< 物理演算が処理していない時間
|
_currentRemainTime: number; ///< 物理演算が処理していない時間
|
||||||
|
|
||||||
_parameterCache: Float32Array; ///< Evaluateで利用するパラメータのキャッシュ
|
_parameterCaches: Float32Array; ///< Evaluateで利用するパラメータのキャッシュ
|
||||||
_parameterInputCache: Float32Array; ///< UpdateParticlesが動くときの入力をキャッシュ
|
_parameterInputCaches: Float32Array; ///< UpdateParticlesが動くときの入力をキャッシュ
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -701,10 +870,10 @@ export class Options {
|
||||||
*/
|
*/
|
||||||
export class PhysicsOutput {
|
export class PhysicsOutput {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.output = new csmVector<number>(0);
|
this.outputs = new csmVector<number>(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
output: csmVector<number>; // 物理演算出力結果
|
outputs: csmVector<number>; // 物理演算出力結果
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -990,6 +1159,66 @@ function updateParticles(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates particles for stabilization.
|
||||||
|
*
|
||||||
|
* @param strand Target array of particle.
|
||||||
|
* @param strandCount Count of particle.
|
||||||
|
* @param totalTranslation Total translation value.
|
||||||
|
* @param totalAngle Total angle.
|
||||||
|
* @param windDirection Direction of Wind.
|
||||||
|
* @param thresholdValue Threshold of movement.
|
||||||
|
*/
|
||||||
|
function updateParticlesForStabilization(
|
||||||
|
strand: CubismPhysicsParticle[],
|
||||||
|
strandCount: number,
|
||||||
|
totalTranslation: CubismVector2,
|
||||||
|
totalAngle: number,
|
||||||
|
windDirection: CubismVector2,
|
||||||
|
thresholdValue: number
|
||||||
|
) {
|
||||||
|
let totalRadian: number;
|
||||||
|
let currentGravity: CubismVector2;
|
||||||
|
let force: CubismVector2 = new CubismVector2(0.0, 0.0);
|
||||||
|
|
||||||
|
strand[0].position = new CubismVector2(
|
||||||
|
totalTranslation.x,
|
||||||
|
totalTranslation.y
|
||||||
|
);
|
||||||
|
|
||||||
|
totalRadian = CubismMath.degreesToRadian(totalAngle);
|
||||||
|
currentGravity = CubismMath.radianToDirection(totalRadian);
|
||||||
|
currentGravity.normalize();
|
||||||
|
|
||||||
|
for (let i = 1; i < strandCount; ++i) {
|
||||||
|
strand[i].force = currentGravity
|
||||||
|
.multiplyByScaler(strand[i].acceleration)
|
||||||
|
.add(windDirection);
|
||||||
|
|
||||||
|
strand[i].lastPosition = new CubismVector2(
|
||||||
|
strand[i].position.x,
|
||||||
|
strand[i].position.y
|
||||||
|
);
|
||||||
|
|
||||||
|
strand[i].velocity = new CubismVector2(0.0, 0.0);
|
||||||
|
force = strand[i].force;
|
||||||
|
force.normalize();
|
||||||
|
|
||||||
|
force = force.multiplyByScaler(strand[i].radius);
|
||||||
|
strand[i].position = strand[i - 1].position.add(force);
|
||||||
|
|
||||||
|
if (CubismMath.abs(strand[i].position.x) < thresholdValue) {
|
||||||
|
strand[i].position.x = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
strand[i].force = new CubismVector2(0.0, 0.0);
|
||||||
|
strand[i].lastGravity = new CubismVector2(
|
||||||
|
currentGravity.x,
|
||||||
|
currentGravity.y
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates output parameter value.
|
* Updates output parameter value.
|
||||||
* @param parameterValue Target parameter value.
|
* @param parameterValue Target parameter value.
|
||||||
|
|
|
@ -235,7 +235,7 @@ export class CubismJson {
|
||||||
this._root = null;
|
this._root = null;
|
||||||
|
|
||||||
if (buffer != undefined) {
|
if (buffer != undefined) {
|
||||||
this.parseBytes(buffer, length);
|
this.parseBytes(buffer, length, this._parseCallback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,7 +248,11 @@ export class CubismJson {
|
||||||
*/
|
*/
|
||||||
public static create(buffer: ArrayBuffer, size: number) {
|
public static create(buffer: ArrayBuffer, size: number) {
|
||||||
const json = new CubismJson();
|
const json = new CubismJson();
|
||||||
const succeeded: boolean = json.parseBytes(buffer, size);
|
const succeeded: boolean = json.parseBytes(
|
||||||
|
buffer,
|
||||||
|
size,
|
||||||
|
json._parseCallback
|
||||||
|
);
|
||||||
|
|
||||||
if (!succeeded) {
|
if (!succeeded) {
|
||||||
CubismJson.delete(json);
|
CubismJson.delete(json);
|
||||||
|
@ -280,7 +284,7 @@ export class CubismJson {
|
||||||
* @param buffer 変換するバイナリデータ
|
* @param buffer 変換するバイナリデータ
|
||||||
* @return 変換後の文字列
|
* @return 変換後の文字列
|
||||||
*/
|
*/
|
||||||
public arrayBufferToString(buffer: ArrayBuffer): string {
|
public static arrayBufferToString(buffer: ArrayBuffer): string {
|
||||||
const uint8Array: Uint8Array = new Uint8Array(buffer);
|
const uint8Array: Uint8Array = new Uint8Array(buffer);
|
||||||
let str = '';
|
let str = '';
|
||||||
|
|
||||||
|
@ -295,7 +299,7 @@ export class CubismJson {
|
||||||
/**
|
/**
|
||||||
* エンコード、パディング
|
* エンコード、パディング
|
||||||
*/
|
*/
|
||||||
private pad(n: string): string {
|
private static pad(n: string): string {
|
||||||
return n.length < 2 ? '0' + n : n;
|
return n.length < 2 ? '0' + n : n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,10 +310,20 @@ export class CubismJson {
|
||||||
* return true : 成功
|
* return true : 成功
|
||||||
* return false: 失敗
|
* return false: 失敗
|
||||||
*/
|
*/
|
||||||
public parseBytes(buffer: ArrayBuffer, size: number): boolean {
|
public parseBytes(
|
||||||
|
buffer: ArrayBuffer,
|
||||||
|
size: number,
|
||||||
|
parseCallback?: parseJsonObject
|
||||||
|
): boolean {
|
||||||
const endPos: number[] = new Array<number>(1); // 参照渡しにするため配列
|
const endPos: number[] = new Array<number>(1); // 参照渡しにするため配列
|
||||||
const decodeBuffer: string = this.arrayBufferToString(buffer);
|
const decodeBuffer: string = CubismJson.arrayBufferToString(buffer);
|
||||||
|
|
||||||
|
if (parseCallback == undefined) {
|
||||||
this._root = this.parseValue(decodeBuffer, size, 0, endPos);
|
this._root = this.parseValue(decodeBuffer, size, 0, endPos);
|
||||||
|
} else {
|
||||||
|
// TypeScript標準のJSONパーサを使う
|
||||||
|
this._root = parseCallback(JSON.parse(decodeBuffer), new JsonMap());
|
||||||
|
}
|
||||||
|
|
||||||
if (this._error) {
|
if (this._error) {
|
||||||
let strbuf = '\0';
|
let strbuf = '\0';
|
||||||
|
@ -704,11 +718,17 @@ export class CubismJson {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_parseCallback: parseJsonObject = CubismJsonExtension.parseJsonObject; // パース時に使う処理のコールバック関数
|
||||||
|
|
||||||
_error: string; // パース時のエラー
|
_error: string; // パース時のエラー
|
||||||
_lineCount: number; // エラー報告に用いる行数カウント
|
_lineCount: number; // エラー報告に用いる行数カウント
|
||||||
_root: Value; // パースされたルート要素
|
_root: Value; // パースされたルート要素
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface parseJsonObject {
|
||||||
|
(obj: Value, map: JsonMap): JsonMap;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* パースしたJSONの要素をfloat値として扱う
|
* パースしたJSONの要素をfloat値として扱う
|
||||||
*/
|
*/
|
||||||
|
@ -1230,6 +1250,7 @@ export class JsonMap extends Value {
|
||||||
|
|
||||||
// Namespace definition for compatibility.
|
// Namespace definition for compatibility.
|
||||||
import * as $ from './cubismjson';
|
import * as $ from './cubismjson';
|
||||||
|
import { CubismJsonExtension } from './cubismjsonextension';
|
||||||
// eslint-disable-next-line @typescript-eslint/no-namespace
|
// eslint-disable-next-line @typescript-eslint/no-namespace
|
||||||
export namespace Live2DCubismFramework {
|
export namespace Live2DCubismFramework {
|
||||||
export const CubismJson = $.CubismJson;
|
export const CubismJson = $.CubismJson;
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
/**
|
||||||
|
* Copyright(c) Live2D Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by the Live2D Open Software license
|
||||||
|
* that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
JsonArray,
|
||||||
|
JsonBoolean,
|
||||||
|
JsonFloat,
|
||||||
|
JsonMap,
|
||||||
|
JsonNullvalue,
|
||||||
|
JsonString,
|
||||||
|
Value,
|
||||||
|
} from './cubismjson';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CubismJsonで実装されているJsonパーサを使用せず、
|
||||||
|
* TypeScript標準のJsonパーサなどを使用し出力された結果を
|
||||||
|
* Cubism SDKで定義されているJSONエレメントの要素に
|
||||||
|
* 置き換える処理をするクラス。
|
||||||
|
*/
|
||||||
|
export class CubismJsonExtension {
|
||||||
|
static parseJsonObject(obj: Value, map: JsonMap) {
|
||||||
|
Object.keys(obj).forEach((key) => {
|
||||||
|
if (typeof obj[key] == 'boolean') {
|
||||||
|
map.put(key, new JsonBoolean(obj[key]));
|
||||||
|
} else if (typeof obj[key] == 'string') {
|
||||||
|
map.put(key, new JsonString(obj[key]));
|
||||||
|
} else if (typeof obj[key] == 'number') {
|
||||||
|
map.put(key, new JsonFloat(obj[key]));
|
||||||
|
} else if (obj[key] instanceof Array) {
|
||||||
|
map.put(key, CubismJsonExtension.parseJsonArray(obj[key]));
|
||||||
|
} else if (obj[key] instanceof Object) {
|
||||||
|
map.put(
|
||||||
|
key,
|
||||||
|
CubismJsonExtension.parseJsonObject(obj[key], new JsonMap())
|
||||||
|
);
|
||||||
|
} else if (obj[key] == null) {
|
||||||
|
map.put(key, new JsonNullvalue());
|
||||||
|
} else {
|
||||||
|
// どれにも当てはまらない場合でも処理する
|
||||||
|
map.put(key, obj[key]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static parseJsonArray(obj: Value) {
|
||||||
|
const arr = new JsonArray();
|
||||||
|
Object.keys(obj).forEach((key) => {
|
||||||
|
const convKey = Number(key);
|
||||||
|
if (typeof convKey == 'number') {
|
||||||
|
if (typeof obj[convKey] == 'boolean') {
|
||||||
|
arr.add(new JsonBoolean(obj[convKey]));
|
||||||
|
} else if (typeof obj[convKey] == 'string') {
|
||||||
|
arr.add(new JsonString(obj[convKey]));
|
||||||
|
} else if (typeof obj[convKey] == 'number') {
|
||||||
|
arr.add(new JsonFloat(obj[convKey]));
|
||||||
|
} else if (obj[key] instanceof Array) {
|
||||||
|
arr.add(this.parseJsonArray(obj[key]));
|
||||||
|
} else if (obj[key] instanceof Object) {
|
||||||
|
arr.add(this.parseJsonObject(obj[key], new JsonMap()));
|
||||||
|
} else if (obj[key] == null) {
|
||||||
|
arr.add(new JsonNullvalue());
|
||||||
|
} else {
|
||||||
|
// どれにも当てはまらない場合でも処理する
|
||||||
|
arr.add(obj[key]);
|
||||||
|
}
|
||||||
|
} else if (obj[key] instanceof Array) {
|
||||||
|
arr.add(this.parseJsonArray(obj[key]));
|
||||||
|
} else if (obj[key] instanceof Object) {
|
||||||
|
arr.add(this.parseJsonObject(obj[key], new JsonMap()));
|
||||||
|
} else if (obj[key] == null) {
|
||||||
|
arr.add(new JsonNullvalue());
|
||||||
|
} else {
|
||||||
|
// 配列ともObjectとも判定できなかった場合でも処理する
|
||||||
|
for (let i = 0; i < obj[key].length; i++) {
|
||||||
|
arr.add(obj[key][i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue