Hi Phil,
this worked for me in the past: check your project settings, "Symbols
hidden By default" should be deactivated for both osg and your project.
cheers,
Stephan
Am 07.02.13 05:34, schrieb Philip Lamb:
Hi all,
I'm running into an interesting bug in my code which manifests as
behaviour that works on one platform (Windows) and not on another (OS
X) with the same OSG code. (Using OSG trunk, around 3.1.4)
I am using the following node visitor to reset animations attached to
transform nodes:
class ResetAnimationNodesVisitor : public osg::NodeVisitor
{
public:
ResetAnimationNodesVisitor():
osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) {}
virtual void apply(osg::Transform& transform)
{
osg::NodeCallback *nc = transform.getUpdateCallback();
osg::AnimationPathCallback* apc =
dynamic_cast<osg::AnimationPathCallback*>(nc);
if (apc) {
apc->reset();
apc->update(transform);
}
traverse(transform);
}
};
This visitor is instantiated on a node thus:
void resetAnimationTime(osg::ref_ptr<osg::Node> modelNode)
{
ResetAnimationNodesVisitor ranv;
modelNode->accept(ranv);
}
When compiled and run on an animated model under Windows (compiled
with Visual Studio 2010 SP1) all works as expected. When the exact
same code is compiled and run under OS X (using Xcode 4.5.2, with LLVM
4.2.1) the dynamic cast to osg::AnimationPathCallback* is always NULL.
I have checked that RTTI is not disabled (it's on by default, and no
errors are produced by the dynamic_cast<>, and that indeed things are
as expected with this snippet inside apply():
if (nc) osg::notify(osg::NOTICE) << "UpdateCallback: className is " <<
std::string(transform.getUpdateCallback()->className()) << " and
type_id.name() is " typeid(transform.getUpdateCallback()).name() <<
std::endl;
which produces the output:
UpdateCallback: className is AnimationPathCallback and type_id.name()
is PN3osg12NodeCallbackE
So it looks like a failure somewhere in RTTI. Both typeid and the
dynamic_cast<> fail to convert the osg::NodeCallback* to an
osg::AnimationPathCallback*. Yet clearly, the callback IS the right
type, as evidenced by OSG's className() function's output.
Any ideas about where this kind of issue might be coming from?
Regards,
Phil.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org