void CKLBLuaLibMatrix::setVector(CLuaState& lua, VECTOR * vec) { lua.tableNew(); // ベクトル用のテーブル for(int n = 0; n < 4; n++) { lua.retInt(n + 1); lua.retDouble(vec->v[n]); lua.tableSet(); } }
void CKLBLuaLibMatrix::setMatrix(CLuaState& lua, MATRIX * mat) { // 最上位に対象の配列を作る lua.tableNew(); for(int idx = 0; idx < 16; idx++) { // key として index 値を積む lua.retInt(idx + 1); // 値を積む lua.retDouble(mat->m[idx]); // 値を設定する lua.tableSet(); } }
void CKLBLuaLibMatrix::setVectorArray(CLuaState& lua, VECTOR * vec, int nums) { lua.tableNew(); // ベクトル配列用のテーブル for(int idx = 0; idx < nums; idx++) { lua.retInt(idx + 1); // ベクトル配列中のindexを指定する // ベクトルの値をスタック上に積む setVector(lua, &vec[idx]); // この時点で、ベクトル配列のindexと、ベクトルがスタックに積まれている lua.tableSet(); // ベクトル配列にベクトルを設定する } // 一通りの設定が終わり、ベクトル配列テーブルがスタック上に積まれた状態になる。 }