squirrelのデータをC++から簡単にアクセスする
モデルのポリゴンデータを.nutで記述するつもりなので、手始めにsquirrelのデータへのアクセスを容易にするためのオブジェクト&イテレータを実装してみた。
return { NAME="カイン" JOB="竜騎士" EQUIP=["グングニルの槍","クリスタルアーマー","リボン"] };
のようなsquirrelのスクリプト(cain.nut)を用意して、C++から
void hoge(){ vm.dofile("cain.nut"); vmobj cain=vm.popstackobj(); string name = cain["NAME"]; string job = cain["JOB"]; for( vmiter iter = cain["EQUIP"]; !iter.isend(); ++iter ){ printf("equip[%d]=%s\n",(int)iter.key(),(const char*)iter.value()); } }
みたいに呼べるようになった。
さて実際にモデルデータ読み込んでみるか。それができたらmqo2nutコンバータ作ってモデルだすぞ〜。
.nutのサイズと読み込み速度
仕事で使ってるモデルデータはテキスト形式だと余裕で100MBオーバーがあがってくるので、それにも耐えられる仕様を考えると.nutはキツイかも。1回コンパイルして.cnutにすべき。そのままだとサイズがテキストの倍になってしまうので、それをさらにzlibなどで圧縮するのが妥当かな。とりあえず趣味の範疇だと.nutのままでも支障が無いので気にしない。
.cnutにすると読み込みえれぇ速ぇよ。