#include <OSGShaderParameterAccess.h>
Public Member Functions | |
Constructors | |
| * | ShaderParameterAccess (MFShaderParameterPtr ¶meters) |
| ~ShaderParameterAccess (void) | |
Access | |
| template<class ParameterType, class ValueType> | |
| *bool | setParameter (const char *name, const ValueType &value) |
| template<class ParameterType, class ValueType> | |
| bool | getParameter (const char *name, ValueType &value) |
| bool | subParameter (const char *name) |
Private Types | |
| typedef std::map< std::string, UInt32 > | parameterMap |
| typedef parameterMap::iterator | parameterIt |
Private Member Functions | |
| void | operator= (const ShaderParameterAccess &source) |
| void | updateMap (void) |
Private Attributes | |
| MFShaderParameterPtr & | _parameters |
| parameterMap | _parametermap |
| UInt32 | _mapsize |
Definition at line 58 of file OSGShaderParameterAccess.h.
|
|
Definition at line 94 of file OSGShaderParameterAccess.h. |
|
|
Definition at line 95 of file OSGShaderParameterAccess.h. |
|
|
Definition at line 62 of file OSGShaderParameterAccess.cpp. 00062 : 00063 _parameters(parameters), 00064 _parametermap(), 00065 _mapsize(0) 00066 { 00067 }
|
|
|
Definition at line 69 of file OSGShaderParameterAccess.cpp.
|
|
||||||||||||||||
|
Definition at line 46 of file OSGShaderParameterAccess.inl. References _mapsize, _parametermap, _parameters, osg::beginEditCP(), osg::endEditCP(), FWARNING, osg::NullFC, p, osg::MField< FieldTypeT, fieldNameSpace >::push_back(), osg::MField< FieldTypeT, fieldNameSpace >::size(), and updateMap(). Referenced by osg::ShaderParameterChunk::setUniformParameter(). 00047 { 00048 if(name == NULL) 00049 return false; 00050 00051 updateMap(); 00052 00053 parameterIt it = _parametermap.find(name); 00054 00055 if(it != _parametermap.end()) 00056 { 00057 //ParameterType::Ptr p = ParameterType::Ptr::dcast(_parameters[(*it).second]); 00058 FCPtr<ShaderParameterPtr, ParameterType> p = FCPtr<ShaderParameterPtr, ParameterType>::dcast(_parameters[(*it).second]); 00059 if(p == NullFC) 00060 { 00061 FWARNING(("ShaderParameterAccess::setParameter : Parameter '%s' has wrong type!\n", name)); 00062 return false; 00063 } 00064 beginEditCP(p, ParameterType::ValueFieldMask); 00065 p->setValue(value); 00066 endEditCP(p, ParameterType::ValueFieldMask); 00067 } 00068 else 00069 { 00070 //ParameterType::Ptr p = ParameterType::create(); 00071 FCPtr<ShaderParameterPtr, ParameterType> p = ParameterType::create(); 00072 if(p != NullFC) 00073 { 00074 beginEditCP(p); 00075 p->setName(name); 00076 p->setValue(value); 00077 endEditCP(p); 00078 _parameters.push_back(p); 00079 _parametermap.insert(std::pair<std::string, UInt32>(name, _parameters.size()-1)); 00080 _mapsize = _parameters.size(); 00081 } 00082 } 00083 return true; 00084 }
|
|
||||||||||||||||
|
Definition at line 87 of file OSGShaderParameterAccess.inl. References _parametermap, _parameters, FINFO, FWARNING, osg::NullFC, p, and updateMap(). Referenced by osg::ShaderParameterChunk::getUniformParameter(). 00088 { 00089 if(name == NULL) 00090 return false; 00091 00092 updateMap(); 00093 00094 parameterIt it = _parametermap.find(name); 00095 00096 if(it != _parametermap.end()) 00097 { 00098 //ParameterType::Ptr p = ParameterType::Ptr::dcast(_parameters[(*it).second]); 00099 FCPtr<ShaderParameterPtr, ParameterType> p = FCPtr<ShaderParameterPtr, ParameterType>::dcast(_parameters[(*it).second]); 00100 if(p == NullFC) 00101 { 00102 FWARNING(("ShaderParameterAccess::getParameter : Parameter '%s' has wrong type!\n", name)); 00103 return false; 00104 } 00105 value = p->getValue(); 00106 } 00107 else 00108 { 00109 FINFO(("ShaderParameterAccess::getParameter : Parameter '%s' doesn't exist!\n", name)); 00110 return false; 00111 } 00112 return true; 00113 }
|
|
|
Definition at line 77 of file OSGShaderParameterAccess.cpp. References _parametermap, _parameters, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::MField< FieldTypeT, fieldNameSpace >::erase(), and updateMap(). Referenced by osg::ShaderParameterChunk::subUniformParameter(). 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 }
|
|
|
Definition at line 73 of file OSGShaderParameterAccess.cpp.
|
|
|
Definition at line 95 of file OSGShaderParameterAccess.cpp. References _mapsize, _parametermap, _parameters, osg::getName(), and osg::MField< FieldTypeT, fieldNameSpace >::size(). Referenced by getParameter(), setParameter(), and subParameter(). 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 }
|
|
|
Definition at line 92 of file OSGShaderParameterAccess.h. Referenced by getParameter(), setParameter(), subParameter(), and updateMap(). |
|
|
Definition at line 96 of file OSGShaderParameterAccess.h. Referenced by getParameter(), setParameter(), subParameter(), and updateMap(). |
|
|
Definition at line 97 of file OSGShaderParameterAccess.h. Referenced by setParameter(), and updateMap(). |
1.4.3