示例#1
0
Vector2Array Curve2D::get_points_pos() const {
	Vector2Array ret;
	ret.resize(points.size());
	for (int i=0; i<points.size(); i++) {
		ret.set(i, points[i].pos);
	};
	return ret;
};
示例#2
0
Vector2Array Curve2D::tesselate(int p_max_stages,float p_tolerance) const {

	Vector2Array tess;


	if (points.size()==0) {
		return tess;
	}
	Vector< Map<float,Vector2> > midpoints;

	midpoints.resize(points.size()-1);

	int pc=1;
	for(int i=0;i<points.size()-1;i++) {

		_bake_segment2d(midpoints[i],0,1,points[i].pos,points[i].out,points[i+1].pos,points[i+1].in,0,p_max_stages,p_tolerance);
		pc++;
		pc+=midpoints[i].size();

	}

	tess.resize(pc);
	Vector2Array::Write bpw=tess.write();
	bpw[0]=points[0].pos;
	int pidx=0;

	for(int i=0;i<points.size()-1;i++) {

		for(Map<float,Vector2>::Element *E=midpoints[i].front();E;E=E->next()) {

			pidx++;
			bpw[pidx] = E->get();
		}

		pidx++;
		bpw[pidx] = points[i+1].pos;

	}

	bpw=Vector2Array::Write ();

	return tess;

}
示例#3
0
Vector2Array Curve2D::tesselate(int p_max_stages,float p_tolerance) const {

	Vector2Array tess;

	if(points.size()==0) {
		return tess;
	}
	std::vector< std::map<float,Vector2> > midpoints;

	midpoints.resize(points.size()-1);

	int pc=1;
	for(int i=0;i<points.size()-1;i++) {

		_bake_segment2d(midpoints[i],0,1,points[i].pos,points[i].out,points[i+1].pos,points[i+1].in,0,p_max_stages,p_tolerance);
		pc++;
		pc+=midpoints[i].size();

	}

	tess.resize(pc);
	tess[0]=points[0].pos;
	int pidx=0;

	for(int i=0;i<points.size()-1;i++) {

		for(std::map<float,Vector2>::const_iterator itr = midpoints[i].begin(); itr != midpoints[i].end(); ++itr) {

			pidx++;
			tess[pidx] = itr->second;
		}

		pidx++;
		tess[pidx] = points[i+1].pos;

	}

	return tess;
}
示例#4
0
Dictionary Curve2D::_get_data() const {

	Dictionary dc;

	Vector2Array d;
	d.resize(points.size()*3);
	Vector2Array::Write w = d.write();


	for(int i=0;i<points.size();i++) {

		w[i*3+0]=points[i].in;
		w[i*3+1]=points[i].out;
		w[i*3+2]=points[i].pos;

	}

	w=Vector2Array::Write();

	dc["points"]=d;

	return dc;
}