summaryrefslogtreecommitdiff
path: root/ZAPD/ZCollision.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-03-20 10:17:39 +0100
committerGitHub <noreply@github.com>2021-03-20 05:17:39 -0400
commit4751db5c9ee0a25a26379ca5b44efad72215d256 (patch)
treece49e6e23e352c93424343f75b2e10601457a9c3 /ZAPD/ZCollision.cpp
parent963a282dc10036f367a2cb09bb5651aefc73d2a4 (diff)
Add a clang-format config and reformat all source files (#63)
* build: Add genbuildinfo as a dependency for ZAPD object files * Add a clang-format config and reformat all source files The existing code style is mostly preserved; this just makes formatting more consistent and prevents lines from getting too long. * Fix missing includes
Diffstat (limited to 'ZAPD/ZCollision.cpp')
-rw-r--r--ZAPD/ZCollision.cpp138
1 files changed, 88 insertions, 50 deletions
diff --git a/ZAPD/ZCollision.cpp b/ZAPD/ZCollision.cpp
index 8d28fe8..bb3144a 100644
--- a/ZAPD/ZCollision.cpp
+++ b/ZAPD/ZCollision.cpp
@@ -1,18 +1,18 @@
#include "ZCollision.h"
-#include "BitConverter.h"
-#include "StringHelper.h"
-#include "Globals.h"
#include <stdint.h>
#include <string>
+#include "BitConverter.h"
+#include "Globals.h"
+#include "StringHelper.h"
using namespace std;
ZCollisionHeader::ZCollisionHeader()
{
-
}
-ZCollisionHeader::ZCollisionHeader(ZFile* parent, const std::string& prefix, const std::vector<uint8_t>& rawData, int rawDataIndex)
+ZCollisionHeader::ZCollisionHeader(ZFile* parent, const std::string& prefix,
+ const std::vector<uint8_t>& rawData, int rawDataIndex)
{
const uint8_t* data = rawData.data();
@@ -57,24 +57,28 @@ ZCollisionHeader::ZCollisionHeader(ZFile* parent, const std::string& prefix, con
highestPolyType = poly->type;
}
- //if (highestPolyType > 0)
+ // if (highestPolyType > 0)
{
for (uint16_t i = 0; i < highestPolyType + 1; i++)
- polygonTypes.push_back(BitConverter::ToUInt64BE(data, polyTypeDefSegmentOffset + (i * 8)));
+ polygonTypes.push_back(
+ BitConverter::ToUInt64BE(data, polyTypeDefSegmentOffset + (i * 8)));
}
- //else
+ // else
//{
- //int polyTypesSize = abs(polyTypeDefSegmentOffset - camDataSegmentOffset) / 8;
+ // int polyTypesSize = abs(polyTypeDefSegmentOffset - camDataSegmentOffset) / 8;
- //for (int i = 0; i < polyTypesSize; i++)
- //polygonTypes.push_back(BitConverter::ToUInt64BE(data, polyTypeDefSegmentOffset + (i * 8)));
+ // for (int i = 0; i < polyTypesSize; i++)
+ // polygonTypes.push_back(BitConverter::ToUInt64BE(data, polyTypeDefSegmentOffset + (i * 8)));
//}
if (camDataAddress != 0)
- camData = new CameraDataList(parent, prefix, rawData, camDataSegmentOffset, polyTypeDefSegmentOffset, polygonTypes.size());
+ camData = new CameraDataList(parent, prefix, rawData, camDataSegmentOffset,
+ polyTypeDefSegmentOffset, polygonTypes.size());
for (int i = 0; i < numWaterBoxes; i++)
- waterBoxes.push_back(new WaterBoxHeader(rawData, waterBoxSegmentOffset + (i * (Globals::Instance->game == ZGame::OOT_SW97 ? 12 : 16))));
+ waterBoxes.push_back(new WaterBoxHeader(
+ rawData,
+ waterBoxSegmentOffset + (i * (Globals::Instance->game == ZGame::OOT_SW97 ? 12 : 16))));
string declaration = "";
char line[2048];
@@ -83,14 +87,18 @@ ZCollisionHeader::ZCollisionHeader(ZFile* parent, const std::string& prefix, con
{
for (size_t i = 0; i < waterBoxes.size(); i++)
{
- sprintf(line, " { %i, %i, %i, %i, %i, 0x%08X },\n", waterBoxes[i]->xMin, waterBoxes[i]->ySurface, waterBoxes[i]->zMin, waterBoxes[i]->xLength, waterBoxes[i]->zLength, waterBoxes[i]->properties);
+ sprintf(line, " { %i, %i, %i, %i, %i, 0x%08X },\n", waterBoxes[i]->xMin,
+ waterBoxes[i]->ySurface, waterBoxes[i]->zMin, waterBoxes[i]->xLength,
+ waterBoxes[i]->zLength, waterBoxes[i]->properties);
declaration += line;
}
}
if (waterBoxAddress != 0)
- parent->AddDeclarationArray(waterBoxSegmentOffset, DeclarationAlignment::None, 16 * waterBoxes.size(), "WaterBox",
- StringHelper::Sprintf("%s_waterBoxes_%08X", prefix.c_str(), waterBoxSegmentOffset), 0, declaration);
+ parent->AddDeclarationArray(
+ waterBoxSegmentOffset, DeclarationAlignment::None, 16 * waterBoxes.size(), "WaterBox",
+ StringHelper::Sprintf("%s_waterBoxes_%08X", prefix.c_str(), waterBoxSegmentOffset), 0,
+ declaration);
if (polygons.size() > 0)
{
@@ -98,29 +106,40 @@ ZCollisionHeader::ZCollisionHeader(ZFile* parent, const std::string& prefix, con
for (size_t i = 0; i < polygons.size(); i++)
{
- sprintf(line, " { 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X },\n",
- (uint16_t)polygons[i]->type, (uint16_t)polygons[i]->vtxA, (uint16_t)polygons[i]->vtxB, (uint16_t)polygons[i]->vtxC,
- (uint16_t)polygons[i]->a, (uint16_t)polygons[i]->b, (uint16_t)polygons[i]->c, (uint16_t)polygons[i]->d);
+ sprintf(
+ line, " { 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X },\n",
+ (uint16_t)polygons[i]->type, (uint16_t)polygons[i]->vtxA,
+ (uint16_t)polygons[i]->vtxB, (uint16_t)polygons[i]->vtxC, (uint16_t)polygons[i]->a,
+ (uint16_t)polygons[i]->b, (uint16_t)polygons[i]->c, (uint16_t)polygons[i]->d);
declaration += line;
}
- if (polyAddress != 0) {
- parent->AddDeclarationArray(polySegmentOffset, DeclarationAlignment::None, polygons.size() * 16, "CollisionPoly", StringHelper::Sprintf("%s_polygons_%08X", prefix.c_str(), polySegmentOffset), 0, declaration);
+ if (polyAddress != 0)
+ {
+ parent->AddDeclarationArray(
+ polySegmentOffset, DeclarationAlignment::None, polygons.size() * 16,
+ "CollisionPoly",
+ StringHelper::Sprintf("%s_polygons_%08X", prefix.c_str(), polySegmentOffset), 0,
+ declaration);
}
}
declaration = "";
for (size_t i = 0; i < polygonTypes.size(); i++)
{
- declaration += StringHelper::Sprintf(" { 0x%08lX, 0x%08lX },", polygonTypes[i] >> 32, polygonTypes[i] & 0xFFFFFFFF);
+ declaration += StringHelper::Sprintf(" { 0x%08lX, 0x%08lX },", polygonTypes[i] >> 32,
+ polygonTypes[i] & 0xFFFFFFFF);
if (i < polygonTypes.size() - 1)
declaration += "\n";
}
if (polyTypeDefAddress != 0)
- parent->AddDeclarationArray(polyTypeDefSegmentOffset, DeclarationAlignment::None, polygonTypes.size() * 8,
- "SurfaceType", StringHelper::Sprintf("%s_surfaceType_%08X", prefix.c_str(), polyTypeDefSegmentOffset), 0, declaration);
+ parent->AddDeclarationArray(
+ polyTypeDefSegmentOffset, DeclarationAlignment::None, polygonTypes.size() * 8,
+ "SurfaceType",
+ StringHelper::Sprintf("%s_surfaceType_%08X", prefix.c_str(), polyTypeDefSegmentOffset),
+ 0, declaration);
declaration = "";
@@ -130,15 +149,18 @@ ZCollisionHeader::ZCollisionHeader(ZFile* parent, const std::string& prefix, con
for (size_t i = 0; i < vertices.size(); i++)
{
- declaration += StringHelper::Sprintf(" { %i, %i, %i },", vertices[i]->x, vertices[i]->y, vertices[i]->z);
+ declaration += StringHelper::Sprintf(" { %i, %i, %i },", vertices[i]->x,
+ vertices[i]->y, vertices[i]->z);
if (i < vertices.size() - 1)
declaration += "\n";
}
if (vtxAddress != 0)
- parent->AddDeclarationArray(vtxSegmentOffset, DeclarationAlignment::None, vertices.size() * 6,
- "Vec3s", StringHelper::Sprintf("%s_vtx_%08X", prefix.c_str(), vtxSegmentOffset), 0, declaration);
+ parent->AddDeclarationArray(
+ vtxSegmentOffset, DeclarationAlignment::None, vertices.size() * 6, "Vec3s",
+ StringHelper::Sprintf("%s_vtx_%08X", prefix.c_str(), vtxSegmentOffset), 0,
+ declaration);
declaration = "";
}
@@ -153,17 +175,19 @@ ZCollisionHeader::ZCollisionHeader(ZFile* parent, const std::string& prefix, con
declaration += "\n";
- declaration += StringHelper::Sprintf(" { %i, %i, %i },\n { %i, %i, %i },\n",
- absMinX, absMinY, absMinZ,
- absMaxX, absMaxY, absMaxZ);
+ declaration += StringHelper::Sprintf(" { %i, %i, %i },\n { %i, %i, %i },\n", absMinX,
+ absMinY, absMinZ, absMaxX, absMaxY, absMaxZ);
- declaration += StringHelper::Sprintf(" %i,\n %s_vtx_%08X,\n %i,\n %s_polygons_%08X,\n %s_surfaceType_%08X,\n %s_camDataList_%08X,\n %i,\n %s\n",
- numVerts, prefix.c_str(), vtxSegmentOffset, numPolygons,
- prefix.c_str(), polySegmentOffset, prefix.c_str(), polyTypeDefSegmentOffset,
- prefix.c_str(), camDataSegmentOffset, numWaterBoxes, waterBoxStr);
+ declaration += StringHelper::Sprintf(
+ " %i,\n %s_vtx_%08X,\n %i,\n %s_polygons_%08X,\n %s_surfaceType_%08X,\n "
+ "%s_camDataList_%08X,\n %i,\n %s\n",
+ numVerts, prefix.c_str(), vtxSegmentOffset, numPolygons, prefix.c_str(), polySegmentOffset,
+ prefix.c_str(), polyTypeDefSegmentOffset, prefix.c_str(), camDataSegmentOffset,
+ numWaterBoxes, waterBoxStr);
- parent->AddDeclaration(rawDataIndex, DeclarationAlignment::None, DeclarationPadding::Pad16, 44, "CollisionHeader",
- StringHelper::Sprintf("%s", prefix.c_str(), rawDataIndex), declaration);
+ parent->AddDeclaration(rawDataIndex, DeclarationAlignment::None, DeclarationPadding::Pad16, 44,
+ "CollisionHeader",
+ StringHelper::Sprintf("%s", prefix.c_str(), rawDataIndex), declaration);
}
ZCollisionHeader::~ZCollisionHeader()
@@ -183,12 +207,11 @@ ZResourceType ZCollisionHeader::GetResourceType()
return ZResourceType::CollisionHeader;
}
-ZCollisionHeader* ZCollisionHeader::ExtractFromXML(tinyxml2::XMLElement* reader, vector<uint8_t> nRawData, int rawDataIndex)
+ZCollisionHeader* ZCollisionHeader::ExtractFromXML(tinyxml2::XMLElement* reader,
+ vector<uint8_t> nRawData, int rawDataIndex)
{
ZCollisionHeader* col = new ZCollisionHeader();
-
-
return col;
}
@@ -234,21 +257,25 @@ WaterBoxHeader::WaterBoxHeader(const std::vector<uint8_t>& rawData, int rawDataI
}
}
-CameraDataList::CameraDataList(ZFile* parent, const std::string& prefix, const std::vector<uint8_t>& rawData, int rawDataIndex, int polyTypeDefSegmentOffset, int polygonTypesCnt)
+CameraDataList::CameraDataList(ZFile* parent, const std::string& prefix,
+ const std::vector<uint8_t>& rawData, int rawDataIndex,
+ int polyTypeDefSegmentOffset, int polygonTypesCnt)
{
string declaration = "";
// Parse CameraDataEntries
int numElements = abs(polyTypeDefSegmentOffset - (rawDataIndex)) / 8;
- //int numElements = polygonTypesCnt;
+ // int numElements = polygonTypesCnt;
uint32_t cameraPosDataSeg = rawDataIndex;
for (int i = 0; i < numElements; i++)
{
CameraDataEntry* entry = new CameraDataEntry();
- entry->cameraSType = BitConverter::ToInt16BE(rawData, rawDataIndex + (entries.size() * 8) + 0);
+ entry->cameraSType =
+ BitConverter::ToInt16BE(rawData, rawDataIndex + (entries.size() * 8) + 0);
entry->numData = BitConverter::ToInt16BE(rawData, rawDataIndex + (entries.size() * 8) + 2);
- entry->cameraPosDataSeg = BitConverter::ToInt32BE(rawData, rawDataIndex + (entries.size() * 8) + 4);
+ entry->cameraPosDataSeg =
+ BitConverter::ToInt32BE(rawData, rawDataIndex + (entries.size() * 8) + 4);
if (entry->cameraPosDataSeg != 0 && GETSEGNUM(entry->cameraPosDataSeg) != 2)
{
@@ -262,7 +289,7 @@ CameraDataList::CameraDataList(ZFile* parent, const std::string& prefix, const s
entries.push_back(entry);
}
- //setting cameraPosDataAddr to rawDataIndex give a pos list length of 0
+ // setting cameraPosDataAddr to rawDataIndex give a pos list length of 0
uint32_t cameraPosDataOffset = cameraPosDataSeg & 0xFFFFFF;
for (size_t i = 0; i < entries.size(); i++)
{
@@ -271,18 +298,24 @@ CameraDataList::CameraDataList(ZFile* parent, const std::string& prefix, const s
if (entries[i]->cameraPosDataSeg != 0)
{
int index = ((entries[i]->cameraPosDataSeg & 0x00FFFFFF) - cameraPosDataOffset) / 0x6;
- sprintf(camSegLine, "&%s_camPosData_%08X[%i]", prefix.c_str(), cameraPosDataOffset, index);
+ sprintf(camSegLine, "&%s_camPosData_%08X[%i]", prefix.c_str(), cameraPosDataOffset,
+ index);
}
else
sprintf(camSegLine, "0x%08X", entries[i]->cameraPosDataSeg);
- declaration += StringHelper::Sprintf(" { 0x%04X, %i, %s },", entries[i]->cameraSType, entries[i]->numData, camSegLine, rawDataIndex + (i * 8));
+ declaration +=
+ StringHelper::Sprintf(" { 0x%04X, %i, %s },", entries[i]->cameraSType,
+ entries[i]->numData, camSegLine, rawDataIndex + (i * 8));
if (i < entries.size() - 1)
declaration += "\n";
}
- parent->AddDeclarationArray(rawDataIndex, DeclarationAlignment::None, entries.size() * 8, "CamData", StringHelper::Sprintf("%s_camDataList_%08X", prefix.c_str(), rawDataIndex), entries.size(), declaration);
+ parent->AddDeclarationArray(
+ rawDataIndex, DeclarationAlignment::None, entries.size() * 8, "CamData",
+ StringHelper::Sprintf("%s_camDataList_%08X", prefix.c_str(), rawDataIndex), entries.size(),
+ declaration);
int numDataTotal = abs(rawDataIndex - (int)cameraPosDataOffset) / 0x6;
@@ -291,15 +324,20 @@ CameraDataList::CameraDataList(ZFile* parent, const std::string& prefix, const s
declaration = "";
for (int i = 0; i < numDataTotal; i++)
{
- CameraPositionData* data = new CameraPositionData(rawData, cameraPosDataOffset + (i * 6));
+ CameraPositionData* data =
+ new CameraPositionData(rawData, cameraPosDataOffset + (i * 6));
cameraPositionData.push_back(data);
- declaration += StringHelper::Sprintf(" { %6i, %6i, %6i },\n", data->x, data->y, data->z);
+ declaration +=
+ StringHelper::Sprintf(" { %6i, %6i, %6i },\n", data->x, data->y, data->z);
}
int cameraPosDataIndex = cameraPosDataSeg & 0x00FFFFFF;
int entrySize = numDataTotal * 0x6;
- parent->AddDeclarationArray(cameraPosDataIndex, DeclarationAlignment::None, entrySize, "Vec3s", StringHelper::Sprintf("%s_camPosData_%08X", prefix.c_str(), cameraPosDataIndex), numDataTotal, declaration);
+ parent->AddDeclarationArray(
+ cameraPosDataIndex, DeclarationAlignment::None, entrySize, "Vec3s",
+ StringHelper::Sprintf("%s_camPosData_%08X", prefix.c_str(), cameraPosDataIndex),
+ numDataTotal, declaration);
}
}