Springhead
An open source physics engine for virtual reality, haptics and motion generation.
構造体 ObjectStatesIf

オブジェクトツリーの状態をメモリ上に保存するためのクラス. SaveState(scene) のように呼び出すと,sceneの子孫全体の状態をメモリに保存する. セーブした後,LoadState(scene) を呼び出すと,sceneの状態を保存時の状態に戻す. セーブ後,シーンのオブジェクトの数や構造が変わってしまうと整合性がとれず, メモリを破壊してしまうので注意が必要. [詳細]

#include <SprObject.h>

ObjectStatesIfに対する継承グラフ

Public メソッド

 SPR_IFDEF (ObjectStates)
 
void AllocateState (ObjectIf *o)
 oとその子孫をセーブするために必要なメモリを確保する.
 
void ReleaseState (ObjectIf *o)
 状態のメモリを解放する
 
size_t CalcStateSize (ObjectIf *o)
 状態のサイズを求める
 
void SaveState (ObjectIf *o)
 状態をセーブする.
 
void LoadState (ObjectIf *o)
 状態をロードする.
 
void SingleSave (ObjectIf *o)
 シングルセーブ
 
void SingleLoad (ObjectIf *o)
 シングルロード
 
bool IsAllocated ()
 アロケート済みかどうか
 
- Public メソッド inherited from ObjectIf
 SPR_IFDEF (Object)
 
ObjectIfGetObjectIf ()
 
const ObjectIfGetObjectIf () const
 
int DelRef () const
 
void Print (std::ostream &os) const
 デバッグ用の表示。子オブジェクトを含む。
 
void PrintShort (std::ostream &os) const
 デバッグ用の表示。子オブジェクトを含まない。
 
void DumpObjectR (std::ostream &os, int level=0) const
 オブジェクトツリーのメモリイメージをダンプ
 
int AddRef ()
 
int RefCount ()
 
size_t NChildObject () const
 子オブジェクトの数
 
ObjectIfGetChildObject (size_t pos)
 子オブジェクトの取得
 
const ObjectIfGetChildObject (size_t pos) const
 
bool AddChildObject (ObjectIf *o)
 子オブジェクトの追加.複数のオブジェクトの子オブジェクトとして追加してよい. 例えば,GRFrameはツリーを作るが,全ノードがGRSceneの子でもある.
 
bool DelChildObject (ObjectIf *o)
 子オブジェクトの削除
 
void Clear ()
 すべての子オブジェクトの削除と、プロパティのクリア
 
ObjectIfCreateObject (const IfInfo *info, const void *desc)
 オブジェクトを作成し,AddChildObject()を呼ぶ.
 
template<class T >
ObjectIfCreateObject (const T &desc)
 CreateObjectを呼び出すユーティリティ関数
 
const void * GetDescAddress () const
 デスクリプタの読み出し(参照版 NULLを返すこともある). これが実装されていなくても,ObjectIf::GetDesc()は実装されていることが多い.
 
bool GetDesc (void *desc) const
 デスクリプタの読み出し(コピー版 失敗する(falseを返す)こともある). ObjectIf::GetDescAddress() が実装されていなくても,こちらは実装されていることがある.
 
void SetDesc (const void *desc)
 デスクリプタの設定
 
size_t GetDescSize () const
 デスクリプタのサイズ
 
const void * GetStateAddress () const
 状態の読み出し(参照版 NULLを返すこともある). これが実装されていなくても,ObjectIf::GetState()は実装されていることがある.
 
bool GetState (void *state) const
 状態の読み出し(コピー版 失敗する(falseを返す)こともある). ObjectIf::GetStateAddress() が実装されていなくても,こちらは実装されていることがある.
 
void SetState (const void *state)
 状態の設定
 
bool WriteStateR (std::ostream &fout)
 状態の書き出し
 
bool WriteState (std::string fileName)
 
bool ReadStateR (std::istream &fin)
 状態の読み込み
 
bool ReadState (std::string fileName)
 
size_t GetStateSize () const
 状態のサイズ
 
void ConstructState (void *m) const
 メモリブロックを状態型に初期化
 
void DestructState (void *m) const
 状態型をメモリブロックに戻す
 

Static Public メソッド

static ObjectStatesIf *SPR_CDECL Create ()
 ObjectStateオブジェクトを作成する.
 

説明

初めて SaveState(scene) を呼び出すと,まず内部で AllocateState(scene)を呼び出して メモリを確保する.次に確保したメモリにオブジェクトの状態を保存する.

セーブ・ロードに使い終わったときは,ReleaseState(scene)を呼び出してメモリを開放する 必要がある.ReleaseState(scene)は,AllocateState(scene)時とシーンの構造が同じでないと 整合性がとれず,メモリを破壊してしまう.

シーンの構造を変更するときは,一度ReleaseState()を呼び出して,再度セーブしなおす必要がある.


この構造体の説明は次のファイルから生成されました: