Springheadでは仕様と実装を明確に分離するために,インタフェースクラスと実装クラスが分けられています. ユーザはインタフェースクラスのみを使用してSpringheadの機能を利用します. ただし,BaseとFoundationモジュールにあるごく基本的なクラス,およびFrameworkのアプリケーションクラスは例外となっています.
また,Springheadのクラスにはそれぞれにディスクリプタが用意されています.ディスクリプタとは,そのクラスの読み書き可能な属性のみを集めた構造体です. ディスクリプタを利用することで,同じ設定のインスタンスを多数設定することが用意になります. また, ディスクリプタはファイルへのデータの保存や読み込みにおいても役立ちます.
以下にPhysicsモジュールの剛体を表すPHSolidクラスを例にとって説明します.
// given PHSolidIf* phScene, PHSolidDesc desc; desc.mass = 1.0; PHSolidIf* solid = phScene->CreateSolid(desc);
上のコードでPHSolidDescはPHSolidクラスのディスクリプタです. まずそのメンバ変数massに値をセットすることで剛体の質量を設定しています. 次に,剛体を作 成するためにCreateSolid関数が呼ばれます. ここでCreateSolidは物理シーンを表すPHSceneクラスのメンバ関数です. 実際にはPHSceneクラスのインタフェースPHSceneIfを取得する必要がありますが,ここでは既に得られているとしています. 剛体が作成されると,CreateSolidからインタフェー スPHSolidIfのポインタが返されます. これ以降の剛体の操作はこのインタフェースを介して行います.
solid->SetMass(5.0);
基本的に,ディスリプタを介して設定可能な属性はインタフェースのGet/Set系関数を使って取得,設定ができるようになっています. 場合に応じて便利な方を使ってください.
. Createされたオブジェクトはプログラムの終了時Springheadオブジェクトはすべて内部でメモリ管理されていますので,ユーザが明示的にdeleteする必要はありません(また,してはいけません) に自動的に破棄されます.
以降の章では各モジュールについてより詳しく説明します. Springheadを利用する上で,すべてのモジュールを詳しく理解する必要はありません. 必要に応じて参照してください.