1
0
Fork 0

Added prefab hitboxes.

The nether forts should quite limit their bridge-to-floor overlaps. Cannot eliminate, but at least severely diminish.
This commit is contained in:
madmaxoft 2014-04-21 10:31:07 +02:00
parent 7c6ef26be9
commit e3ec857264
3 changed files with 138 additions and 11 deletions

View File

@ -23,6 +23,10 @@ static const cPrefab::sDef g_TestPrefabDef =
// Size:
7, 6, 7, // SizeX = 7, SizeY = 6, SizeZ = 7
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
6, 5, 6, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* 0 */
"a:112: 0\n" /* netherbrick */
@ -115,7 +119,10 @@ static cPrefab g_TestPrefab(g_TestPrefabDef);
cPrefab::cPrefab(const cPrefab::sDef & a_Def) :
m_Size(a_Def.m_SizeX, a_Def.m_SizeY, a_Def.m_SizeZ),
m_HitBox(0, 0, 0, a_Def.m_SizeX - 1, a_Def.m_SizeY - 1, a_Def.m_SizeZ - 1),
m_HitBox(
a_Def.m_HitboxMinX, a_Def.m_HitboxMinY, a_Def.m_HitboxMinZ,
a_Def.m_HitboxMaxX, a_Def.m_HitboxMaxY, a_Def.m_HitboxMaxZ
),
m_AllowedRotations(a_Def.m_AllowedRotations),
m_MergeStrategy(a_Def.m_MergeStrategy),
m_ShouldExtendFloor(a_Def.m_ShouldExtendFloor),

View File

@ -38,6 +38,10 @@ public:
int m_SizeY;
int m_SizeZ;
/** The hitbox used for collision-checking between prefabs. Relative to the bounds. */
int m_HitboxMinX, m_HitboxMinY, m_HitboxMinZ;
int m_HitboxMaxX, m_HitboxMaxY, m_HitboxMaxZ;
/** The mapping between characters in m_Image and the blocktype / blockmeta.
Format: "Char: BlockType: BlockMeta \n Char: BlockType : BlockMeta \n ..." */
const char * m_CharMap;
@ -114,7 +118,7 @@ protected:
/** The size of the prefab */
Vector3i m_Size;
/** The hitbox of the prefab. In first version is the same as the m_BlockArea dimensions */
/** The hitbox used for collision-checking between prefabs. */
cCuboid m_HitBox;
/** The connectors through which the piece connects to other pieces */

View File

