modular-avatar
modular-avatar copied to clipboard
IEditorOnlyのコンポーネントを消さないオプションが欲しい
Play中にコンポーネント値を変更し、Play終了で書き戻すという編集機能をもつ拡張を作っています。 https://github.com/Narazaka/AvatarParametersSaver しかしIEditorOnlyをつけるとPlay時にReplacementRemoveIEditorOnlyで削除されてしまい、逆につけないとVRCSDKのアップロード警告にひっかかります。 Play時のみコンポーネントを消さない(NDMFプラグイン側で責任を持って消す あるいはそもそもVRCSDKが消すので放置する)という挙動が欲しいので、IDoNotAutoRemove的なものが欲しいです。
あるいはそもそもこのVRCSDK以前に消す挙動は必要なんでしょうか?
VRCFuryとの互換性のため、MAもVRCFもすべてのフックをプレイモードで発火しています。その結果、VRCSDKに内包されたIEditorOnlyを消すフックまで起動してしまうわけです。現時点では、互換性を保つ実装としてこれぐらいしか思いついてないので、どちらかというとVRCSDKへの機能要望ですね。
IEditorOnly実装前みたいにVRCSDKの該当フックをリフレクション、もしくはHarmonyで介入する手もあるけど、できれば避けたいところです。
オッ MAにあるReplacementRemoveIEditorOnlyではなくVRCSDK内の処理が呼ばれていると言うことですかね?
あーReplacementRemoveIEditorOnlyですね。ただ、あれはどちらかというと不要になったハックなので、廃止すべきかなと考えています…
IEditorOnlyは無理かもしれませんが、EditorOnlyタグであればVRCSDKのフックが呼ばれる前にタグを書き換える、ということも可能だと思いますが、実装は難しいですか?
ちょっと検討中です。Harmonyで潰すのが一番簡単かも…