V-Gears 0
Free Final Fantasy VII engine.
WorldmapFileSerializer.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 The V-Gears Team
3 *
4 * This file is part of V-Gears
5 *
6 * V-Gears is free software: you can redistribute it and/or modify it under
7 * terms of the GNU General Public License as published by the Free Software
8 * Foundation, version 3.0 (GPLv3) of the License.
9 *
10 * V-Gears is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#pragma once
17
18#include "common/TypeDefine.h"
20
21namespace VGears {
22
23 class WorldmapFile;
24
29
30 public:
31
43 };
44
49
54
59 };
60
64 struct Vertex{
65
70
75
80
85 };
86
90 struct Normal{
95
100
105
110 };
111
116
121
126
131
140
149
154
159
164
169
174
179
186
193 };
194
201
207 GRASS = 0,
208
215
222
229
236
242 RIVER = 5,
243
249 WATER = 6,
250
256 SWAMP = 7,
257
264
271
277 SNOW = 10,
278
285
291 CLIFF = 12,
292
299
306
313
320
326 BEACH = 17,
327
334
341 CANYON = 19,
342
350
357
364
371
378
385 JUNGLE = 25,
386
394 SEA = 26,
395
402
410
418
425
431 UNUSED_3 = 31
432 };
433
438
442 virtual ~WorldmapFileSerializer();
443
450 void ImportWorldmapFile(Ogre::DataStreamPtr& stream, WorldmapFile& dest);
451
455 struct BlockPart{
456
461
465 std::vector<BlockTriangle> triangles;
466
470 std::vector<Vertex> vertices;
471
475 std::vector<Normal> normals;
476 };
477
481 struct Block{
482
486 std::vector<BlockPart> meshes;
487 };
488
492 std::vector<Block> blocks;
493 };
494
495}
Handles file serialization.
Definition: VGearsSerializer.h:30
Handles map file serialization.
Definition: WorldmapFileSerializer.h:28
void ImportWorldmapFile(Ogre::DataStreamPtr &stream, WorldmapFile &dest)
Imports and parses a map file.
Definition: WorldmapFileSerializer.cpp:31
std::vector< Block > blocks
The list of file blocks.
Definition: WorldmapFileSerializer.h:492
TriangleWalkMapTypes
Type of walkmesh triangle.
Definition: WorldmapFileSerializer.h:200
@ WASTELAND
Wasteland.
Definition: WorldmapFileSerializer.h:270
@ WATER
Shallow water.
Definition: WorldmapFileSerializer.h:249
@ SUBMARINE_PEN
Submarine pens.
Definition: WorldmapFileSerializer.h:333
@ GOLD_SAUCER_DESERT_BORDER
Borders of the Gold Saucer desert.
Definition: WorldmapFileSerializer.h:409
@ UNUSED_3
Unused.
Definition: WorldmapFileSerializer.h:431
@ RIVER_CROSSING
River crossing.
Definition: WorldmapFileSerializer.h:235
@ MOUNTAIN
Mountain.
Definition: WorldmapFileSerializer.h:221
@ NORTHERND_CAVE
The northernd cave.
Definition: WorldmapFileSerializer.h:401
@ CLIFF
Cliff.
Definition: WorldmapFileSerializer.h:291
@ UNUSED_2
Unused.
Definition: WorldmapFileSerializer.h:370
@ UNUSED_1
Unused.
Definition: WorldmapFileSerializer.h:312
@ DESERT
Desert.
Definition: WorldmapFileSerializer.h:263
@ CANYON
Cosmo Canyon area.
Definition: WorldmapFileSerializer.h:341
@ BACK_ENTRANCE
Entrances.
Definition: WorldmapFileSerializer.h:424
@ WATERFALL
Waterfall.
Definition: WorldmapFileSerializer.h:363
@ GRASS
Grass.
Definition: WorldmapFileSerializer.h:207
@ SEA_DEEP_WATER
Deep water.
Definition: WorldmapFileSerializer.h:228
@ MOUNTAIN_PASS
Mountain pass.
Definition: WorldmapFileSerializer.h:349
@ SWAMP
Swamp.
Definition: WorldmapFileSerializer.h:256
@ BRIDGE_HEAD
Bridge heads.
Definition: WorldmapFileSerializer.h:417
@ SEA
Deep sea.
Definition: WorldmapFileSerializer.h:394
@ COREL_BRIDGE
Corel bridge.
Definition: WorldmapFileSerializer.h:298
@ SNOW
Snow.
Definition: WorldmapFileSerializer.h:277
@ RIVERSIDE
Riverside.
Definition: WorldmapFileSerializer.h:284
@ GOLD_SAUCER_DESERT
Gold Saucer desert.
Definition: WorldmapFileSerializer.h:377
@ UNKNOWN_1
Unknown.
Definition: WorldmapFileSerializer.h:356
@ JUNGLE
Jungle.
Definition: WorldmapFileSerializer.h:385
@ FOREST
Forest.
Definition: WorldmapFileSerializer.h:214
@ BEACH
Beach.
Definition: WorldmapFileSerializer.h:326
@ HILL_SIDE
Hill side.
Definition: WorldmapFileSerializer.h:319
@ RIVER
River.
Definition: WorldmapFileSerializer.h:242
@ WUTAI_BRIDGE
Bridges in Wutai.
Definition: WorldmapFileSerializer.h:305
virtual ~WorldmapFileSerializer()
Destructor.
Definition: WorldmapFileSerializer.cpp:29
WorldmapFileSerializer()
Constructor.
Definition: WorldmapFileSerializer.cpp:27
Handles a world map file.
Definition: WorldmapFile.h:25
Definition: FF7NameLookup.h:24
Ogre::uint16 uint16
Definition: TypeDefine.h:32
Ogre::int16 sint16
Definition: TypeDefine.h:35
Ogre::uint32 uint32
Definition: TypeDefine.h:33
Ogre::uint8 uint8
Definition: TypeDefine.h:31
Block header of map files.
Definition: WorldmapFileSerializer.h:35
uint32 compressed_data_offsets[16]
Offset in this block of the compressed data.
Definition: WorldmapFileSerializer.h:42
Block header of a mesh section in map files.
Definition: WorldmapFileSerializer.h:48
uint16 vertex_count
Number of vertices and normals.
Definition: WorldmapFileSerializer.h:58
uint16 triengle_count
Number of BlockTriangle's in the mesh.
Definition: WorldmapFileSerializer.h:53
Part of a file block.
Definition: WorldmapFileSerializer.h:455
std::vector< Normal > normals
List of normals in the block part.
Definition: WorldmapFileSerializer.h:475
std::vector< BlockTriangle > triangles
List of triangles in the block part.
Definition: WorldmapFileSerializer.h:465
std::vector< Vertex > vertices
List of vertices in the block part.
Definition: WorldmapFileSerializer.h:470
BlockMeshHeader header
Block part header.
Definition: WorldmapFileSerializer.h:460
A triangle block in a map file.
Definition: WorldmapFileSerializer.h:115
uint8 vertex_2_u
Third side vector U component.
Definition: WorldmapFileSerializer.h:173
uint8 walkability_info_
Triangle walkability.
Definition: WorldmapFileSerializer.h:139
uint8 unknown
Unknown data.
Definition: WorldmapFileSerializer.h:148
uint8 vertex_1_v
Second side vector V component.
Definition: WorldmapFileSerializer.h:168
uint8 vertex_1_index
Index of the second vertex of the triangle.
Definition: WorldmapFileSerializer.h:125
uint8 vertex_0_index
Index of the first vertex of the triangle.
Definition: WorldmapFileSerializer.h:120
uint8 vertex_0_v
First side vector V component.
Definition: WorldmapFileSerializer.h:158
uint8 vertex_2_v
Third side vector V component.
Definition: WorldmapFileSerializer.h:178
uint8 vertex_0_u
First side vector U component.
Definition: WorldmapFileSerializer.h:153
uint16 TextureInfo
Triangle texture info.
Definition: WorldmapFileSerializer.h:185
uint8 vertex_2_index
Index of the third vertex of the triangle.
Definition: WorldmapFileSerializer.h:130
uint8 vertex_1_u
Second side vector U component.
Definition: WorldmapFileSerializer.h:163
uint16 Location
Triangle location.
Definition: WorldmapFileSerializer.h:192
A file block.
Definition: WorldmapFileSerializer.h:481
std::vector< BlockPart > meshes
List of meshes in the block.
Definition: WorldmapFileSerializer.h:486
A normal.
Definition: WorldmapFileSerializer.h:90
uint16 unused
Fill space to fit the structure in 32 bit.
Definition: WorldmapFileSerializer.h:109
sint16 z
Z coordinate.
Definition: WorldmapFileSerializer.h:104
sint16 y
Y coordinate.
Definition: WorldmapFileSerializer.h:99
sint16 x
X coordinate.
Definition: WorldmapFileSerializer.h:94
A vertex.
Definition: WorldmapFileSerializer.h:64
sint16 y
Y coordinate.
Definition: WorldmapFileSerializer.h:74
uint16 unused
Fill space to fit the structure in 32 bit.
Definition: WorldmapFileSerializer.h:84
sint16 z
Z coordinate.
Definition: WorldmapFileSerializer.h:79
sint16 x
X coordinate.
Definition: WorldmapFileSerializer.h:69