that set aggressive warnings in CMAKE_CXX_FLAGS and the on that
processes the source tree(s) or the newly set flags wouldn't take
effect until second consecutive configure.
I also replaced the internally cached variables that managed the
aggresive warnings with explicit adding and removing of flags in
CXX_FLAGS
For apple we first required min cmake version 2.6.0 and then had code
warning about using 2.4.x"
address some OS X issues. Most of these fixes were previously submitted by Julian Scheid. However, this patch however should not break the example for non-OS X builds and has been tested on 64-bit Linux as well as Mac OS X 10.5.
o The value returned by QWidget::winId() is not usable as input for
WindowData under OS X the way it is for both Windows and Unix. Julian's fix
for this uses the Carbon API. Since the fix for X11 in unknown, it is now
assumed that OSG has been built with OSG_WINDOWING_SYSTEM='Carbon' for this
example to work at all when running under OS X.
o The CompositeViewer version would hang on exit with the original timer start
argument. Changing the argument value to match the non-composite version
seemed to cure the hanging.
o Julian's patch altered the setGeometry position to 30/30 in order to see any
window decorations. I did not have this problem, but left his changes intact.
o The non-composite viewer needed it's camera initialization defered until
after the ViewerQOSG's Qt base class had been initialized. Otherwise, the view
did not cover the entire window.
"
1. In WindowManager.cpp childRemoved method the second parameter "end" is misleading and
should be named "numChildren" instead. It represents how many children to remove. As a result, the method was implemented incorrectly and failed to remove UI objects. So I fixed it.
replaced this:
void WindowManager::childRemoved(unsigned int start, unsigned int end) {
while(start < end) {
Window* window = getByIndex(start);
if(!window) continue;
if(_remove(window)) {
window->_index = -1;
window->unmanaged(this);
}
start++;
}
}
with this:
void WindowManager::childRemoved(unsigned int start, unsigned int numChildren) {
for (unsigned int i = start; i < start+numChildren; i++)
{
Window* window = getByIndex(i);
if(!window) continue;
if(_remove(window)) {
window->_index = -1;
window->unmanaged(this);
}
}
}
2. in Input.cpp
The cursor in Input did not get positioned correctly, probably as a left over from the TOP LEFT origin system which is now BOTTOM LEFT.
in method positioned()
replaced this:
_cursor->setOrigin(x + xoffset + 1.0f, y - _cursor->getHeight() + 1.0f);
with this:
_cursor->setOrigin(x + xoffset + 1.0f, y + 1.0f);
Now it is placed correctly.
"
I've made a small change to Registry.cpp that puts the CURL logic AFTER the URL has been passed to the plugin rather than assuming all URL's need to be downloaded by the CURL plugin. This way, plugins can have first crack at the URL's, and if they don't handle it the previous CURL behavior kicks in."
A Collada camera will be added to the scenegraph as osg::CameraView. This allows the user to create a set of predefined camera viewpoints. I also added a new MatrixManipulator to osgGA called CameraViewSwitchManipulator and added usage of this to the osgviewer example. This manipulator allows switching between the predefined camera viewpoints. The current design limition I ran into is that a MatrixManipulator only manipulates the ViewMatrix, but for this particular manipulator I also want to update the projectionMatrix of the camera when switching to a new viewpoint. This is not implemented because I don't know what would be the best way to design it. Any ideas?
Furthermore Collada also supports orthographic camera's, where an osg::CameraView only supports a perspective camera. Would it be useful to create a CameraView with customizable optics for this?"
The code changes osgconv so that "osgconv --help" displays help info about --formats and --plugins, plus it also displays documentation for --format and --plugin, which were previously missing."