void CLensFlareDescriptor::load(CInifile* pIni, LPCSTR sect) { section = sect; m_Flags.set (flSource,pIni->r_bool(sect,"source" )); if (m_Flags.is(flSource)){ LPCSTR S= pIni->r_string ( sect,"source_shader" ); LPCSTR T= pIni->r_string ( sect,"source_texture" ); float r = pIni->r_float ( sect,"source_radius" ); BOOL i = pIni->r_bool ( sect,"source_ignore_color" ); SetSource(r,i,T,S); } m_Flags.set (flFlare,pIni->r_bool ( sect,"flares" )); if (m_Flags.is(flFlare)){ LPCSTR S= pIni->r_string ( sect,"flare_shader" ); LPCSTR T= pIni->r_string ( sect,"flare_textures" ); LPCSTR R= pIni->r_string ( sect,"flare_radius" ); LPCSTR O= pIni->r_string ( sect,"flare_opacity"); LPCSTR P= pIni->r_string ( sect,"flare_position"); u32 tcnt= _GetItemCount(T); string256 name; for (u32 i=0; i<tcnt; i++){ _GetItem(R,i,name); float r=(float)atof(name); _GetItem(O,i,name); float o=(float)atof(name); _GetItem(P,i,name); float p=(float)atof(name); _GetItem(T,i,name); AddFlare(r,o,p,name,S); } } m_Flags.set (flGradient,CInifile::IsBOOL(pIni->r_string( sect, "gradient"))); if (m_Flags.is(flGradient)){ LPCSTR S= pIni->r_string ( sect,"gradient_shader" ); LPCSTR T= pIni->r_string ( sect,"gradient_texture" ); float r = pIni->r_float ( sect,"gradient_radius" ); float o = pIni->r_float ( sect,"gradient_opacity" ); SetGradient(r,o,T,S); } m_StateBlendUpSpeed = 1.f/(_max(pIni->r_float( sect,"blend_rise_time" ),0.f)+EPS_S); m_StateBlendDnSpeed = 1.f/(_max(pIni->r_float( sect,"blend_down_time" ),0.f)+EPS_S); OnDeviceCreate(); }
//! Helper for FlareLine static void AddLFlare(const Vec2s & pos, Entity * io) { AddFlare(pos, 0.45f, 1, io); }