ピンクの警報発令中

多分VR転職しました。関連する技術系の話と、アイドルの話をします。技術の話、めちゃゆるい。

HTKのInteractiveをMRTKに置き換える

どうもこんばんよう、私です。

HoloToolkitの時に実装されたプロジェクトをMRTKに直していたりします。

いきなり本題です。

HTKにClickとかFocusとか、色々とやってくれているInteractiveっていうクラスがいるんですけど。

MRTKにはいないですよね、名前そのままでは。

どうしたもんかなぁって、コードもろくに読めなかったのでとりあえずエラー吐くところコメントアウトしていたんですね。
それが多分、今年の7月くらい

今日、全然別件でMRTKでPointersのページを読んでいたんですよ。

microsoft.github.io

そしたら、びびびびびー!って。
これって、今までPointerのイベントが必要なGameObjectに「PointerHandler」を付けてたけど、その代わりじゃん?って。

f:id:samy_hrin:20201008222924p:plain

元々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)
    {
    }

}

いやはや、知識がないと見てもわからないってこの事かと思いました。

ちなみにこの件、ちゃんと移植ガイドにあります
見た気がするーって思いました。

docs.microsoft.com

microsoft.github.io

改めてドキュメントを読み返す良いきっかけかもしれません。

精進します。

※余談ですが、乃木坂46の「きっかけ」が良曲でいつも背中を押してくれます。

~追記~
これは私のパターンなので同じような人はいないと思うのですが、PointerHandlerをObjectにアタッチして、かつIMixedRealityFocusHandler, IMixedRealityPointerHandler の実装があるScriptもついてると、おわかりの通りに二重で入力が来ます。
どちらか一つにしましょう!(絶賛修正中^^)