Show
Ignore:
Timestamp:
05/05/08 06:39:01 (3 months ago)
Author:
vossg
Message:

changed: base rebuild

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Source/System/Material/Base/OSGChunkMaterialBase.cpp

    r1178 r1193  
    216216} 
    217217 
     218MFUnrecStateChunkPtr *ChunkMaterialBase::editMFChunks         (void) 
     219{ 
     220    editMField(ChunksFieldMask, _mfChunks); 
     221 
     222    return &_mfChunks; 
     223} 
     224 
    218225MFInt32 *ChunkMaterialBase::editMFSlots(void) 
    219226{ 
     
    239246void ChunkMaterialBase::pushToChunks(const StateChunkPtr value) 
    240247{ 
    241     if(value == NullFC) 
    242         return; 
    243  
    244248    editMField(ChunksFieldMask, _mfChunks); 
    245  
    246     //addRef(value); 
    247249 
    248250    _mfChunks.push_back(value); 
     
    266268} 
    267269 
    268 void ChunkMaterialBase::insertIntoChunks(      UInt32         uiIndex, 
    269                                                    const StateChunkPtr value   ) 
    270 
    271     if(value == NullFC) 
    272         return; 
    273  
    274     editMField(ChunksFieldMask, _mfChunks); 
    275  
    276     MFUnrecStateChunkPtr::iterator fieldIt = _mfChunks.begin_nc(); 
    277  
    278     //addRef(value); 
    279  
    280     fieldIt += uiIndex; 
    281  
    282     _mfChunks.insert(fieldIt, value); 
    283 
    284  
    285 void ChunkMaterialBase::replaceInChunks(      UInt32         uiIndex, 
    286                                                        const StateChunkPtr value   ) 
    287 
    288     if(value == NullFC) 
    289         return; 
    290  
    291     if(uiIndex >= _mfChunks.size()) 
    292         return; 
    293  
    294     editMField(ChunksFieldMask, _mfChunks); 
    295  
    296  
    297 //    addRef(value); 
    298 //    subRef(_mfChunks[uiIndex]); 
    299  
    300 //    _mfChunks[uiIndex] = value; 
    301  
    302       _mfChunks.replace(uiIndex, value); 
    303 
    304  
    305 void ChunkMaterialBase::replaceInChunks(const StateChunkPtr pOldElem, 
    306                                                         const StateChunkPtr pNewElem) 
    307 
    308     if(pNewElem == NullFC) 
    309         return; 
    310  
    311     Int32  elemIdx = _mfChunks.findIndex(pOldElem); 
    312  
    313     if(elemIdx != -1) 
     270void ChunkMaterialBase::removeFromChunks(UInt32 uiIndex) 
     271
     272    if(uiIndex < _mfChunks.size()) 
    314273    { 
    315274        editMField(ChunksFieldMask, _mfChunks); 
    316275 
    317 //        MFStateChunkPtr::iterator fieldIt = _mfChunks.begin(); 
    318  
    319 //        fieldIt += elemIdx; 
    320 //        addRef(pNewElem); 
    321 //        subRef(pOldElem); 
    322  
    323 //        (*fieldIt) = pNewElem; 
    324           _mfChunks.replace(elemIdx, pNewElem); 
    325     } 
    326 
    327  
    328 void ChunkMaterialBase::removeFromChunks(UInt32 uiIndex) 
    329 
    330     if(uiIndex < _mfChunks.size()) 
     276        MFUnrecStateChunkPtr::iterator fieldIt = _mfChunks.begin_nc(); 
     277 
     278        fieldIt += uiIndex; 
     279 
     280        _mfChunks.erase(fieldIt); 
     281    } 
     282
     283 
     284void ChunkMaterialBase::removeFromChunks(const StateChunkPtr value) 
     285
     286    Int32 iElemIdx = _mfChunks.findIndex(value); 
     287 
     288    if(iElemIdx != -1) 
    331289    { 
    332290        editMField(ChunksFieldMask, _mfChunks); 
     
    334292        MFUnrecStateChunkPtr::iterator fieldIt = _mfChunks.begin_nc(); 
    335293 
    336         fieldIt += uiIndex; 
    337  
    338         //subRef(*fieldIt); 
    339  
    340         _mfChunks.erase(fieldIt); 
    341     } 
    342 } 
    343  
    344 void ChunkMaterialBase::removeFromChunks(const StateChunkPtr value) 
    345 { 
    346     Int32 iElemIdx = _mfChunks.findIndex(value); 
    347  
    348     if(iElemIdx != -1) 
    349     { 
    350         editMField(ChunksFieldMask, _mfChunks); 
    351  
    352         MFUnrecStateChunkPtr::iterator fieldIt = _mfChunks.begin_nc(); 
    353  
    354294        fieldIt += iElemIdx; 
    355  
    356         //subRef(*fieldIt); 
    357295 
    358296        _mfChunks.erase(fieldIt); 
     
    533471    if(source != NULL) 
    534472    { 
     473        ChunkMaterial *pThis = static_cast<ChunkMaterial *>(this); 
    535474 
    536475        MFUnrecStateChunkPtr::const_iterator ChunksIt  = 
     
    541480        while(ChunksIt != ChunksEnd) 
    542481        { 
    543             this->pushToChunks(*ChunksIt); 
     482            pThis->pushToChunks(*ChunksIt); 
    544483 
    545484            ++ChunksIt;