aboutsummaryrefslogtreecommitdiff
path: root/src/unittest/test_nodedef.cpp
blob: 85093f52f48033ff8103bacd2620f927bc28a09e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

#include "test.h"

#include <sstream>

#include "gamedef.h"
#include "nodedef.h"
#include "network/networkprotocol.h"

class TestNodeDef : public TestBase {
public:
	TestNodeDef() { TestManager::registerTestModule(this); }
	const char *getName() { return "TestNodeDef"; }

	void runTests(IGameDef *gamedef);

	void testContentFeaturesSerialization();
};

static TestNodeDef g_test_instance;

void TestNodeDef::runTests(IGameDef *gamedef)
{
	TEST(testContentFeaturesSerialization);
}

////////////////////////////////////////////////////////////////////////////////

void TestNodeDef::testContentFeaturesSerialization()
{
	ContentFeatures f;

	f.name = "default:stone";
	for (int i = 0; i < 6; i++)
		f.tiledef[i].name = "default_stone.png";
	f.is_ground_content = true;

	std::ostringstream os(std::ios::binary);
	f.serialize(os, LATEST_PROTOCOL_VERSION);
	//verbosestream<<"Test ContentFeatures size: "<<os.str().size()<<std::endl;

	std::istringstream is(os.str(), std::ios::binary);
	ContentFeatures f2;
	f2.deSerialize(is);

	UASSERT(f.walkable == f2.walkable);
	UASSERT(f.node_box.type == f2.node_box.type);
}
l com"> * Overwrites the color of a mesh buffer. * The color is darkened based on the normal vector of the vertices. */ void colorizeMeshBuffer(scene::IMeshBuffer *buf, const video::SColor *buffercolor); /* Set the color of all vertices in the mesh. For each vertex, determine the largest absolute entry in the normal vector, and choose one of colorX, colorY or colorZ accordingly. */ void setMeshColorByNormalXYZ(scene::IMesh *mesh, const video::SColor &colorX, const video::SColor &colorY, const video::SColor &colorZ); void setMeshColorByNormal(scene::IMesh *mesh, const v3f &normal, const video::SColor &color); /* Rotate the mesh by 6d facedir value. Method only for meshnodes, not suitable for entities. */ 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 buffer. * The returned pointer should be dropped. */ scene::IMeshBuffer* cloneMeshBuffer(scene::IMeshBuffer *mesh_buffer); /* Clone the mesh. */ scene::SMesh* cloneMesh(scene::IMesh *src_mesh); /* Convert nodeboxes to mesh. Each tile goes into a different buffer. boxes - set of nodeboxes to be converted into cuboids uv_coords[24] - table of texture uv coords for each cuboid face expand - factor by which cuboids will be resized */ scene::IMesh* convertNodeboxesToMesh(const std::vector<aabb3f> &boxes, const f32 *uv_coords = NULL, float expand = 0); /* Update bounding box for a mesh. */ 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