言語ゲーム

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

Twitter: @propella

コピーが出来ない。

書いていて何だか段々嫌になるが、一応書きます。今やってる事は、3DSMAX で作ったアニメを Croquet 上で動かすという物。取り合えず次のデータが来ないので最適化などをやってるわけだが、その前のベンチマークを取る段階で早くもつまずいている。僕のシナリオはこうだった。

とり合えず戦士を5匹並べる。その場で足踏み運動させて、プロファイルとフレームレートを記録する。色々プログラムを変えながら負荷を軽くしてゆく。

しかし、それどころか、戦士を5匹並べる段階でもう挫折してしまった。コピーが出来ないのだ。勿論、シャロウコピーと言って、単にうわべだけコピーするのは簡単なのだが、戦士はそれぞれ内部に位置情報があったりするので、適度に中もコピーする必要がある。通常の SqueakGUI では veryDeepCopy とやるとまあゴソっとコピーしてくれるわけだが、Croquet ではそうは行かない。

理由は色々考えられるが、一番ややこしいのは、Croquet のオブジェクトは TeaParty の中で共有される存在であるという事だ。戦士の指の一本一本まで共有されるのだが、その辺が怪しい。というか、copy というメソッドはまさに deepCopy をやってそうな事がかいて有るのだが、やってくれない。つらい。。。