任务单 #39718

macOS版 ビューモード「ピアノロールリング」追加

开放日期: 2019-11-04 21:39 最后更新: 2019-11-07 01:29

报告人:
属主:
状态:
关闭
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:

Details

ビューモード「ピアノロールリング」を追加する。

  • ピアノロール2Dを円筒状に表示する。
  • ライブモニタ用の表示も併せて追加する。

参考チケット

  • #39675 Win版 ビューモード「ピアノロールリング」追加

任务单历史 (3/9 Histories)

2019-11-04 21:39 Updated by: yknk
  • New Ticket "macOS版 ビューモード「ピアノロールリング」追加" created
2019-11-04 21:40 Updated by: yknk
2019-11-04 21:40 Updated by: yknk
评论

対策1:ビューモードメニューの追加

MainMenu.xib

Viewメニューに"Piano Roll Ring"を追加。

MIDITrailApp

enum SceneTypeにPianoRollRingを追加。

MIDITrailApp::_ChangeMenuStyle

「ピアノロールリング」メニューに対する活性制御処理を追加する。

MIDITrailApp::_CreateScene

ピアノロールリングシーンオブジェクト生成処理を追加する。

MIDITrailApp::_LoadSceneType

シーン種別読み込み処理を「ピアノロールリング」に対応させる。

MIDITrailApp::_SaveSceneType

シーン種別保存処理を「ピアノロールリング」に対応させる。

MIDITrailApp::_UpdateMenuCheckmark

「ピアノロールリング」メニュー選択マーク更新処理を追加する。

MTMenuCtrl

enum MTMenuItem に、MenuPianoRollRing を追加。 メニュー項目"Piano Roll Ring"に対応するメンバ変数 m_pMenuPianoRollRing を追加。

MTMenuCtrl::initialize

メニュー項目"Piano Roll Ring"の初期化処理を追加。

MTMenuCtrl::menuItemOf

メニュー項目"Piano Roll Ring"のオブジェクト取得処理を追加。

MTMenuCtrl::onMenuPianoRollRing

メニュー項目"Piano Roll Ring"選択時のイベントハンドラを追加。

2019-11-04 21:41 Updated by: yknk
评论

対策2:ピアノロールリング描画クラスの追加

MTScenePianoRollRing

ピアノロールリングシーン描画クラスを追加。

MTScenePianoRollRingLive

ライブモニタ用ピアノロールリングシーン描画クラスを追加。

OGLH::RotateYZ

座標回転関数を新規追加。

MTGridRing

グリッドリング描画クラスを新規作成。

MTGridRindLive

ライブモニタ用グリッドリング描画クラスを新規作成。

MTNoteBoxRing

ノートボックスリング描画クラスを新規作成。

MTNoteBoxRingLive

ライブモニタ用ノートボックスリング描画クラスを新規作成。

MTNoteDesignRing

ノートデザインリング描画クラスを新規作成。

MTNoteRippleRing

リング用ノート波紋描画クラスを新規作成。

MTNoteRippleRingLive

ライブモニタ用ノート波紋リング描画クラスを新規作成。

MTPictBoardRing

ピクチャボードリング描画クラスを新規作成。

MTTimeIndicatorRing

タイムインジケータリング描画クラスを新規作成。

2019-11-04 21:41 Updated by: yknk
评论

対策3:既存描画ライブラリを流用しやすくするための改造

MTNoteDesign

派生先クラスからメンバにアクセスできるように、privateをprotectedに変更。 派生先クラスで処理の差し替えができるように、以下のメソッドの定義にvirtualを追加。

  • GetNoteBoxCenterPosX
  • GetNoteBoxVirtexPos
  • GetActiveNoteBoxVirtexPos
  • GetNoteBoxVirtexPosLive
  • GetPortOriginY
  • GetPortOriginZ
  • GetWorldMoveVector
  • _LoadConfFile

MTNoteBox

派生先クラスからメンバにアクセスできるように、privateをprotectedに変更。 派生先クラスからメンバのクラスを切り替えられるように、 MTNoteDesignのメンバオブジェクトm_NoteDesignをMTNoteDesignのポインタm_pNoteDesignに変更。 メンバオブジェクトのポインタ化(m_pNoteDesign)に伴う、変数名の置換。

  • MTNoteBox::Create
  • MTNoteBox::Transform
  • MTNoteBox::_CreateVertexOfNote
  • MTNoteBox::_MakeMaterialForActiveNote

