エディタはどうにも使いづらいものになっています。各オブジェクトの並べ方が幅優先表示になっていて非常に見づらいショートカットがほとんど無い編集にじゃまなパーツを折りたたんで非表示にできないなどなどあります。既存のアセット等でも対応できなさそうだったので、今回内製でエディタを作成することになりました。機能エディタというのは単純だと思っていてもいろいろな機能があります。解説されている資料のほうがより詳細にかかれていてわかりやすいと思うので、そちらを参考にしていただくのが一番いいと思います。以下のような構成でできている仕組みです。継承し、アプリケーション全体の起動も担当します。流して処理してもらったり、データを取得したりする。データを取得するという役割分担までするのですが、一旦まとめて実装しました。扱えるようにしているところもあります。保存することで前回の状態から作業を再開できるような仕組みも実装できます。Entityコアのデータ定義をします。セットやショートカット名と実行するキーの組み合わせなどですこうすることで以下のようなメリットがあります。イベントハンドリングは中々癖が強いので出来る限り一元管理できる仕組みにできたほうが都合がいいです。切り離しているので、操作ごとにテストを走らせるなんてこともできますこのエディタは一人で作っていたので簡単にテストできる仕組みは動作を安定させるために必須項目でしたコードの再利用がしやすいショートカット機能では利用者が好きなようにショートカットの割当をできるのですが、これは別のウィンドウで行います。そのために似た実装が増えるのは大変だし、共通化することでどちらかでバグが出たらすぐに気づけるようにしました。実装にブレが出にくいこの領域では何をするかが割りときっちり決まっているので、実装にブレが出づらいです。後でメンテナンスする場合にも読みやすさが高くなります。デメリットもあって、次のようなものです。言えることだと思いますが、設計をしっかり理解してからじゃないとうまくかけないのはちょっとハードルが高いです。当然ですがコードが長くなる強いて言えば程度のデメリットですが、当然たくさんコードを書かないといけません。エディタを実装する全ての機能を紹介するのは大変なので一部だけ抜粋してどのように実装したか紹介します。サポートする仕組みがあります。