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 // Includes 00041 //--------------------------------------------------------------------------- 00042 00043 #include <stdlib.h> 00044 #include <stdio.h> 00045 00046 #include <OSGConfig.h> 00047 00048 #include "OSGShaderParameterAccess.h" 00049 00050 OSG_USING_NAMESPACE 00051 00052 /***************************************************************************\ 00053 * Description * 00054 \***************************************************************************/ 00055 00060 /*----------------------- constructors & destructors ----------------------*/ 00061 00062 ShaderParameterAccess::ShaderParameterAccess(MFShaderParameterPtr ¶meters) : 00063 _parameters(parameters), 00064 _parametermap(), 00065 _mapsize(0) 00066 { 00067 } 00068 00069 ShaderParameterAccess::~ShaderParameterAccess(void) 00070 { 00071 } 00072 00073 void ShaderParameterAccess::operator =(const ShaderParameterAccess &/*source*/) 00074 { 00075 } 00076 00077 bool ShaderParameterAccess::subParameter(const char *name) 00078 { 00079 if(name == NULL) 00080 return false; 00081 00082 updateMap(); 00083 parameterIt it = _parametermap.find(name); 00084 00085 if(it == _parametermap.end()) 00086 return false; 00087 00088 _parameters.erase(_parameters.begin() + (*it).second); 00089 _parametermap.erase(it); 00090 updateMap(); 00091 00092 return true; 00093 } 00094 00095 void ShaderParameterAccess::updateMap(void) 00096 { 00097 if(_mapsize == _parameters.size()) 00098 return; 00099 00100 UInt32 size = _parameters.size(); 00101 _parametermap.clear(); 00102 for(UInt32 i=0;i<size;++i) 00103 _parametermap.insert(std::pair<std::string, UInt32>(_parameters[i]->getName(), i)); 00104 _mapsize = size; 00105 }
1.4.3