1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __IRR_I_MESH_WRITER_H_INCLUDED__
6 #define __IRR_I_MESH_WRITER_H_INCLUDED__
7 
8 #include "IReferenceCounted.h"
9 #include "EMeshWriterEnums.h"
10 
11 namespace irr
12 {
13 namespace io
14 {
15 	class IWriteFile;
16 } // end namespace io
17 
18 namespace scene
19 {
20 	class IMesh;
21 
22 	//! Interface for writing meshes
23 	class IMeshWriter : public virtual IReferenceCounted
24 	{
25 	public:
26 
27 		//! Destructor
~IMeshWriter()28 		virtual ~IMeshWriter() {}
29 
30 		//! Get the type of the mesh writer
31 		/** For own implementations, use MAKE_IRR_ID as shown in the
32 		EMESH_WRITER_TYPE enumeration to return your own unique mesh
33 		type id.
34 		\return Type of the mesh writer. */
35 		virtual EMESH_WRITER_TYPE getType() const = 0;
36 
37 		//! Write a static mesh.
38 		/** \param file File handle to write the mesh to.
39 		\param mesh Pointer to mesh to be written.
40 		\param flags Optional flags to set properties of the writer.
41 		\return True if sucessful */
42 		virtual bool writeMesh(io::IWriteFile* file, scene::IMesh* mesh,
43 							s32 flags=EMWF_NONE) = 0;
44 
45 		// Writes an animated mesh
46 		// for future use, no writer is able to write animated meshes currently
47 		/* \return Returns true if sucessful */
48 		//virtual bool writeAnimatedMesh(io::IWriteFile* file,
49 		// scene::IAnimatedMesh* mesh,
50 		// s32 flags=EMWF_NONE) = 0;
51 	};
52 
53 
54 } // end namespace
55 } // end namespace
56 
57 #endif
58 
59