MeVisLabToolboxReference
MeVisLab/Standard/Sources/Inventor/SoShader/Inventor/fields/SoMFUniformShaderParameter.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 
00006 
00007 
00008 #ifndef  _SO_MF_UNIFORM_SHADER_PARAMETER_
00009 #define  _SO_MF_UNIFORM_SHADER_PARAMETER_
00010 
00011 #include "SoShaderSystem.h"
00012 #include <Inventor/fields/SoSubField.h>
00013 
00014 class SoUniformShaderParameter;
00015 
00017 class INVENTOR_SHADER_API SoMFUniformShaderParameter : public SoMField
00018 {
00019    typedef SoMField inherited;
00020 
00021    SO_MFIELD_HEADER(SoMFUniformShaderParameter, SoUniformShaderParameter *, SoUniformShaderParameter *);
00022 
00023    public:
00024    
00026       void addShaderParameter(SoUniformShaderParameter *shaderParameter);
00027 
00029       void insertShaderParameter(SoUniformShaderParameter *shaderParameter, int newShaderParameterIndex);
00030       
00032       SoUniformShaderParameter *getShaderParameter(int index) const;
00033 
00035       int findShaderParameter(const SoUniformShaderParameter *shaderParameter) const;
00036       
00038       int getNumShaderParameters() const;
00039 
00041       void removeShaderParameter(int index);
00042 
00044       void removeShaderParameter(SoUniformShaderParameter *shaderParameter) {
00045          removeShaderParameter(findShaderParameter(shaderParameter));
00046       }
00047       
00049       void removeAllShaderParameters();
00050 
00052       void replaceShaderParameter(int index, SoUniformShaderParameter *newShaderParameter);
00053       
00055       void replaceShaderParameter(SoUniformShaderParameter *oldShaderParameter, SoUniformShaderParameter *newShaderParameter) {
00056          replaceShaderParameter(findShaderParameter(oldShaderParameter), newShaderParameter);
00057       }
00058   
00059    SoINTERNAL public:
00060   
00062       static void initClass();
00063 
00065       virtual void fixCopy(SbBool copyConnections);
00066   
00068       virtual SbBool referencesCopy() const;
00069   
00070    private:
00071 
00073       virtual void countWriteRefs(SoOutput *out) const;
00074 
00077       void setVal(int index, SoUniformShaderParameter *newValue);
00078 };
00079 
00080 #endif  // _SO_MF_UNIFORM_SHADER_PARAMETER_