Norman Vine > >Following 'untested code' Ooops after testing here is a minor fix < moved the get_position() to follow the getMatrixCall() so as to pick up the 'updated' location
This seems to work and should be fast enough for LOTS of static models :-) Cheers Norman void FG3DModel::update (int dt) { for (unsigned int i = 0; i < _animations.size(); i++) _animations[i]->update(dt); // static sgdVec3 last_sc = [ SGD_ZERO, SGD_ZERO, SGD_ZERO ]; // if( last_sc[0]-scenery_center.x() != 0.0 || // last_sc[1]-scenery_center.y() != 0.0 || // scenery_center.z() != 0.0 || (type != FGMODEL_STATIC) ) { // sgdSetVec3(last_sc, scenery_center.x(), // scenery_center.y(), scenery_center.z()); _location->setPosition( _lon_deg, _lat_deg, _elev_ft ); _location->setOrientation( _roll_deg, _pitch_deg, _heading_deg ); sgMat4 POS; sgCopyMat4(POS, _location->getTransformMatrix()); sgVec3 trans; sgCopyVec3(trans, _location->get_view_pos()); for( int i=0; i<4; i++) { float tmp = POS[i][3]; for( int j=0; j<3; j++ ) { POS[i][j] += (tmp * trans[j]); } } _position->setTransform(POS); // } } _______________________________________________ Flightgear-devel mailing list [EMAIL PROTECTED] http://mail.flightgear.org/mailman/listinfo/flightgear-devel