<div dir="ltr">Hi Robert,<div><br></div><div>thanks for the *hints* :) ... Reading the code is always the best option :-). I found the thing while reading the code you pointed me to. It is this thing that when set up properly per the database, then it works nicely ..</div><div><br></div><div>viewer->getDatabasePager()->setTargetMaximumNumberOfPageLOD(...);<br></div><div><br></div><div>Thanks again!</div><div><br></div><div>Cheers,</div><div>Nick</div><div><br></div><div>p.s. I still like my simple hack :-). I will keep it and not do it the proper way this time ;-)</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 3, 2016 at 7:51 PM, Robert Osfield <span dir="ltr"><<a href="mailto:robert.osfield@gmail.com" target="_blank">robert.osfield@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Nick,<br>
<br>
It's *really* inefficient to use an update callback to do this type of<br>
task, I can not recommend going this path, it's waste of both our time<br>
trying to coax it to do something useful.<br>
<br>
The right way of doing it is by overriding the<br>
DatabasePager::updateSceneGraph() method or implementing you own<br>
equivalent method in the Viewer::updateTraversak() in place of current<br>
calls to updateceneSceneGraph().<br>
<br>
Robert.<br>
<br>
On 3 June 2016 at 18:28, Trajce Nikolov NICK<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:trajce.nikolov.nick@gmail.com">trajce.nikolov.nick@gmail.com</a>> wrote:<br>
> Hi Robert,<br>
><br>
> this is my update callback .. And I know for sure it was working. I just did<br>
> a clean app (modified osgviewer with only this callback installed in the<br>
> root PagedLODs) and I never see a Paged Out tile ... I am limited to not<br>
> having the possibility to make a custom DatabasePager or it will go really<br>
> complicated. The root PagedLOD can have only one or zero children (that is<br>
> the test database I am testing it against)<br>
><br>
> struct UpdateCallback : public osg::NodeCallback<br>
> {<br>
> UpdateCallback()<br>
> : _numChildren(0)<br>
> {<br>
><br>
> }<br>
> virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)<br>
> {<br>
> osg::PagedLOD* plod = dynamic_cast<osg::PagedLOD*>(node);<br>
> if (plod)<br>
> {<br>
> if (plod->getNumChildren() != _numChildren)<br>
> {<br>
> _numChildren = plod->getNumChildren();<br>
><br>
> if (_numChildren)<br>
> std::cout << "Paged in" << std::endl;<br>
> else<br>
> std::cout << "Paged out" << std::endl;<br>
><br>
> }<br>
> }<br>
> traverse(node, nv);<br>
> }<br>
> protected:<br>
> int _numChildren;<br>
> };<br>
><br>
> On Fri, Jun 3, 2016 at 6:49 PM, Robert Osfield <<a href="mailto:robert.osfield@gmail.com">robert.osfield@gmail.com</a>><br>
> wrote:<br>
>><br>
>> Hi Nick,<br>
>><br>
>> There isn't a feature directly built into osg::PageLOD or<br>
>> DatabasePager for this.<br>
>><br>
>> What you could do is look at the  creating a custom DatabasePager that<br>
>> overrides the following method:<br>
>><br>
>>        /** Merge the changes to the scene graph by calling calling<br>
>> removeExpiredSubgraphs then addLoadedDataToSceneGraph.<br>
>>           * Note, must only be called from single thread update phase. */<br>
>>         virtual void updateSceneGraph(const osg::FrameStamp& frameStamp);<br>
>><br>
>> Within this you could add your own tracking of when things are merge or<br>
>> removed.<br>
>><br>
>> Robert.<br>
>><br>
>><br>
>><br>
>> On 3 June 2016 at 17:15, Trajce Nikolov NICK<br>
>> <<a href="mailto:trajce.nikolov.nick@gmail.com">trajce.nikolov.nick@gmail.com</a>> wrote:<br>
>> > Hi Community,<br>
>> ><br>
>> > I was looking for a way to detect when PagedLOD gets its children paged<br>
>> > in/out. So I installed an update callback and based on a difference in<br>
>> > the<br>
>> > children number I was able to know when such change occurred. And this<br>
>> > was<br>
>> > working with a code an year ago.<br>
>> ><br>
>> > Now it doesn't .. Any clue or hint how to detect such changes?<br>
>> ><br>
>> > Thanks a bunch as always!<br>
>> ><br>
>> > Cheers,<br>
>> > Nick<br>
>> ><br>
>> > --<br>
>> > trajce nikolov nick<br>
>> ><br>
>> > _______________________________________________<br>
>> > osg-users mailing list<br>
>> > <a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
>> ><br>
>> > <a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
>> ><br>
>> _______________________________________________<br>
>> osg-users mailing list<br>
>> <a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
>> <a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
><br>
><br>
><br>
><br>
> --<br>
> trajce nikolov nick<br>
><br>
> _______________________________________________<br>
> osg-users mailing list<br>
> <a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
> <a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
><br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">trajce nikolov nick<br></div>
</div>