diff --git a/src/Demos/hangglide/GliderManipulator.cpp b/src/Demos/hangglide/GliderManipulator.cpp index 1e283638a..79f4bdfd3 100644 --- a/src/Demos/hangglide/GliderManipulator.cpp +++ b/src/Demos/hangglide/GliderManipulator.cpp @@ -1,8 +1,8 @@ -#include -#include - #include "GliderManipulator.h" +#include +#include + using namespace osg; using namespace osgUtil; @@ -88,27 +88,27 @@ bool GliderManipulator::handle(const GUIEventAdapter& ea,GUIActionAdapter& us) addMouseEvent(ea); us.requestContinuousUpdate(true); if (calcMovement()) us.requestRedraw(); - + return true; } - return true; + case(GUIEventAdapter::RELEASE): { addMouseEvent(ea); us.requestContinuousUpdate(true); if (calcMovement()) us.requestRedraw(); - + return true; } - return true; + case(GUIEventAdapter::DRAG): { addMouseEvent(ea); us.requestContinuousUpdate(true); if (calcMovement()) us.requestRedraw(); - + return true; } - return true; + case(GUIEventAdapter::MOVE): { @@ -116,8 +116,8 @@ bool GliderManipulator::handle(const GUIEventAdapter& ea,GUIActionAdapter& us) us.requestContinuousUpdate(true); if (calcMovement()) us.requestRedraw(); + return true; } - return true; case(GUIEventAdapter::KEYBOARD): if (ea.getKey()==' ') @@ -128,17 +128,28 @@ bool GliderManipulator::handle(const GUIEventAdapter& ea,GUIActionAdapter& us) us.requestContinuousUpdate(false); return true; } + else if (ea.getKey()=='+') + { + _camera->setFusionDistanceRatio(_camera->getFusionDistanceRatio()*1.25f); + return true; + } + else if (ea.getKey()=='-') + { + _camera->setFusionDistanceRatio(_camera->getFusionDistanceRatio()/1.25f); + return true; + } return false; + case(GUIEventAdapter::FRAME): addMouseEvent(ea); if (calcMovement()) us.requestRedraw(); return true; + case(GUIEventAdapter::RESIZE): - { init(ea,us); us.requestRedraw(); - } - return true; + return true; + default: return false; } @@ -161,9 +172,12 @@ void GliderManipulator::addMouseEvent(const GUIEventAdapter& ea) bool GliderManipulator::calcMovement() { + _camera->setFusionDistanceMode(osg::Camera::PROPORTIONAL_TO_SCREEN_DISTANCE); + // return if less then two events have been added. if (_ga_t0.get()==NULL || _ga_t1.get()==NULL) return false; + float dt = _ga_t0->time()-_ga_t1->time(); if (dt<0.0f) @@ -220,7 +234,7 @@ bool GliderManipulator::calcMovement() lv *= (_velocity*dt); - mat *= Matrix::translate(center + lv); + mat *= Matrix::translate(center+lv); _camera->transformLookAt(mat); diff --git a/src/Demos/osgimpostor/osgimpostor.cpp b/src/Demos/osgimpostor/osgimpostor.cpp index 0f97aee93..e82110f10 100644 --- a/src/Demos/osgimpostor/osgimpostor.cpp +++ b/src/Demos/osgimpostor/osgimpostor.cpp @@ -14,6 +14,37 @@ #include +void write_usage(ostream& out,const std::string& name) +{ + out << std::endl; + out <<"usage:"<< std::endl; + out <<" "< +void write_usage(ostream& out,const std::string& name) +{ + out << std::endl; + out <<"usage:"<< std::endl; + out <<" "< +void write_usage(ostream& out,const std::string& name) +{ + out << std::endl; + out <<"usage:"<< std::endl; + out <<" "<