void ShaderProgramVariablesBase::onCreate(const ShaderProgramVariables *source)
{
    Inherited::onCreate(source);

    if(source != NULL)
    {
        ShaderProgramVariables *pThis = static_cast<ShaderProgramVariables *>(this);

        MFUnrecShaderValueVariablePtr::const_iterator VariablesIt  =
            source->_mfVariables.begin();
        MFUnrecShaderValueVariablePtr::const_iterator VariablesEnd =
            source->_mfVariables.end  ();

        while(VariablesIt != VariablesEnd)
        {
            pThis->addVariable(*VariablesIt);

            ++VariablesIt;
        }

        MFUnrecChildShaderProcVariablePtr::const_iterator ProceduralVariablesIt  =
            source->_mfProceduralVariables.begin();
        MFUnrecChildShaderProcVariablePtr::const_iterator ProceduralVariablesEnd =
            source->_mfProceduralVariables.end  ();

        while(ProceduralVariablesIt != ProceduralVariablesEnd)
        {
            pThis->addProceduralVariable(*ProceduralVariablesIt);

            ++ProceduralVariablesIt;
        }
    }
}