std::pair<u32,u32> get_id( const xr_vector<xrMU_Model*>& mu_models, const T * v ) { u32 face_id = u32(-1); struct find { const T * _v; u32& _id; find( const T * v, u32& id) : _v(v), _id( id ) {} bool operator () ( const xrMU_Model * m ) { VERIFY(m); u32 id = m->find( _v ); if( id == u32(-1) ) return false; _id = id; return true; } } f( v, face_id ); xr_vector<xrMU_Model*> :: const_iterator ii =std::find_if( mu_models.begin(), mu_models.end(), f ); if( ii == mu_models.end() ) return std::pair<u32,u32>(u32(-1), u32(-1)); return std::pair<u32,u32>(u32(ii-mu_models.begin()), face_id ); }
void CLevelChanger::net_Destroy () { inherited ::net_Destroy (); xr_vector<CLevelChanger*>::iterator it = std::find(g_lchangers.begin(), g_lchangers.end(), this); if(it != g_lchangers.end()) g_lchangers.erase(it); }
void CUIActorMenu::highlight_ammo_for_weapon( PIItem weapon_item, CUIDragDropListEx* ddlist ) { VERIFY( weapon_item ); VERIFY( ddlist ); static xr_vector<shared_str> ammo_types; ammo_types.clear_not_free(); CWeapon* weapon = smart_cast<CWeapon*>(weapon_item); if ( !weapon ) { return; } ammo_types.assign( weapon->m_ammoTypes.begin(), weapon->m_ammoTypes.end() ); CWeaponMagazinedWGrenade* wg = smart_cast<CWeaponMagazinedWGrenade*>(weapon_item); if ( wg ) { if ( wg->IsGrenadeLauncherAttached() && wg->m_ammoTypes2.size() ) { ammo_types.insert( ammo_types.end(), wg->m_ammoTypes2.begin(), wg->m_ammoTypes2.end() ); } } if ( ammo_types.size() == 0 ) { return; } xr_vector<shared_str>::iterator ite = ammo_types.end(); u32 const cnt = ddlist->ItemsCount(); for ( u32 i = 0; i < cnt; ++i ) { CUICellItem* ci = ddlist->GetItemIdx(i); PIItem item = (PIItem)ci->m_pData; if ( !item ) { continue; } CWeaponAmmo* ammo = smart_cast<CWeaponAmmo*>(item); if ( !ammo ) { highlight_addons_for_weapon( weapon_item, ci ); continue; // for i } shared_str const& ammo_name = item->object().cNameSect(); xr_vector<shared_str>::iterator itb = ammo_types.begin(); for ( ; itb != ite; ++itb ) { if ( ammo_name._get() == (*itb)._get() ) { ci->m_select_armament = true; break; // itb } } }//for i }
void xrLC_GlobalData::clear_build_textures_surface( const xr_vector<u32> &exept ) { clLog( "mem usage before clear build textures surface: %u", Memory.mem_usage() ); xr_vector<b_BuildTexture>::iterator i = textures().begin(); xr_vector<b_BuildTexture>::const_iterator e = textures().end(); xr_vector<b_BuildTexture>::const_iterator b = textures().begin(); for(;i!=e;++i) { xr_vector<u32>::const_iterator ff = std::find( exept.begin(), exept.end(),u32( i - b ) ); if( ff == exept.end() ) ::clear((*i)); } Memory.mem_compact(); clLog( "mem usage after clear build textures surface: %u", Memory.mem_usage() ); }
void vec_spetial_clear( xr_vector<T> &v ) { typename xr_vector<T>::iterator i = v.begin(), e = v.end(); for(;i!=e;++i) clear(*i); v.clear(); }
void vec_clear( xr_vector<T*> &v ) { typename xr_vector<T*>::iterator i = v.begin(), e = v.end(); for(;i!=e;++i) xr_delete(*i); v.clear(); }
void dump_list_wnd(){ Msg("------Total wnds %d",dbg_list_wnds.size()); xr_vector<DBGList>::iterator _it = dbg_list_wnds.begin(); for(;_it!=dbg_list_wnds.end();++_it) if(!(*_it).closed) Msg("--leak detected ---- wnd = %d",(*_it).num); }
u32 PlaceData(xr_vector<vecW> &C, vecW &P) { if (P.size()>1) { std::sort (P.begin(),P.end()); vecW::iterator I = std::unique (P.begin(),P.end()); P.erase(I,P.end()); } // Search placeholder u32 sz = P.size(); u32 pos = 0; for (xr_vector<vecW>::iterator it=C.begin(); it!=C.end(); it++) { u32 S = it->size(); if (S!=sz) { pos+=S+1; continue; } if (0!=memcmp(it->begin(),P.begin(),S*sizeof(u16))) { pos+=S+1; continue; } // Ok-Ob :) goto exit; } // If we get here - need to register _new set of data C.push_back(P); exit: P.clear(); return pos*sizeof(u16); }
CUIWindow::~CUIWindow() { VERIFY( !(GetParent()&&IsAutoDelete()) ); CUIWindow* parent = GetParent(); bool ad = IsAutoDelete(); if( parent && !ad ) parent->CUIWindow::DetachChild( this ); DetachAll(); if( GetPPMode() ) MainMenu()->UnregisterPPDraw (this); #ifdef LOG_ALL_WNDS xr_vector<DBGList>::iterator _it = dbg_list_wnds.begin(); bool bOK = false; for(;_it!=dbg_list_wnds.end();++_it){ if( (*_it).num==m_dbg_id && !(*_it).closed){ bOK = true; (*_it).closed = true; dbg_list_wnds.erase(_it); break; } if( (*_it).num==m_dbg_id && (*_it).closed){ Msg("--CUIWindow [%d] already deleted", m_dbg_id); bOK = true; } } if(!bOK) Msg("CUIWindow::~CUIWindow.[%d] cannot find window in list", m_dbg_id); #endif }
void CallFunctions (xr_vector<luabind::functor<void> >& v) { xr_vector<luabind::functor<void> >::iterator it = v.begin(); for(;it!=v.end();++it){ if( (*it).is_valid() ) (*it)(); } }
void SaveDATA(IWriter &fs, xr_vector<vecW> &C) { for (xr_vector<vecW>::iterator it=C.begin(); it!=C.end(); it++) { fs.Wword(it->size()); fs.write(it->begin(),it->size()*sizeof(u16)); } }
void vfOptimizeParameters(xr_vector<xr_vector<REAL> > &A, xr_vector<xr_vector<REAL> > &B, xr_vector<REAL> &C, xr_vector<REAL> &D, REAL dEpsilon, REAL dAlpha, REAL dBeta, REAL dNormaFactor, u32 dwMaxIterationCount) { u32 dwTestCount = (u32)B.size(); xr_vector<REAL> daGradient; xr_vector<REAL> daDelta; xr_vector<xr_vector<REAL> > daEvalResults; daEvalResults.resize(dwTestCount); if (!B.size()) { clMsg ("! ERROR : there are no parameters to fit!"); return; } u32 dwParameterCount = (u32)B[0].size(); C.assign (dwParameterCount,1.0f); D.assign (dwParameterCount,0.0f); daDelta.assign (dwParameterCount,0); daGradient.assign (dwParameterCount,0); { for (u32 i=0; i<dwTestCount; i++) daEvalResults[i].resize(dwParameterCount); } u32 i = 0; REAL dFunctional = dfComputeEvalResults(daEvalResults,A,B,C,D), dPreviousFunctional; //clMsg ("* MU-fitter: %6d : %17.8f (%17.8f)",i,dFunctional,dFunctional/dwTestCount); do { dPreviousFunctional = dFunctional; dafGradient (daEvalResults, daGradient, B, dNormaFactor); std::transform (daGradient.begin(), daGradient.end(), daGradient.begin(), std::bind2nd(std::multiplies<REAL>(), -dAlpha)); std::transform (daDelta.begin(), daDelta.end(), daDelta.begin(), std::bind2nd(std::multiplies<REAL>(), dBeta)); std::transform (daGradient.begin(), daGradient.end(), daDelta.begin(), daDelta.begin(), std::plus<REAL>()); std::transform (C.begin(), C.end(), daDelta.begin(), C.begin(), std::plus<REAL>()); std::transform (D.begin(), D.end(), daDelta.begin(), D.begin(), std::plus<REAL>()); dFunctional = dfComputeEvalResults(daEvalResults,A,B,C,D); i++; } while ((((dPreviousFunctional - dFunctional)/dwTestCount) > dEpsilon) && (i <= dwMaxIterationCount)); if (dPreviousFunctional < dFunctional) { std::transform (daDelta.begin(), daDelta.end(), daDelta.begin(), std::bind2nd(std::multiplies<REAL>(), -1)); std::transform (C.begin(), C.end(), daDelta.begin(), C.begin(), std::plus<REAL>()); std::transform (D.begin(), D.end(), daDelta.begin(), D.begin(), std::plus<REAL>()); } dFunctional = dfComputeEvalResults(daEvalResults,A,B,C,D); //clMsg ("* MU-fitter: %6d : %17.8f (%17.8f)",i,dFunctional,dFunctional/dwTestCount); }
BOOL reclaim (xr_vector<T*>& vec, const T* ptr) { xr_vector<T*>::iterator it = vec.begin (); xr_vector<T*>::iterator end = vec.end (); for (; it!=end; it++) if (*it == ptr) { vec.erase (it); return TRUE; } return FALSE; }
void sort_tlist_mat ( xr_vector<mapMatrixTextures::TNode*,render_alloc<mapMatrixTextures::TNode*> >& lst, xr_vector<mapMatrixTextures::TNode*,render_alloc<mapMatrixTextures::TNode*> >& temp, mapMatrixTextures& textures, BOOL bSSA ) { int amount = textures.begin()->key->size(); if (bSSA) { if (amount<=1) { // Just sort by SSA textures.getANY_P (lst); std::sort (lst.begin(), lst.end(), cmp_textures_ssa_mat); } else { // Split into 2 parts mapMatrixTextures::TNode* _it = textures.begin (); mapMatrixTextures::TNode* _end = textures.end (); for (; _it!=_end; _it++) { if (_it->val.ssa > r_ssaHZBvsTEX) lst.push_back (_it); else temp.push_back (_it); } // 1st - part - SSA, 2nd - lexicographically std::sort (lst.begin(), lst.end(), cmp_textures_ssa_mat); if (2==amount) std::sort (temp.begin(), temp.end(), cmp_textures_lex2_mat); else if (3==amount) std::sort (temp.begin(), temp.end(), cmp_textures_lex3_mat); else std::sort (temp.begin(), temp.end(), cmp_textures_lexN_mat); // merge lists lst.insert (lst.end(),temp.begin(),temp.end()); } } else { textures.getANY_P (lst); if (2==amount) std::sort (lst.begin(), lst.end(), cmp_textures_lex2_mat); else if (3==amount) std::sort (lst.begin(), lst.end(), cmp_textures_lex3_mat); else std::sort (lst.begin(), lst.end(), cmp_textures_lexN_mat); } }
void xrServer::Perform_connect_spawn(CSE_Abstract* E, xrClientData* CL, NET_Packet& P) { xr_vector<u16>::iterator it = std::find(g_perform_spawn_ids.begin(), g_perform_spawn_ids.end(), E->ID); if(it!=g_perform_spawn_ids.end()) return; g_perform_spawn_ids.push_back(E->ID); if (E->net_Processed) return; if (E->s_flags.is(M_SPAWN_OBJECT_PHANTOM)) return; // Connectivity order CSE_Abstract* Parent = ID_to_entity (E->ID_Parent); if (Parent) Perform_connect_spawn (Parent,CL,P); // Process Flags16 save = E->s_flags; //------------------------------------------------- E->s_flags.set (M_SPAWN_UPDATE,TRUE); if (0==E->owner) { // PROCESS NAME; Name this entity if (E->s_flags.is(M_SPAWN_OBJECT_ASPLAYER)) { CL->owner = E; E->set_name_replace (*CL->name); } // Associate E->owner = CL; E->Spawn_Write (P,TRUE ); E->UPDATE_Write (P); } else { // Just inform E->Spawn_Write (P,FALSE); E->UPDATE_Write (P); } //----------------------------------------------------- E->s_flags = save; SendTo (CL->ID,P,net_flags(TRUE,TRUE)); E->net_Processed = TRUE; }
void dbg_draw_geoms(xr_vector<CODEGeom*>& m_weapon_geoms) { xr_vector<CODEGeom*>::iterator ii =m_weapon_geoms.begin(), ee = m_weapon_geoms.end(); for( ;ii!=ee; ++ii ) { CODEGeom *g =(*ii); g->dbg_draw( 0.01f, D3DCOLOR_XRGB( 0, 255, 100 ), Flags32() ); } }
static void restore_fixes( ) { struct refix { void operator () (anim_bone_fix* fix) { fix->refix(); } } rf; std::for_each( saved_fixes.begin(), saved_fixes.end(), rf ); saved_fixes.clear(); }
void CBuild::SaveTREE (IWriter &fs) { CMemoryWriter MFS; Status ("Geometry buffers..."); xr_vector<u32> remap; remap.reserve (g_tree.size()); for (u32 rid=0; rid<g_tree.size(); rid++) { OGF* o = dynamic_cast<OGF*> (g_tree[rid]); if (o) remap.push_back(rid); } std::stable_sort (remap.begin(),remap.end(),remap_order); clMsg ("remap-size: %d / %d",remap.size(),g_tree.size()); for (u32 sid=0; sid<remap.size(); sid++) { u32 id = remap[sid]; //clMsg ("%3d: subdiv: %d",sid,id); g_tree[id]->PreSave (id); } Status ("Visuals..."); fs.open_chunk (fsL_VISUALS); for (xr_vector<OGF_Base*>::iterator it = g_tree.begin(); it!=g_tree.end(); it++) { u32 idx = u32(it-g_tree.begin()); MFS.open_chunk (idx); (*it)->Save (MFS); MFS.close_chunk (); Progress (float(idx)/float(g_tree.size())); } fs.w (MFS.pointer(),MFS.size()); fs.close_chunk (); clMsg ("Average: %d verts/%d faces, 50(%2.1f), 100(%2.1f), 500(%2.1f), 1000(%2.1f), 5000(%2.1f)", g_batch_verts/g_batch_count, g_batch_faces/g_batch_count, 100.f * float(g_batch_50)/float(g_batch_count), 100.f * float(g_batch_100)/float(g_batch_count), 100.f * float(g_batch_500)/float(g_batch_count), 100.f * float(g_batch_1000)/float(g_batch_count), 100.f * float(g_batch_5000)/float(g_batch_count) ); mem_Compact (); SaveGEOMs ("level.geom", g_VB,g_IB,g_SWI); // Normal SaveGEOMs ("level.geomx", x_VB,x_IB,x_SWI); // Fast-Path Status ("Shader table..."); fs.open_chunk (fsL_SHADERS); fs.w_u32 (g_Shaders.size()); for (xr_vector<LPCSTR>::iterator T=g_Shaders.begin(); T!=g_Shaders.end(); T++) fs.w_stringZ (*T); fs.close_chunk (); //mem_Compact (); }
void CClientDlg::RemoveServerFromList (SBServer server) { xr_vector <HOST_NODE>::iterator it = net_Hosts.begin(); for (;it!=net_Hosts.end(); ++it) { HOST_NODE& N = *(it);//net_Hosts [I]; // if ( !stricmp(N.dpCharAddress, NODE->dpCharAddress)) if (N.dpServer == server) { net_Hosts.erase(it); break; } }; };
IC void CSmartCastStats::show () { if (m_stats.empty()) { Msg ("CONGRATULATIONS : SmartCast stats is empty!!!"); return; } m_temp.clear (); m_temp.insert (m_temp.begin(),m_stats.begin(),m_stats.end()); std::sort (m_temp.begin(),m_temp.end(),CStatsPredicate()); u32 total = 0; xr_vector<CStats>::const_iterator I = m_temp.begin(); xr_vector<CStats>::const_iterator E = m_temp.end(); for ( ; I != E; ++I) total += (*I).m_count; Msg ("SmartCast stats (different %d, total %d) : ",(u32)m_stats.size(),total); I = m_temp.begin(); for ( ; I != E; ++I) Msg ("%8d %6.2f% : smart_cast<%s>(%s)",(*I).m_count,float((*I).m_count)*100.f/float(total),(*I).m_to,(*I).m_from); }
IC void construct_id_string (LPSTR result, const xr_vector<ALife::_OBJECT_ID> &restrictions) { xr_strcpy (result,""); string16 temp; u32 count = 0; xr_vector<ALife::_OBJECT_ID>::const_iterator I = restrictions.begin(); xr_vector<ALife::_OBJECT_ID>::const_iterator E = restrictions.end(); for ( ; I != E; ++I) { if (count) xr_strcat (result,","); xr_sprintf (temp,"%d",*I); xr_strcat (result,temp); ++count; } }
void base_lighting::select (xr_vector<R_Light>& dest, xr_vector<R_Light>& src, Fvector& P, float R) { Fsphere Sphere; Sphere.set (P,R); dest.clear (); R_Light* L = &*src.begin(); for (; L!=&*src.end(); L++) { if (L->type==LT_POINT) { float dist = Sphere.P.distance_to(L->position); if (dist>(Sphere.R+L->range)) continue; } dest.push_back(*L); } }
IC void construct_string (LPSTR result, u32 const result_size, const xr_vector<ALife::_OBJECT_ID> &restrictions) { u32 count = xr_strlen(result) ? _GetItemCount(result) : 0; xr_vector<ALife::_OBJECT_ID>::const_iterator I = restrictions.begin(); xr_vector<ALife::_OBJECT_ID>::const_iterator E = restrictions.end(); for ( ; I != E; ++I) { CSE_ALifeDynamicObject *object = ai().alife().objects().object(*I); if (ai().game_graph().vertex(object->m_tGraphID)->level_id() != ai().level_graph().level_id()) continue; if (count) xr_strcat(result,result_size,","); xr_strcat(result,result_size,object->name_replace()); ++count; } }
CUILine::~CUILine(){ xr_delete(m_tmpLine); #ifdef LOG_ALL_LINES xr_vector<DBGList>::iterator _it = dbg_list_lines.begin(); bool bOK = false; for(;_it!=dbg_list_lines.end();++_it){ if((*_it).wnd == this){ bOK = true; dbg_list_lines.erase(_it); break; } } if(!bOK) Msg("CUILine::~CUILine()!!!!!!!!!!!!!!!!!!!!!!! cannot find window in list"); #endif }
void draw_wnds_rects() { if(0==g_wnds_rects.size()) return; xr_vector<Frect>::iterator it = g_wnds_rects.begin(); xr_vector<Frect>::iterator it_e = g_wnds_rects.end(); for(;it!=it_e;++it) { Frect& r = *it; UI()->ClientToScreenScaled(r.lt, r.lt.x, r.lt.y); UI()->ClientToScreenScaled(r.rb, r.rb.x, r.rb.y); draw_rect (r,color_rgba(255,0,0,255)); }; g_wnds_rects.clear(); }
void CUIMpTradeWnd::CreateHelperItems (xr_vector<shared_str>& ammo_types) { for ( xr_vector<shared_str>::iterator it = ammo_types.begin(); it != ammo_types.end(); ++it ) { const shared_str& ammo_name = *it; if ( !m_store_hierarchy->FindItem (ammo_name) ) { continue; } SBuyItemInfo* ammo_item = CreateItem(ammo_name, SBuyItemInfo::e_undefined, false); ammo_item->m_cell_item->SetIsHelper (true); TryToBuyItem (ammo_item, bf_normal, NULL); } }
IC void CRestrictedObject::construct_restriction_string(LPSTR temp_restrictions, u32 const temp_restrictions_size, const xr_vector<ALife::_OBJECT_ID> &restrictions, shared_str current_restrictions, const P &p) { u32 count = 0; *temp_restrictions = 0; xr_vector<ALife::_OBJECT_ID>::const_iterator I = restrictions.begin(); xr_vector<ALife::_OBJECT_ID>::const_iterator E = restrictions.end(); for ( ; I != E; ++I) { CObject *object = Level().Objects.net_Find(*I); if (!object || !!strstr(*current_restrictions,*object->cName()) == value) continue; p (this,object->ID()); if (count) xr_strcat(temp_restrictions,temp_restrictions_size,","); xr_strcat(temp_restrictions,temp_restrictions_size,*object->cName()); count++; } }
CUIXml::~CUIXml() { #ifdef LOG_ALL_XMLS xr_vector<DBGList_>::iterator _it = dbg_list_xmls.begin(); bool bOK = false; for(;_it!=dbg_list_xmls.end();++_it){ if( (*_it).num==m_dbg_id && !(*_it).closed){ bOK = true; (*_it).closed = true; dbg_list_xmls.erase(_it); break; } if( (*_it).num==m_dbg_id && (*_it).closed){ Msg("--XML [%d] already deleted", m_dbg_id); bOK = true; } } if(!bOK) Msg("CUIXml::~CUIXml.[%d] cannot find xml in list", m_dbg_id); #endif }
//---------------------------------------------------------------------- int CObjectSpace::GetNearest ( xr_vector<ISpatial*>& q_spatial, xr_vector<CObject*>& q_nearest, const Fvector &point, float range, CObject* ignore_object ) { q_spatial.clear_not_free ( ); // Query objects q_nearest.clear_not_free ( ); Fsphere Q; Q.set (point,range); Fvector B; B.set (range,range,range); g_SpatialSpace->q_box(q_spatial,0,STYPE_COLLIDEABLE,point,B); // Iterate xr_vector<ISpatial*>::iterator it = q_spatial.begin (); xr_vector<ISpatial*>::iterator end = q_spatial.end (); for (; it!=end; it++) { CObject* O = (*it)->dcast_CObject (); if (0==O) continue; if (O==ignore_object) continue; Fsphere mS = { O->spatial.sphere.P, O->spatial.sphere.R }; if (Q.intersect(mS)) q_nearest.push_back(O); } return q_nearest.size(); }
BOOL testSKIP (LPCSTR path) { string256 p_name; string256 p_ext; _splitpath (path, 0, 0, p_name, p_ext ); if (0==stricmp(p_ext,".swatch"))return TRUE; if (0==stricmp(p_ext,".db")) return TRUE; if (PatternMatch(p_ext,"*avi*"))return TRUE; if (0==stricmp(p_ext,".key")) return TRUE; if (0==stricmp(p_ext,".tga")) return TRUE; if (0==stricmp(p_ext,".txt")) return TRUE; if (0==stricmp(p_ext,".smf")) return TRUE; if (0==stricmp(p_ext,".uvm")) return TRUE; if (0==stricmp(p_ext,".raw")) return TRUE; if (0==stricmp(p_name,"build")) return TRUE; if ('~'==p_ext[1]) return TRUE; if ('_'==p_ext[1]) return TRUE; for (xr_vector<shared_str>::iterator it=exclude_exts.begin(); it!=exclude_exts.end(); it++) if (PatternMatch(p_ext,it->c_str()))return TRUE; return FALSE; }