Project

General

Profile

機能 #231

wODM - 機能 #178: wODMをモジュール化

wODM - 機能 #182: 構成変更

wODM - 機能 #188: wODMの機能回復

カーソルの機能回復

Added by Yuji Tateno 3 months ago. Updated about 2 months ago.

Status:
新規
Priority:
通常
Assignee:
Start date:
Due date:
% Done:

0%


Related issues

Blocks wODM - 機能 #232: カーソルの機能回復新規

Associated revisions

Revision 010ac3f4 (diff)
Added by Yuji Tateno 3 months ago

Cursorの処理を組み込む id #231

Revision d8b8c9d7 (diff)
Added by Yuji Tateno 3 months ago

Cursorの親をWidgetに作ってWidgetからアクセスできるようにした id #231

Revision 2b394d26
Added by Yuji Tateno 2 months ago

カーソル描画をBorderWidgetへ寄せた id #231

History

#1 Updated by Yuji Tateno 3 months ago

  • Parent task set to #188

#2 Updated by Yuji Tateno 3 months ago

  • Blocks 機能 #232: カーソルの機能回復 added

#3 Updated by Yuji Tateno 3 months ago

まずはvr_core側で直接画像を読んで...なのでそのためのオプションを決める。「--cursor=」で保存ありあたりか。

#4 Updated by Yuji Tateno 3 months ago

  • Due date changed from 04/26/2019 to 05/03/2019

#5 Updated by Yuji Tateno 3 months ago

  • Due date changed from 05/03/2019 to 05/10/2019
  • CursorはRootが保持(Updateで更新)
  • CursorSetはBorderWidgetが保持あるいは担当(透過を正しく扱うためにDrawTransparent時に描画するので)
  • CursorSetの設定箇所は未定
    • わかりやすくWidgetにするか
    • 依存関係の都合でBorderWidgetにするか

#6 Updated by Yuji Tateno 2 months ago

  • Due date changed from 05/10/2019 to 04/26/2019

現状のコードではイベントの有無がわからない。TB::EVdevを直接使えばイベントハンドラが呼ばれるが...。

#7 Updated by Yuji Tateno 2 months ago

設計ミスをしていたので修正する。

  1. ポインティングデバイスを移動した時に視点からの傾斜で表現...これはおk(ただし注視点をどう扱うかで責務の押し付け合いが発生しているので解決しなければならない...Cursorかなー。Cursor::Updateで注視点を受け取るようにして)
  2. 傾斜で窓と窓内座標を検索...これもおk
  3. buttonイベントやmoveイベント、enter/leaveイベント...これもおk
  4. ドラッグしてWidgetの外に出る...これがダメ。視野の橋だと基準面や別のWidgetの座標になる

そこで...ドラッグ中は二箇所にイベントを送る。ドラッグ開始時のWidgetをorigin、ドラッグ中に通過したWidgetおよびDrop時のWidgetをtargetとすると、ドラッグ中には...

  • originにはDragおよびDropForOriginが送られる
  • targetにはEnter/?eaveやMoveではなくDragOverおよびDropForTargetが送られる
  • Drop後、originとtargetが異なる場合にはoriginにはLeave、targetにはEnterが送られる

また...

  • ドラッグ中にoriginが消滅した場合、ドラッグ状態は解除され、targetにはEnterが送られる
  • ドラッグ中にtargetが消滅した場合はそのままドラッグ状態が継続される
  • targetがない状態でDropした時はドラッグ状態は終了しoriginにLeaveが送られる

個々のイベントは...

Drag

引数として前回からの位置の差分が送られる。差分はoriginの奥行き面上で計算される。これでoriginではMoveを呼ぶだけで正しくドラッグされる。

また、ボタン3ドラッグはスクロールをのために使う予定。スクロール用ドラッグはドラッグ開始位置からある一定以上離れるとUpdateのたびに「一定以上」に比例した値を送る。これは逆向きに動かした瞬間に停止。この動作は軸ごとに独立...なのでスクロールホイールは不要。

DragOver

引数としてEnter/Move/Leaveで与えられるのと同じ座標が送られる。

OropForOrigin/DropForTarget

別チケット。今回は引数なしで呼ぶだけ。

#8 Updated by Yuji Tateno about 2 months ago

  • Due date deleted (04/26/2019)
  • Start date deleted (04/20/2019)

Also available in: Atom PDF