Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

OSGMultiPassMaterialBase.cpp

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *               Copyright (C) 2000-2002 by the OpenSG Forum                 *
00006  *                                                                           *
00007  *                            www.opensg.org                                 *
00008  *                                                                           *
00009  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00010  *                                                                           *
00011 \*---------------------------------------------------------------------------*/
00012 /*---------------------------------------------------------------------------*\
00013  *                                License                                    *
00014  *                                                                           *
00015  * This library is free software; you can redistribute it and/or modify it   *
00016  * under the terms of the GNU Library General Public License as published    *
00017  * by the Free Software Foundation, version 2.                               *
00018  *                                                                           *
00019  * This library is distributed in the hope that it will be useful, but       *
00020  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00022  * Library General Public License for more details.                          *
00023  *                                                                           *
00024  * You should have received a copy of the GNU Library General Public         *
00025  * License along with this library; if not, write to the Free Software       *
00026  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00027  *                                                                           *
00028 \*---------------------------------------------------------------------------*/
00029 /*---------------------------------------------------------------------------*\
00030  *                                Changes                                    *
00031  *                                                                           *
00032  *                                                                           *
00033  *                                                                           *
00034  *                                                                           *
00035  *                                                                           *
00036  *                                                                           *
00037 \*---------------------------------------------------------------------------*/
00038 
00039 /*****************************************************************************\
00040  *****************************************************************************
00041  **                                                                         **
00042  **                  This file is automatically generated.                  **
00043  **                                                                         **
00044  **          Any changes made to this file WILL be lost when it is          **
00045  **           regenerated, which can become necessary at any time.          **
00046  **                                                                         **
00047  **     Do not change this file, changes should be done in the derived      **
00048  **     class MultiPassMaterial!
00049  **                                                                         **
00050  *****************************************************************************
00051 \*****************************************************************************/
00052 
00053 
00054 #define OSG_COMPILEMULTIPASSMATERIALINST
00055 
00056 #include <stdlib.h>
00057 #include <stdio.h>
00058 
00059 #include <OSGConfig.h>
00060 
00061 #include "OSGMultiPassMaterialBase.h"
00062 #include "OSGMultiPassMaterial.h"
00063 
00064 
00065 OSG_USING_NAMESPACE
00066 
00067 const OSG::BitVector  MultiPassMaterialBase::MaterialsFieldMask = 
00068     (TypeTraits<BitVector>::One << MultiPassMaterialBase::MaterialsFieldId);
00069 
00070 const OSG::BitVector MultiPassMaterialBase::MTInfluenceMask = 
00071     (Inherited::MTInfluenceMask) | 
00072     (static_cast<BitVector>(0x0) << Inherited::NextFieldId); 
00073 
00074 
00075 // Field descriptions
00076 
00081 
00082 
00083 FieldDescription *MultiPassMaterialBase::_desc[] = 
00084 {
00085     new FieldDescription(MFMaterialPtr::getClassType(), 
00086                      "materials", 
00087                      MaterialsFieldId, MaterialsFieldMask,
00088                      false,
00089                      (FieldAccessMethod) &MultiPassMaterialBase::getMFMaterials)
00090 };
00091 
00092 
00093 FieldContainerType MultiPassMaterialBase::_type(
00094     "MultiPassMaterial",
00095     "Material",
00096     NULL,
00097     (PrototypeCreateF) &MultiPassMaterialBase::createEmpty,
00098     MultiPassMaterial::initMethod,
00099     _desc,
00100     sizeof(_desc));
00101 
00102 //OSG_FIELD_CONTAINER_DEF(MultiPassMaterialBase, MultiPassMaterialPtr)
00103 
00104 /*------------------------------ get -----------------------------------*/
00105 
00106 FieldContainerType &MultiPassMaterialBase::getType(void) 
00107 {
00108     return _type; 
00109 } 
00110 
00111 const FieldContainerType &MultiPassMaterialBase::getType(void) const 
00112 {
00113     return _type;
00114 } 
00115 
00116 
00117 FieldContainerPtr MultiPassMaterialBase::shallowCopy(void) const 
00118 { 
00119     MultiPassMaterialPtr returnValue; 
00120 
00121     newPtr(returnValue, dynamic_cast<const MultiPassMaterial *>(this)); 
00122 
00123     return returnValue; 
00124 }
00125 
00126 UInt32 MultiPassMaterialBase::getContainerSize(void) const 
00127 { 
00128     return sizeof(MultiPassMaterial); 
00129 }
00130 
00131 
00132 #if !defined(OSG_FIXED_MFIELDSYNC)
00133 void MultiPassMaterialBase::executeSync(      FieldContainer &other,
00134                                     const BitVector      &whichField)
00135 {
00136     this->executeSyncImpl((MultiPassMaterialBase *) &other, whichField);
00137 }
00138 #else
00139 void MultiPassMaterialBase::executeSync(      FieldContainer &other,
00140                                     const BitVector      &whichField,                                    const SyncInfo       &sInfo     )
00141 {
00142     this->executeSyncImpl((MultiPassMaterialBase *) &other, whichField, sInfo);
00143 }
00144 void MultiPassMaterialBase::execBeginEdit(const BitVector &whichField, 
00145                                             UInt32     uiAspect,
00146                                             UInt32     uiContainerSize) 
00147 {
00148     this->execBeginEditImpl(whichField, uiAspect, uiContainerSize);
00149 }
00150 
00151 void MultiPassMaterialBase::onDestroyAspect(UInt32 uiId, UInt32 uiAspect)
00152 {
00153     Inherited::onDestroyAspect(uiId, uiAspect);
00154 
00155     _mfMaterials.terminateShare(uiAspect, this->getContainerSize());
00156 }
00157 #endif
00158 
00159 /*------------------------- constructors ----------------------------------*/
00160 
00161 #ifdef OSG_WIN32_ICL
00162 #pragma warning (disable : 383)
00163 #endif
00164 
00165 MultiPassMaterialBase::MultiPassMaterialBase(void) :
00166     _mfMaterials              (), 
00167     Inherited() 
00168 {
00169 }
00170 
00171 #ifdef OSG_WIN32_ICL
00172 #pragma warning (default : 383)
00173 #endif
00174 
00175 MultiPassMaterialBase::MultiPassMaterialBase(const MultiPassMaterialBase &source) :
00176     _mfMaterials              (source._mfMaterials              ), 
00177     Inherited                 (source)
00178 {
00179 }
00180 
00181 /*-------------------------- destructors ----------------------------------*/
00182 
00183 MultiPassMaterialBase::~MultiPassMaterialBase(void)
00184 {
00185 }
00186 
00187 /*------------------------------ access -----------------------------------*/
00188 
00189 UInt32 MultiPassMaterialBase::getBinSize(const BitVector &whichField)
00190 {
00191     UInt32 returnValue = Inherited::getBinSize(whichField);
00192 
00193     if(FieldBits::NoField != (MaterialsFieldMask & whichField))
00194     {
00195         returnValue += _mfMaterials.getBinSize();
00196     }
00197 
00198 
00199     return returnValue;
00200 }
00201 
00202 void MultiPassMaterialBase::copyToBin(      BinaryDataHandler &pMem,
00203                                   const BitVector         &whichField)
00204 {
00205     Inherited::copyToBin(pMem, whichField);
00206 
00207     if(FieldBits::NoField != (MaterialsFieldMask & whichField))
00208     {
00209         _mfMaterials.copyToBin(pMem);
00210     }
00211 
00212 
00213 }
00214 
00215 void MultiPassMaterialBase::copyFromBin(      BinaryDataHandler &pMem,
00216                                     const BitVector    &whichField)
00217 {
00218     Inherited::copyFromBin(pMem, whichField);
00219 
00220     if(FieldBits::NoField != (MaterialsFieldMask & whichField))
00221     {
00222         _mfMaterials.copyFromBin(pMem);
00223     }
00224 
00225 
00226 }
00227 
00228 #if !defined(OSG_FIXED_MFIELDSYNC)
00229 void MultiPassMaterialBase::executeSyncImpl(      MultiPassMaterialBase *pOther,
00230                                         const BitVector         &whichField)
00231 {
00232 
00233     Inherited::executeSyncImpl(pOther, whichField);
00234 
00235     if(FieldBits::NoField != (MaterialsFieldMask & whichField))
00236         _mfMaterials.syncWith(pOther->_mfMaterials);
00237 
00238 
00239 }
00240 #else
00241 void MultiPassMaterialBase::executeSyncImpl(      MultiPassMaterialBase *pOther,
00242                                         const BitVector         &whichField,
00243                                         const SyncInfo          &sInfo      )
00244 {
00245 
00246     Inherited::executeSyncImpl(pOther, whichField, sInfo);
00247 
00248 
00249     if(FieldBits::NoField != (MaterialsFieldMask & whichField))
00250         _mfMaterials.syncWith(pOther->_mfMaterials, sInfo);
00251 
00252 
00253 }
00254 
00255 void MultiPassMaterialBase::execBeginEditImpl (const BitVector &whichField, 
00256                                                  UInt32     uiAspect,
00257                                                  UInt32     uiContainerSize)
00258 {
00259     Inherited::execBeginEditImpl(whichField, uiAspect, uiContainerSize);
00260 
00261     if(FieldBits::NoField != (MaterialsFieldMask & whichField))
00262         _mfMaterials.beginEdit(uiAspect, uiContainerSize);
00263 
00264 }
00265 #endif
00266 
00267 
00268 
00269 #include <OSGSFieldTypeDef.inl>
00270 #include <OSGMFieldTypeDef.inl>
00271 
00272 OSG_BEGIN_NAMESPACE
00273 
00274 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_DEV)
00275 DataType FieldDataTraits<MultiPassMaterialPtr>::_type("MultiPassMaterialPtr", "MaterialPtr");
00276 #endif
00277 
00278 OSG_DLLEXPORT_SFIELD_DEF1(MultiPassMaterialPtr, OSG_SYSTEMLIB_DLLTMPLMAPPING);
00279 OSG_DLLEXPORT_MFIELD_DEF1(MultiPassMaterialPtr, OSG_SYSTEMLIB_DLLTMPLMAPPING);
00280 
00281 OSG_END_NAMESPACE
00282 
00283 
00284 /*------------------------------------------------------------------------*/
00285 /*                              cvs id's                                  */
00286 
00287 #ifdef OSG_SGI_CC
00288 #pragma set woff 1174
00289 #endif
00290 
00291 #ifdef OSG_LINUX_ICC
00292 #pragma warning( disable : 177 )
00293 #endif
00294 
00295 namespace
00296 {
00297     static Char8 cvsid_cpp       [] = "@(#)$Id: OSGMultiPassMaterialBase.cpp,v 1.5 2005/07/20 00:09:24 vossg Exp $";
00298     static Char8 cvsid_hpp       [] = OSGMULTIPASSMATERIALBASE_HEADER_CVSID;
00299     static Char8 cvsid_inl       [] = OSGMULTIPASSMATERIALBASE_INLINE_CVSID;
00300 
00301     static Char8 cvsid_fields_hpp[] = OSGMULTIPASSMATERIALFIELDS_HEADER_CVSID;
00302 }
00303 

Generated on Thu Aug 25 04:07:55 2005 for OpenSG by  doxygen 1.4.3