00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 #define OSG_COMPILEGEOMETRYINST
00055
00056 #include <stdlib.h>
00057 #include <stdio.h>
00058
00059 #include <OSGConfig.h>
00060
00061 #include "OSGGeometryBase.h"
00062 #include "OSGGeometry.h"
00063
00064
00065 OSG_BEGIN_NAMESPACE
00066
00067 const OSG::BitVector GeometryBase::TypesFieldMask =
00068 (TypeTraits<BitVector>::One << GeometryBase::TypesFieldId);
00069
00070 const OSG::BitVector GeometryBase::LengthsFieldMask =
00071 (TypeTraits<BitVector>::One << GeometryBase::LengthsFieldId);
00072
00073 const OSG::BitVector GeometryBase::PositionsFieldMask =
00074 (TypeTraits<BitVector>::One << GeometryBase::PositionsFieldId);
00075
00076 const OSG::BitVector GeometryBase::NormalsFieldMask =
00077 (TypeTraits<BitVector>::One << GeometryBase::NormalsFieldId);
00078
00079 const OSG::BitVector GeometryBase::ColorsFieldMask =
00080 (TypeTraits<BitVector>::One << GeometryBase::ColorsFieldId);
00081
00082 const OSG::BitVector GeometryBase::SecondaryColorsFieldMask =
00083 (TypeTraits<BitVector>::One << GeometryBase::SecondaryColorsFieldId);
00084
00085 const OSG::BitVector GeometryBase::TexCoordsFieldMask =
00086 (TypeTraits<BitVector>::One << GeometryBase::TexCoordsFieldId);
00087
00088 const OSG::BitVector GeometryBase::TexCoords1FieldMask =
00089 (TypeTraits<BitVector>::One << GeometryBase::TexCoords1FieldId);
00090
00091 const OSG::BitVector GeometryBase::TexCoords2FieldMask =
00092 (TypeTraits<BitVector>::One << GeometryBase::TexCoords2FieldId);
00093
00094 const OSG::BitVector GeometryBase::TexCoords3FieldMask =
00095 (TypeTraits<BitVector>::One << GeometryBase::TexCoords3FieldId);
00096
00097 const OSG::BitVector GeometryBase::TexCoords4FieldMask =
00098 (TypeTraits<BitVector>::One << GeometryBase::TexCoords4FieldId);
00099
00100 const OSG::BitVector GeometryBase::TexCoords5FieldMask =
00101 (TypeTraits<BitVector>::One << GeometryBase::TexCoords5FieldId);
00102
00103 const OSG::BitVector GeometryBase::TexCoords6FieldMask =
00104 (TypeTraits<BitVector>::One << GeometryBase::TexCoords6FieldId);
00105
00106 const OSG::BitVector GeometryBase::TexCoords7FieldMask =
00107 (TypeTraits<BitVector>::One << GeometryBase::TexCoords7FieldId);
00108
00109 const OSG::BitVector GeometryBase::IndicesFieldMask =
00110 (TypeTraits<BitVector>::One << GeometryBase::IndicesFieldId);
00111
00112 const OSG::BitVector GeometryBase::IndexMappingFieldMask =
00113 (TypeTraits<BitVector>::One << GeometryBase::IndexMappingFieldId);
00114
00115 const OSG::BitVector GeometryBase::DlistCacheFieldMask =
00116 (TypeTraits<BitVector>::One << GeometryBase::DlistCacheFieldId);
00117
00118 const OSG::BitVector GeometryBase::GLIdFieldMask =
00119 (TypeTraits<BitVector>::One << GeometryBase::GLIdFieldId);
00120
00121 const OSG::BitVector GeometryBase::IgnoreGLForAspectFieldMask =
00122 (TypeTraits<BitVector>::One << GeometryBase::IgnoreGLForAspectFieldId);
00123
00124 const OSG::BitVector GeometryBase::MinindexFieldMask =
00125 (TypeTraits<BitVector>::One << GeometryBase::MinindexFieldId);
00126
00127 const OSG::BitVector GeometryBase::MaxindexFieldMask =
00128 (TypeTraits<BitVector>::One << GeometryBase::MaxindexFieldId);
00129
00130 const OSG::BitVector GeometryBase::LowindicesFieldMask =
00131 (TypeTraits<BitVector>::One << GeometryBase::LowindicesFieldId);
00132
00133 const OSG::BitVector GeometryBase::HighindicesFieldMask =
00134 (TypeTraits<BitVector>::One << GeometryBase::HighindicesFieldId);
00135
00136 const OSG::BitVector GeometryBase::VboFieldMask =
00137 (TypeTraits<BitVector>::One << GeometryBase::VboFieldId);
00138
00139 const OSG::BitVector GeometryBase::MTInfluenceMask =
00140 (Inherited::MTInfluenceMask) |
00141 (static_cast<BitVector>(0x0) << Inherited::NextFieldId);
00142
00143
00144
00145
00219
00220
00221 FieldDescription *GeometryBase::_desc[] =
00222 {
00223 new FieldDescription(SFGeoPTypesPtr::getClassType(),
00224 "types",
00225 TypesFieldId, TypesFieldMask,
00226 false,
00227 (FieldAccessMethod) &GeometryBase::getSFTypes),
00228 new FieldDescription(SFGeoPLengthsPtr::getClassType(),
00229 "lengths",
00230 LengthsFieldId, LengthsFieldMask,
00231 false,
00232 (FieldAccessMethod) &GeometryBase::getSFLengths),
00233 new FieldDescription(SFGeoPositionsPtr::getClassType(),
00234 "positions",
00235 PositionsFieldId, PositionsFieldMask,
00236 false,
00237 (FieldAccessMethod) &GeometryBase::getSFPositions),
00238 new FieldDescription(SFGeoNormalsPtr::getClassType(),
00239 "normals",
00240 NormalsFieldId, NormalsFieldMask,
00241 false,
00242 (FieldAccessMethod) &GeometryBase::getSFNormals),
00243 new FieldDescription(SFGeoColorsPtr::getClassType(),
00244 "colors",
00245 ColorsFieldId, ColorsFieldMask,
00246 false,
00247 (FieldAccessMethod) &GeometryBase::getSFColors),
00248 new FieldDescription(SFGeoColorsPtr::getClassType(),
00249 "secondaryColors",
00250 SecondaryColorsFieldId, SecondaryColorsFieldMask,
00251 false,
00252 (FieldAccessMethod) &GeometryBase::getSFSecondaryColors),
00253 new FieldDescription(SFGeoTexCoordsPtr::getClassType(),
00254 "texCoords",
00255 TexCoordsFieldId, TexCoordsFieldMask,
00256 false,
00257 (FieldAccessMethod) &GeometryBase::getSFTexCoords),
00258 new FieldDescription(SFGeoTexCoordsPtr::getClassType(),
00259 "texCoords1",
00260 TexCoords1FieldId, TexCoords1FieldMask,
00261 false,
00262 (FieldAccessMethod) &GeometryBase::getSFTexCoords1),
00263 new FieldDescription(SFGeoTexCoordsPtr::getClassType(),
00264 "texCoords2",
00265 TexCoords2FieldId, TexCoords2FieldMask,
00266 false,
00267 (FieldAccessMethod) &GeometryBase::getSFTexCoords2),
00268 new FieldDescription(SFGeoTexCoordsPtr::getClassType(),
00269 "texCoords3",
00270 TexCoords3FieldId, TexCoords3FieldMask,
00271 false,
00272 (FieldAccessMethod) &GeometryBase::getSFTexCoords3),
00273 new FieldDescription(SFGeoTexCoordsPtr::getClassType(),
00274 "texCoords4",
00275 TexCoords4FieldId, TexCoords4FieldMask,
00276 false,
00277 (FieldAccessMethod) &GeometryBase::getSFTexCoords4),
00278 new FieldDescription(SFGeoTexCoordsPtr::getClassType(),
00279 "texCoords5",
00280 TexCoords5FieldId, TexCoords5FieldMask,
00281 false,
00282 (FieldAccessMethod) &GeometryBase::getSFTexCoords5),
00283 new FieldDescription(SFGeoTexCoordsPtr::getClassType(),
00284 "texCoords6",
00285 TexCoords6FieldId, TexCoords6FieldMask,
00286 false,
00287 (FieldAccessMethod) &GeometryBase::getSFTexCoords6),
00288 new FieldDescription(SFGeoTexCoordsPtr::getClassType(),
00289 "texCoords7",
00290 TexCoords7FieldId, TexCoords7FieldMask,
00291 false,
00292 (FieldAccessMethod) &GeometryBase::getSFTexCoords7),
00293 new FieldDescription(SFGeoIndicesPtr::getClassType(),
00294 "indices",
00295 IndicesFieldId, IndicesFieldMask,
00296 false,
00297 (FieldAccessMethod) &GeometryBase::getSFIndices),
00298 new FieldDescription(MFUInt16::getClassType(),
00299 "indexMapping",
00300 IndexMappingFieldId, IndexMappingFieldMask,
00301 false,
00302 (FieldAccessMethod) &GeometryBase::getMFIndexMapping),
00303 new FieldDescription(SFBool::getClassType(),
00304 "dlistCache",
00305 DlistCacheFieldId, DlistCacheFieldMask,
00306 false,
00307 (FieldAccessMethod) &GeometryBase::getSFDlistCache),
00308 new FieldDescription(SFInt32::getClassType(),
00309 "GLId",
00310 GLIdFieldId, GLIdFieldMask,
00311 true,
00312 (FieldAccessMethod) &GeometryBase::getSFGLId),
00313 new FieldDescription(SFInt32::getClassType(),
00314 "IgnoreGLForAspect",
00315 IgnoreGLForAspectFieldId, IgnoreGLForAspectFieldMask,
00316 true,
00317 (FieldAccessMethod) &GeometryBase::getSFIgnoreGLForAspect),
00318 new FieldDescription(SFUInt32::getClassType(),
00319 "minindex",
00320 MinindexFieldId, MinindexFieldMask,
00321 true,
00322 (FieldAccessMethod) &GeometryBase::getSFMinindex),
00323 new FieldDescription(SFUInt32::getClassType(),
00324 "maxindex",
00325 MaxindexFieldId, MaxindexFieldMask,
00326 true,
00327 (FieldAccessMethod) &GeometryBase::getSFMaxindex),
00328 new FieldDescription(MFUInt32::getClassType(),
00329 "lowindices",
00330 LowindicesFieldId, LowindicesFieldMask,
00331 true,
00332 (FieldAccessMethod) &GeometryBase::getMFLowindices),
00333 new FieldDescription(MFUInt32::getClassType(),
00334 "highindices",
00335 HighindicesFieldId, HighindicesFieldMask,
00336 true,
00337 (FieldAccessMethod) &GeometryBase::getMFHighindices),
00338 new FieldDescription(SFBool::getClassType(),
00339 "vbo",
00340 VboFieldId, VboFieldMask,
00341 false,
00342 (FieldAccessMethod) &GeometryBase::getSFVbo)
00343 };
00344
00345
00346 FieldContainerType GeometryBase::_type(
00347 "Geometry",
00348 "MaterialDrawable",
00349 NULL,
00350 (PrototypeCreateF) &GeometryBase::createEmpty,
00351 Geometry::initMethod,
00352 _desc,
00353 sizeof(_desc));
00354
00355
00356
00357
00358
00359 FieldContainerType &GeometryBase::getType(void)
00360 {
00361 return _type;
00362 }
00363
00364 const FieldContainerType &GeometryBase::getType(void) const
00365 {
00366 return _type;
00367 }
00368
00369
00370 FieldContainerPtr GeometryBase::shallowCopy(void) const
00371 {
00372 GeometryPtr returnValue;
00373
00374 newPtr(returnValue, dynamic_cast<const Geometry *>(this));
00375
00376 return returnValue;
00377 }
00378
00379 UInt32 GeometryBase::getContainerSize(void) const
00380 {
00381 return sizeof(Geometry);
00382 }
00383
00384
00385 #if !defined(OSG_FIXED_MFIELDSYNC)
00386 void GeometryBase::executeSync( FieldContainer &other,
00387 const BitVector &whichField)
00388 {
00389 this->executeSyncImpl((GeometryBase *) &other, whichField);
00390 }
00391 #else
00392 void GeometryBase::executeSync( FieldContainer &other,
00393 const BitVector &whichField, const SyncInfo &sInfo )
00394 {
00395 this->executeSyncImpl((GeometryBase *) &other, whichField, sInfo);
00396 }
00397 void GeometryBase::execBeginEdit(const BitVector &whichField,
00398 UInt32 uiAspect,
00399 UInt32 uiContainerSize)
00400 {
00401 this->execBeginEditImpl(whichField, uiAspect, uiContainerSize);
00402 }
00403
00404 void GeometryBase::onDestroyAspect(UInt32 uiId, UInt32 uiAspect)
00405 {
00406 Inherited::onDestroyAspect(uiId, uiAspect);
00407
00408 _mfIndexMapping.terminateShare(uiAspect, this->getContainerSize());
00409 _mfLowindices.terminateShare(uiAspect, this->getContainerSize());
00410 _mfHighindices.terminateShare(uiAspect, this->getContainerSize());
00411 }
00412 #endif
00413
00414
00415
00416 #ifdef OSG_WIN32_ICL
00417 #pragma warning (disable : 383)
00418 #endif
00419
00420 GeometryBase::GeometryBase(void) :
00421 _sfTypes (),
00422 _sfLengths (),
00423 _sfPositions (),
00424 _sfNormals (),
00425 _sfColors (),
00426 _sfSecondaryColors (),
00427 _sfTexCoords (),
00428 _sfTexCoords1 (),
00429 _sfTexCoords2 (),
00430 _sfTexCoords3 (),
00431 _sfTexCoords4 (),
00432 _sfTexCoords5 (),
00433 _sfTexCoords6 (),
00434 _sfTexCoords7 (),
00435 _sfIndices (),
00436 _mfIndexMapping (),
00437 _sfDlistCache (bool(true)),
00438 _sfGLId (Int32(0)),
00439 _sfIgnoreGLForAspect (Int32(-1)),
00440 _sfMinindex (),
00441 _sfMaxindex (),
00442 _mfLowindices (),
00443 _mfHighindices (),
00444 _sfVbo (bool(false)),
00445 Inherited()
00446 {
00447 }
00448
00449 #ifdef OSG_WIN32_ICL
00450 #pragma warning (default : 383)
00451 #endif
00452
00453 GeometryBase::GeometryBase(const GeometryBase &source) :
00454 _sfTypes (source._sfTypes ),
00455 _sfLengths (source._sfLengths ),
00456 _sfPositions (source._sfPositions ),
00457 _sfNormals (source._sfNormals ),
00458 _sfColors (source._sfColors ),
00459 _sfSecondaryColors (source._sfSecondaryColors ),
00460 _sfTexCoords (source._sfTexCoords ),
00461 _sfTexCoords1 (source._sfTexCoords1 ),
00462 _sfTexCoords2 (source._sfTexCoords2 ),
00463 _sfTexCoords3 (source._sfTexCoords3 ),
00464 _sfTexCoords4 (source._sfTexCoords4 ),
00465 _sfTexCoords5 (source._sfTexCoords5 ),
00466 _sfTexCoords6 (source._sfTexCoords6 ),
00467 _sfTexCoords7 (source._sfTexCoords7 ),
00468 _sfIndices (source._sfIndices ),
00469 _mfIndexMapping (source._mfIndexMapping ),
00470 _sfDlistCache (source._sfDlistCache ),
00471 _sfGLId (source._sfGLId ),
00472 _sfIgnoreGLForAspect (source._sfIgnoreGLForAspect ),
00473 _sfMinindex (source._sfMinindex ),
00474 _sfMaxindex (source._sfMaxindex ),
00475 _mfLowindices (source._mfLowindices ),
00476 _mfHighindices (source._mfHighindices ),
00477 _sfVbo (source._sfVbo ),
00478 Inherited (source)
00479 {
00480 }
00481
00482
00483
00484 GeometryBase::~GeometryBase(void)
00485 {
00486 }
00487
00488
00489
00490 UInt32 GeometryBase::getBinSize(const BitVector &whichField)
00491 {
00492 UInt32 returnValue = Inherited::getBinSize(whichField);
00493
00494 if(FieldBits::NoField != (TypesFieldMask & whichField))
00495 {
00496 returnValue += _sfTypes.getBinSize();
00497 }
00498
00499 if(FieldBits::NoField != (LengthsFieldMask & whichField))
00500 {
00501 returnValue += _sfLengths.getBinSize();
00502 }
00503
00504 if(FieldBits::NoField != (PositionsFieldMask & whichField))
00505 {
00506 returnValue += _sfPositions.getBinSize();
00507 }
00508
00509 if(FieldBits::NoField != (NormalsFieldMask & whichField))
00510 {
00511 returnValue += _sfNormals.getBinSize();
00512 }
00513
00514 if(FieldBits::NoField != (ColorsFieldMask & whichField))
00515 {
00516 returnValue += _sfColors.getBinSize();
00517 }
00518
00519 if(FieldBits::NoField != (SecondaryColorsFieldMask & whichField))
00520 {
00521 returnValue += _sfSecondaryColors.getBinSize();
00522 }
00523
00524 if(FieldBits::NoField != (TexCoordsFieldMask & whichField))
00525 {
00526 returnValue += _sfTexCoords.getBinSize();
00527 }
00528
00529 if(FieldBits::NoField != (TexCoords1FieldMask & whichField))
00530 {
00531 returnValue += _sfTexCoords1.getBinSize();
00532 }
00533
00534 if(FieldBits::NoField != (TexCoords2FieldMask & whichField))
00535 {
00536 returnValue += _sfTexCoords2.getBinSize();
00537 }
00538
00539 if(FieldBits::NoField != (TexCoords3FieldMask & whichField))
00540 {
00541 returnValue += _sfTexCoords3.getBinSize();
00542 }
00543
00544 if(FieldBits::NoField != (TexCoords4FieldMask & whichField))
00545 {
00546 returnValue += _sfTexCoords4.getBinSize();
00547 }
00548
00549 if(FieldBits::NoField != (TexCoords5FieldMask & whichField))
00550 {
00551 returnValue += _sfTexCoords5.getBinSize();
00552 }
00553
00554 if(FieldBits::NoField != (TexCoords6FieldMask & whichField))
00555 {
00556 returnValue += _sfTexCoords6.getBinSize();
00557 }
00558
00559 if(FieldBits::NoField != (TexCoords7FieldMask & whichField))
00560 {
00561 returnValue += _sfTexCoords7.getBinSize();
00562 }
00563
00564 if(FieldBits::NoField != (IndicesFieldMask & whichField))
00565 {
00566 returnValue += _sfIndices.getBinSize();
00567 }
00568
00569 if(FieldBits::NoField != (IndexMappingFieldMask & whichField))
00570 {
00571 returnValue += _mfIndexMapping.getBinSize();
00572 }
00573
00574 if(FieldBits::NoField != (DlistCacheFieldMask & whichField))
00575 {
00576 returnValue += _sfDlistCache.getBinSize();
00577 }
00578
00579 if(FieldBits::NoField != (GLIdFieldMask & whichField))
00580 {
00581 returnValue += _sfGLId.getBinSize();
00582 }
00583
00584 if(FieldBits::NoField != (IgnoreGLForAspectFieldMask & whichField))
00585 {
00586 returnValue += _sfIgnoreGLForAspect.getBinSize();
00587 }
00588
00589 if(FieldBits::NoField != (MinindexFieldMask & whichField))
00590 {
00591 returnValue += _sfMinindex.getBinSize();
00592 }
00593
00594 if(FieldBits::NoField != (MaxindexFieldMask & whichField))
00595 {
00596 returnValue += _sfMaxindex.getBinSize();
00597 }
00598
00599 if(FieldBits::NoField != (LowindicesFieldMask & whichField))
00600 {
00601 returnValue += _mfLowindices.getBinSize();
00602 }
00603
00604 if(FieldBits::NoField != (HighindicesFieldMask & whichField))
00605 {
00606 returnValue += _mfHighindices.getBinSize();
00607 }
00608
00609 if(FieldBits::NoField != (VboFieldMask & whichField))
00610 {
00611 returnValue += _sfVbo.getBinSize();
00612 }
00613
00614
00615 return returnValue;
00616 }
00617
00618 void GeometryBase::copyToBin( BinaryDataHandler &pMem,
00619 const BitVector &whichField)
00620 {
00621 Inherited::copyToBin(pMem, whichField);
00622
00623 if(FieldBits::NoField != (TypesFieldMask & whichField))
00624 {
00625 _sfTypes.copyToBin(pMem);
00626 }
00627
00628 if(FieldBits::NoField != (LengthsFieldMask & whichField))
00629 {
00630 _sfLengths.copyToBin(pMem);
00631 }
00632
00633 if(FieldBits::NoField != (PositionsFieldMask & whichField))
00634 {
00635 _sfPositions.copyToBin(pMem);
00636 }
00637
00638 if(FieldBits::NoField != (NormalsFieldMask & whichField))
00639 {
00640 _sfNormals.copyToBin(pMem);
00641 }
00642
00643 if(FieldBits::NoField != (ColorsFieldMask & whichField))
00644 {
00645 _sfColors.copyToBin(pMem);
00646 }
00647
00648 if(FieldBits::NoField != (SecondaryColorsFieldMask & whichField))
00649 {
00650 _sfSecondaryColors.copyToBin(pMem);
00651 }
00652
00653 if(FieldBits::NoField != (TexCoordsFieldMask & whichField))
00654 {
00655 _sfTexCoords.copyToBin(pMem);
00656 }
00657
00658 if(FieldBits::NoField != (TexCoords1FieldMask & whichField))
00659 {
00660 _sfTexCoords1.copyToBin(pMem);
00661 }
00662
00663 if(FieldBits::NoField != (TexCoords2FieldMask & whichField))
00664 {
00665 _sfTexCoords2.copyToBin(pMem);
00666 }
00667
00668 if(FieldBits::NoField != (TexCoords3FieldMask & whichField))
00669 {
00670 _sfTexCoords3.copyToBin(pMem);
00671 }
00672
00673 if(FieldBits::NoField != (TexCoords4FieldMask & whichField))
00674 {
00675 _sfTexCoords4.copyToBin(pMem);
00676 }
00677
00678 if(FieldBits::NoField != (TexCoords5FieldMask & whichField))
00679 {
00680 _sfTexCoords5.copyToBin(pMem);
00681 }
00682
00683 if(FieldBits::NoField != (TexCoords6FieldMask & whichField))
00684 {
00685 _sfTexCoords6.copyToBin(pMem);
00686 }
00687
00688 if(FieldBits::NoField != (TexCoords7FieldMask & whichField))
00689 {
00690 _sfTexCoords7.copyToBin(pMem);
00691 }
00692
00693 if(FieldBits::NoField != (IndicesFieldMask & whichField))
00694 {
00695 _sfIndices.copyToBin(pMem);
00696 }
00697
00698 if(FieldBits::NoField != (IndexMappingFieldMask & whichField))
00699 {
00700 _mfIndexMapping.copyToBin(pMem);
00701 }
00702
00703 if(FieldBits::NoField != (DlistCacheFieldMask & whichField))
00704 {
00705 _sfDlistCache.copyToBin(pMem);
00706 }
00707
00708 if(FieldBits::NoField != (GLIdFieldMask & whichField))
00709 {
00710 _sfGLId.copyToBin(pMem);
00711 }
00712
00713 if(FieldBits::NoField != (IgnoreGLForAspectFieldMask & whichField))
00714 {
00715 _sfIgnoreGLForAspect.copyToBin(pMem);
00716 }
00717
00718 if(FieldBits::NoField != (MinindexFieldMask & whichField))
00719 {
00720 _sfMinindex.copyToBin(pMem);
00721 }
00722
00723 if(FieldBits::NoField != (MaxindexFieldMask & whichField))
00724 {
00725 _sfMaxindex.copyToBin(pMem);
00726 }
00727
00728 if(FieldBits::NoField != (LowindicesFieldMask & whichField))
00729 {
00730 _mfLowindices.copyToBin(pMem);
00731 }
00732
00733 if(FieldBits::NoField != (HighindicesFieldMask & whichField))
00734 {
00735 _mfHighindices.copyToBin(pMem);
00736 }
00737
00738 if(FieldBits::NoField != (VboFieldMask & whichField))
00739 {
00740 _sfVbo.copyToBin(pMem);
00741 }
00742
00743
00744 }
00745
00746 void GeometryBase::copyFromBin( BinaryDataHandler &pMem,
00747 const BitVector &whichField)
00748 {
00749 Inherited::copyFromBin(pMem, whichField);
00750
00751 if(FieldBits::NoField != (TypesFieldMask & whichField))
00752 {
00753 _sfTypes.copyFromBin(pMem);
00754 }
00755
00756 if(FieldBits::NoField != (LengthsFieldMask & whichField))
00757 {
00758 _sfLengths.copyFromBin(pMem);
00759 }
00760
00761 if(FieldBits::NoField != (PositionsFieldMask & whichField))
00762 {
00763 _sfPositions.copyFromBin(pMem);
00764 }
00765
00766 if(FieldBits::NoField != (NormalsFieldMask & whichField))
00767 {
00768 _sfNormals.copyFromBin(pMem);
00769 }
00770
00771 if(FieldBits::NoField != (ColorsFieldMask & whichField))
00772 {
00773 _sfColors.copyFromBin(pMem);
00774 }
00775
00776 if(FieldBits::NoField != (SecondaryColorsFieldMask & whichField))
00777 {
00778 _sfSecondaryColors.copyFromBin(pMem);
00779 }
00780
00781 if(FieldBits::NoField != (TexCoordsFieldMask & whichField))
00782 {
00783 _sfTexCoords.copyFromBin(pMem);
00784 }
00785
00786 if(FieldBits::NoField != (TexCoords1FieldMask & whichField))
00787 {
00788 _sfTexCoords1.copyFromBin(pMem);
00789 }
00790
00791 if(FieldBits::NoField != (TexCoords2FieldMask & whichField))
00792 {
00793 _sfTexCoords2.copyFromBin(pMem);
00794 }
00795
00796 if(FieldBits::NoField != (TexCoords3FieldMask & whichField))
00797 {
00798 _sfTexCoords3.copyFromBin(pMem);
00799 }
00800
00801 if(FieldBits::NoField != (TexCoords4FieldMask & whichField))
00802 {
00803 _sfTexCoords4.copyFromBin(pMem);
00804 }
00805
00806 if(FieldBits::NoField != (TexCoords5FieldMask & whichField))
00807 {
00808 _sfTexCoords5.copyFromBin(pMem);
00809 }
00810
00811 if(FieldBits::NoField != (TexCoords6FieldMask & whichField))
00812 {
00813 _sfTexCoords6.copyFromBin(pMem);
00814 }
00815
00816 if(FieldBits::NoField != (TexCoords7FieldMask & whichField))
00817 {
00818 _sfTexCoords7.copyFromBin(pMem);
00819 }
00820
00821 if(FieldBits::NoField != (IndicesFieldMask & whichField))
00822 {
00823 _sfIndices.copyFromBin(pMem);
00824 }
00825
00826 if(FieldBits::NoField != (IndexMappingFieldMask & whichField))
00827 {
00828 _mfIndexMapping.copyFromBin(pMem);
00829 }
00830
00831 if(FieldBits::NoField != (DlistCacheFieldMask & whichField))
00832 {
00833 _sfDlistCache.copyFromBin(pMem);
00834 }
00835
00836 if(FieldBits::NoField != (GLIdFieldMask & whichField))
00837 {
00838 _sfGLId.copyFromBin(pMem);
00839 }
00840
00841 if(FieldBits::NoField != (IgnoreGLForAspectFieldMask & whichField))
00842 {
00843 _sfIgnoreGLForAspect.copyFromBin(pMem);
00844 }
00845
00846 if(FieldBits::NoField != (MinindexFieldMask & whichField))
00847 {
00848 _sfMinindex.copyFromBin(pMem);
00849 }
00850
00851 if(FieldBits::NoField != (MaxindexFieldMask & whichField))
00852 {
00853 _sfMaxindex.copyFromBin(pMem);
00854 }
00855
00856 if(FieldBits::NoField != (LowindicesFieldMask & whichField))
00857 {
00858 _mfLowindices.copyFromBin(pMem);
00859 }
00860
00861 if(FieldBits::NoField != (HighindicesFieldMask & whichField))
00862 {
00863 _mfHighindices.copyFromBin(pMem);
00864 }
00865
00866 if(FieldBits::NoField != (VboFieldMask & whichField))
00867 {
00868 _sfVbo.copyFromBin(pMem);
00869 }
00870
00871
00872 }
00873
00874 #if !defined(OSG_FIXED_MFIELDSYNC)
00875 void GeometryBase::executeSyncImpl( GeometryBase *pOther,
00876 const BitVector &whichField)
00877 {
00878
00879 Inherited::executeSyncImpl(pOther, whichField);
00880
00881 if(FieldBits::NoField != (TypesFieldMask & whichField))
00882 _sfTypes.syncWith(pOther->_sfTypes);
00883
00884 if(FieldBits::NoField != (LengthsFieldMask & whichField))
00885 _sfLengths.syncWith(pOther->_sfLengths);
00886
00887 if(FieldBits::NoField != (PositionsFieldMask & whichField))
00888 _sfPositions.syncWith(pOther->_sfPositions);
00889
00890 if(FieldBits::NoField != (NormalsFieldMask & whichField))
00891 _sfNormals.syncWith(pOther->_sfNormals);
00892
00893 if(FieldBits::NoField != (ColorsFieldMask & whichField))
00894 _sfColors.syncWith(pOther->_sfColors);
00895
00896 if(FieldBits::NoField != (SecondaryColorsFieldMask & whichField))
00897 _sfSecondaryColors.syncWith(pOther->_sfSecondaryColors);
00898
00899 if(FieldBits::NoField != (TexCoordsFieldMask & whichField))
00900 _sfTexCoords.syncWith(pOther->_sfTexCoords);
00901
00902 if(FieldBits::NoField != (TexCoords1FieldMask & whichField))
00903 _sfTexCoords1.syncWith(pOther->_sfTexCoords1);
00904
00905 if(FieldBits::NoField != (TexCoords2FieldMask & whichField))
00906 _sfTexCoords2.syncWith(pOther->_sfTexCoords2);
00907
00908 if(FieldBits::NoField != (TexCoords3FieldMask & whichField))
00909 _sfTexCoords3.syncWith(pOther->_sfTexCoords3);
00910
00911 if(FieldBits::NoField != (TexCoords4FieldMask & whichField))
00912 _sfTexCoords4.syncWith(pOther->_sfTexCoords4);
00913
00914 if(FieldBits::NoField != (TexCoords5FieldMask & whichField))
00915 _sfTexCoords5.syncWith(pOther->_sfTexCoords5);
00916
00917 if(FieldBits::NoField != (TexCoords6FieldMask & whichField))
00918 _sfTexCoords6.syncWith(pOther->_sfTexCoords6);
00919
00920 if(FieldBits::NoField != (TexCoords7FieldMask & whichField))
00921 _sfTexCoords7.syncWith(pOther->_sfTexCoords7);
00922
00923 if(FieldBits::NoField != (IndicesFieldMask & whichField))
00924 _sfIndices.syncWith(pOther->_sfIndices);
00925
00926 if(FieldBits::NoField != (IndexMappingFieldMask & whichField))
00927 _mfIndexMapping.syncWith(pOther->_mfIndexMapping);
00928
00929 if(FieldBits::NoField != (DlistCacheFieldMask & whichField))
00930 _sfDlistCache.syncWith(pOther->_sfDlistCache);
00931
00932 if(FieldBits::NoField != (GLIdFieldMask & whichField))
00933 _sfGLId.syncWith(pOther->_sfGLId);
00934
00935 if(FieldBits::NoField != (IgnoreGLForAspectFieldMask & whichField))
00936 _sfIgnoreGLForAspect.syncWith(pOther->_sfIgnoreGLForAspect);
00937
00938 if(FieldBits::NoField != (MinindexFieldMask & whichField))
00939 _sfMinindex.syncWith(pOther->_sfMinindex);
00940
00941 if(FieldBits::NoField != (MaxindexFieldMask & whichField))
00942 _sfMaxindex.syncWith(pOther->_sfMaxindex);
00943
00944 if(FieldBits::NoField != (LowindicesFieldMask & whichField))
00945 _mfLowindices.syncWith(pOther->_mfLowindices);
00946
00947 if(FieldBits::NoField != (HighindicesFieldMask & whichField))
00948 _mfHighindices.syncWith(pOther->_mfHighindices);
00949
00950 if(FieldBits::NoField != (VboFieldMask & whichField))
00951 _sfVbo.syncWith(pOther->_sfVbo);
00952
00953
00954 }
00955 #else
00956 void GeometryBase::executeSyncImpl( GeometryBase *pOther,
00957 const BitVector &whichField,
00958 const SyncInfo &sInfo )
00959 {
00960
00961 Inherited::executeSyncImpl(pOther, whichField, sInfo);
00962
00963 if(FieldBits::NoField != (TypesFieldMask & whichField))
00964 _sfTypes.syncWith(pOther->_sfTypes);
00965
00966 if(FieldBits::NoField != (LengthsFieldMask & whichField))
00967 _sfLengths.syncWith(pOther->_sfLengths);
00968
00969 if(FieldBits::NoField != (PositionsFieldMask & whichField))
00970 _sfPositions.syncWith(pOther->_sfPositions);
00971
00972 if(FieldBits::NoField != (NormalsFieldMask & whichField))
00973 _sfNormals.syncWith(pOther->_sfNormals);
00974
00975 if(FieldBits::NoField != (ColorsFieldMask & whichField))
00976 _sfColors.syncWith(pOther->_sfColors);
00977
00978 if(FieldBits::NoField != (SecondaryColorsFieldMask & whichField))
00979 _sfSecondaryColors.syncWith(pOther->_sfSecondaryColors);
00980
00981 if(FieldBits::NoField != (TexCoordsFieldMask & whichField))
00982 _sfTexCoords.syncWith(pOther->_sfTexCoords);
00983
00984 if(FieldBits::NoField != (TexCoords1FieldMask & whichField))
00985 _sfTexCoords1.syncWith(pOther->_sfTexCoords1);
00986
00987 if(FieldBits::NoField != (TexCoords2FieldMask & whichField))
00988 _sfTexCoords2.syncWith(pOther->_sfTexCoords2);
00989
00990 if(FieldBits::NoField != (TexCoords3FieldMask & whichField))
00991 _sfTexCoords3.syncWith(pOther->_sfTexCoords3);
00992
00993 if(FieldBits::NoField != (TexCoords4FieldMask & whichField))
00994 _sfTexCoords4.syncWith(pOther->_sfTexCoords4);
00995
00996 if(FieldBits::NoField != (TexCoords5FieldMask & whichField))
00997 _sfTexCoords5.syncWith(pOther->_sfTexCoords5);
00998
00999 if(FieldBits::NoField != (TexCoords6FieldMask & whichField))
01000 _sfTexCoords6.syncWith(pOther->_sfTexCoords6);
01001
01002 if(FieldBits::NoField != (TexCoords7FieldMask & whichField))
01003 _sfTexCoords7.syncWith(pOther->_sfTexCoords7);
01004
01005 if(FieldBits::NoField != (IndicesFieldMask & whichField))
01006 _sfIndices.syncWith(pOther->_sfIndices);
01007
01008 if(FieldBits::NoField != (DlistCacheFieldMask & whichField))
01009 _sfDlistCache.syncWith(pOther->_sfDlistCache);
01010
01011 if(FieldBits::NoField != (GLIdFieldMask & whichField))
01012 _sfGLId.syncWith(pOther->_sfGLId);
01013
01014 if(FieldBits::NoField != (IgnoreGLForAspectFieldMask & whichField))
01015 _sfIgnoreGLForAspect.syncWith(pOther->_sfIgnoreGLForAspect);
01016
01017 if(FieldBits::NoField != (MinindexFieldMask & whichField))
01018 _sfMinindex.syncWith(pOther->_sfMinindex);
01019
01020 if(FieldBits::NoField != (MaxindexFieldMask & whichField))
01021 _sfMaxindex.syncWith(pOther->_sfMaxindex);
01022
01023 if(FieldBits::NoField != (VboFieldMask & whichField))
01024 _sfVbo.syncWith(pOther->_sfVbo);
01025
01026
01027 if(FieldBits::NoField != (IndexMappingFieldMask & whichField))
01028 _mfIndexMapping.syncWith(pOther->_mfIndexMapping, sInfo);
01029
01030 if(FieldBits::NoField != (LowindicesFieldMask & whichField))
01031 _mfLowindices.syncWith(pOther->_mfLowindices, sInfo);
01032
01033 if(FieldBits::NoField != (HighindicesFieldMask & whichField))
01034 _mfHighindices.syncWith(pOther->_mfHighindices, sInfo);
01035
01036
01037 }
01038
01039 void GeometryBase::execBeginEditImpl (const BitVector &whichField,
01040 UInt32 uiAspect,
01041 UInt32 uiContainerSize)
01042 {
01043 Inherited::execBeginEditImpl(whichField, uiAspect, uiContainerSize);
01044
01045 if(FieldBits::NoField != (IndexMappingFieldMask & whichField))
01046 _mfIndexMapping.beginEdit(uiAspect, uiContainerSize);
01047
01048 if(FieldBits::NoField != (LowindicesFieldMask & whichField))
01049 _mfLowindices.beginEdit(uiAspect, uiContainerSize);
01050
01051 if(FieldBits::NoField != (HighindicesFieldMask & whichField))
01052 _mfHighindices.beginEdit(uiAspect, uiContainerSize);
01053
01054 }
01055 #endif
01056
01057
01058
01059 OSG_END_NAMESPACE
01060
01061 #include <OSGSFieldTypeDef.inl>
01062 #include <OSGMFieldTypeDef.inl>
01063
01064 OSG_BEGIN_NAMESPACE
01065
01066 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_DEV)
01067 DataType FieldDataTraits<GeometryPtr>::_type("GeometryPtr", "MaterialDrawablePtr");
01068 #endif
01069
01070 OSG_DLLEXPORT_SFIELD_DEF1(GeometryPtr, OSG_SYSTEMLIB_DLLTMPLMAPPING);
01071 OSG_DLLEXPORT_MFIELD_DEF1(GeometryPtr, OSG_SYSTEMLIB_DLLTMPLMAPPING);
01072
01073
01074
01075
01076
01077 #ifdef OSG_SGI_CC
01078 #pragma set woff 1174
01079 #endif
01080
01081 #ifdef OSG_LINUX_ICC
01082 #pragma warning( disable : 177 )
01083 #endif
01084
01085 namespace
01086 {
01087 static Char8 cvsid_cpp [] = "@(#)$Id: FCBaseTemplate_cpp.h,v 1.47 2006/03/17 17:03:19 pdaehne Exp $";
01088 static Char8 cvsid_hpp [] = OSGGEOMETRYBASE_HEADER_CVSID;
01089 static Char8 cvsid_inl [] = OSGGEOMETRYBASE_INLINE_CVSID;
01090
01091 static Char8 cvsid_fields_hpp[] = OSGGEOMETRYFIELDS_HEADER_CVSID;
01092 }
01093
01094 OSG_END_NAMESPACE
01095