Mgfractal: Add 3D and 4D fractals
[oweals/minetest.git] / src / mesh.h
index 7539298cb8c1fd5758a0eb2ae2653f0b0cb8e940..ec109e9e9422df9ad8d62b5b0fc9287493321c02 100644 (file)
@@ -22,7 +22,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "irrlichttypes_extrabloated.h"
 #include "nodedef.h"
-#include <string>
 
 /*
        Create a new cube mesh.
@@ -33,16 +32,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 */
 scene::IAnimatedMesh* createCubeMesh(v3f scale);
 
-/*
-       Create a new extruded mesh from a texture.
-       Maximum bounding box is (+-scale.X/2, +-scale.Y/2, +-scale.Z).
-       Thickness is in Z direction.
-
-       The resulting mesh has 1 material which must be defined by the caller.
-*/
-scene::IAnimatedMesh* createExtrudedMesh(video::ITexture *texture,
-               video::IVideoDriver *driver, v3f scale);
-
 /*
        Multiplies each vertex coordinate by the specified scaling factors
        (componentwise vector multiplication).
@@ -59,6 +48,12 @@ void translateMesh(scene::IMesh *mesh, v3f vec);
 */
 void setMeshColor(scene::IMesh *mesh, const video::SColor &color);
 
+/*
+       Shade mesh faces according to their normals
+*/
+
+void shadeMeshFaces(scene::IMesh *mesh);
+
 /*
        Set the color of all vertices in the mesh.
        For each vertex, determine the largest absolute entry in
@@ -75,6 +70,13 @@ void setMeshColorByNormalXYZ(scene::IMesh *mesh,
 */
 void rotateMeshBy6dFacedir(scene::IMesh *mesh, int facedir);
 
+/*
+       Rotate the mesh around the axis and given angle in degrees.
+*/
+void rotateMeshXYby (scene::IMesh *mesh, f64 degrees);
+void rotateMeshXZby (scene::IMesh *mesh, f64 degrees);
+void rotateMeshYZby (scene::IMesh *mesh, f64 degrees); 
 /*
        Clone the mesh.
 */
@@ -90,4 +92,11 @@ scene::IMesh* convertNodeboxNodeToMesh(ContentFeatures *f);
 */
 void recalculateBoundingBox(scene::IMesh *src_mesh);
 
+/*
+       Vertex cache optimization according to the Forsyth paper:
+       http://home.comcast.net/~tom_forsyth/papers/fast_vert_cache_opt.html
+       Ported from irrlicht 1.8
+*/
+scene::IMesh* createForsythOptimizedMesh(const scene::IMesh *mesh);
+
 #endif