はかせのラボ

私の頭の中を書いていく雑記ブログです

DirectX リファクタリング

前回の簡単なおさらい

前回はDirectInputを使用し入力を取りました。
これにより
・オブジェクトを描画
・ユーザーの入力を取得
というゲーム作りにおいて基本中の基本が実装できました。

なのでごちゃごちゃしてきて追いづらく変えづらい
現状のコードを書き直そうとして前回は終了しました。

今回は書き直しが自分の中で一段落ついたので
何をしたかと今後どうしていきたいか
書いていきたいと思います。

今回の変更点

①キューブの独立
 キューブをそれぞれ独立して描画させるようにしました。
 また各キューブが毎フレーム情報を更新することで
 ユニークなオブジェクトとして存在させることができるようになりました。
②カメラの独立
 カメラが行っていた行列計算を独立させました。
 これにより描画行うオブジェクトが自身の情報を渡すことで
 描画に必要な行列を得られるようになりました。
③全体のオブジェクトを管理するクラス作成
 全てのオブジェクトを管理させるクラスを作りました。

各クラス間の関係はこんな感じです。
f:id:hakase0274:20181002233542p:plain

全てのクラスはDXGameObjectManagerが持っています。

各クラスが必要な処理を自分の中に持っており
その処理をDXGameObjectManagerが呼ぶ、
必要なものがあれば渡すことでゲームループを回しています。

DXGameObjectManagerが依存関係を解決してくれるため
何か足したりするときも基本的にここを変えればいいことになります。

今後の方針

今後は各オブジェクト間のやりとり(衝突とか)を
実装していこうかと思っています。

また必要に応じて依存関係や実装方法なども変更していき
よりよい形のプログラムを作って少しでも参考になれるよう
精進していきたいと考えています。

今回作ったものはgithubに上げました
https://github.com/hakase0724/DirectX/tree/Refactoring