Changeset 1284
- Timestamp:
- 06/06/08 02:56:55 (6 months ago)
- Files:
-
- trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroup.cpp (modified) (2 diffs)
- trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroup.fcd (modified) (1 diff)
- trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroup.h (modified) (1 diff)
- trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroupBase.cpp (modified) (2 diffs)
- trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroupBase.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroup.cpp
r1198 r1284 177 177 UInt32 newsize = cindex + 1; 178 178 179 _mfChunks.resize(newsize); 180 179 _mfChunks.resize(newsize, NULL); 180 181 #if 0 181 182 for(UInt32 i = oldsize; i < newsize; i++) 182 183 { 183 184 _mfChunks.replace(i, NULL); 184 185 } 186 #endif 185 187 } 186 188 … … 371 373 } 372 374 375 376 void ChunkOverrideGroup::pushToChunks(StateChunk * const value) 377 { 378 if(value != NULL) 379 { 380 // addChunk(value) does not work as expected 381 // 382 // Do at least a sanity check if the slot matches 383 // the chunk 384 385 if(_mfChunks.size() < value->getClassId() || 386 _mfChunks.size() >= (value->getClassId() + 387 value->getClass()->getNumSlots())) 388 { 389 SWARNING << "pushToChunk: chunk ( " 390 << value->getClassId() 391 << " | " 392 << value->getClass()->getNumSlots() 393 << "does not match available slot " 394 << _mfChunks.size() 395 << ", ignored!" 396 << std::endl; 397 398 399 return; 400 } 401 } 402 403 editMField(ChunksFieldMask, _mfChunks); 404 405 _mfChunks.push_back(value); 406 } 407 408 #if 0 409 void ChunkOverrideGroup::assignChunks (const MFUnrecStateChunkPtr &value) 410 { 411 MFUnrecStateChunkPtr::const_iterator elemIt = 412 value.begin(); 413 MFUnrecStateChunkPtr::const_iterator elemEnd = 414 value.end (); 415 416 static_cast<ChunkOverrideGroup *>(this)->clearChunks(); 417 418 while(elemIt != elemEnd) 419 { 420 this->pushToChunks(*elemIt); 421 422 ++elemIt; 423 } 424 } 425 #endif 426 427 void ChunkOverrideGroup::removeFromChunks(UInt32 uiIndex) 428 { 429 if(uiIndex < _mfChunks.size()) 430 { 431 editMField(ChunksFieldMask, _mfChunks); 432 433 _mfChunks.replace(uiIndex, NULL); 434 435 #if 0 436 MFUnrecStateChunkPtr::iterator fieldIt = _mfChunks.begin_nc(); 437 438 fieldIt += uiIndex; 439 440 _mfChunks.erase(fieldIt); 441 #endif 442 } 443 } 444 445 void ChunkOverrideGroup::removeFromChunks(StateChunk * const value) 446 { 447 Int32 iElemIdx = _mfChunks.findIndex(value); 448 449 if(iElemIdx != -1) 450 { 451 editMField(ChunksFieldMask, _mfChunks); 452 453 _mfChunks.replace(iElemIdx, NULL); 454 455 #if 0 456 MFUnrecStateChunkPtr::iterator fieldIt = _mfChunks.begin_nc(); 457 458 fieldIt += iElemIdx; 459 460 _mfChunks.erase(fieldIt); 461 #endif 462 } 463 } 464 void ChunkOverrideGroup::clearChunks(void) 465 { 466 editMField(ChunksFieldMask, _mfChunks); 467 468 469 _mfChunks.clear(); 470 } 471 373 472 OSG_END_NAMESPACE trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroup.fcd
r894 r1284 21 21 visibility="external" 22 22 access="protected" 23 ptrFieldAccess = "custom" 23 24 > 24 25 </Field> trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroup.h
r1198 r1284 138 138 /*! \} */ 139 139 /*---------------------------------------------------------------------*/ 140 /*! \name Ptr MField Set */ 141 /*! \{ */ 142 143 void pushToChunks (StateChunk * const value ); 144 #if 0 145 void assignChunks (const MFUnrecStateChunkPtr &value); 146 #endif 147 void removeFromChunks (UInt32 uiIndex ); 148 void removeFromChunks(StateChunk * const value ); 149 void clearChunks (void ); 150 151 /*! \} */ 152 /*---------------------------------------------------------------------*/ 140 153 /*! \name Init */ 141 154 /*! \{ */ trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroupBase.cpp
r1260 r1284 143 143 "\t\tvisibility=\"external\"\n" 144 144 " access=\"protected\"\n" 145 " ptrFieldAccess = \"custom\"\n" 145 146 " >\n" 146 147 "\t</Field>\n" … … 178 179 } 179 180 180 MFUnrecStateChunkPtr *ChunkOverrideGroupBase::editMFChunks (void) 181 { 182 editMField(ChunksFieldMask, _mfChunks); 183 184 return &_mfChunks; 185 } 186 187 188 189 void ChunkOverrideGroupBase::pushToChunks(StateChunk * const value) 190 { 191 editMField(ChunksFieldMask, _mfChunks); 192 193 _mfChunks.push_back(value); 194 } 195 196 void ChunkOverrideGroupBase::assignChunks (const MFUnrecStateChunkPtr &value) 197 { 198 MFUnrecStateChunkPtr::const_iterator elemIt = 199 value.begin(); 200 MFUnrecStateChunkPtr::const_iterator elemEnd = 201 value.end (); 202 203 static_cast<ChunkOverrideGroup *>(this)->clearChunks(); 204 205 while(elemIt != elemEnd) 206 { 207 this->pushToChunks(*elemIt); 208 209 ++elemIt; 210 } 211 } 212 213 void ChunkOverrideGroupBase::removeFromChunks(UInt32 uiIndex) 214 { 215 if(uiIndex < _mfChunks.size()) 216 { 217 editMField(ChunksFieldMask, _mfChunks); 218 219 MFUnrecStateChunkPtr::iterator fieldIt = _mfChunks.begin_nc(); 220 221 fieldIt += uiIndex; 222 223 _mfChunks.erase(fieldIt); 224 } 225 } 226 227 void ChunkOverrideGroupBase::removeFromChunks(StateChunk * const value) 228 { 229 Int32 iElemIdx = _mfChunks.findIndex(value); 230 231 if(iElemIdx != -1) 232 { 233 editMField(ChunksFieldMask, _mfChunks); 234 235 MFUnrecStateChunkPtr::iterator fieldIt = _mfChunks.begin_nc(); 236 237 fieldIt += iElemIdx; 238 239 _mfChunks.erase(fieldIt); 240 } 241 } 242 void ChunkOverrideGroupBase::clearChunks(void) 243 { 244 editMField(ChunksFieldMask, _mfChunks); 245 246 247 _mfChunks.clear(); 248 } 181 182 249 183 250 184 trunk/Source/System/NodeCores/Groups/Base/OSGChunkOverrideGroupBase.h
r1197 r1284 208 208 209 209 const MFUnrecStateChunkPtr *getMFChunks (void) const; 210 MFUnrecStateChunkPtr *editMFChunks (void);211 210 212 211 … … 223 222 /*! \name Ptr MField Set */ 224 223 /*! \{ */ 225 226 void pushToChunks (StateChunk * const value );227 void assignChunks (const MFUnrecStateChunkPtr &value);228 void removeFromChunks (UInt32 uiIndex );229 void removeFromChunks(StateChunk * const value );230 void clearChunks (void );231 232 224 233 225 /*! \} */
