OSDN Ticket Archive


Ticket #39675

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

登録: 2019-10-14 19:31 最終更新: 2019-10-14 23:17

報告者:
yknk
担当者:
yknk
チケットの種類:
機能リクエスト
状況:
完了
コンポーネント:
MIDITrail Ver.1.3.x for Windows
マイルストーン:
Version 1.3.0 for Windows (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

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

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

チケットの履歴

2019-10-14 19:31 更新者: yknk
  • 新しいチケット "ビューモード「ピアノロールリング」追加" が作成されました
2019-10-14 19:31 更新者: yknk
コメント

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

MIDITrail.rc

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

MIDITrailApp

enum SceneTypeにPianoRollRingを追加。

MIDITrailApp::_WndProcImpl

「ピアノロールリング」メニュー選択時のイベントハンドラ呼び出し処理を追加する。

MIDITrailApp::_ChangeMenuStyle

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

MIDITrailApp::_CreateScene

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

MIDITrailApp::_LoadSceneType

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

MIDITrailApp::_SaveSceneType

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

MIDITrailApp::_UpdateMenuCheckmark

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

2019-10-14 19:31 更新者: yknk
コメント

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

MTScenePianoRollRing

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

MTScenePianoRollRingLive

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

DXH

ヘルパークラスを新規作成。

MTGridRing

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

MTGridRindLive

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

MTNoteBoxRing

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

MTNoteBoxRingLive

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

MTNoteDesignRing

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

MTNoteRippleRing

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

MTPictBoardRing

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

MTTimeIndicatorRing

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

2019-10-14 19:32 更新者: 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-10-14 19:33 更新者: yknk
コメント

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

MTPianoKeyboard::_RotateYZ

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

MTPianoKeyboard::_RotateKey

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

MTFirstPersonCam::Transform

ビルド時の警告を解消。intでキャストする。

MTNoteDesign::GetNoteBoxWidht

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

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

conf/PianoRollRain2D.ini

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

[ActiveNote]
SizeRatio=1.4

(編集済, 2019-10-14 19:34 更新者: yknk)
2019-10-14 19:34 更新者: yknk
コメント

対策5:設定ファイル

シーン設定ファイル

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

  • conf/PianoRollRing.ini
  • conf/PianoRollRingLive.ini
2019-10-14 23:17 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

添付ファイルはありません