HTKのInteractiveをMRTKに置き換える
どうもこんばんよう、私です。
HoloToolkitの時に実装されたプロジェクトをMRTKに直していたりします。
いきなり本題です。
HTKにClickとかFocusとか、色々とやってくれているInteractiveっていうクラスがいるんですけど。
MRTKにはいないですよね、名前そのままでは。
どうしたもんかなぁって、コードもろくに読めなかったのでとりあえずエラー吐くところコメントアウトしていたんですね。
それが多分、今年の7月くらい。
今日、全然別件でMRTKでPointersのページを読んでいたんですよ。
そしたら、びびびびびー!って。
これって、今までPointerのイベントが必要なGameObjectに「PointerHandler」を付けてたけど、その代わりじゃん?って。
元々ObjectにはInteractiveを実装したScriptがアタッチされていたので、それをClickを契機に呼び出す、みたいなことをわざわざしてたんですよ。
それが全部いらなくなるのー!
//public class Test : Interactive public class Test : MonoBehaviour, IMixedRealityFocusHandler, IMixedRealityPointerHandler { //public override void OnFocusEnter() //{ // base.OnFocusEnter(); //} public void OnFocusEnter(FocusEventData eventData) { } //public override void OnFocusExit() //{ // base.OnFocusExit(); //} public void OnFocusExit(FocusEventData eventData) { } //public override void OnInputDown(InputEventData eventData) //{ // base.OnInputDown(eventData); //} public void OnPointerDown(MixedRealityPointerEventData eventData) { } public void OnPointerDragged(MixedRealityPointerEventData eventData) { } //public override void OnInputClicked(InputClickedEventData eventData) //{ // base.OnInputClicked(eventData); //} public void OnPointerUp(MixedRealityPointerEventData eventData) { } //public override void OnInputUp(InputEventData eventData) //{ // base.OnInputUp(eventData); //} public void OnPointerClicked(MixedRealityPointerEventData eventData) { } }
いやはや、知識がないと見てもわからないってこの事かと思いました。
ちなみにこの件、ちゃんと移植ガイドにあります。
見た気がするーって思いました。
改めてドキュメントを読み返す良いきっかけかもしれません。
精進します。
※余談ですが、乃木坂46の「きっかけ」が良曲でいつも背中を押してくれます。
~追記~
これは私のパターンなので同じような人はいないと思うのですが、PointerHandlerをObjectにアタッチして、かつIMixedRealityFocusHandler, IMixedRealityPointerHandler の実装があるScriptもついてると、おわかりの通りに二重で入力が来ます。
どちらか一つにしましょう!(絶賛修正中^^)