func init() lng.decl_priv_var(a1, 'float') lng.decl_priv_var(a2, 'float') lng.decl_priv_var(px, 'float') lng.decl_priv_var(py, 'float') lng.decl_priv_var(pz, 'float') lng.decl_priv_var(mx, 'int') lng.decl_priv_var(my, 'int') fvar(old) old = block.select(BLK_INIT) println(pz + ' = 0.0;') block.select(BLK_INC) println('#include ') block.select(old) end func doFly(_data) println('glRotated(' + a1 + ', 0.0, sin(-' + a2 + '/180*3.1415), cos(-' + a2 + '/180*3.1415));') println('glRotated(' + a2 + ', 1.0, 0.0, 0.0);') println('glTranslatef(' + px + ', ' + py + ', ' + pz + ');') event(onFly, _data_) end func doMouseMove(_data) fvar(dx,dy) println(mx + ' = width() / 2;') println(my + ' = height() / 2;') dx = _arr.mt_item(_data, 1) dy = _arr.mt_item(_data, 2) println(a1 + ' += ' + MouseSensitive + '*(' + mx + ' - ' + dx + ');') println(a2 + ' += ' + MouseSensitive + '*(' + my + ' - ' + dy + ');') println('QCursor::setPos(mapToGlobal(QPoint(' + mx + ',' + my + ')));') end func doKeyPress(_data) println('switch(', _data, ') {') block.inclvl() println('case 87:') block.inclvl() println(pz + ' += ' + KeySensitive + '*cos(-' + a2 + '/180*3.1415);') println(py + ' -= ' + KeySensitive + '*sin(-' + a2 + '/180*3.1415)*cos(' + a1 + '/180*3.1415);') println(px + ' -= ' + KeySensitive + '*sin(-' + a2 + '/180*3.1415)*sin(' + a1 + '/180*3.1415);') println('break;') block.declvl() println('case 83:') block.inclvl() println(pz + ' -= ' + KeySensitive + '*cos(-' + a2 + '/180*3.1415);') println(py + ' += ' + KeySensitive + '*sin(-' + a2 + '/180*3.1415)*cos(' + a1 + '/180*3.1415);') println(px + ' += ' + KeySensitive + '*sin(-' + a2 + '/180*3.1415)*sin(' + a1 + '/180*3.1415);') println('break;') block.declvl() println('case 65:') block.inclvl() println(px + ' += ' + KeySensitive + '*cos(' + a1 + '/180*3.1415);') println(py + ' -= ' + KeySensitive + '*sin(' + a1 + '/180*3.1415);') println('break;') block.declvl() println('case 68:') block.inclvl() println(px + ' -= ' + KeySensitive + '*cos(' + a1 + '/180*3.1415);') println(py + ' += ' + KeySensitive + '*sin(' + a1 + '/180*3.1415);') println('break;') block.declvl() block.declvl() println('}') end func doKeyRelease(_data) // TODO end func CameraX() return('-' + px) end func CameraY() return('-' + py) end func CameraZ() return('-' + pz) end