Esempio n. 1
0
void MeshEditor::edit(Ref<Mesh> p_mesh) {

	mesh = p_mesh;
	mesh_instance->set_mesh(mesh);

	if (mesh.is_null()) {

		hide();
	} else {
		rot_x = 0;
		rot_y = 0;
		_update_rotation();

		Rect3 aabb = mesh->get_aabb();
		print_line("aabb: " + aabb);
		Vector3 ofs = aabb.position + aabb.size * 0.5;
		float m = aabb.get_longest_axis_size();
		if (m != 0) {
			m = 1.0 / m;
			m *= 0.5;
			//print_line("scale: "+rtos(m));
			Transform xform;
			xform.basis.scale(Vector3(m, m, m));
			xform.origin = -xform.basis.xform(ofs); //-ofs*m;
			//xform.origin.z -= aabb.get_longest_axis_size() * 2;
			mesh_instance->set_transform(xform);
		}
	}
}