@ -22,6 +22,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
13, 7, 9, // SizeX = 13, SizeY = 7, SizeZ = 9
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
12, 6, 8, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -160,6 +164,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
13, 7, 11, // SizeX = 13, SizeY = 7, SizeZ = 11
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
12, 6, 10, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -313,6 +321,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
10, 7, 7, // SizeX = 10, SizeY = 7, SizeZ = 7
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
9, 6, 6, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -414,7 +426,7 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
100,
// DepthWeight:
"",
"1:0|2:0|3:0|4:0|5:0",
// AddWeightIfSame:
0,
@ -429,6 +441,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
14, 9, 7, // SizeX = 14, SizeY = 9, SizeZ = 7
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
13, 18, 6, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -558,7 +574,7 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
100,
// DepthWeight:
"",
"1:0|2:0|3:0|4:0|5:0",
// AddWeightIfSame:
0,
@ -573,6 +589,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
15, 8, 15, // SizeX = 15, SizeY = 8, SizeZ = 15
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
14, 17, 14, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -769,6 +789,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
15, 8, 15, // SizeX = 15, SizeY = 8, SizeZ = 15
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
14, 17, 14, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -966,6 +990,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
9, 6, 5, // SizeX = 9, SizeY = 6, SizeZ = 5
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
8, 15, 4, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -1041,7 +1069,7 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
100,
// DepthWeight:
"1:0",
"1:0|2:0|3:0|4:0|5:0",
// AddWeightIfSame:
0,
@ -1056,6 +1084,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
13, 6, 5, // SizeX = 13, SizeY = 6, SizeZ = 5
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
12, 15, 4, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -1137,7 +1169,7 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
100,
// DepthWeight:
"1:0",
"1:0|2:0|3:0|4:0|5:0",
// AddWeightIfSame:
0,
@ -1152,6 +1184,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
5, 7, 16, // SizeX = 5, SizeY = 7, SizeZ = 16
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
4, 6, 15, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -1327,6 +1363,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
15, 12, 12, // SizeX = 15, SizeY = 12, SizeZ = 12
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
14, 11, 11, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -1563,6 +1603,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
15, 14, 16, // SizeX = 15, SizeY = 14, SizeZ = 16
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
14, 13, 15, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -1885,6 +1929,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
15, 8, 5, // SizeX = 15, SizeY = 8, SizeZ = 5
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
14, 17, 4, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -2000,6 +2048,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
15, 8, 10, // SizeX = 15, SizeY = 8, SizeZ = 10
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
14, 17, 9, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -2156,6 +2208,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
11, 6, 5, // SizeX = 11, SizeY = 6, SizeZ = 5
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
10, 5, 4, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -2251,6 +2307,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
13, 6, 5, // SizeX = 13, SizeY = 6, SizeZ = 5
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
12, 5, 4, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -2346,6 +2406,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
11, 6, 11, // SizeX = 11, SizeY = 6, SizeZ = 11
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
10, 5, 10, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -2479,6 +2543,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
11, 6, 11, // SizeX = 11, SizeY = 6, SizeZ = 11
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
10, 5, 10, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -2613,6 +2681,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
9, 13, 5, // SizeX = 9, SizeY = 13, SizeZ = 5
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
8, 12, 4, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -2759,6 +2831,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
14, 6, 5, // SizeX = 14, SizeY = 6, SizeZ = 5
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
13, 5, 4, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -2854,6 +2930,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
15, 11, 15, // SizeX = 15, SizeY = 11, SizeZ = 15
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
14, 10, 14, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -3086,7 +3166,7 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
false,
// DefaultWeight:
100,
10,
// DepthWeight:
"",
@ -3104,6 +3184,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
12, 15, 15, // SizeX = 12, SizeY = 15, SizeZ = 15
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
11, 14, 14, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -3411,7 +3495,7 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
false,
// DefaultWeight:
100,
10,
// DepthWeight:
"",
@ -3429,6 +3513,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
16, 12, 15, // SizeX = 16, SizeY = 12, SizeZ = 15
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
15, 11, 14, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -3685,7 +3773,7 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
false,
// DefaultWeight:
100,
10,
// DepthWeight:
"",
@ -3703,6 +3791,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
13, 8, 13, // SizeX = 13, SizeY = 8, SizeZ = 13
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
12, 7, 12, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -3885,6 +3977,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
7, 10, 7, // SizeX = 7, SizeY = 10, SizeZ = 7
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
6, 9, 6, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -4009,7 +4105,7 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
100,
// DepthWeight:
"",
"1:0|3:0|5:0|7:0|9:0|11:0|13:0|15:0",
// AddWeightIfSame:
0,
@ -4024,6 +4120,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
7, 10, 7, // SizeX = 7, SizeY = 10, SizeZ = 7
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
6, 9, 6, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -4148,7 +4248,7 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
100,
// DepthWeight:
"",
"1:0|3:0|5:0|7:0|9:0|11:0|13:0|15:0",
// AddWeightIfSame:
0,
@ -4163,6 +4263,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
13, 6, 7, // SizeX = 13, SizeY = 6, SizeZ = 7
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
12, 5, 6, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -4273,6 +4377,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
13, 6, 9, // SizeX = 13, SizeY = 6, SizeZ = 9
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
12, 5, 8, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -4395,6 +4503,10 @@ const cPrefab::sDef g_NetherFortPrefabs[] =
// Size:
7, 6, 7, // SizeX = 7, SizeY = 6, SizeZ = 7
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
6, 5, 6, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */
@ -4502,6 +4614,10 @@ const cPrefab::sDef g_NetherFortStartingPrefabs[] =
// Size:
13, 9, 13, // SizeX = 13, SizeY = 9, SizeZ = 13
// Hitbox (relative to bounding box):
0, 0, 0, // MinX, MinY, MinZ
12, 8, 12, // MaxX, MaxY, MaxZ
// Block definitions:
".: 0: 0\n" /* air */
"a:112: 0\n" /* netherbrick */