言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

本日の作業報告。

ODE 用のハイレベル API の作成。どの変がハイレベルかと言うと、シミュレーション中にイメージを保存終了して再度立ち上げても何も無かったように動き出すという事です。ODE 中のメモリは Squeak のイメージと一緒には保存されないので、その時点での状態をSqueak オブジェクトとしても保持する必要があります。

OpenGL ブリッジみたいなやつは、そもそも描画ごとに画像の位置なんて忘れてしまうのでこういったことを考慮する必要がありませんが、ODE は自分自身で座標や速度を管理し、ID(中身は単なるポインタ)で物質の状態を管理するので気を使うところ。物体を生成した時に出来る大量のポインタを直接ユーザに触らせるのは忍びないので、ラップするという意味もあります。

プラグイン自体には大分慣れて来て、特にデータが32ビット単位の、整数かオブジェクトポインタしか無いというのは分かりやすくて良いです。VM レベルで型無しだったのかと分かって感慨深い。例えば Perl だと、ユーザに見えないところにあるスロットにそれぞれ違う型の値があって、外部とのブリッジを作るのはなかなか面倒なのですが、Squeak の方がよっぽど簡単でした。C との連携の簡単さはもっと宣伝しても良いのでは無いでしょうか?

まあ、逆の、C から Squeak のクラスを使うのは難しそうみたいですが。