/
MapMerging.cpp
71 lines (51 loc) · 2.37 KB
/
MapMerging.cpp
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
67
68
69
70
71
#include "RadiantTest.h"
#include "icommandsystem.h"
#include "itransformable.h"
#include "ibrush.h"
#include "icomparablenode.h"
#include "algorithm/Scene.h"
#include "registry/registry.h"
namespace test
{
using MapMergeTest = RadiantTest;
TEST_F(MapMergeTest, BrushFingerprint)
{
GlobalCommandSystem().executeCommand("OpenMap", cmd::Argument("maps/fingerprinting.mapx"));
auto originalMaterial = "textures/numbers/1";
auto brush = std::dynamic_pointer_cast<IBrushNode>(algorithm::findFirstBrushWithMaterial(
GlobalMapModule().findOrInsertWorldspawn(), originalMaterial));
auto comparable = std::dynamic_pointer_cast<scene::IComparableNode>(brush);
EXPECT_TRUE(comparable) << "BrushNode is not implementing IComparableNode";
auto originalFingerprint = comparable->getFingerprint();
EXPECT_NE(originalFingerprint, 0); // shouldn't be empty
// Calling it twice shouldn't change the value
EXPECT_EQ(comparable->getFingerprint(), originalFingerprint);
// Change the material of this brush, the fingerprint should change now
brush->getIBrush().setShader("textures/somethingelse");
EXPECT_NE(comparable->getFingerprint(), originalFingerprint);
// Change it back
brush->getIBrush().setShader(originalMaterial);
EXPECT_EQ(comparable->getFingerprint(), originalFingerprint);
// Change the contents flags, fingerprint should change
brush->getIBrush().setDetailFlag(IBrush::Detail);
EXPECT_NE(comparable->getFingerprint(), originalFingerprint);
// Change it back
brush->getIBrush().setDetailFlag(IBrush::Structural);
EXPECT_EQ(comparable->getFingerprint(), originalFingerprint);
// Get the first face and tinker with it
auto& face = brush->getIBrush().getFace(0);
auto lastFingerprint = comparable->getFingerprint();
// Changing the texture should modify the fingerprint
face.flipTexture(0);
EXPECT_NE(comparable->getFingerprint(), lastFingerprint);
lastFingerprint = comparable->getFingerprint();
// Disable texture lock
registry::setValue(RKEY_ENABLE_TEXTURE_LOCK, false);
// Changing the planes
auto transformable = std::dynamic_pointer_cast<ITransformable>(brush);
transformable->setTranslation(Vector3(10,0,0));
transformable->freezeTransform();
EXPECT_NE(comparable->getFingerprint(), lastFingerprint);
lastFingerprint = comparable->getFingerprint();
}
}