INITRENDERRESULT SDKGradientClass::InitRender(BaseShader *sh, const InitRenderStruct &irs) { BaseContainer *dat = sh->GetDataInstance(); gdata.mode = dat->GetLong(SDKGRADIENTSHADER_MODE); gdata.angle = dat->GetReal(SDKGRADIENTSHADER_ANGLE); gdata.cycle = dat->GetBool(SDKGRADIENTSHADER_CYCLE); gdata.turbulence = dat->GetReal(SDKGRADIENTSHADER_TURBULENCE); gdata.octaves = dat->GetReal(SDKGRADIENTSHADER_OCTAVES); gdata.scale = dat->GetReal(SDKGRADIENTSHADER_SCALE); gdata.freq = dat->GetReal(SDKGRADIENTSHADER_FREQ); gdata.absolute = dat->GetBool(SDKGRADIENTSHADER_ABSOLUTE); gdata.gradient = (Gradient*)dat->GetCustomDataType(SDKGRADIENTSHADER_COLOR,CUSTOMDATATYPE_GRADIENT); if (!gdata.gradient || !gdata.gradient->InitRender(irs)) return INITRENDERRESULT_OUTOFMEMORY; gdata.sa=Sin(gdata.angle); gdata.ca=Cos(gdata.angle); LONG i; GradientKnot *k; for (i=0; i<4; i++) { gdata.c[i]=0.0; k = gdata.gradient->GetRenderKnot(i); if (k) gdata.c[i]=k->col; } return INITRENDERRESULT_OK; }