| | 200 | osg::Quat rotation; |
| | 201 | osg::Vec4 vec4; |
| | 202 | while (arguments.read("--rotate-model",vec4[0],vec4[1],vec4[2],vec4[3])) |
| | 203 | { |
| | 204 | osg::Quat local_rotate; |
| | 205 | local_rotate.makeRotate(osg::DegreesToRadians(vec4[0]),vec4[1],vec4[2],vec4[3]); |
| | 206 | |
| | 207 | rotation = rotation * local_rotate; |
| | 208 | } |
| | 209 | |
| | 210 | osg::NodeCallback* nc = 0; |
| | 211 | std::string flightpath_filename; |
| | 212 | while (arguments.read("--flight-path",flightpath_filename)) |
| | 213 | { |
| | 214 | std::fstream fin(flightpath_filename.c_str()); |
| | 215 | if (fin) |
| | 216 | { |
| | 217 | osg::AnimationPath* path = new osg::AnimationPath; |
| | 218 | path->read(fin); |
| | 219 | nc = new osg::AnimationPathCallback(path); |
| | 220 | } |
| | 221 | } |
| | 222 | |
| | 223 | osgGA::NodeTrackerManipulator::TrackerMode trackerMode = osgGA::NodeTrackerManipulator::NODE_CENTER_AND_ROTATION; |
| | 224 | std::string mode; |
| | 225 | while (arguments.read("--tracker-mode",mode)) |
| | 226 | { |
| | 227 | if (mode=="NODE_CENTER_AND_ROTATION") trackerMode = osgGA::NodeTrackerManipulator::NODE_CENTER_AND_ROTATION; |
| | 228 | else if (mode=="NODE_CENTER_AND_AZIM") trackerMode = osgGA::NodeTrackerManipulator::NODE_CENTER_AND_AZIM; |
| | 229 | else if (mode=="NODE_CENTER") trackerMode = osgGA::NodeTrackerManipulator::NODE_CENTER; |
| | 230 | else |
| | 231 | { |
| | 232 | std::cout<<"Unrecognized --tracker-mode option "<<mode<<", valid options are:"<<std::endl; |
| | 233 | std::cout<<" NODE_CENTER_AND_ROTATION"<<std::endl; |
| | 234 | std::cout<<" NODE_CENTER_AND_AZIM"<<std::endl; |
| | 235 | std::cout<<" NODE_CENTER"<<std::endl; |
| | 236 | return 1; |
| | 237 | } |
| | 238 | } |
| | 239 | |
| | 240 | |
| | 241 | osgGA::NodeTrackerManipulator::RotationMode rotationMode = osgGA::NodeTrackerManipulator::TRACKBALL; |
| | 242 | while (arguments.read("--rotation-mode",mode)) |
| | 243 | { |
| | 244 | if (mode=="TRACKBALL") rotationMode = osgGA::NodeTrackerManipulator::TRACKBALL; |
| | 245 | else if (mode=="ELEVATION_AZIM") rotationMode = osgGA::NodeTrackerManipulator::ELEVATION_AZIM; |
| | 246 | else |
| | 247 | { |
| | 248 | std::cout<<"Unrecognized --rotation-mode option "<<mode<<", valid options are:"<<std::endl; |
| | 249 | std::cout<<" TRACKBALL"<<std::endl; |
| | 250 | std::cout<<" ELEVATION_AZIM"<<std::endl; |
| | 251 | return 1; |
| | 252 | } |
| | 253 | } |
| | 254 | |