diff --git a/CHANGELOG.md b/CHANGELOG.md index e59f810..9f2559a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,26 @@ 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/). +## [4-r.7] - 2023-05-25 + +### Added + +* Add some functions for checking consistency of MOC3 files. + * Add the function of checking consistency in `LAppModel::SetupModel()`. + * Add the function of checking consistency before loading a model. (`LAppModel::HasMocConsistencyFromFile()`) + * This feature is enabled by default.Please see the following manual for more information. + * https://docs.live2d.com/cubism-sdk-manual/moc3-consistency/ + +### Changed + +* Change so that when `USE_MODEL_RENDER_TARGET` is defined, one model will apply the opacity obtained from the motion. + +### Fixed + +* Fix a problem in which `haru` motion and voice were incorrect combination. +* Fix opacity of drawn models when using `USE_RENDER_TARGET` macro. + + ## [4-r.6.2] - 2023-03-16 ### Changed @@ -285,6 +305,7 @@ See [Core Changelog] for details. * What was `Package.json` is currently being changed to`cubism-info.yml`. +[4-r.7]: https://github.com/Live2D/CubismNativeSamples/compare/4-r.6.2...4-r.7 [4-r.6.2]: https://github.com/Live2D/CubismNativeSamples/compare/4-r.6.1...4-r.6.2 [4-r.6.1]: https://github.com/Live2D/CubismNativeSamples/compare/4-r.6...4-r.6.1 [4-r.6]: https://github.com/Live2D/CubismNativeSamples/compare/4-r.5.1...4-r.6 diff --git a/Framework b/Framework index f79a724..3ad80ca 160000 --- a/Framework +++ b/Framework @@ -1 +1 @@ -Subproject commit f79a72421bf4cd7f09e7eac06fd4dee78445836a +Subproject commit 3ad80ca2bc5e4b058aea150e309a5aec5e62a9f2 diff --git a/README.ja.md b/README.ja.md index c546b00..f5ad4f3 100644 --- a/README.ja.md +++ b/README.ja.md @@ -99,14 +99,14 @@ Demo | 開発ツール | バージョン | | --- | --- | -| Android Studio | Electric Eel 2022.1.1 Patch 1 | -| CMake | 3.25.2 | +| Android Studio | Flamingo 2022.2.1 Patch 1 | +| CMake | 3.26.3 | | Visual Studio 2013 | Update 5 | | Visual Studio 2015 | Update 3 | -| Visual Studio 2017 | 15.9.51 | -| Visual Studio 2019 | 16.11.23 | -| Visual Studio 2022 | 17.4.4 | -| XCode | 14.2 | +| Visual Studio 2017 | 15.9.54 | +| Visual Studio 2019 | 16.11.26 | +| Visual Studio 2022 | 17.5.5 | +| XCode | 14.3 | ### Android @@ -125,7 +125,7 @@ Demo | Red Hat | CentOS Stream 8 *1 | `centos:latest` | 8.5.0 | | Red Hat | CentOS Stream 9 | - | 11.3.1 | | Debian | Ubuntu 18.04 | `ubuntu:18.04` | 7.5.0 | -| Debian | Ubuntu 22.04.1 | `ubuntu:22.04.1` | 11.3.0 | +| Debian | Ubuntu 22.04.2 | `ubuntu:22.04.2` | 11.3.0 | *1 CentOS 8はサポートしておりません @@ -143,10 +143,10 @@ Demo | プラットフォーム | バージョン | | --- | --- | -| iOS / iPadOS | 16.3 | -| macOS | 13.2 | -| Windows 10 | 21H2 | -| Windows 11 | 21H2 | +| iOS / iPadOS | 16.4.1 | +| macOS | 13.3 | +| Windows 10 | 22H2 | +| Windows 11 | 22H2 | ### Android @@ -162,7 +162,7 @@ Demo | Red Hat | Amazon Linux | 2 | | Red Hat | CentOS Stream | 8 | | Red Hat | CentOS Stream | 9 | -| Debian | Ubuntu | 22.04.1 | +| Debian | Ubuntu | 22.04.2 | ## プロジェクトへの貢献 diff --git a/README.md b/README.md index ae53b04..03cddf6 100644 --- a/README.md +++ b/README.md @@ -98,14 +98,14 @@ Please refer to [CHANGELOG.md](CHANGELOG.md) for the changelog of this repositor | Development Tool | Version | | --- | --- | -| Android Studio | Electric Eel 2022.1.1 Patch 1 | -| CMake | 3.25.2 | +| Android Studio | Flamingo 2022.2.1 Patch 1 | +| CMake | 3.26.3 | | Visual Studio 2013 | Update 5 | | Visual Studio 2015 | Update 3 | -| Visual Studio 2017 | 15.9.51 | -| Visual Studio 2019 | 16.11.23 | -| Visual Studio 2022 | 17.4.4 | -| XCode | 14.2 | +| Visual Studio 2017 | 15.9.54 | +| Visual Studio 2019 | 16.11.26 | +| Visual Studio 2022 | 17.5.5 | +| XCode | 14.3 | ### Android @@ -142,10 +142,10 @@ Please refer to [CHANGELOG.md](CHANGELOG.md) for the changelog of this repositor | Platform | Version | | --- | --- | -| iOS / iPadOS | 16.3 | -| macOS | 13.2 | -| Windows 10 | 21H2 | -| Windows 11 | 21H2 | +| iOS / iPadOS | 16.4.1 | +| macOS | 13.3 | +| Windows 10 | 22H2 | +| Windows 11 | 22H2 | ### Android diff --git a/Samples/Cocos2d-x/Demo/CMakeLists.txt b/Samples/Cocos2d-x/Demo/CMakeLists.txt index f352c94..c42671a 100644 --- a/Samples/Cocos2d-x/Demo/CMakeLists.txt +++ b/Samples/Cocos2d-x/Demo/CMakeLists.txt @@ -258,7 +258,7 @@ if(APPLE) set_xcode_property(${APP_NAME} ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon") set_xcode_property(${APP_NAME} DEVELOPMENT_TEAM "") set_xcode_property(${APP_NAME} CODE_SIGN_IDENTITY "iPhone Developer") - set_xcode_property(${APP_NAME} PRODUCT_BUNDLE_IDENTIFIER "com.live2d.demo-4-r6-cocos2dx") + set_xcode_property(${APP_NAME} PRODUCT_BUNDLE_IDENTIFIER "com.live2d.demo-4-r7-cocos2dx") set_xcode_property(${APP_NAME} TARGETED_DEVICE_FAMILY "1,2") set_xcode_property(${APP_NAME} ONLY_ACTIVE_ARCH "NO") set_xcode_property(${APP_NAME} ARCHS "arm64") diff --git a/Samples/Cocos2d-x/Demo/Classes/LAppDefine.cpp b/Samples/Cocos2d-x/Demo/Classes/LAppDefine.cpp index 87aa055..d1ba80c 100644 --- a/Samples/Cocos2d-x/Demo/Classes/LAppDefine.cpp +++ b/Samples/Cocos2d-x/Demo/Classes/LAppDefine.cpp @@ -57,6 +57,9 @@ namespace LAppDefine { const csmInt32 PriorityNormal = 2; const csmInt32 PriorityForce = 3; + // MOC3の整合性検証オプション + const csmBool MocConsistencyValidationEnable = true; + // デバッグ用ログの表示オプション const csmBool DebugLogEnable = true; const csmBool DebugTouchLogEnable = false; diff --git a/Samples/Cocos2d-x/Demo/Classes/LAppDefine.hpp b/Samples/Cocos2d-x/Demo/Classes/LAppDefine.hpp index 9bf8e59..2777d88 100644 --- a/Samples/Cocos2d-x/Demo/Classes/LAppDefine.hpp +++ b/Samples/Cocos2d-x/Demo/Classes/LAppDefine.hpp @@ -51,6 +51,8 @@ namespace LAppDefine { extern const csmInt32 PriorityNormal; ///< モーションの優先度定数: 2 extern const csmInt32 PriorityForce; ///< モーションの優先度定数: 3 + extern const csmBool MocConsistencyValidationEnable; ///< MOC3の整合性検証機能の有効・無効 + // デバッグ用ログの表示 extern const csmBool DebugLogEnable; ///< デバッグ用ログ表示の有効・無効 extern const csmBool DebugTouchLogEnable; ///< タッチ処理のデバッグ用ログ表示の有効・無効 diff --git a/Samples/Cocos2d-x/Demo/Classes/LAppLive2DManager.cpp b/Samples/Cocos2d-x/Demo/Classes/LAppLive2DManager.cpp index c036839..8e99cc4 100644 --- a/Samples/Cocos2d-x/Demo/Classes/LAppLive2DManager.cpp +++ b/Samples/Cocos2d-x/Demo/Classes/LAppLive2DManager.cpp @@ -233,6 +233,16 @@ void LAppLive2DManager::OnUpdate(Csm::Rendering::CubismCommandBuffer_Cocos2dx* c model->Update(); model->Draw(commandBuffer, projection);///< 参照渡しなのでprojectionは変質する + // 各モデルが持つ描画ターゲットをテクスチャとする場合 + if (_renderTarget == SelectTarget_ModelFrameBuffer) + { + // レンダリング先とスプライトを作成 + model->MakeRenderingTarget(); + // αを付ける + float alpha = i < 1 ? 1.0f : model->GetOpacity(); // 片方のみ不透明度を取得できるようにする + model->SetSpriteColor(1.0f, 1.0f, 1.0f, alpha); + } + if (_renderTarget == SelectTarget_ViewFrameBuffer && _renderBuffer && _sprite) {// レンダリングターゲット使いまわしの場合 // レンダリング終了 @@ -311,8 +321,10 @@ void LAppLive2DManager::ChangeScene(Csm::csmInt32 index) { // レンダリング先とスプライトを作成 _models[i]->MakeRenderingTarget(); - // 適当なαを付ける - _models[i]->SetSpriteColor(1.0f, 1.0f, 1.0f, 0.25f + 0.5f*(float)i); + // αを付ける + LAppModel* model = _models[i]; + float alpha = i < 1 ? 1.0f : model->GetOpacity(); // 片方のみ不透明度を取得できるようにする + _models[i]->SetSpriteColor(1.0f, 1.0f, 1.0f, alpha); } } } diff --git a/Samples/Cocos2d-x/Demo/Classes/LAppModel.cpp b/Samples/Cocos2d-x/Demo/Classes/LAppModel.cpp index f4d6d40..d9b295f 100644 --- a/Samples/Cocos2d-x/Demo/Classes/LAppModel.cpp +++ b/Samples/Cocos2d-x/Demo/Classes/LAppModel.cpp @@ -62,6 +62,11 @@ LAppModel::LAppModel() , _userTimeSeconds(0.0f) , _renderSprite(NULL) { + if (MocConsistencyValidationEnable) + { + _mocConsistency = true; + } + if (DebugLogEnable) { _debugMode = true; @@ -161,7 +166,7 @@ void LAppModel::SetupModel(ICubismModelSetting* setting) if (_debugMode)LAppPal::PrintLog("[APP]create model: %s", setting->GetModelFileName()); buffer = CreateBuffer(path.GetRawString(), &size); - LoadModel(buffer, size); + LoadModel(buffer, size, _mocConsistency); DeleteBuffer(buffer, path.GetRawString()); } @@ -416,6 +421,9 @@ void LAppModel::Update() _model->SaveParameters(); // 状態を保存 //----------------------------------------------------------------- + // 不透明度 + _opacity = _model->GetModelOpacity(); + // まばたき if (!motionUpdated) { @@ -819,3 +827,30 @@ void LAppModel::SetSpriteColor(float r, float g, float b, float a) _renderSprite->getSprite()->setOpacity(static_cast(255.0f * a)); } } + +csmBool LAppModel::HasMocConsistencyFromFile(const csmChar* mocFileName) +{ + CSM_ASSERT(strcmp(mocFileName, "")); + + csmByte* buffer; + csmSizeInt size; + + csmString path = mocFileName; + path = _modelHomeDir + path; + + buffer = CreateBuffer(path.GetRawString(), &size); + + csmBool consistency = CubismMoc::HasMocConsistencyFromUnrevivedMoc(buffer, size); + if (!consistency) + { + CubismLogInfo("Inconsistent MOC3."); + } + else + { + CubismLogInfo("Consistent MOC3."); + } + + DeleteBuffer(buffer); + + return consistency; +} diff --git a/Samples/Cocos2d-x/Demo/Classes/LAppModel.hpp b/Samples/Cocos2d-x/Demo/Classes/LAppModel.hpp index 3ed201f..15ea8e3 100644 --- a/Samples/Cocos2d-x/Demo/Classes/LAppModel.hpp +++ b/Samples/Cocos2d-x/Demo/Classes/LAppModel.hpp @@ -129,6 +129,13 @@ class LAppModel : public Csm::CubismUserModel */ void SetSpriteColor(float r, float g, float b, float a); + /** + * @brief .moc3ファイルの整合性をチェックする + * + * @param[in] mocName MOC3ファイル名 + * @return MOC3に整合性があれば'true'、そうでなければ'false'。 + */ + Csm::csmBool HasMocConsistencyFromFile(const Csm::csmChar* mocFileName); protected: /** diff --git a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppDefine.cpp b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppDefine.cpp index 6ed1bd4..901b7e2 100644 --- a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppDefine.cpp +++ b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppDefine.cpp @@ -64,6 +64,9 @@ namespace LAppDefine { const csmInt32 PriorityNormal = 2; const csmInt32 PriorityForce = 3; + // MOC3の整合性検証オプション + const csmBool MocConsistencyValidationEnable = true; + // デバッグ用ログの表示オプション const csmBool DebugLogEnable = true; const csmBool DebugTouchLogEnable = false; diff --git a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppDefine.hpp b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppDefine.hpp index dd67901..037216b 100644 --- a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppDefine.hpp +++ b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppDefine.hpp @@ -53,6 +53,8 @@ namespace LAppDefine { extern const csmInt32 PriorityNormal; ///< モーションの優先度定数: 2 extern const csmInt32 PriorityForce; ///< モーションの優先度定数: 3 + extern const csmBool MocConsistencyValidationEnable; ///< MOC3の整合性検証機能の有効・無効 + // デバッグ用ログの表示 extern const csmBool DebugLogEnable; ///< デバッグ用ログ表示の有効・無効 extern const csmBool DebugTouchLogEnable; ///< タッチ処理のデバッグ用ログ表示の有効・無効 diff --git a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppModel.cpp b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppModel.cpp index b76ed72..0ae8047 100644 --- a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppModel.cpp +++ b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppModel.cpp @@ -51,6 +51,11 @@ LAppModel::LAppModel() , _userTimeSeconds(0.0f) , _deleteModel(false) { + if (MocConsistencyValidationEnable) + { + _mocConsistency = true; + } + if (DebugLogEnable) { _debugMode = true; @@ -139,7 +144,7 @@ void LAppModel::SetupModel(ICubismModelSetting* setting) } buffer = CreateBuffer(path.GetRawString(), &size); - LoadModel(buffer, size); + LoadModel(buffer, size, _mocConsistency); DeleteBuffer(buffer, path.GetRawString()); } @@ -367,6 +372,9 @@ void LAppModel::Update() _model->SaveParameters(); // 状態を保存 //----------------------------------------------------------------- + // 不透明度 + _opacity = _model->GetModelOpacity(); + // まばたき if (!motionUpdated) { @@ -661,3 +669,30 @@ Csm::Rendering::CubismOffscreenFrame_D3D11& LAppModel::GetRenderBuffer() { return _renderBuffer; } + +csmBool LAppModel::HasMocConsistencyFromFile(const csmChar* mocFileName) +{ + CSM_ASSERT(strcmp(mocFileName, "")); + + csmByte* buffer; + csmSizeInt size; + + csmString path = mocFileName; + path = _modelHomeDir + path; + + buffer = CreateBuffer(path.GetRawString(), &size); + + csmBool consistency = CubismMoc::HasMocConsistencyFromUnrevivedMoc(buffer, size); + if (!consistency) + { + CubismLogInfo("Inconsistent MOC3."); + } + else + { + CubismLogInfo("Consistent MOC3."); + } + + DeleteBuffer(buffer); + + return consistency; +} diff --git a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppModel.hpp b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppModel.hpp index 21d5f9d..d12f6cd 100644 --- a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppModel.hpp +++ b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppModel.hpp @@ -122,6 +122,13 @@ class LAppModel : public Csm::CubismUserModel */ Csm::Rendering::CubismOffscreenFrame_D3D11& GetRenderBuffer(); + /** + * @brief .moc3ファイルの整合性をチェックする + * + * @param[in] mocName MOC3ファイル名 + * @return MOC3に整合性があれば'true'、そうでなければ'false'。 + */ + Csm::csmBool HasMocConsistencyFromFile(const Csm::csmChar* mocFileName); protected: /** diff --git a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppView.cpp b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppView.cpp index fa48262..5c3b8c1 100644 --- a/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppView.cpp +++ b/Samples/D3D11/Demo/proj.d3d11.cmake/src/LAppView.cpp @@ -136,10 +136,10 @@ void LAppView::Render() { for(csmUint32 i=0; iGetModelNum(); i++) { - float alpha = GetSpriteAlpha(i); // サンプルとしてαに適当な差をつける + LAppModel* model = live2DManager->GetModel(i); + float alpha = i < 1 ? 1.0f : model->GetOpacity(); // サンプルとしてαに適当な差をつける _renderSprite->SetColor(1.0f, 1.0f, 1.0f, alpha); - LAppModel *model = live2DManager->GetModel(i); if (model) { _renderSprite->RenderImmidiate(width, height, model->GetRenderBuffer().GetTextureView()); diff --git a/Samples/D3D11/README.ja.md b/Samples/D3D11/README.ja.md index a01bbcb..294cc49 100644 --- a/Samples/D3D11/README.ja.md +++ b/Samples/D3D11/README.ja.md @@ -14,7 +14,7 @@ DirectX 11 で実装したアプリケーションのサンプル実装です。 | [DirectXTK] | 2013 | April 23, 2018 | | [DirectXTK] | 2015 | December 17, 2019 | | [DirectXTK] | 2017 | March 24, 2022 | -| [DirectXTK] | 2019 / 2022 | February 6, 2023 | +| [DirectXTK] | 2019 / 2022 | April 28, 2023 | その他の開発環境・動作確認環境はトップディレクトリにある [README.md](/README.ja.md) を参照してください。 diff --git a/Samples/D3D11/README.md b/Samples/D3D11/README.md index b3ead03..ca4552b 100644 --- a/Samples/D3D11/README.md +++ b/Samples/D3D11/README.md @@ -14,7 +14,7 @@ This is a sample implementation of an application implemented with DirectX 11. | [DirectXTK] | 2013 | April 23, 2018 | | [DirectXTK] | 2015 | December 17, 2019 | | [DirectXTK] | 2017 | March 24, 2022 | -| [DirectXTK] | 2019 / 2022 | February 6, 2023 | +| [DirectXTK] | 2019 / 2022 | April 28, 2023 | For other development environments and operation environments, see [README.md](/README.md) in the top directory. diff --git a/Samples/D3D11/thirdParty/scripts/setup_msvc2019.bat b/Samples/D3D11/thirdParty/scripts/setup_msvc2019.bat index 08d81b8..d6bf499 100644 --- a/Samples/D3D11/thirdParty/scripts/setup_msvc2019.bat +++ b/Samples/D3D11/thirdParty/scripts/setup_msvc2019.bat @@ -2,7 +2,7 @@ setlocal -set XTK_VERSION=feb2023 +set XTK_VERSION=apr2023 set SCRIPT_PATH=%~dp0 diff --git a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppDefine.cpp b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppDefine.cpp index 6ed1bd4..901b7e2 100644 --- a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppDefine.cpp +++ b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppDefine.cpp @@ -64,6 +64,9 @@ namespace LAppDefine { const csmInt32 PriorityNormal = 2; const csmInt32 PriorityForce = 3; + // MOC3の整合性検証オプション + const csmBool MocConsistencyValidationEnable = true; + // デバッグ用ログの表示オプション const csmBool DebugLogEnable = true; const csmBool DebugTouchLogEnable = false; diff --git a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppDefine.hpp b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppDefine.hpp index 627a435..3806367 100644 --- a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppDefine.hpp +++ b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppDefine.hpp @@ -53,6 +53,8 @@ namespace LAppDefine { extern const csmInt32 PriorityNormal; ///< モーションの優先度定数: 2 extern const csmInt32 PriorityForce; ///< モーションの優先度定数: 3 + extern const csmBool MocConsistencyValidationEnable; ///< MOC3の整合性検証機能の有効・無効 + // デバッグ用ログの表示 extern const csmBool DebugLogEnable; ///< デバッグ用ログ表示の有効・無効 extern const csmBool DebugTouchLogEnable; ///< タッチ処理のデバッグ用ログ表示の有効・無効 diff --git a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppModel.cpp b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppModel.cpp index 99b9632..072e8af 100644 --- a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppModel.cpp +++ b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppModel.cpp @@ -51,6 +51,11 @@ LAppModel::LAppModel() , _userTimeSeconds(0.0f) , _deleteModel(false) { + if (MocConsistencyValidationEnable) + { + _mocConsistency = true; + } + if (DebugLogEnable) { _debugMode = true; @@ -139,7 +144,7 @@ void LAppModel::SetupModel(ICubismModelSetting* setting) } buffer = CreateBuffer(path.GetRawString(), &size); - LoadModel(buffer, size); + LoadModel(buffer, size, _mocConsistency); DeleteBuffer(buffer, path.GetRawString()); } @@ -377,6 +382,9 @@ void LAppModel::Update() _model->SaveParameters(); // 状態を保存 //----------------------------------------------------------------- + // 不透明度 + _opacity = _model->GetModelOpacity(); + // まばたき if (!motionUpdated) { @@ -680,3 +688,30 @@ void LAppModel::OnDeviceLost() // レンダラー破棄 DeleteRenderer(); } + +csmBool LAppModel::HasMocConsistencyFromFile(const csmChar* mocFileName) +{ + CSM_ASSERT(strcmp(mocFileName, "")); + + csmByte* buffer; + csmSizeInt size; + + csmString path = mocFileName; + path = _modelHomeDir + path; + + buffer = CreateBuffer(path.GetRawString(), &size); + + csmBool consistency = CubismMoc::HasMocConsistencyFromUnrevivedMoc(buffer, size); + if (!consistency) + { + CubismLogInfo("Inconsistent MOC3."); + } + else + { + CubismLogInfo("Consistent MOC3."); + } + + DeleteBuffer(buffer); + + return consistency; +} diff --git a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppModel.hpp b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppModel.hpp index 7837d01..878ebbb 100644 --- a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppModel.hpp +++ b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppModel.hpp @@ -126,6 +126,14 @@ class LAppModel : public Csm::CubismUserModel */ void OnDeviceLost(); + /** + * @brief .moc3ファイルの整合性をチェックする + * + * @param[in] mocName MOC3ファイル名 + * @return MOC3に整合性があれば'true'、そうでなければ'false'。 + */ + Csm::csmBool HasMocConsistencyFromFile(const Csm::csmChar* mocFileName); + protected: /** * @brief モデルを描画する処理。モデルを描画する空間のView-Projection行列を渡す。 diff --git a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppView.cpp b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppView.cpp index bb6fc5b..2c7a088 100644 --- a/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppView.cpp +++ b/Samples/D3D9/Demo/proj.d3d9.cmake/src/LAppView.cpp @@ -144,10 +144,10 @@ void LAppView::Render() { for (csmUint32 i = 0; i < live2DManager->GetModelNum(); i++) { - float alpha = GetSpriteAlpha(i); // サンプルとしてαに適当な差をつける + LAppModel* model = live2DManager->GetModel(i); + float alpha = i < 1 ? 1.0f : model->GetOpacity(); // 片方のみ不透明度を取得できるようにする _renderSprite->SetColor(1.0f, 1.0f, 1.0f, alpha); - LAppModel *model = live2DManager->GetModel(i); if (model) { _renderSprite->RenderImmidiate(LAppDelegate::GetInstance()->GetD3dDevice(), width, height, model->GetRenderBuffer().GetTexture()); diff --git a/Samples/Metal/Demo/proj.ios.cmake/CMakeLists.txt b/Samples/Metal/Demo/proj.ios.cmake/CMakeLists.txt index 02e823e..e3bb44a 100644 --- a/Samples/Metal/Demo/proj.ios.cmake/CMakeLists.txt +++ b/Samples/Metal/Demo/proj.ios.cmake/CMakeLists.txt @@ -133,7 +133,7 @@ if(CSM_MAC_CATALYST) ) else() set_xcode_property(${APP_NAME} - PRODUCT_BUNDLE_IDENTIFIER "com.live2d.demo" "All" + PRODUCT_BUNDLE_IDENTIFIER "com.live2d.demo-4-r7" "All" ) endif() set_xcode_property(${APP_NAME} TARGETED_DEVICE_FAMILY "1,2" "All") diff --git a/Samples/Metal/Demo/proj.ios.cmake/src/LAppDefine.h b/Samples/Metal/Demo/proj.ios.cmake/src/LAppDefine.h index 35a912f..9d982a5 100644 --- a/Samples/Metal/Demo/proj.ios.cmake/src/LAppDefine.h +++ b/Samples/Metal/Demo/proj.ios.cmake/src/LAppDefine.h @@ -56,6 +56,8 @@ namespace LAppDefine { extern const csmInt32 PriorityNormal; ///< モーションの優先度定数: 2 extern const csmInt32 PriorityForce; ///< モーションの優先度定数: 3 + extern const csmBool MocConsistencyValidationEnable; ///< MOC3の整合性検証機能の有効・無効 + // デバッグ用ログの表示 extern const csmBool DebugLogEnable; ///< デバッグ用ログ表示の有効・無効 extern const csmBool DebugTouchLogEnable; ///< タッチ処理のデバッグ用ログ表示の有効・無効 diff --git a/Samples/Metal/Demo/proj.ios.cmake/src/LAppDefine.mm b/Samples/Metal/Demo/proj.ios.cmake/src/LAppDefine.mm index 20a1cae..a55d971 100644 --- a/Samples/Metal/Demo/proj.ios.cmake/src/LAppDefine.mm +++ b/Samples/Metal/Demo/proj.ios.cmake/src/LAppDefine.mm @@ -68,6 +68,9 @@ const csmInt32 PriorityNormal = 2; const csmInt32 PriorityForce = 3; + // MOC3の整合性検証オプション + const csmBool MocConsistencyValidationEnable = true; + // デバッグ用ログの表示オプション const csmBool DebugLogEnable = true; const csmBool DebugTouchLogEnable = false; diff --git a/Samples/Metal/Demo/proj.ios.cmake/src/LAppLive2DManager.mm b/Samples/Metal/Demo/proj.ios.cmake/src/LAppLive2DManager.mm index 4c4d217..7808ac6 100644 --- a/Samples/Metal/Demo/proj.ios.cmake/src/LAppLive2DManager.mm +++ b/Samples/Metal/Demo/proj.ios.cmake/src/LAppLive2DManager.mm @@ -254,7 +254,7 @@ - (void)onUpdate:(id )commandBuffer currentDrawable:(id renderEncoder = [commandBuffer renderCommandEncoderWithDescriptor:renderPassDescriptor]; - [_sprite SetColor:1.0f g:1.0f b:1.0f a:0.25f + (float)i * 0.5f]; + [_sprite SetColor:1.0f g:1.0f b:1.0f a:0.25f]; [_sprite renderImmidiate:renderEncoder]; [renderEncoder endEncoding]; } @@ -276,7 +276,8 @@ - (void)onUpdate:(id )commandBuffer currentDrawable:(idGetRenderBuffer(); LAppSprite* depthSprite = [[LAppSprite alloc] initWithMyVar:width * 0.5f Y:height * 0.5f Width:width Height:height Texture:useTarget.GetColorBuffer()]; - [depthSprite SetColor:1.0f g:1.0f b:1.0f a:0.25f + (float)i * 0.5f]; + float a = i < 1 ? 1.0f : model->GetOpacity(); // 片方のみ不透明度を取得できるようにする + [depthSprite SetColor:1.0f g:1.0f b:1.0f a:a]; [depthSprite renderImmidiate:renderEncoder]; [renderEncoder endEncoding]; [depthSprite dealloc]; diff --git a/Samples/Metal/Demo/proj.ios.cmake/src/LAppModel.h b/Samples/Metal/Demo/proj.ios.cmake/src/LAppModel.h index c8928af..f62e620 100644 --- a/Samples/Metal/Demo/proj.ios.cmake/src/LAppModel.h +++ b/Samples/Metal/Demo/proj.ios.cmake/src/LAppModel.h @@ -113,6 +113,14 @@ class LAppModel : public Csm::CubismUserModel */ Csm::Rendering::CubismOffscreenFrame_Metal& GetRenderBuffer(); + /** + * @brief .moc3ファイルの整合性をチェックする + * + * @param[in] mocName MOC3ファイル名 + * @return MOC3に整合性があれば'true'、そうでなければ'false'。 + */ + Csm::csmBool HasMocConsistencyFromFile(const Csm::csmChar* mocFileName); + protected: /** * @brief モデルを描画する処理。モデルを描画する空間のView-Projection行列を渡す。 diff --git a/Samples/Metal/Demo/proj.ios.cmake/src/LAppModel.mm b/Samples/Metal/Demo/proj.ios.cmake/src/LAppModel.mm index 6f52750..be98409 100644 --- a/Samples/Metal/Demo/proj.ios.cmake/src/LAppModel.mm +++ b/Samples/Metal/Demo/proj.ios.cmake/src/LAppModel.mm @@ -51,6 +51,11 @@ void DeleteBuffer(csmByte* buffer, const csmChar* path = "") , _modelSetting(NULL) , _userTimeSeconds(0.0f) { + if (MocConsistencyValidationEnable) + { + _mocConsistency = true; + } + if (DebugLogEnable) { _debugMode = true; @@ -149,7 +154,7 @@ void DeleteBuffer(csmByte* buffer, const csmChar* path = "") } buffer = CreateBuffer(path.GetRawString(), &size); - LoadModel(buffer, size); + LoadModel(buffer, size, _mocConsistency); DeleteBuffer(buffer, path.GetRawString()); } @@ -377,6 +382,9 @@ void DeleteBuffer(csmByte* buffer, const csmChar* path = "") _model->SaveParameters(); // 状態を保存 //----------------------------------------------------------------- + // 不透明度 + _opacity = _model->GetModelOpacity(); + // まばたき if (!motionUpdated) { @@ -644,3 +652,30 @@ void DeleteBuffer(csmByte* buffer, const csmChar* path = "") { return _renderBuffer; } + +csmBool LAppModel::HasMocConsistencyFromFile(const csmChar* mocFileName) +{ + CSM_ASSERT(strcmp(mocFileName, "")); + + csmByte* buffer; + csmSizeInt size; + + csmString path = mocFileName; + path = _modelHomeDir + path; + + buffer = CreateBuffer(path.GetRawString(), &size); + + csmBool consistency = CubismMoc::HasMocConsistencyFromUnrevivedMoc(buffer, size); + if (!consistency) + { + CubismLogInfo("Inconsistent MOC3."); + } + else + { + CubismLogInfo("Consistent MOC3."); + } + + DeleteBuffer(buffer); + + return consistency; +} diff --git a/Samples/OpenGL/Demo/proj.android.cmake/Full/app/src/main/cpp/LAppModel.cpp b/Samples/OpenGL/Demo/proj.android.cmake/Full/app/src/main/cpp/LAppModel.cpp index 9c98740..a241235 100644 --- a/Samples/OpenGL/Demo/proj.android.cmake/Full/app/src/main/cpp/LAppModel.cpp +++ b/Samples/OpenGL/Demo/proj.android.cmake/Full/app/src/main/cpp/LAppModel.cpp @@ -368,6 +368,9 @@ void LAppModel::Update() _model->SaveParameters(); // 状態を保存 //----------------------------------------------------------------- + // 不透明度 + _opacity = _model->GetModelOpacity(); + // まばたき if (!motionUpdated) { diff --git a/Samples/OpenGL/Demo/proj.android.cmake/Full/app/src/main/cpp/LAppView.cpp b/Samples/OpenGL/Demo/proj.android.cmake/Full/app/src/main/cpp/LAppView.cpp index 8c0d0e8..391b9c5 100644 --- a/Samples/OpenGL/Demo/proj.android.cmake/Full/app/src/main/cpp/LAppView.cpp +++ b/Samples/OpenGL/Demo/proj.android.cmake/Full/app/src/main/cpp/LAppView.cpp @@ -214,10 +214,10 @@ void LAppView::Render() for (csmUint32 i = 0; i < Live2DManager->GetModelNum(); i++) { - float alpha = GetSpriteAlpha(i); // サンプルとしてαに適当な差をつける + LAppModel* model = Live2DManager->GetModel(i); + float alpha = i < 1 ? 1.0f : model->GetOpacity(); // 片方のみ不透明度を取得できるようにする _renderSprite->SetColor(1.0f, 1.0f, 1.0f, alpha); - LAppModel *model = Live2DManager->GetModel(i); if (model) { _renderSprite->RenderImmidiate(model->GetRenderBuffer().GetColorBuffer(), uvVertex); diff --git a/Samples/OpenGL/Demo/proj.ios.cmake/CMakeLists.txt b/Samples/OpenGL/Demo/proj.ios.cmake/CMakeLists.txt index 5930788..0a1446e 100644 --- a/Samples/OpenGL/Demo/proj.ios.cmake/CMakeLists.txt +++ b/Samples/OpenGL/Demo/proj.ios.cmake/CMakeLists.txt @@ -105,7 +105,7 @@ set_xcode_property(${APP_NAME} set_xcode_property(${APP_NAME} DEVELOPMENT_TEAM "" "All") set_xcode_property(${APP_NAME} CODE_SIGN_IDENTITY "iPhone Developer" "All") set_xcode_property(${APP_NAME} - PRODUCT_BUNDLE_IDENTIFIER "com.live2d.demo" "All" + PRODUCT_BUNDLE_IDENTIFIER "com.live2d.demo-4-r7" "All" ) set_xcode_property(${APP_NAME} TARGETED_DEVICE_FAMILY "1,2" "All") if(PLATFORM STREQUAL "OS64") diff --git a/Samples/OpenGL/Demo/proj.ios.cmake/src/LAppModel.mm b/Samples/OpenGL/Demo/proj.ios.cmake/src/LAppModel.mm index 30eb276..9e6e849 100644 --- a/Samples/OpenGL/Demo/proj.ios.cmake/src/LAppModel.mm +++ b/Samples/OpenGL/Demo/proj.ios.cmake/src/LAppModel.mm @@ -358,6 +358,9 @@ void DeleteBuffer(csmByte* buffer, const csmChar* path = "") _model->SaveParameters(); // 状態を保存 //----------------------------------------------------------------- + // 不透明度 + _opacity = _model->GetModelOpacity(); + // まばたき if (!motionUpdated) { diff --git a/Samples/OpenGL/Demo/proj.ios.cmake/src/ViewController.mm b/Samples/OpenGL/Demo/proj.ios.cmake/src/ViewController.mm index 6dc6734..d5627d2 100644 --- a/Samples/OpenGL/Demo/proj.ios.cmake/src/ViewController.mm +++ b/Samples/OpenGL/Demo/proj.ios.cmake/src/ViewController.mm @@ -188,10 +188,10 @@ - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect for(csmUint32 i=0; i<[Live2DManager GetModelNum]; i++) { - float a = [self GetSpriteAlpha:i]; // サンプルとしてαに適当な差をつける + LAppModel* model = [Live2DManager getModel:i]; + float a = i < 1 ? 1.0f : model->GetOpacity(); // 片方のみ不透明度を取得できるようにする [_renderSprite SetColor:1.0f g:1.0f b:1.0f a:a]; - LAppModel* model = [Live2DManager getModel:i]; if (model) { Csm::Rendering::CubismOffscreenFrame_OpenGLES2& useTarget = model->GetRenderBuffer(); diff --git a/Samples/OpenGL/Demo/proj.linux.cmake/src/LAppModel.cpp b/Samples/OpenGL/Demo/proj.linux.cmake/src/LAppModel.cpp index 1790ee2..43b1ad7 100644 --- a/Samples/OpenGL/Demo/proj.linux.cmake/src/LAppModel.cpp +++ b/Samples/OpenGL/Demo/proj.linux.cmake/src/LAppModel.cpp @@ -368,6 +368,9 @@ void LAppModel::Update() _model->SaveParameters(); // 状態を保存 //----------------------------------------------------------------- + // 不透明度 + _opacity = _model->GetModelOpacity(); + // まばたき if (!motionUpdated) { diff --git a/Samples/OpenGL/Demo/proj.linux.cmake/src/LAppView.cpp b/Samples/OpenGL/Demo/proj.linux.cmake/src/LAppView.cpp index 108d357..a66eee7 100644 --- a/Samples/OpenGL/Demo/proj.linux.cmake/src/LAppView.cpp +++ b/Samples/OpenGL/Demo/proj.linux.cmake/src/LAppView.cpp @@ -131,10 +131,10 @@ void LAppView::Render() for(csmUint32 i=0; iGetModelNum(); i++) { - float alpha = GetSpriteAlpha(i); // サンプルとしてαに適当な差をつける + LAppModel* model = Live2DManager->GetModel(i); + float alpha = i < 1 ? 1.0f : model->GetOpacity(); // 片方のみ不透明度を取得できるようにする _renderSprite->SetColor(1.0f, 1.0f, 1.0f, alpha); - LAppModel *model = Live2DManager->GetModel(i); if (model) { _renderSprite->RenderImmidiate(model->GetRenderBuffer().GetColorBuffer(), uvVertex); diff --git a/Samples/OpenGL/Demo/proj.mac.cmake/src/LAppModel.cpp b/Samples/OpenGL/Demo/proj.mac.cmake/src/LAppModel.cpp index 1790ee2..43b1ad7 100644 --- a/Samples/OpenGL/Demo/proj.mac.cmake/src/LAppModel.cpp +++ b/Samples/OpenGL/Demo/proj.mac.cmake/src/LAppModel.cpp @@ -368,6 +368,9 @@ void LAppModel::Update() _model->SaveParameters(); // 状態を保存 //----------------------------------------------------------------- + // 不透明度 + _opacity = _model->GetModelOpacity(); + // まばたき if (!motionUpdated) { diff --git a/Samples/OpenGL/Demo/proj.mac.cmake/src/LAppView.cpp b/Samples/OpenGL/Demo/proj.mac.cmake/src/LAppView.cpp index 0b19d20..7e8cfa9 100644 --- a/Samples/OpenGL/Demo/proj.mac.cmake/src/LAppView.cpp +++ b/Samples/OpenGL/Demo/proj.mac.cmake/src/LAppView.cpp @@ -131,10 +131,10 @@ void LAppView::Render() for(csmUint32 i=0; iGetModelNum(); i++) { - float alpha = GetSpriteAlpha(i); // サンプルとしてαに適当な差をつける + LAppModel* model = Live2DManager->GetModel(i); + float alpha = i < 1 ? 1.0f : model->GetOpacity(); // 片方のみ不透明度を取得できるようにする _renderSprite->SetColor(1.0f, 1.0f, 1.0f, alpha); - LAppModel *model = Live2DManager->GetModel(i); if (model) { _renderSprite->RenderImmidiate(model->GetRenderBuffer().GetColorBuffer(), uvVertex); diff --git a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppDefine.cpp b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppDefine.cpp index 6ed1bd4..901b7e2 100644 --- a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppDefine.cpp +++ b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppDefine.cpp @@ -64,6 +64,9 @@ namespace LAppDefine { const csmInt32 PriorityNormal = 2; const csmInt32 PriorityForce = 3; + // MOC3の整合性検証オプション + const csmBool MocConsistencyValidationEnable = true; + // デバッグ用ログの表示オプション const csmBool DebugLogEnable = true; const csmBool DebugTouchLogEnable = false; diff --git a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppDefine.hpp b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppDefine.hpp index e37ad88..b8f7b23 100644 --- a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppDefine.hpp +++ b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppDefine.hpp @@ -53,6 +53,8 @@ namespace LAppDefine { extern const csmInt32 PriorityNormal; ///< モーションの優先度定数: 2 extern const csmInt32 PriorityForce; ///< モーションの優先度定数: 3 + extern const csmBool MocConsistencyValidationEnable; ///< MOC3の整合性検証機能の有効・無効 + // デバッグ用ログの表示 extern const csmBool DebugLogEnable; ///< デバッグ用ログ表示の有効・無効 extern const csmBool DebugTouchLogEnable; ///< タッチ処理のデバッグ用ログ表示の有効・無効 diff --git a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppModel.cpp b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppModel.cpp index a2db8be..9bd14cc 100644 --- a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppModel.cpp +++ b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppModel.cpp @@ -50,6 +50,11 @@ LAppModel::LAppModel() , _modelSetting(NULL) , _userTimeSeconds(0.0f) { + if (MocConsistencyValidationEnable) + { + _mocConsistency = true; + } + if (DebugLogEnable) { _debugMode = true; @@ -107,7 +112,6 @@ void LAppModel::LoadAssets(const csmChar* dir, const csmChar* fileName) SetupTextures(); } - void LAppModel::SetupModel(ICubismModelSetting* setting) { _updating = true; @@ -130,7 +134,7 @@ void LAppModel::SetupModel(ICubismModelSetting* setting) } buffer = CreateBuffer(path.GetRawString(), &size); - LoadModel(buffer, size); + LoadModel(buffer, size, _mocConsistency); DeleteBuffer(buffer, path.GetRawString()); } @@ -368,6 +372,9 @@ void LAppModel::Update() _model->SaveParameters(); // 状態を保存 //----------------------------------------------------------------- + // 不透明度 + _opacity = _model->GetModelOpacity(); + // まばたき if (!motionUpdated) { @@ -644,3 +651,30 @@ Csm::Rendering::CubismOffscreenFrame_OpenGLES2& LAppModel::GetRenderBuffer() { return _renderBuffer; } + +csmBool LAppModel::HasMocConsistencyFromFile(const csmChar* mocFileName) +{ + CSM_ASSERT(strcmp(mocFileName, "")); + + csmByte* buffer; + csmSizeInt size; + + csmString path = mocFileName; + path = _modelHomeDir + path; + + buffer = CreateBuffer(path.GetRawString(), &size); + + csmBool consistency = CubismMoc::HasMocConsistencyFromUnrevivedMoc(buffer, size); + if (!consistency) + { + CubismLogInfo("Inconsistent MOC3."); + } + else + { + CubismLogInfo("Consistent MOC3."); + } + + DeleteBuffer(buffer); + + return consistency; +} diff --git a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppModel.hpp b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppModel.hpp index 3826b8b..4b024ee 100644 --- a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppModel.hpp +++ b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppModel.hpp @@ -114,6 +114,14 @@ class LAppModel : public Csm::CubismUserModel */ Csm::Rendering::CubismOffscreenFrame_OpenGLES2& GetRenderBuffer(); + /** + * @brief .moc3ファイルの整合性をチェックする + * + * @param[in] mocName MOC3ファイル名 + * @return MOC3に整合性があれば'true'、そうでなければ'false'。 + */ + Csm::csmBool HasMocConsistencyFromFile(const Csm::csmChar* mocFileName); + protected: /** * @brief モデルを描画する処理。モデルを描画する空間のView-Projection行列を渡す。 diff --git a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppView.cpp b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppView.cpp index cb99cbf..e3ac10c 100644 --- a/Samples/OpenGL/Demo/proj.win.cmake/src/LAppView.cpp +++ b/Samples/OpenGL/Demo/proj.win.cmake/src/LAppView.cpp @@ -127,10 +127,10 @@ void LAppView::Render() for (csmUint32 i = 0; i < Live2DManager->GetModelNum(); i++) { - float alpha = GetSpriteAlpha(i); // サンプルとしてαに適当な差をつける + LAppModel* model = Live2DManager->GetModel(i); + float alpha = i < 1 ? 1.0f : model->GetOpacity(); // 片方のみ不透明度を取得できるようにする _renderSprite->SetColor(1.0f, 1.0f, 1.0f, alpha); - LAppModel *model = Live2DManager->GetModel(i); if (model) { _renderSprite->RenderImmidiate( model->GetRenderBuffer().GetColorBuffer(), uvVertex); diff --git a/Samples/Resources/Haru/Haru.model3.json b/Samples/Resources/Haru/Haru.model3.json index 17335a8..3e20b91 100644 --- a/Samples/Resources/Haru/Haru.model3.json +++ b/Samples/Resources/Haru/Haru.model3.json @@ -61,25 +61,25 @@ "File": "motions/haru_g_m26.motion3.json", "FadeInTime": 0.5, "FadeOutTime": 0.5, - "Sound": "sounds/haru_normal_04.wav" + "Sound": "sounds/haru_talk_13.wav" }, { "File": "motions/haru_g_m06.motion3.json", "FadeInTime": 0.5, "FadeOutTime": 0.5, - "Sound": "sounds/haru_normal_01.wav" + "Sound": "sounds/haru_Info_14.wav" }, { "File": "motions/haru_g_m20.motion3.json", "FadeInTime": 0.5, "FadeOutTime": 0.5, - "Sound": "sounds/haru_normal_03.wav" + "Sound": "sounds/haru_normal_6.wav" }, { "File": "motions/haru_g_m09.motion3.json", "FadeInTime": 0.5, "FadeOutTime": 0.5, - "Sound": "sounds/haru_normal_02.wav" + "Sound": "sounds/haru_Info_04.wav" } ] }, diff --git a/Samples/Resources/Haru/sounds/haru_Info_04.wav b/Samples/Resources/Haru/sounds/haru_Info_04.wav new file mode 100644 index 0000000..0565f5c Binary files /dev/null and b/Samples/Resources/Haru/sounds/haru_Info_04.wav differ diff --git a/Samples/Resources/Haru/sounds/haru_Info_14.wav b/Samples/Resources/Haru/sounds/haru_Info_14.wav new file mode 100644 index 0000000..cf5c591 Binary files /dev/null and b/Samples/Resources/Haru/sounds/haru_Info_14.wav differ diff --git a/Samples/Resources/Haru/sounds/haru_normal_01.wav b/Samples/Resources/Haru/sounds/haru_normal_01.wav deleted file mode 100644 index 13cb456..0000000 Binary files a/Samples/Resources/Haru/sounds/haru_normal_01.wav and /dev/null differ diff --git a/Samples/Resources/Haru/sounds/haru_normal_02.wav b/Samples/Resources/Haru/sounds/haru_normal_02.wav deleted file mode 100644 index cbd3db5..0000000 Binary files a/Samples/Resources/Haru/sounds/haru_normal_02.wav and /dev/null differ diff --git a/Samples/Resources/Haru/sounds/haru_normal_03.wav b/Samples/Resources/Haru/sounds/haru_normal_03.wav deleted file mode 100644 index cd72bc8..0000000 Binary files a/Samples/Resources/Haru/sounds/haru_normal_03.wav and /dev/null differ diff --git a/Samples/Resources/Haru/sounds/haru_normal_04.wav b/Samples/Resources/Haru/sounds/haru_normal_04.wav deleted file mode 100644 index 7d0d617..0000000 Binary files a/Samples/Resources/Haru/sounds/haru_normal_04.wav and /dev/null differ diff --git a/Samples/Resources/Haru/sounds/haru_normal_6.wav b/Samples/Resources/Haru/sounds/haru_normal_6.wav new file mode 100644 index 0000000..e251d98 Binary files /dev/null and b/Samples/Resources/Haru/sounds/haru_normal_6.wav differ diff --git a/Samples/Resources/Haru/sounds/haru_talk_13.wav b/Samples/Resources/Haru/sounds/haru_talk_13.wav new file mode 100644 index 0000000..20a421c Binary files /dev/null and b/Samples/Resources/Haru/sounds/haru_talk_13.wav differ