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_COMPILEDVRVOLUMEINST
00055
00056 #include <stdlib.h>
00057 #include <stdio.h>
00058
00059 #include <OSGConfig.h>
00060
00061 #include "OSGDVRVolumeBase.h"
00062 #include "OSGDVRVolume.h"
00063
00064 #include <OSGTextureManager.h>
00065
00066 OSG_USING_NAMESPACE
00067
00068 const OSG::BitVector DVRVolumeBase::AppearanceFieldMask =
00069 (TypeTraits<BitVector>::One << DVRVolumeBase::AppearanceFieldId);
00070
00071 const OSG::BitVector DVRVolumeBase::GeometryFieldMask =
00072 (TypeTraits<BitVector>::One << DVRVolumeBase::GeometryFieldId);
00073
00074 const OSG::BitVector DVRVolumeBase::ShaderFieldMask =
00075 (TypeTraits<BitVector>::One << DVRVolumeBase::ShaderFieldId);
00076
00077 const OSG::BitVector DVRVolumeBase::FileNameFieldMask =
00078 (TypeTraits<BitVector>::One << DVRVolumeBase::FileNameFieldId);
00079
00080 const OSG::BitVector DVRVolumeBase::SamplingFieldMask =
00081 (TypeTraits<BitVector>::One << DVRVolumeBase::SamplingFieldId);
00082
00083 const OSG::BitVector DVRVolumeBase::SamplingInteractiveFieldMask =
00084 (TypeTraits<BitVector>::One << DVRVolumeBase::SamplingInteractiveFieldId);
00085
00086 const OSG::BitVector DVRVolumeBase::BaseAlphaFieldMask =
00087 (TypeTraits<BitVector>::One << DVRVolumeBase::BaseAlphaFieldId);
00088
00089 const OSG::BitVector DVRVolumeBase::DoTexturesFieldMask =
00090 (TypeTraits<BitVector>::One << DVRVolumeBase::DoTexturesFieldId);
00091
00092 const OSG::BitVector DVRVolumeBase::BrickOverlapFieldMask =
00093 (TypeTraits<BitVector>::One << DVRVolumeBase::BrickOverlapFieldId);
00094
00095 const OSG::BitVector DVRVolumeBase::Textures2DFieldMask =
00096 (TypeTraits<BitVector>::One << DVRVolumeBase::Textures2DFieldId);
00097
00098 const OSG::BitVector DVRVolumeBase::BrickStaticMemoryMBFieldMask =
00099 (TypeTraits<BitVector>::One << DVRVolumeBase::BrickStaticMemoryMBFieldId);
00100
00101 const OSG::BitVector DVRVolumeBase::RenderMaterialFieldMask =
00102 (TypeTraits<BitVector>::One << DVRVolumeBase::RenderMaterialFieldId);
00103
00104 const OSG::BitVector DVRVolumeBase::BrickingModeFieldMask =
00105 (TypeTraits<BitVector>::One << DVRVolumeBase::BrickingModeFieldId);
00106
00107 const OSG::BitVector DVRVolumeBase::BrickStaticSubdivisionFieldMask =
00108 (TypeTraits<BitVector>::One << DVRVolumeBase::BrickStaticSubdivisionFieldId);
00109
00110 const OSG::BitVector DVRVolumeBase::BrickMaxSizeFieldMask =
00111 (TypeTraits<BitVector>::One << DVRVolumeBase::BrickMaxSizeFieldId);
00112
00113 const OSG::BitVector DVRVolumeBase::ShowBricksFieldMask =
00114 (TypeTraits<BitVector>::One << DVRVolumeBase::ShowBricksFieldId);
00115
00116 const OSG::BitVector DVRVolumeBase::DrawStyleFieldMask =
00117 (TypeTraits<BitVector>::One << DVRVolumeBase::DrawStyleFieldId);
00118
00119 const OSG::BitVector DVRVolumeBase::DrawStyleNamesFieldMask =
00120 (TypeTraits<BitVector>::One << DVRVolumeBase::DrawStyleNamesFieldId);
00121
00122 const OSG::BitVector DVRVolumeBase::TextureStorageFieldMask =
00123 (TypeTraits<BitVector>::One << DVRVolumeBase::TextureStorageFieldId);
00124
00125 const OSG::BitVector DVRVolumeBase::MTInfluenceMask =
00126 (Inherited::MTInfluenceMask) |
00127 (static_cast<BitVector>(0x0) << Inherited::NextFieldId);
00128
00129
00130
00131
00190
00191
00192 FieldDescription *DVRVolumeBase::_desc[] =
00193 {
00194 new FieldDescription(SFDVRAppearancePtr::getClassType(),
00195 "appearance",
00196 AppearanceFieldId, AppearanceFieldMask,
00197 false,
00198 (FieldAccessMethod) &DVRVolumeBase::getSFAppearance),
00199 new FieldDescription(SFDVRGeometryPtr::getClassType(),
00200 "geometry",
00201 GeometryFieldId, GeometryFieldMask,
00202 false,
00203 (FieldAccessMethod) &DVRVolumeBase::getSFGeometry),
00204 new FieldDescription(SFDVRShaderPtr::getClassType(),
00205 "shader",
00206 ShaderFieldId, ShaderFieldMask,
00207 false,
00208 (FieldAccessMethod) &DVRVolumeBase::getSFShader),
00209 new FieldDescription(SFString::getClassType(),
00210 "fileName",
00211 FileNameFieldId, FileNameFieldMask,
00212 false,
00213 (FieldAccessMethod) &DVRVolumeBase::getSFFileName),
00214 new FieldDescription(SFReal32::getClassType(),
00215 "sampling",
00216 SamplingFieldId, SamplingFieldMask,
00217 false,
00218 (FieldAccessMethod) &DVRVolumeBase::getSFSampling),
00219 new FieldDescription(SFReal32::getClassType(),
00220 "samplingInteractive",
00221 SamplingInteractiveFieldId, SamplingInteractiveFieldMask,
00222 false,
00223 (FieldAccessMethod) &DVRVolumeBase::getSFSamplingInteractive),
00224 new FieldDescription(SFReal32::getClassType(),
00225 "baseAlpha",
00226 BaseAlphaFieldId, BaseAlphaFieldMask,
00227 false,
00228 (FieldAccessMethod) &DVRVolumeBase::getSFBaseAlpha),
00229 new FieldDescription(SFBool::getClassType(),
00230 "doTextures",
00231 DoTexturesFieldId, DoTexturesFieldMask,
00232 false,
00233 (FieldAccessMethod) &DVRVolumeBase::getSFDoTextures),
00234 new FieldDescription(SFUInt32::getClassType(),
00235 "brickOverlap",
00236 BrickOverlapFieldId, BrickOverlapFieldMask,
00237 false,
00238 (FieldAccessMethod) &DVRVolumeBase::getSFBrickOverlap),
00239 new FieldDescription(SFQBit::getClassType(),
00240 "textures2D",
00241 Textures2DFieldId, Textures2DFieldMask,
00242 true,
00243 (FieldAccessMethod) &DVRVolumeBase::getSFTextures2D),
00244 new FieldDescription(SFUInt16::getClassType(),
00245 "brickStaticMemoryMB",
00246 BrickStaticMemoryMBFieldId, BrickStaticMemoryMBFieldMask,
00247 false,
00248 (FieldAccessMethod) &DVRVolumeBase::getSFBrickStaticMemoryMB),
00249 new FieldDescription(SFMaterialPtr::getClassType(),
00250 "renderMaterial",
00251 RenderMaterialFieldId, RenderMaterialFieldMask,
00252 true,
00253 (FieldAccessMethod) &DVRVolumeBase::getSFRenderMaterial),
00254 new FieldDescription(SFUInt16::getClassType(),
00255 "brickingMode",
00256 BrickingModeFieldId, BrickingModeFieldMask,
00257 true,
00258 (FieldAccessMethod) &DVRVolumeBase::getSFBrickingMode),
00259 new FieldDescription(SFVec3f::getClassType(),
00260 "brickStaticSubdivision",
00261 BrickStaticSubdivisionFieldId, BrickStaticSubdivisionFieldMask,
00262 true,
00263 (FieldAccessMethod) &DVRVolumeBase::getSFBrickStaticSubdivision),
00264 new FieldDescription(SFVec3f::getClassType(),
00265 "brickMaxSize",
00266 BrickMaxSizeFieldId, BrickMaxSizeFieldMask,
00267 true,
00268 (FieldAccessMethod) &DVRVolumeBase::getSFBrickMaxSize),
00269 new FieldDescription(SFBool::getClassType(),
00270 "showBricks",
00271 ShowBricksFieldId, ShowBricksFieldMask,
00272 true,
00273 (FieldAccessMethod) &DVRVolumeBase::getSFShowBricks),
00274 new FieldDescription(SFUInt32::getClassType(),
00275 "drawStyle",
00276 DrawStyleFieldId, DrawStyleFieldMask,
00277 true,
00278 (FieldAccessMethod) &DVRVolumeBase::getSFDrawStyle),
00279 new FieldDescription(MFString::getClassType(),
00280 "drawStyleNames",
00281 DrawStyleNamesFieldId, DrawStyleNamesFieldMask,
00282 true,
00283 (FieldAccessMethod) &DVRVolumeBase::getMFDrawStyleNames),
00284 new FieldDescription(SFChunkMaterialPtr::getClassType(),
00285 "textureStorage",
00286 TextureStorageFieldId, TextureStorageFieldMask,
00287 true,
00288 (FieldAccessMethod) &DVRVolumeBase::getSFTextureStorage)
00289 };
00290
00291
00292 FieldContainerType DVRVolumeBase::_type(
00293 "DVRVolume",
00294 "NodeCore",
00295 NULL,
00296 (PrototypeCreateF) &DVRVolumeBase::createEmpty,
00297 DVRVolume::initMethod,
00298 _desc,
00299 sizeof(_desc));
00300
00301
00302
00303
00304
00305 FieldContainerType &DVRVolumeBase::getType(void)
00306 {
00307 return _type;
00308 }
00309
00310 const FieldContainerType &DVRVolumeBase::getType(void) const
00311 {
00312 return _type;
00313 }
00314
00315
00316 FieldContainerPtr DVRVolumeBase::shallowCopy(void) const
00317 {
00318 DVRVolumePtr returnValue;
00319
00320 newPtr(returnValue, dynamic_cast<const DVRVolume *>(this));
00321
00322 return returnValue;
00323 }
00324
00325 UInt32 DVRVolumeBase::getContainerSize(void) const
00326 {
00327 return sizeof(DVRVolume);
00328 }
00329
00330
00331 #if !defined(OSG_FIXED_MFIELDSYNC)
00332 void DVRVolumeBase::executeSync( FieldContainer &other,
00333 const BitVector &whichField)
00334 {
00335 this->executeSyncImpl((DVRVolumeBase *) &other, whichField);
00336 }
00337 #else
00338 void DVRVolumeBase::executeSync( FieldContainer &other,
00339 const BitVector &whichField, const SyncInfo &sInfo )
00340 {
00341 this->executeSyncImpl((DVRVolumeBase *) &other, whichField, sInfo);
00342 }
00343 void DVRVolumeBase::execBeginEdit(const BitVector &whichField,
00344 UInt32 uiAspect,
00345 UInt32 uiContainerSize)
00346 {
00347 this->execBeginEditImpl(whichField, uiAspect, uiContainerSize);
00348 }
00349
00350 void DVRVolumeBase::onDestroyAspect(UInt32 uiId, UInt32 uiAspect)
00351 {
00352 Inherited::onDestroyAspect(uiId, uiAspect);
00353
00354 _mfDrawStyleNames.terminateShare(uiAspect, this->getContainerSize());
00355 }
00356 #endif
00357
00358
00359
00360 #ifdef OSG_WIN32_ICL
00361 #pragma warning (disable : 383)
00362 #endif
00363
00364 DVRVolumeBase::DVRVolumeBase(void) :
00365 _sfAppearance (DVRAppearancePtr(NullFC)),
00366 _sfGeometry (DVRGeometryPtr(NullFC)),
00367 _sfShader (DVRShaderPtr(NullFC)),
00368 _sfFileName (),
00369 _sfSampling (Real32(1.0)),
00370 _sfSamplingInteractive (Real32(1.0)),
00371 _sfBaseAlpha (Real32(0.9)),
00372 _sfDoTextures (bool(true)),
00373 _sfBrickOverlap (UInt32(1)),
00374 _sfTextures2D (QBit(2)),
00375 _sfBrickStaticMemoryMB (UInt16(16)),
00376 _sfRenderMaterial (MaterialPtr(NullFC)),
00377 _sfBrickingMode (UInt16(TextureManager::BRICK_SUBDIVIDE_ON_TEXTURE_MEMORY)),
00378 _sfBrickStaticSubdivision (Vec3f(Vec3f(2, 2, 2))),
00379 _sfBrickMaxSize (Vec3f(Vec3f(256, 256, 256))),
00380 _sfShowBricks (bool(false)),
00381 _sfDrawStyle (UInt32(0)),
00382 _mfDrawStyleNames (),
00383 _sfTextureStorage (ChunkMaterialPtr(NullFC)),
00384 Inherited()
00385 {
00386 }
00387
00388 #ifdef OSG_WIN32_ICL
00389 #pragma warning (default : 383)
00390 #endif
00391
00392 DVRVolumeBase::DVRVolumeBase(const DVRVolumeBase &source) :
00393 _sfAppearance (source._sfAppearance ),
00394 _sfGeometry (source._sfGeometry ),
00395 _sfShader (source._sfShader ),
00396 _sfFileName (source._sfFileName ),
00397 _sfSampling (source._sfSampling ),
00398 _sfSamplingInteractive (source._sfSamplingInteractive ),
00399 _sfBaseAlpha (source._sfBaseAlpha ),
00400 _sfDoTextures (source._sfDoTextures ),
00401 _sfBrickOverlap (source._sfBrickOverlap ),
00402 _sfTextures2D (source._sfTextures2D ),
00403 _sfBrickStaticMemoryMB (source._sfBrickStaticMemoryMB ),
00404 _sfRenderMaterial (source._sfRenderMaterial ),
00405 _sfBrickingMode (source._sfBrickingMode ),
00406 _sfBrickStaticSubdivision (source._sfBrickStaticSubdivision ),
00407 _sfBrickMaxSize (source._sfBrickMaxSize ),
00408 _sfShowBricks (source._sfShowBricks ),
00409 _sfDrawStyle (source._sfDrawStyle ),
00410 _mfDrawStyleNames (source._mfDrawStyleNames ),
00411 _sfTextureStorage (source._sfTextureStorage ),
00412 Inherited (source)
00413 {
00414 }
00415
00416
00417
00418 DVRVolumeBase::~DVRVolumeBase(void)
00419 {
00420 }
00421
00422
00423
00424 UInt32 DVRVolumeBase::getBinSize(const BitVector &whichField)
00425 {
00426 UInt32 returnValue = Inherited::getBinSize(whichField);
00427
00428 if(FieldBits::NoField != (AppearanceFieldMask & whichField))
00429 {
00430 returnValue += _sfAppearance.getBinSize();
00431 }
00432
00433 if(FieldBits::NoField != (GeometryFieldMask & whichField))
00434 {
00435 returnValue += _sfGeometry.getBinSize();
00436 }
00437
00438 if(FieldBits::NoField != (ShaderFieldMask & whichField))
00439 {
00440 returnValue += _sfShader.getBinSize();
00441 }
00442
00443 if(FieldBits::NoField != (FileNameFieldMask & whichField))
00444 {
00445 returnValue += _sfFileName.getBinSize();
00446 }
00447
00448 if(FieldBits::NoField != (SamplingFieldMask & whichField))
00449 {
00450 returnValue += _sfSampling.getBinSize();
00451 }
00452
00453 if(FieldBits::NoField != (SamplingInteractiveFieldMask & whichField))
00454 {
00455 returnValue += _sfSamplingInteractive.getBinSize();
00456 }
00457
00458 if(FieldBits::NoField != (BaseAlphaFieldMask & whichField))
00459 {
00460 returnValue += _sfBaseAlpha.getBinSize();
00461 }
00462
00463 if(FieldBits::NoField != (DoTexturesFieldMask & whichField))
00464 {
00465 returnValue += _sfDoTextures.getBinSize();
00466 }
00467
00468 if(FieldBits::NoField != (BrickOverlapFieldMask & whichField))
00469 {
00470 returnValue += _sfBrickOverlap.getBinSize();
00471 }
00472
00473 if(FieldBits::NoField != (Textures2DFieldMask & whichField))
00474 {
00475 returnValue += _sfTextures2D.getBinSize();
00476 }
00477
00478 if(FieldBits::NoField != (BrickStaticMemoryMBFieldMask & whichField))
00479 {
00480 returnValue += _sfBrickStaticMemoryMB.getBinSize();
00481 }
00482
00483 if(FieldBits::NoField != (RenderMaterialFieldMask & whichField))
00484 {
00485 returnValue += _sfRenderMaterial.getBinSize();
00486 }
00487
00488 if(FieldBits::NoField != (BrickingModeFieldMask & whichField))
00489 {
00490 returnValue += _sfBrickingMode.getBinSize();
00491 }
00492
00493 if(FieldBits::NoField != (BrickStaticSubdivisionFieldMask & whichField))
00494 {
00495 returnValue += _sfBrickStaticSubdivision.getBinSize();
00496 }
00497
00498 if(FieldBits::NoField != (BrickMaxSizeFieldMask & whichField))
00499 {
00500 returnValue += _sfBrickMaxSize.getBinSize();
00501 }
00502
00503 if(FieldBits::NoField != (ShowBricksFieldMask & whichField))
00504 {
00505 returnValue += _sfShowBricks.getBinSize();
00506 }
00507
00508 if(FieldBits::NoField != (DrawStyleFieldMask & whichField))
00509 {
00510 returnValue += _sfDrawStyle.getBinSize();
00511 }
00512
00513 if(FieldBits::NoField != (DrawStyleNamesFieldMask & whichField))
00514 {
00515 returnValue += _mfDrawStyleNames.getBinSize();
00516 }
00517
00518 if(FieldBits::NoField != (TextureStorageFieldMask & whichField))
00519 {
00520 returnValue += _sfTextureStorage.getBinSize();
00521 }
00522
00523
00524 return returnValue;
00525 }
00526
00527 void DVRVolumeBase::copyToBin( BinaryDataHandler &pMem,
00528 const BitVector &whichField)
00529 {
00530 Inherited::copyToBin(pMem, whichField);
00531
00532 if(FieldBits::NoField != (AppearanceFieldMask & whichField))
00533 {
00534 _sfAppearance.copyToBin(pMem);
00535 }
00536
00537 if(FieldBits::NoField != (GeometryFieldMask & whichField))
00538 {
00539 _sfGeometry.copyToBin(pMem);
00540 }
00541
00542 if(FieldBits::NoField != (ShaderFieldMask & whichField))
00543 {
00544 _sfShader.copyToBin(pMem);
00545 }
00546
00547 if(FieldBits::NoField != (FileNameFieldMask & whichField))
00548 {
00549 _sfFileName.copyToBin(pMem);
00550 }
00551
00552 if(FieldBits::NoField != (SamplingFieldMask & whichField))
00553 {
00554 _sfSampling.copyToBin(pMem);
00555 }
00556
00557 if(FieldBits::NoField != (SamplingInteractiveFieldMask & whichField))
00558 {
00559 _sfSamplingInteractive.copyToBin(pMem);
00560 }
00561
00562 if(FieldBits::NoField != (BaseAlphaFieldMask & whichField))
00563 {
00564 _sfBaseAlpha.copyToBin(pMem);
00565 }
00566
00567 if(FieldBits::NoField != (DoTexturesFieldMask & whichField))
00568 {
00569 _sfDoTextures.copyToBin(pMem);
00570 }
00571
00572 if(FieldBits::NoField != (BrickOverlapFieldMask & whichField))
00573 {
00574 _sfBrickOverlap.copyToBin(pMem);
00575 }
00576
00577 if(FieldBits::NoField != (Textures2DFieldMask & whichField))
00578 {
00579 _sfTextures2D.copyToBin(pMem);
00580 }
00581
00582 if(FieldBits::NoField != (BrickStaticMemoryMBFieldMask & whichField))
00583 {
00584 _sfBrickStaticMemoryMB.copyToBin(pMem);
00585 }
00586
00587 if(FieldBits::NoField != (RenderMaterialFieldMask & whichField))
00588 {
00589 _sfRenderMaterial.copyToBin(pMem);
00590 }
00591
00592 if(FieldBits::NoField != (BrickingModeFieldMask & whichField))
00593 {
00594 _sfBrickingMode.copyToBin(pMem);
00595 }
00596
00597 if(FieldBits::NoField != (BrickStaticSubdivisionFieldMask & whichField))
00598 {
00599 _sfBrickStaticSubdivision.copyToBin(pMem);
00600 }
00601
00602 if(FieldBits::NoField != (BrickMaxSizeFieldMask & whichField))
00603 {
00604 _sfBrickMaxSize.copyToBin(pMem);
00605 }
00606
00607 if(FieldBits::NoField != (ShowBricksFieldMask & whichField))
00608 {
00609 _sfShowBricks.copyToBin(pMem);
00610 }
00611
00612 if(FieldBits::NoField != (DrawStyleFieldMask & whichField))
00613 {
00614 _sfDrawStyle.copyToBin(pMem);
00615 }
00616
00617 if(FieldBits::NoField != (DrawStyleNamesFieldMask & whichField))
00618 {
00619 _mfDrawStyleNames.copyToBin(pMem);
00620 }
00621
00622 if(FieldBits::NoField != (TextureStorageFieldMask & whichField))
00623 {
00624 _sfTextureStorage.copyToBin(pMem);
00625 }
00626
00627
00628 }
00629
00630 void DVRVolumeBase::copyFromBin( BinaryDataHandler &pMem,
00631 const BitVector &whichField)
00632 {
00633 Inherited::copyFromBin(pMem, whichField);
00634
00635 if(FieldBits::NoField != (AppearanceFieldMask & whichField))
00636 {
00637 _sfAppearance.copyFromBin(pMem);
00638 }
00639
00640 if(FieldBits::NoField != (GeometryFieldMask & whichField))
00641 {
00642 _sfGeometry.copyFromBin(pMem);
00643 }
00644
00645 if(FieldBits::NoField != (ShaderFieldMask & whichField))
00646 {
00647 _sfShader.copyFromBin(pMem);
00648 }
00649
00650 if(FieldBits::NoField != (FileNameFieldMask & whichField))
00651 {
00652 _sfFileName.copyFromBin(pMem);
00653 }
00654
00655 if(FieldBits::NoField != (SamplingFieldMask & whichField))
00656 {
00657 _sfSampling.copyFromBin(pMem);
00658 }
00659
00660 if(FieldBits::NoField != (SamplingInteractiveFieldMask & whichField))
00661 {
00662 _sfSamplingInteractive.copyFromBin(pMem);
00663 }
00664
00665 if(FieldBits::NoField != (BaseAlphaFieldMask & whichField))
00666 {
00667 _sfBaseAlpha.copyFromBin(pMem);
00668 }
00669
00670 if(FieldBits::NoField != (DoTexturesFieldMask & whichField))
00671 {
00672 _sfDoTextures.copyFromBin(pMem);
00673 }
00674
00675 if(FieldBits::NoField != (BrickOverlapFieldMask & whichField))
00676 {
00677 _sfBrickOverlap.copyFromBin(pMem);
00678 }
00679
00680 if(FieldBits::NoField != (Textures2DFieldMask & whichField))
00681 {
00682 _sfTextures2D.copyFromBin(pMem);
00683 }
00684
00685 if(FieldBits::NoField != (BrickStaticMemoryMBFieldMask & whichField))
00686 {
00687 _sfBrickStaticMemoryMB.copyFromBin(pMem);
00688 }
00689
00690 if(FieldBits::NoField != (RenderMaterialFieldMask & whichField))
00691 {
00692 _sfRenderMaterial.copyFromBin(pMem);
00693 }
00694
00695 if(FieldBits::NoField != (BrickingModeFieldMask & whichField))
00696 {
00697 _sfBrickingMode.copyFromBin(pMem);
00698 }
00699
00700 if(FieldBits::NoField != (BrickStaticSubdivisionFieldMask & whichField))
00701 {
00702 _sfBrickStaticSubdivision.copyFromBin(pMem);
00703 }
00704
00705 if(FieldBits::NoField != (BrickMaxSizeFieldMask & whichField))
00706 {
00707 _sfBrickMaxSize.copyFromBin(pMem);
00708 }
00709
00710 if(FieldBits::NoField != (ShowBricksFieldMask & whichField))
00711 {
00712 _sfShowBricks.copyFromBin(pMem);
00713 }
00714
00715 if(FieldBits::NoField != (DrawStyleFieldMask & whichField))
00716 {
00717 _sfDrawStyle.copyFromBin(pMem);
00718 }
00719
00720 if(FieldBits::NoField != (DrawStyleNamesFieldMask & whichField))
00721 {
00722 _mfDrawStyleNames.copyFromBin(pMem);
00723 }
00724
00725 if(FieldBits::NoField != (TextureStorageFieldMask & whichField))
00726 {
00727 _sfTextureStorage.copyFromBin(pMem);
00728 }
00729
00730
00731 }
00732
00733 #if !defined(OSG_FIXED_MFIELDSYNC)
00734 void DVRVolumeBase::executeSyncImpl( DVRVolumeBase *pOther,
00735 const BitVector &whichField)
00736 {
00737
00738 Inherited::executeSyncImpl(pOther, whichField);
00739
00740 if(FieldBits::NoField != (AppearanceFieldMask & whichField))
00741 _sfAppearance.syncWith(pOther->_sfAppearance);
00742
00743 if(FieldBits::NoField != (GeometryFieldMask & whichField))
00744 _sfGeometry.syncWith(pOther->_sfGeometry);
00745
00746 if(FieldBits::NoField != (ShaderFieldMask & whichField))
00747 _sfShader.syncWith(pOther->_sfShader);
00748
00749 if(FieldBits::NoField != (FileNameFieldMask & whichField))
00750 _sfFileName.syncWith(pOther->_sfFileName);
00751
00752 if(FieldBits::NoField != (SamplingFieldMask & whichField))
00753 _sfSampling.syncWith(pOther->_sfSampling);
00754
00755 if(FieldBits::NoField != (SamplingInteractiveFieldMask & whichField))
00756 _sfSamplingInteractive.syncWith(pOther->_sfSamplingInteractive);
00757
00758 if(FieldBits::NoField != (BaseAlphaFieldMask & whichField))
00759 _sfBaseAlpha.syncWith(pOther->_sfBaseAlpha);
00760
00761 if(FieldBits::NoField != (DoTexturesFieldMask & whichField))
00762 _sfDoTextures.syncWith(pOther->_sfDoTextures);
00763
00764 if(FieldBits::NoField != (BrickOverlapFieldMask & whichField))
00765 _sfBrickOverlap.syncWith(pOther->_sfBrickOverlap);
00766
00767 if(FieldBits::NoField != (Textures2DFieldMask & whichField))
00768 _sfTextures2D.syncWith(pOther->_sfTextures2D);
00769
00770 if(FieldBits::NoField != (BrickStaticMemoryMBFieldMask & whichField))
00771 _sfBrickStaticMemoryMB.syncWith(pOther->_sfBrickStaticMemoryMB);
00772
00773 if(FieldBits::NoField != (RenderMaterialFieldMask & whichField))
00774 _sfRenderMaterial.syncWith(pOther->_sfRenderMaterial);
00775
00776 if(FieldBits::NoField != (BrickingModeFieldMask & whichField))
00777 _sfBrickingMode.syncWith(pOther->_sfBrickingMode);
00778
00779 if(FieldBits::NoField != (BrickStaticSubdivisionFieldMask & whichField))
00780 _sfBrickStaticSubdivision.syncWith(pOther->_sfBrickStaticSubdivision);
00781
00782 if(FieldBits::NoField != (BrickMaxSizeFieldMask & whichField))
00783 _sfBrickMaxSize.syncWith(pOther->_sfBrickMaxSize);
00784
00785 if(FieldBits::NoField != (ShowBricksFieldMask & whichField))
00786 _sfShowBricks.syncWith(pOther->_sfShowBricks);
00787
00788 if(FieldBits::NoField != (DrawStyleFieldMask & whichField))
00789 _sfDrawStyle.syncWith(pOther->_sfDrawStyle);
00790
00791 if(FieldBits::NoField != (DrawStyleNamesFieldMask & whichField))
00792 _mfDrawStyleNames.syncWith(pOther->_mfDrawStyleNames);
00793
00794 if(FieldBits::NoField != (TextureStorageFieldMask & whichField))
00795 _sfTextureStorage.syncWith(pOther->_sfTextureStorage);
00796
00797
00798 }
00799 #else
00800 void DVRVolumeBase::executeSyncImpl( DVRVolumeBase *pOther,
00801 const BitVector &whichField,
00802 const SyncInfo &sInfo )
00803 {
00804
00805 Inherited::executeSyncImpl(pOther, whichField, sInfo);
00806
00807 if(FieldBits::NoField != (AppearanceFieldMask & whichField))
00808 _sfAppearance.syncWith(pOther->_sfAppearance);
00809
00810 if(FieldBits::NoField != (GeometryFieldMask & whichField))
00811 _sfGeometry.syncWith(pOther->_sfGeometry);
00812
00813 if(FieldBits::NoField != (ShaderFieldMask & whichField))
00814 _sfShader.syncWith(pOther->_sfShader);
00815
00816 if(FieldBits::NoField != (FileNameFieldMask & whichField))
00817 _sfFileName.syncWith(pOther->_sfFileName);
00818
00819 if(FieldBits::NoField != (SamplingFieldMask & whichField))
00820 _sfSampling.syncWith(pOther->_sfSampling);
00821
00822 if(FieldBits::NoField != (SamplingInteractiveFieldMask & whichField))
00823 _sfSamplingInteractive.syncWith(pOther->_sfSamplingInteractive);
00824
00825 if(FieldBits::NoField != (BaseAlphaFieldMask & whichField))
00826 _sfBaseAlpha.syncWith(pOther->_sfBaseAlpha);
00827
00828 if(FieldBits::NoField != (DoTexturesFieldMask & whichField))
00829 _sfDoTextures.syncWith(pOther->_sfDoTextures);
00830
00831 if(FieldBits::NoField != (BrickOverlapFieldMask & whichField))
00832 _sfBrickOverlap.syncWith(pOther->_sfBrickOverlap);
00833
00834 if(FieldBits::NoField != (Textures2DFieldMask & whichField))
00835 _sfTextures2D.syncWith(pOther->_sfTextures2D);
00836
00837 if(FieldBits::NoField != (BrickStaticMemoryMBFieldMask & whichField))
00838 _sfBrickStaticMemoryMB.syncWith(pOther->_sfBrickStaticMemoryMB);
00839
00840 if(FieldBits::NoField != (RenderMaterialFieldMask & whichField))
00841 _sfRenderMaterial.syncWith(pOther->_sfRenderMaterial);
00842
00843 if(FieldBits::NoField != (BrickingModeFieldMask & whichField))
00844 _sfBrickingMode.syncWith(pOther->_sfBrickingMode);
00845
00846 if(FieldBits::NoField != (BrickStaticSubdivisionFieldMask & whichField))
00847 _sfBrickStaticSubdivision.syncWith(pOther->_sfBrickStaticSubdivision);
00848
00849 if(FieldBits::NoField != (BrickMaxSizeFieldMask & whichField))
00850 _sfBrickMaxSize.syncWith(pOther->_sfBrickMaxSize);
00851
00852 if(FieldBits::NoField != (ShowBricksFieldMask & whichField))
00853 _sfShowBricks.syncWith(pOther->_sfShowBricks);
00854
00855 if(FieldBits::NoField != (DrawStyleFieldMask & whichField))
00856 _sfDrawStyle.syncWith(pOther->_sfDrawStyle);
00857
00858 if(FieldBits::NoField != (TextureStorageFieldMask & whichField))
00859 _sfTextureStorage.syncWith(pOther->_sfTextureStorage);
00860
00861
00862 if(FieldBits::NoField != (DrawStyleNamesFieldMask & whichField))
00863 _mfDrawStyleNames.syncWith(pOther->_mfDrawStyleNames, sInfo);
00864
00865
00866 }
00867
00868 void DVRVolumeBase::execBeginEditImpl (const BitVector &whichField,
00869 UInt32 uiAspect,
00870 UInt32 uiContainerSize)
00871 {
00872 Inherited::execBeginEditImpl(whichField, uiAspect, uiContainerSize);
00873
00874 if(FieldBits::NoField != (DrawStyleNamesFieldMask & whichField))
00875 _mfDrawStyleNames.beginEdit(uiAspect, uiContainerSize);
00876
00877 }
00878 #endif
00879
00880
00881
00882 OSG_BEGIN_NAMESPACE
00883
00884 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_DEV)
00885 DataType FieldDataTraits<DVRVolumePtr>::_type("DVRVolumePtr", "NodeCorePtr");
00886 #endif
00887
00888
00889 OSG_END_NAMESPACE
00890
00891
00892
00893
00894
00895 #ifdef OSG_SGI_CC
00896 #pragma set woff 1174
00897 #endif
00898
00899 #ifdef OSG_LINUX_ICC
00900 #pragma warning( disable : 177 )
00901 #endif
00902
00903 namespace
00904 {
00905 static Char8 cvsid_cpp [] = "@(#)$Id: FCBaseTemplate_cpp.h,v 1.45 2005/07/20 00:10:14 vossg Exp $";
00906 static Char8 cvsid_hpp [] = OSGDVRVOLUMEBASE_HEADER_CVSID;
00907 static Char8 cvsid_inl [] = OSGDVRVOLUMEBASE_INLINE_CVSID;
00908
00909 static Char8 cvsid_fields_hpp[] = OSGDVRVOLUMEFIELDS_HEADER_CVSID;
00910 }
00911