Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members

IMeshManipulator.h

Go to the documentation of this file.
00001 // Copyright (C) 2002-2008 Nikolaus Gebhardt
00002 // This file is part of the "Irrlicht Engine".
00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
00004 
00005 #ifndef __I_MESH_MANIPULATOR_H_INCLUDED__
00006 #define __I_MESH_MANIPULATOR_H_INCLUDED__
00007 
00008 #include "IReferenceCounted.h"
00009 #include "vector3d.h"
00010 #include "aabbox3d.h"
00011 #include "matrix4.h"
00012 #include "IAnimatedMesh.h"
00013 #include "SColor.h"
00014 
00015 namespace irr
00016 {
00017 namespace scene
00018 {
00019 
00020         class IMesh;
00021         class IMeshBuffer;
00022         struct SMesh;
00023 
00025 
00030         class IMeshManipulator : public virtual IReferenceCounted
00031         {
00032         public:
00033 
00035                 virtual ~IMeshManipulator() {}
00036 
00038 
00041                 virtual void flipSurfaces(IMesh* mesh) const = 0;
00042 
00044 
00046                 virtual void setVertexColorAlpha(IMesh* mesh, s32 alpha) const = 0;
00047 
00049 
00051                 virtual void setVertexColors(IMesh* mesh, video::SColor color) const = 0;
00052 
00054 
00056                 virtual void recalculateNormals(IMesh* mesh, bool smooth = false) const = 0;
00057 
00059 
00061                 virtual void recalculateNormals(IMeshBuffer* buffer, bool smooth = false) const = 0;
00062 
00064 
00066                 virtual void scaleMesh(IMesh* mesh, const core::vector3df& scale) const = 0;
00067 
00069 
00071                 virtual void transformMesh(IMesh* mesh, const core::matrix4& m) const = 0;
00072 
00074 
00080                 virtual SMesh* createMeshCopy(IMesh* mesh) const = 0;
00081 
00083 
00087                 virtual void makePlanarTextureMapping(IMesh* mesh, f32 resolution=0.001f) const = 0;
00088 
00090 
00098                 virtual IMesh* createMeshWithTangents(IMesh* mesh) const = 0;
00099 
00101 
00106                 virtual IMesh* createMeshWith2TCoords(IMesh* mesh) const = 0;
00107 
00109 
00114                 virtual IMesh* createMeshUniquePrimitives(IMesh* mesh) const = 0;
00115 
00117 
00122                 virtual IMesh* createMeshWelded(IMesh* mesh, f32 tolerance=core::ROUNDING_ERROR_32) const = 0;
00123 
00125 
00127                 virtual s32 getPolyCount(IMesh* mesh) const = 0;
00128 
00130 
00132                 virtual s32 getPolyCount(IAnimatedMesh* mesh) const = 0;
00133 
00135 
00141                 virtual IAnimatedMesh * createAnimatedMesh(IMesh* mesh,
00142                         scene::E_ANIMATED_MESH_TYPE type = scene::EAMT_UNKNOWN) const = 0;
00143         };
00144 
00145 } // end namespace scene
00146 } // end namespace irr
00147 
00148 
00149 #endif
00150 

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2008 by Nikolaus Gebhardt. Generated on Sun Jun 1 07:59:07 2008 by Doxygen (1.4.2)