Added use of ref_ptr<> for the replaced node in osg::Group::replaceChild(,)
to prevent it being deleted while it was still being used with the body of the method. Added mention of the shadow texture demo.
This commit is contained in:
parent
a545f3b48c
commit
493d86fc73
3
NEWS
3
NEWS
@ -2,6 +2,9 @@
|
|||||||
OSG News (most significant items from ChangeLog)
|
OSG News (most significant items from ChangeLog)
|
||||||
================================================
|
================================================
|
||||||
|
|
||||||
|
Added new osgshadowtexture demo which illustrates how to create
|
||||||
|
dynamic shadow textures in your scene.
|
||||||
|
|
||||||
Addition osgSim which is NodeKit designed for visual simulation
|
Addition osgSim which is NodeKit designed for visual simulation
|
||||||
market, currently features high fidelity light points support.
|
market, currently features high fidelity light points support.
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ bool Group::setChild( unsigned int i, Node* newNode )
|
|||||||
if (i<_children.size() && newNode)
|
if (i<_children.size() && newNode)
|
||||||
{
|
{
|
||||||
|
|
||||||
Node* origNode = _children[i].get();
|
ref_ptr<Node> origNode = _children[i];
|
||||||
|
|
||||||
// first remove for origNode's parent list.
|
// first remove for origNode's parent list.
|
||||||
origNode->removeParent(this);
|
origNode->removeParent(this);
|
||||||
@ -213,7 +213,28 @@ bool Group::setChild( unsigned int i, Node* newNode )
|
|||||||
if (delta_numChildrenWithCullingDisabled!=0)
|
if (delta_numChildrenWithCullingDisabled!=0)
|
||||||
{
|
{
|
||||||
setNumChildrenWithCullingDisabled(
|
setNumChildrenWithCullingDisabled(
|
||||||
getNumChildrenWithCullingDisabled()-1
|
getNumChildrenWithCullingDisabled()+delta_numChildrenWithCullingDisabled
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// could now require disabling of culling thanks to the new subgraph,
|
||||||
|
// so need to check and update if required.
|
||||||
|
int delta_numChildrenWithOccluderNodes = 0;
|
||||||
|
if (origNode->getNumChildrenWithOccluderNodes()>0 ||
|
||||||
|
!origNode->getCullingActive())
|
||||||
|
{
|
||||||
|
--delta_numChildrenWithOccluderNodes;
|
||||||
|
}
|
||||||
|
if (newNode->getNumChildrenWithOccluderNodes()>0 ||
|
||||||
|
!newNode->getCullingActive())
|
||||||
|
{
|
||||||
|
++delta_numChildrenWithOccluderNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (delta_numChildrenWithOccluderNodes!=0)
|
||||||
|
{
|
||||||
|
setNumChildrenWithOccluderNodes(
|
||||||
|
getNumChildrenWithOccluderNodes()+delta_numChildrenWithOccluderNodes
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user