Import plugin not working, despite copying example from docs

Godot Version

4.1.3

Question

I’m going crazy here. I’m trying to create a basic importer plugin. My _import method, I’ve literally just copy-and-pasted an example from the Godot docs to create a MeshInstance3D and try and save it to disk, but even that doesn’t work. I just get the following error:

Can’t save empty resource to path ‘res://.godot/imported/RING1.TMD-018865a4c2cb32f2b980cb8ca348885a.mesh’.

My _import method:

func _import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array[String], gen_files: Array[String]) -> Error:
	var file = FileAccess.open(source_file, FileAccess.READ)
	if file == null:
		return FileAccess.get_open_error()

	# TODO: Parse actual file

	var vertices = PackedVector3Array()
	vertices.push_back(Vector3(0, 1, 0))
	vertices.push_back(Vector3(1, 0, 0))
	vertices.push_back(Vector3(0, 0, 1))

	var arr_mesh = ArrayMesh.new()
	var arrays = []
	arrays.resize(Mesh.ARRAY_MAX)
	arrays[Mesh.ARRAY_VERTEX] = vertices

	arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)

	var mesh_instance = MeshInstance3D.new()
	mesh_instance.mesh = arr_mesh

	return ResourceSaver.save(mesh_instance, "%s.%s" % [save_path, _get_save_extension()])

Can any one see where I might be going wrong? Why is going saying the resource is “empty” when I’m creating a MeshInstance3D, and setting its mesh property to an ArrayMesh instance that has three vertices?

Fixed by saving ArrayMesh instance (a resource) instead of MeshInstance3D (node).

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.