ファイルセーブの仕組み

ファイルセーブは、FIFileがシーングラフをたどりながら、オブジェクトをセーブしていきます。 各オブジェクトの GetDescAddress()か、実装されていなければGetDesc()を呼び出して ディスクリプタを読み出します。 シーングラフには、あるノードが複数のノードの子ノードになっている場合があるため、2重にセーブしないように2度目以降は参照としてセーブします。

ディスクリプタを取り出したら、ディスクリプタの型情報を利用して、ディスクリプタのメンバを順番にセーブしていきます。 実際にデータをファイルに保存するコードは、FiFileSprなどFiFileの派生クラスにあります。