예제 #1
0
파일: particle.cpp 프로젝트: HLH15/24783
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;
	}
}
예제 #2
0
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();
}
예제 #3
0
파일: particle.cpp 프로젝트: HLH15/24783
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;
	}
}