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

changed: base rebuild

Files:

Legend:

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

    r1178 r1193  
    177177} 
    178178 
     179MFUnrecMaterialPtr  *MultiPassMaterialBase::editMFMaterials      (void) 
     180{ 
     181    editMField(MaterialsFieldMask, _mfMaterials); 
     182 
     183    return &_mfMaterials; 
     184} 
     185 
    179186 
    180187 
    181188void MultiPassMaterialBase::addMaterial(const MaterialPtr value) 
    182189{ 
    183     if(value == NullFC) 
    184         return; 
    185  
    186190    editMField(MaterialsFieldMask, _mfMaterials); 
    187  
    188     //addRef(value); 
    189191 
    190192    _mfMaterials.push_back(value); 
     
    208210} 
    209211 
    210 void MultiPassMaterialBase::insertMaterial(      UInt32         uiIndex, 
    211                                                    const MaterialPtr value   ) 
    212 
    213     if(value == NullFC) 
    214         return; 
    215  
    216     editMField(MaterialsFieldMask, _mfMaterials); 
    217  
    218     MFUnrecMaterialPtr::iterator fieldIt = _mfMaterials.begin_nc(); 
    219  
    220     //addRef(value); 
    221  
    222     fieldIt += uiIndex; 
    223  
    224     _mfMaterials.insert(fieldIt, value); 
    225 
    226  
    227 void MultiPassMaterialBase::replaceMaterial(      UInt32         uiIndex, 
    228                                                        const MaterialPtr value   ) 
    229 
    230     if(value == NullFC) 
    231         return; 
    232  
    233     if(uiIndex >= _mfMaterials.size()) 
    234         return; 
    235  
    236     editMField(MaterialsFieldMask, _mfMaterials); 
    237  
    238  
    239 //    addRef(value); 
    240 //    subRef(_mfMaterials[uiIndex]); 
    241  
    242 //    _mfMaterials[uiIndex] = value; 
    243  
    244       _mfMaterials.replace(uiIndex, value); 
    245 
    246  
    247 void MultiPassMaterialBase::replaceMaterial(const MaterialPtr pOldElem, 
    248                                                         const MaterialPtr pNewElem) 
    249 
    250     if(pNewElem == NullFC) 
    251         return; 
    252  
    253     Int32  elemIdx = _mfMaterials.findIndex(pOldElem); 
    254  
    255     if(elemIdx != -1) 
     212void MultiPassMaterialBase::subMaterial(UInt32 uiIndex) 
     213
     214    if(uiIndex < _mfMaterials.size()) 
    256215    { 
    257216        editMField(MaterialsFieldMask, _mfMaterials); 
    258217 
    259 //        MFMaterialPtr::iterator fieldIt = _mfMaterials.begin(); 
    260  
    261 //        fieldIt += elemIdx; 
    262 //        addRef(pNewElem); 
    263 //        subRef(pOldElem); 
    264  
    265 //        (*fieldIt) = pNewElem; 
    266           _mfMaterials.replace(elemIdx, pNewElem); 
    267     } 
    268 
    269  
    270 void MultiPassMaterialBase::subMaterial(UInt32 uiIndex) 
    271 
    272     if(uiIndex < _mfMaterials.size()) 
     218        MFUnrecMaterialPtr::iterator fieldIt = _mfMaterials.begin_nc(); 
     219 
     220        fieldIt += uiIndex; 
     221 
     222        _mfMaterials.erase(fieldIt); 
     223    } 
     224
     225 
     226void MultiPassMaterialBase::subMaterial(const MaterialPtr value) 
     227
     228    Int32 iElemIdx = _mfMaterials.findIndex(value); 
     229 
     230    if(iElemIdx != -1) 
    273231    { 
    274232        editMField(MaterialsFieldMask, _mfMaterials); 
     
    276234        MFUnrecMaterialPtr::iterator fieldIt = _mfMaterials.begin_nc(); 
    277235 
    278         fieldIt += uiIndex; 
    279  
    280         //subRef(*fieldIt); 
    281  
    282         _mfMaterials.erase(fieldIt); 
    283     } 
    284 } 
    285  
    286 void MultiPassMaterialBase::subMaterial(const MaterialPtr value) 
    287 { 
    288     Int32 iElemIdx = _mfMaterials.findIndex(value); 
    289  
    290     if(iElemIdx != -1) 
    291     { 
    292         editMField(MaterialsFieldMask, _mfMaterials); 
    293  
    294         MFUnrecMaterialPtr::iterator fieldIt = _mfMaterials.begin_nc(); 
    295  
    296236        fieldIt += iElemIdx; 
    297  
    298         //subRef(*fieldIt); 
    299237 
    300238        _mfMaterials.erase(fieldIt); 
     
    461399    if(source != NULL) 
    462400    { 
     401        MultiPassMaterial *pThis = static_cast<MultiPassMaterial *>(this); 
    463402 
    464403        MFUnrecMaterialPtr::const_iterator MaterialsIt  = 
     
    469408        while(MaterialsIt != MaterialsEnd) 
    470409        { 
    471             this->addMaterial(*MaterialsIt); 
     410            pThis->addMaterial(*MaterialsIt); 
    472411 
    473412            ++MaterialsIt;