MTNoteBox::MTNoteBox

m_pNoteDesignの初期化処理を追加。

MTNoteBox::Create

ノートデザインオブジェクト生成処理_CreateNoteDesignの呼び出しを追加。

MTNoteBox::_CreateNoteDesign

ノートデザインオブジェクト生成処理を新規追加。

MTNoteBox::Release

m_pNoteDesignの破棄処理を追加。

MTNoteBoxLive

派生先クラスからメンバにアクセスできるように、privateをprotectedに変更。 派生先クラスからメンバのクラスを切り替えられるように、 MTNoteDesignのメンバオブジェクトm_NoteDesignをMTNoteDesignのポインタm_pNoteDesignに変更。 メンバオブジェクトのポインタ化(m_pNoteDesign)に伴い、以下のメソッドで変数名を置換。

  • MTNoteBoxLive::Create
  • MTNoteBoxLive::Transform
  • MTNoteBoxLive::_CreateVertexOfNote

MTNoteBoxLive::MTNoteBoxLive

m_pNoteDesignの初期化処理を追加。

MTNoteBoxLive::Create

ノートデザインオブジェクト生成処理_CreateNoteDesignの呼び出しを追加。

MTNoteBoxLive::_CreateNoteDesign

ノートデザインオブジェクト生成処理を新規追加。 派生先クラスで処理の差し替えができるように、メソッドの定義にvirtualを追加。

MTNoteBoxLive::Release

m_pNoteDesignの破棄処理を追加。

MTNoteRipple

派生先クラスからメンバにアクセスできるように、privateをprotectedに変更。 派生先クラスからメンバのクラスを切り替えられるように、 MTNoteDesignのメンバオブジェクトm_NoteDesignをMTNoteDesignのポインタm_pNoteDesignに変更。 メンバオブジェクトのポインタ化(m_pNoteDesign)に伴い、以下のメソッドで変数名を置換。

  • MTNoteRipple::Create
  • MTNoteRipple::Transform
  • MTNoteRipple::_SetVertexPosition

MTNoteRipple::MTNoteRipple

m_pNoteDesignの初期化処理を追加。

MTNoteRipple::Create

ノートデザインオブジェクト生成処理_CreateNoteDesignの呼び出しを追加。

MTNoteRipple::_CreateNoteDesign

ノートデザインオブジェクト生成処理を新規追加。 派生先クラスで処理の差し替えができるように、メソッドの定義にvirtualを追加。

MTNoteRipple::Release

m_pNoteDesignの破棄処理を追加。

2019-11-04 21:42 Updated by: yknk
评论

対策4:リファクタリング

MTPianoKeyboard::_RotateYZ

本メソッドの実装をOGLH::RotateYZに移設して、処理を共有可能とする。本メソッドは削除。

MTPianoKeyboard::_RotateKey

_RotateYZをOGLH::RotateYZの呼び出しに書き換え。

MTNoteDesign::GetNoteBoxWidht

メソッド名のスペルミスを修正(GetNoteBoxWidht → GetNoteBoxWidth)。 これに伴い、メソッド呼び出し元を修正。

  • MTNoteDesign::GetNoteBoxVirtexPos
  • MTNoteDesign::GetActiveNoteBoxVirtexPos
  • MTNoteDesign::GetNoteBoxVirtexPosLive
  • MTNoteDesign::GetGridBoxVirtexPos
  • MTNoteDesign::GetGridBoxVirtexPosLive

conf/PianoRollRain2D.ini

以下の項目の定義が漏れていたため追記した。 ただし未定義の場合でも、同じ値がデフォルト値であるため、動作に変化はない。

[ActiveNote]
SizeRatio=1.4

(Edited, 2019-11-04 21:43 Updated by: yknk)
2019-11-04 21:43 Updated by: yknk
评论

対策5:設定ファイル

シーン設定ファイル

下記INIファイルを追加する。

  • conf/PianoRollRing.ini
  • conf/PianoRollRingLive.ini
2019-11-07 01:28 Updated by: yknk
  • 处理结果 Update from to Fixed
  • 状态 Update from 开启 to 关闭
2019-11-07 01:29 Updated by: yknk
  • 组件 Update from (无) to MIDITrail Ver.1.3.x for macOS

Attachment File List

No attachments

编辑

Please login to add comment to this ticket » 登录名