Springhead Users Manual

3.4 インタフェースとディスクリプタ

Springheadでは仕様と実装を明確に分離するために,インタフェースクラスと実装クラスが分けられています. ユーザはインタフェースクラスのみを使用してSpringheadの機能を利用します. ただし,BaseFoundationモジュールにあるごく基本的なクラス,およびFrameworkのアプリケーションクラスは例外となっています.

また,Springheadのクラスにはそれぞれにディスクリプタが用意されています.ディスクリプタとは,そのクラスの読み書き可能な属性のみを集めた構造体です. ディスクリプタを利用することで,同じ設定のインスタンスを多数設定することが用意になります. また, ディスクリプタはファイルへのデータの保存や読み込みにおいても役立ちます.

以下にPhysicsモジュールの剛体を表すPHSolidクラスを例にとって説明します.

// given PHSolidIf* phScene,


PHSolidDesc desc;
desc.mass = 1.0;


PHSolidIf* solid = phScene->CreateSolid(desc);

上のコードでPHSolidDescPHSolidクラスのディスクリプタです. まずそのメンバ変数massに値をセットすることで剛体の質量を設定しています. 次に,剛体を作 成するためにCreateSolid関数が呼ばれます. ここでCreateSolidは物理シーンを表すPHSceneクラスのメンバ関数です. 実際にはPHSceneクラスのインタフェースPHSceneIfを取得する必要がありますが,ここでは既に得られているとしています. 剛体が作成されると,CreateSolidからインタフェー スPHSolidIfのポインタが返されます. これ以降の剛体の操作はこのインタフェースを介して行います.

solid->SetMass(5.0);

基本的に,ディスリプタを介して設定可能な属性はインタフェースのGet/Set系関数を使って取得,設定ができるようになっています. 場合に応じて便利な方を使ってください.

Createされたオブジェクトはプログラムの終了時

Springheadオブジェクトはすべて内部でメモリ管理されていますので,ユーザが明示的にdeleteする必要はありません(また,してはいけません) に自動的に破棄されます.

より詳しく知りたい人は

以降の章では各モジュールについてより詳しく説明します. Springheadを利用する上で,すべてのモジュールを詳しく理解する必要はありません. 必要に応じて参照してください.