changed: gcc8 base update
[opensg.git] / Source / System / NodeCores / Drawables / Geometry / Util / OSGKDTreeIntersectProxyAttachmentBase.cpp
blob6f791747ed79d967b669b0b743368b4ff4c3a8e4
1 /*---------------------------------------------------------------------------*\
2 * OpenSG *
3 * *
4 * *
5 * Copyright (C) 2000-2013 by the OpenSG Forum *
6 * *
7 * www.opensg.org *
8 * *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, carsten_neumann@gmx.net *
10 * *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
13 * License *
14 * *
15 * This library is free software; you can redistribute it and/or modify it *
16 * under the terms of the GNU Library General Public License as published *
17 * by the Free Software Foundation, version 2. *
18 * *
19 * This library is distributed in the hope that it will be useful, but *
20 * WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22 * Library General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU Library General Public *
25 * License along with this library; if not, write to the Free Software *
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
27 * *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
30 * Changes *
31 * *
32 * *
33 * *
34 * *
35 * *
36 * *
37 \*---------------------------------------------------------------------------*/
39 /*****************************************************************************\
40 *****************************************************************************
41 ** **
42 ** This file is automatically generated. **
43 ** **
44 ** Any changes made to this file WILL be lost when it is **
45 ** regenerated, which can become necessary at any time. **
46 ** **
47 ** Do not change this file, changes should be done in the derived **
48 ** class KDTreeIntersectProxyAttachment!
49 ** **
50 *****************************************************************************
51 \*****************************************************************************/
53 #include <cstdlib>
54 #include <cstdio>
56 #ifdef WIN32
57 #pragma warning(disable: 4355) // turn off 'this' : used in base member initializer list warning
58 #pragma warning(disable: 4290) // disable exception specification warning
59 #endif
61 #include "OSGConfig.h"
65 #include "OSGGeometry.h" // Geometry Class
67 #include "OSGKDTreeIntersectProxyAttachmentBase.h"
68 #include "OSGKDTreeIntersectProxyAttachment.h"
70 #include <boost/bind.hpp>
72 OSG_BEGIN_NAMESPACE
74 /***************************************************************************\
75 * Description *
76 \***************************************************************************/
78 /*! \class OSG::KDTreeIntersectProxyAttachment
82 /***************************************************************************\
83 * Field Documentation *
84 \***************************************************************************/
86 /*! \var Geometry * KDTreeIntersectProxyAttachmentBase::_sfGeometry
87 Geometry proxied by this attachment.
90 /*! \var Int32 KDTreeIntersectProxyAttachmentBase::_sfMaxDepth
91 Maximal depth of IntersectKDTree, auto determined if negative.
94 /*! \var IntersectKDTreeNode KDTreeIntersectProxyAttachmentBase::_mfTreeNodes
95 Stores the nodes of the IntersectKDTree.
98 /*! \var UInt32 KDTreeIntersectProxyAttachmentBase::_mfTriIndices
99 Stores triangle indices referenced from leaf nodes of the IntersectKDTree.
103 /***************************************************************************\
104 * FieldType/FieldTrait Instantiation *
105 \***************************************************************************/
107 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_DEV)
108 PointerType FieldTraits<KDTreeIntersectProxyAttachment *, nsOSG>::_type(
109 "KDTreeIntersectProxyAttachmentPtr",
110 "IntersectProxyAttachmentPtr",
111 KDTreeIntersectProxyAttachment::getClassType(),
112 nsOSG);
113 #endif
115 OSG_FIELDTRAITS_GETTYPE_NS(KDTreeIntersectProxyAttachment *, nsOSG)
117 OSG_EXPORT_PTR_SFIELD_FULL(PointerSField,
118 KDTreeIntersectProxyAttachment *,
119 nsOSG)
121 OSG_EXPORT_PTR_MFIELD_FULL(PointerMField,
122 KDTreeIntersectProxyAttachment *,
123 nsOSG)
125 /***************************************************************************\
126 * Field Description *
127 \***************************************************************************/
129 void KDTreeIntersectProxyAttachmentBase::classDescInserter(TypeObject &oType)
131 FieldDescriptionBase *pDesc = NULL;
134 pDesc = new SFUnrecGeometryPtr::Description(
135 SFUnrecGeometryPtr::getClassType(),
136 "geometry",
137 "Geometry proxied by this attachment.\n",
138 GeometryFieldId, GeometryFieldMask,
139 false,
140 (Field::SFDefaultFlags | Field::FStdAccess),
141 static_cast<FieldEditMethodSig>(&KDTreeIntersectProxyAttachment::editHandleGeometry),
142 static_cast<FieldGetMethodSig >(&KDTreeIntersectProxyAttachment::getHandleGeometry));
144 oType.addInitialDesc(pDesc);
146 pDesc = new SFInt32::Description(
147 SFInt32::getClassType(),
148 "maxDepth",
149 "Maximal depth of IntersectKDTree, auto determined if negative.\n",
150 MaxDepthFieldId, MaxDepthFieldMask,
151 false,
152 (Field::SFDefaultFlags | Field::FStdAccess),
153 static_cast<FieldEditMethodSig>(&KDTreeIntersectProxyAttachment::editHandleMaxDepth),
154 static_cast<FieldGetMethodSig >(&KDTreeIntersectProxyAttachment::getHandleMaxDepth));
156 oType.addInitialDesc(pDesc);
158 pDesc = new MFIntersectKDTreeNode::Description(
159 MFIntersectKDTreeNode::getClassType(),
160 "treeNodes",
161 "Stores the nodes of the IntersectKDTree.\n",
162 TreeNodesFieldId, TreeNodesFieldMask,
163 false,
164 (Field::MFDefaultFlags | Field::FStdAccess),
165 static_cast<FieldEditMethodSig>(&KDTreeIntersectProxyAttachment::editHandleTreeNodes),
166 static_cast<FieldGetMethodSig >(&KDTreeIntersectProxyAttachment::getHandleTreeNodes));
168 oType.addInitialDesc(pDesc);
170 pDesc = new MFUInt32::Description(
171 MFUInt32::getClassType(),
172 "triIndices",
173 "Stores triangle indices referenced from leaf nodes of the IntersectKDTree.\n",
174 TriIndicesFieldId, TriIndicesFieldMask,
175 false,
176 (Field::MFDefaultFlags | Field::FStdAccess),
177 static_cast<FieldEditMethodSig>(&KDTreeIntersectProxyAttachment::editHandleTriIndices),
178 static_cast<FieldGetMethodSig >(&KDTreeIntersectProxyAttachment::getHandleTriIndices));
180 oType.addInitialDesc(pDesc);
184 KDTreeIntersectProxyAttachmentBase::TypeObject KDTreeIntersectProxyAttachmentBase::_type(
185 KDTreeIntersectProxyAttachmentBase::getClassname(),
186 Inherited::getClassname(),
187 "IntersectProxyAttachment",
188 nsOSG, //Namespace
189 reinterpret_cast<PrototypeCreateF>(&KDTreeIntersectProxyAttachmentBase::createEmptyLocal),
190 reinterpret_cast<InitContainerF>(&KDTreeIntersectProxyAttachment::initMethod),
191 reinterpret_cast<ExitContainerF>(&KDTreeIntersectProxyAttachment::exitMethod),
192 reinterpret_cast<InitalInsertDescFunc>(
193 reinterpret_cast<void *>(&KDTreeIntersectProxyAttachment::classDescInserter)),
194 false,
196 "<?xml version=\"1.0\"?>\n"
197 "\n"
198 "<FieldContainer\n"
199 " name=\"KDTreeIntersectProxyAttachment\"\n"
200 " parent=\"IntersectProxyAttachment\"\n"
201 " group=\"IntersectProxyAttachment\"\n"
202 " library=\"Drawable\"\n"
203 " pointerfieldtypes=\"both\"\n"
204 " structure=\"concrete\"\n"
205 " systemcomponent=\"true\"\n"
206 " parentsystemcomponent=\"true\"\n"
207 " docGroupBase=\"GrpDrawablesGeometry\"\n"
208 " >\n"
209 " <Field\n"
210 " name=\"geometry\"\n"
211 " type=\"Geometry\"\n"
212 " category=\"pointer\"\n"
213 " cardinality=\"single\"\n"
214 " visibility=\"external\"\n"
215 " access=\"public\"\n"
216 " >\n"
217 " Geometry proxied by this attachment.\n"
218 " </Field>\n"
219 " <Field\n"
220 " name=\"maxDepth\"\n"
221 " type=\"Int32\"\n"
222 " category=\"data\"\n"
223 " cardinality=\"single\"\n"
224 " visibility=\"external\"\n"
225 " access=\"public\"\n"
226 " defaultValue=\"-1\"\n"
227 " >\n"
228 " Maximal depth of IntersectKDTree, auto determined if negative.\n"
229 " </Field>\n"
230 " <Field\n"
231 " name=\"treeNodes\"\n"
232 " type=\"IntersectKDTreeNode\"\n"
233 " category=\"data\"\n"
234 " cardinality=\"multi\"\n"
235 " visibility=\"external\"\n"
236 " access=\"protected\"\n"
237 " >\n"
238 " Stores the nodes of the IntersectKDTree.\n"
239 " </Field>\n"
240 " <Field\n"
241 " name=\"triIndices\"\n"
242 " type=\"UInt32\"\n"
243 " category=\"data\"\n"
244 " cardinality=\"multi\"\n"
245 " visibility=\"external\"\n"
246 " access=\"protected\"\n"
247 " >\n"
248 " Stores triangle indices referenced from leaf nodes of the IntersectKDTree.\n"
249 " </Field>\n"
250 "</FieldContainer>\n",
254 /*------------------------------ get -----------------------------------*/
256 FieldContainerType &KDTreeIntersectProxyAttachmentBase::getType(void)
258 return _type;
261 const FieldContainerType &KDTreeIntersectProxyAttachmentBase::getType(void) const
263 return _type;
266 UInt32 KDTreeIntersectProxyAttachmentBase::getContainerSize(void) const
268 return sizeof(KDTreeIntersectProxyAttachment);
271 /*------------------------- decorator get ------------------------------*/
274 //! Get the KDTreeIntersectProxyAttachment::_sfGeometry field.
275 const SFUnrecGeometryPtr *KDTreeIntersectProxyAttachmentBase::getSFGeometry(void) const
277 return &_sfGeometry;
280 SFUnrecGeometryPtr *KDTreeIntersectProxyAttachmentBase::editSFGeometry (void)
282 editSField(GeometryFieldMask);
284 return &_sfGeometry;
287 //! Get the value of the KDTreeIntersectProxyAttachment::_sfGeometry field.
288 Geometry * KDTreeIntersectProxyAttachmentBase::getGeometry(void) const
290 return _sfGeometry.getValue();
293 //! Set the value of the KDTreeIntersectProxyAttachment::_sfGeometry field.
294 void KDTreeIntersectProxyAttachmentBase::setGeometry(Geometry * const value)
296 editSField(GeometryFieldMask);
298 _sfGeometry.setValue(value);
302 SFInt32 *KDTreeIntersectProxyAttachmentBase::editSFMaxDepth(void)
304 editSField(MaxDepthFieldMask);
306 return &_sfMaxDepth;
309 const SFInt32 *KDTreeIntersectProxyAttachmentBase::getSFMaxDepth(void) const
311 return &_sfMaxDepth;
315 MFIntersectKDTreeNode *KDTreeIntersectProxyAttachmentBase::editMFTreeNodes(void)
317 editMField(TreeNodesFieldMask, _mfTreeNodes);
319 return &_mfTreeNodes;
322 const MFIntersectKDTreeNode *KDTreeIntersectProxyAttachmentBase::getMFTreeNodes(void) const
324 return &_mfTreeNodes;
328 MFUInt32 *KDTreeIntersectProxyAttachmentBase::editMFTriIndices(void)
330 editMField(TriIndicesFieldMask, _mfTriIndices);
332 return &_mfTriIndices;
335 const MFUInt32 *KDTreeIntersectProxyAttachmentBase::getMFTriIndices(void) const
337 return &_mfTriIndices;
345 /*------------------------------ access -----------------------------------*/
347 SizeT KDTreeIntersectProxyAttachmentBase::getBinSize(ConstFieldMaskArg whichField)
349 SizeT returnValue = Inherited::getBinSize(whichField);
351 if(FieldBits::NoField != (GeometryFieldMask & whichField))
353 returnValue += _sfGeometry.getBinSize();
355 if(FieldBits::NoField != (MaxDepthFieldMask & whichField))
357 returnValue += _sfMaxDepth.getBinSize();
359 if(FieldBits::NoField != (TreeNodesFieldMask & whichField))
361 returnValue += _mfTreeNodes.getBinSize();
363 if(FieldBits::NoField != (TriIndicesFieldMask & whichField))
365 returnValue += _mfTriIndices.getBinSize();
368 return returnValue;
371 void KDTreeIntersectProxyAttachmentBase::copyToBin(BinaryDataHandler &pMem,
372 ConstFieldMaskArg whichField)
374 Inherited::copyToBin(pMem, whichField);
376 if(FieldBits::NoField != (GeometryFieldMask & whichField))
378 _sfGeometry.copyToBin(pMem);
380 if(FieldBits::NoField != (MaxDepthFieldMask & whichField))
382 _sfMaxDepth.copyToBin(pMem);
384 if(FieldBits::NoField != (TreeNodesFieldMask & whichField))
386 _mfTreeNodes.copyToBin(pMem);
388 if(FieldBits::NoField != (TriIndicesFieldMask & whichField))
390 _mfTriIndices.copyToBin(pMem);
394 void KDTreeIntersectProxyAttachmentBase::copyFromBin(BinaryDataHandler &pMem,
395 ConstFieldMaskArg whichField)
397 Inherited::copyFromBin(pMem, whichField);
399 if(FieldBits::NoField != (GeometryFieldMask & whichField))
401 editSField(GeometryFieldMask);
402 _sfGeometry.copyFromBin(pMem);
404 if(FieldBits::NoField != (MaxDepthFieldMask & whichField))
406 editSField(MaxDepthFieldMask);
407 _sfMaxDepth.copyFromBin(pMem);
409 if(FieldBits::NoField != (TreeNodesFieldMask & whichField))
411 editMField(TreeNodesFieldMask, _mfTreeNodes);
412 _mfTreeNodes.copyFromBin(pMem);
414 if(FieldBits::NoField != (TriIndicesFieldMask & whichField))
416 editMField(TriIndicesFieldMask, _mfTriIndices);
417 _mfTriIndices.copyFromBin(pMem);
421 //! create a new instance of the class
422 KDTreeIntersectProxyAttachmentTransitPtr KDTreeIntersectProxyAttachmentBase::createLocal(BitVector bFlags)
424 KDTreeIntersectProxyAttachmentTransitPtr fc;
426 if(getClassType().getPrototype() != NULL)
428 FieldContainerTransitPtr tmpPtr =
429 getClassType().getPrototype()-> shallowCopyLocal(bFlags);
431 fc = dynamic_pointer_cast<KDTreeIntersectProxyAttachment>(tmpPtr);
434 return fc;
437 //! create a new instance of the class, copy the container flags
438 KDTreeIntersectProxyAttachmentTransitPtr KDTreeIntersectProxyAttachmentBase::createDependent(BitVector bFlags)
440 KDTreeIntersectProxyAttachmentTransitPtr fc;
442 if(getClassType().getPrototype() != NULL)
444 FieldContainerTransitPtr tmpPtr =
445 getClassType().getPrototype()-> shallowCopyDependent(bFlags);
447 fc = dynamic_pointer_cast<KDTreeIntersectProxyAttachment>(tmpPtr);
450 return fc;
453 //! create a new instance of the class
454 KDTreeIntersectProxyAttachmentTransitPtr KDTreeIntersectProxyAttachmentBase::create(void)
456 KDTreeIntersectProxyAttachmentTransitPtr fc;
458 if(getClassType().getPrototype() != NULL)
460 FieldContainerTransitPtr tmpPtr =
461 getClassType().getPrototype()-> shallowCopy();
463 fc = dynamic_pointer_cast<KDTreeIntersectProxyAttachment>(tmpPtr);
466 return fc;
469 KDTreeIntersectProxyAttachment *KDTreeIntersectProxyAttachmentBase::createEmptyLocal(BitVector bFlags)
471 KDTreeIntersectProxyAttachment *returnValue;
473 newPtr<KDTreeIntersectProxyAttachment>(returnValue, bFlags);
475 returnValue->_pFieldFlags->_bNamespaceMask &= ~bFlags;
477 return returnValue;
480 //! create an empty new instance of the class, do not copy the prototype
481 KDTreeIntersectProxyAttachment *KDTreeIntersectProxyAttachmentBase::createEmpty(void)
483 KDTreeIntersectProxyAttachment *returnValue;
485 newPtr<KDTreeIntersectProxyAttachment>(returnValue, Thread::getCurrentLocalFlags());
487 returnValue->_pFieldFlags->_bNamespaceMask &=
488 ~Thread::getCurrentLocalFlags();
490 return returnValue;
494 FieldContainerTransitPtr KDTreeIntersectProxyAttachmentBase::shallowCopyLocal(
495 BitVector bFlags) const
497 KDTreeIntersectProxyAttachment *tmpPtr;
499 newPtr(tmpPtr, dynamic_cast<const KDTreeIntersectProxyAttachment *>(this), bFlags);
501 FieldContainerTransitPtr returnValue(tmpPtr);
503 tmpPtr->_pFieldFlags->_bNamespaceMask &= ~bFlags;
505 return returnValue;
508 FieldContainerTransitPtr KDTreeIntersectProxyAttachmentBase::shallowCopyDependent(
509 BitVector bFlags) const
511 KDTreeIntersectProxyAttachment *tmpPtr;
513 newPtr(tmpPtr, dynamic_cast<const KDTreeIntersectProxyAttachment *>(this), ~bFlags);
515 FieldContainerTransitPtr returnValue(tmpPtr);
517 tmpPtr->_pFieldFlags->_bNamespaceMask = bFlags;
519 return returnValue;
522 FieldContainerTransitPtr KDTreeIntersectProxyAttachmentBase::shallowCopy(void) const
524 KDTreeIntersectProxyAttachment *tmpPtr;
526 newPtr(tmpPtr,
527 dynamic_cast<const KDTreeIntersectProxyAttachment *>(this),
528 Thread::getCurrentLocalFlags());
530 tmpPtr->_pFieldFlags->_bNamespaceMask &= ~Thread::getCurrentLocalFlags();
532 FieldContainerTransitPtr returnValue(tmpPtr);
534 return returnValue;
540 /*------------------------- constructors ----------------------------------*/
542 KDTreeIntersectProxyAttachmentBase::KDTreeIntersectProxyAttachmentBase(void) :
543 Inherited(),
544 _sfGeometry (NULL),
545 _sfMaxDepth (Int32(-1)),
546 _mfTreeNodes (),
547 _mfTriIndices ()
551 KDTreeIntersectProxyAttachmentBase::KDTreeIntersectProxyAttachmentBase(const KDTreeIntersectProxyAttachmentBase &source) :
552 Inherited(source),
553 _sfGeometry (NULL),
554 _sfMaxDepth (source._sfMaxDepth ),
555 _mfTreeNodes (source._mfTreeNodes ),
556 _mfTriIndices (source._mfTriIndices )
561 /*-------------------------- destructors ----------------------------------*/
563 KDTreeIntersectProxyAttachmentBase::~KDTreeIntersectProxyAttachmentBase(void)
567 void KDTreeIntersectProxyAttachmentBase::onCreate(const KDTreeIntersectProxyAttachment *source)
569 Inherited::onCreate(source);
571 if(source != NULL)
573 KDTreeIntersectProxyAttachment *pThis = static_cast<KDTreeIntersectProxyAttachment *>(this);
575 pThis->setGeometry(source->getGeometry());
579 GetFieldHandlePtr KDTreeIntersectProxyAttachmentBase::getHandleGeometry (void) const
581 SFUnrecGeometryPtr::GetHandlePtr returnValue(
582 new SFUnrecGeometryPtr::GetHandle(
583 &_sfGeometry,
584 this->getType().getFieldDesc(GeometryFieldId),
585 const_cast<KDTreeIntersectProxyAttachmentBase *>(this)));
587 return returnValue;
590 EditFieldHandlePtr KDTreeIntersectProxyAttachmentBase::editHandleGeometry (void)
592 SFUnrecGeometryPtr::EditHandlePtr returnValue(
593 new SFUnrecGeometryPtr::EditHandle(
594 &_sfGeometry,
595 this->getType().getFieldDesc(GeometryFieldId),
596 this));
598 returnValue->setSetMethod(
599 boost::bind(&KDTreeIntersectProxyAttachment::setGeometry,
600 static_cast<KDTreeIntersectProxyAttachment *>(this), _1));
602 editSField(GeometryFieldMask);
604 return returnValue;
607 GetFieldHandlePtr KDTreeIntersectProxyAttachmentBase::getHandleMaxDepth (void) const
609 SFInt32::GetHandlePtr returnValue(
610 new SFInt32::GetHandle(
611 &_sfMaxDepth,
612 this->getType().getFieldDesc(MaxDepthFieldId),
613 const_cast<KDTreeIntersectProxyAttachmentBase *>(this)));
615 return returnValue;
618 EditFieldHandlePtr KDTreeIntersectProxyAttachmentBase::editHandleMaxDepth (void)
620 SFInt32::EditHandlePtr returnValue(
621 new SFInt32::EditHandle(
622 &_sfMaxDepth,
623 this->getType().getFieldDesc(MaxDepthFieldId),
624 this));
627 editSField(MaxDepthFieldMask);
629 return returnValue;
632 GetFieldHandlePtr KDTreeIntersectProxyAttachmentBase::getHandleTreeNodes (void) const
634 MFIntersectKDTreeNode::GetHandlePtr returnValue(
635 new MFIntersectKDTreeNode::GetHandle(
636 &_mfTreeNodes,
637 this->getType().getFieldDesc(TreeNodesFieldId),
638 const_cast<KDTreeIntersectProxyAttachmentBase *>(this)));
640 return returnValue;
643 EditFieldHandlePtr KDTreeIntersectProxyAttachmentBase::editHandleTreeNodes (void)
645 MFIntersectKDTreeNode::EditHandlePtr returnValue(
646 new MFIntersectKDTreeNode::EditHandle(
647 &_mfTreeNodes,
648 this->getType().getFieldDesc(TreeNodesFieldId),
649 this));
652 editMField(TreeNodesFieldMask, _mfTreeNodes);
654 return returnValue;
657 GetFieldHandlePtr KDTreeIntersectProxyAttachmentBase::getHandleTriIndices (void) const
659 MFUInt32::GetHandlePtr returnValue(
660 new MFUInt32::GetHandle(
661 &_mfTriIndices,
662 this->getType().getFieldDesc(TriIndicesFieldId),
663 const_cast<KDTreeIntersectProxyAttachmentBase *>(this)));
665 return returnValue;
668 EditFieldHandlePtr KDTreeIntersectProxyAttachmentBase::editHandleTriIndices (void)
670 MFUInt32::EditHandlePtr returnValue(
671 new MFUInt32::EditHandle(
672 &_mfTriIndices,
673 this->getType().getFieldDesc(TriIndicesFieldId),
674 this));
677 editMField(TriIndicesFieldMask, _mfTriIndices);
679 return returnValue;
683 #ifdef OSG_MT_CPTR_ASPECT
684 void KDTreeIntersectProxyAttachmentBase::execSyncV( FieldContainer &oFrom,
685 ConstFieldMaskArg whichField,
686 AspectOffsetStore &oOffsets,
687 ConstFieldMaskArg syncMode,
688 const UInt32 uiSyncInfo)
690 KDTreeIntersectProxyAttachment *pThis = static_cast<KDTreeIntersectProxyAttachment *>(this);
692 pThis->execSync(static_cast<KDTreeIntersectProxyAttachment *>(&oFrom),
693 whichField,
694 oOffsets,
695 syncMode,
696 uiSyncInfo);
698 #endif
701 #ifdef OSG_MT_CPTR_ASPECT
702 FieldContainer *KDTreeIntersectProxyAttachmentBase::createAspectCopy(
703 const FieldContainer *pRefAspect) const
705 KDTreeIntersectProxyAttachment *returnValue;
707 newAspectCopy(returnValue,
708 dynamic_cast<const KDTreeIntersectProxyAttachment *>(pRefAspect),
709 dynamic_cast<const KDTreeIntersectProxyAttachment *>(this));
711 return returnValue;
713 #endif
715 void KDTreeIntersectProxyAttachmentBase::resolveLinks(void)
717 Inherited::resolveLinks();
719 static_cast<KDTreeIntersectProxyAttachment *>(this)->setGeometry(NULL);
721 #ifdef OSG_MT_CPTR_ASPECT
722 AspectOffsetStore oOffsets;
724 _pAspectStore->fillOffsetArray(oOffsets, this);
725 #endif
727 #ifdef OSG_MT_CPTR_ASPECT
728 _mfTreeNodes.terminateShare(Thread::getCurrentAspect(),
729 oOffsets);
730 #endif
731 #ifdef OSG_MT_CPTR_ASPECT
732 _mfTriIndices.terminateShare(Thread::getCurrentAspect(),
733 oOffsets);
734 #endif
738 OSG_END_NAMESPACE