void ParticleGroup::MakeVertexBuffer(const YsVec3 &viewDir,float particleSize) { vtx.resize(particle.size()*3); col.resize(particle.size()*4); pointSize.resize(particle.size()); texCoordRange.resize(particle.size()*4); auto idxBuf=SortIndex(viewDir); int idx=0; for(auto &sortedIdx : idxBuf) { auto &p=particle[sortedIdx]; vtx[idx*3 ]=p.pos.xf(); vtx[idx*3+1]=p.pos.yf(); vtx[idx*3+2]=p.pos.zf(); col[idx*4 ]=1; col[idx*4+1]=1; col[idx*4+2]=1; col[idx*4+3]=0.3; pointSize[idx]=particleSize; texCoordRange[idx*4 ]=p.texCoordRange[0]; texCoordRange[idx*4+1]=p.texCoordRange[1]; texCoordRange[idx*4+2]=p.texCoordRange[2]; texCoordRange[idx*4+3]=p.texCoordRange[3]; ++idx; } }
void Ide::DoDirDiff() { Index<String> dir; Vector<String> d = GetUppDirs(); for(int i = 0; i < d.GetCount(); i++) dir.FindAdd(d[i]); FindFile ff(ConfigFile("*.bm")); while(ff) { VectorMap<String, String> var; LoadVarFile(ff.GetPath(), var); Vector<String> p = Split(var.Get("UPP", String()), ';'); for(int i = 0; i < p.GetCount(); i++) dir.FindAdd(p[i]); ff.Next(); } String n = GetFileFolder(editfile); if(n.GetCount()) dir.FindAdd(n); SortIndex(dir); static DirDiffDlg dlg; dlg.diff.WhenLeftLine = THISBACK1(GotoDirDiffLeft, &dlg); dlg.diff.WhenRightLine = THISBACK1(GotoDirDiffRight, &dlg); for(int i = 0; i < dir.GetCount(); i++) { dlg.Dir1AddList(dir[i]); dlg.Dir2AddList(dir[i]); } if(d.GetCount()) dlg.Dir1(d[0]); if(!dlg.IsOpen()) { dlg.SetFont(veditorfont); dlg.Maximize(); dlg.Title("Compare directories"); dlg.OpenMain(); } else dlg.SetFocus(); }
void ParticleGroup::MakeVertexBuffer(const YsVec3 &viewDir,float particleSize) { vtx.resize(particle.size()*3); col.resize(particle.size()*4); pointSize.resize(particle.size()); texCoordRange.resize(particle.size()*4); auto idxBuf=SortIndex(viewDir); int idx=0; for(auto &sortedIdx : idxBuf) { auto &p=particle[sortedIdx]; vtx[idx*3 ]=p.pos.xf(); vtx[idx*3+1]=p.pos.yf(); vtx[idx*3+2]=p.pos.zf(); float alpha=0.3*YsSmaller<float>(p.tRemain-p.t,1.0f); float blue=YsGreater <float> (0.0f,1.0f-p.t); float green=YsBound <float> (2.0-p.t,0.0f,1.0f); float red=YsBound <float> (3.0-p.t,0.0f,1.0f); col[idx*4 ]=red; col[idx*4+1]=green; col[idx*4+2]=blue; col[idx*4+3]=alpha; pointSize[idx]=particleSize; texCoordRange[idx*4 ]=p.texCoordRange[0]; texCoordRange[idx*4+1]=p.texCoordRange[1]; texCoordRange[idx*4+2]=p.texCoordRange[2]; texCoordRange[idx*4+3]=p.texCoordRange[3]; ++idx; } }