modular-avatar icon indicating copy to clipboard operation
modular-avatar copied to clipboard

IEditorOnlyのコンポーネントを消さないオプションが欲しい

Open Narazaka opened this issue 1 year ago • 5 comments

Play中にコンポーネント値を変更し、Play終了で書き戻すという編集機能をもつ拡張を作っています。 https://github.com/Narazaka/AvatarParametersSaver しかしIEditorOnlyをつけるとPlay時にReplacementRemoveIEditorOnlyで削除されてしまい、逆につけないとVRCSDKのアップロード警告にひっかかります。 Play時のみコンポーネントを消さない(NDMFプラグイン側で責任を持って消す あるいはそもそもVRCSDKが消すので放置する)という挙動が欲しいので、IDoNotAutoRemove的なものが欲しいです。

あるいはそもそもこのVRCSDK以前に消す挙動は必要なんでしょうか?

Narazaka avatar Feb 15 '24 15:02 Narazaka

VRCFuryとの互換性のため、MAもVRCFもすべてのフックをプレイモードで発火しています。その結果、VRCSDKに内包されたIEditorOnlyを消すフックまで起動してしまうわけです。現時点では、互換性を保つ実装としてこれぐらいしか思いついてないので、どちらかというとVRCSDKへの機能要望ですね。

IEditorOnly実装前みたいにVRCSDKの該当フックをリフレクション、もしくはHarmonyで介入する手もあるけど、できれば避けたいところです。

bdunderscore avatar Feb 15 '24 15:02 bdunderscore

オッ MAにあるReplacementRemoveIEditorOnlyではなくVRCSDK内の処理が呼ばれていると言うことですかね?

Narazaka avatar Feb 15 '24 15:02 Narazaka

あーReplacementRemoveIEditorOnlyですね。ただ、あれはどちらかというと不要になったハックなので、廃止すべきかなと考えています…

bdunderscore avatar Feb 17 '24 10:02 bdunderscore

IEditorOnlyは無理かもしれませんが、EditorOnlyタグであればVRCSDKのフックが呼ばれる前にタグを書き換える、ということも可能だと思いますが、実装は難しいですか?

nHaruka-git avatar Mar 11 '24 02:03 nHaruka-git

ちょっと検討中です。Harmonyで潰すのが一番簡単かも…

bdunderscore avatar Mar 11 '24 02:03 bdunderscore