mirror of https://github.com/AxioDL/metaforce.git
COBBTree: Eliminate sign conversion warnings
Multiplying a u16 results in an int.
This commit is contained in:
parent
19cfb92d5d
commit
e34db8c0e6
|
@ -84,17 +84,18 @@ std::unique_ptr<COBBTree> COBBTree::BuildOrientedBoundingBoxTree(const zeus::CVe
|
||||||
}
|
}
|
||||||
|
|
||||||
CCollisionSurface COBBTree::GetSurface(u16 idx) const {
|
CCollisionSurface COBBTree::GetSurface(u16 idx) const {
|
||||||
int surfIdx = idx * 3;
|
const auto surfIdx = size_t{idx} * 3;
|
||||||
CCollisionEdge e0 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx]];
|
const CCollisionEdge e0 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx]];
|
||||||
CCollisionEdge e1 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx + 1]];
|
const CCollisionEdge e1 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx + 1]];
|
||||||
u16 vert1 = e0.GetVertIndex1();
|
const u16 vert1 = e0.GetVertIndex1();
|
||||||
u16 vert2 = e0.GetVertIndex2();
|
const u16 vert2 = e0.GetVertIndex2();
|
||||||
u16 vert3 = e1.GetVertIndex1();
|
u16 vert3 = e1.GetVertIndex1();
|
||||||
|
|
||||||
if (vert3 == vert1 || vert3 == vert2)
|
if (vert3 == vert1 || vert3 == vert2) {
|
||||||
vert3 = e1.GetVertIndex2();
|
vert3 = e1.GetVertIndex2();
|
||||||
|
}
|
||||||
|
|
||||||
u32 mat = x18_indexData.x0_materials[x18_indexData.x30_surfaceMaterials[idx]];
|
const u32 mat = x18_indexData.x0_materials[x18_indexData.x30_surfaceMaterials[idx]];
|
||||||
|
|
||||||
if ((mat & 0x2000000) != 0) {
|
if ((mat & 0x2000000) != 0) {
|
||||||
return CCollisionSurface(x18_indexData.x60_vertices[vert2], x18_indexData.x60_vertices[vert1],
|
return CCollisionSurface(x18_indexData.x60_vertices[vert2], x18_indexData.x60_vertices[vert1],
|
||||||
|
@ -105,14 +106,15 @@ CCollisionSurface COBBTree::GetSurface(u16 idx) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void COBBTree::GetTriangleVertexIndices(u16 idx, u16 indicesOut[3]) const {
|
void COBBTree::GetTriangleVertexIndices(u16 idx, u16 indicesOut[3]) const {
|
||||||
const CCollisionEdge& e0 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[idx * 3]];
|
const auto surfIdx = size_t{idx} * 3;
|
||||||
const CCollisionEdge& e1 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[idx * 3 + 1]];
|
const CCollisionEdge& e0 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx]];
|
||||||
|
const CCollisionEdge& e1 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx + 1]];
|
||||||
indicesOut[2] = (e1.GetVertIndex1() != e0.GetVertIndex1() && e1.GetVertIndex1() != e0.GetVertIndex2())
|
indicesOut[2] = (e1.GetVertIndex1() != e0.GetVertIndex1() && e1.GetVertIndex1() != e0.GetVertIndex2())
|
||||||
? e1.GetVertIndex1()
|
? e1.GetVertIndex1()
|
||||||
: e1.GetVertIndex2();
|
: e1.GetVertIndex2();
|
||||||
|
|
||||||
u32 material = x18_indexData.x0_materials[x18_indexData.x30_surfaceMaterials[idx]];
|
const u32 material = x18_indexData.x0_materials[x18_indexData.x30_surfaceMaterials[idx]];
|
||||||
if (material & 0x2000000) {
|
if ((material & 0x2000000) != 0) {
|
||||||
indicesOut[0] = e0.GetVertIndex2();
|
indicesOut[0] = e0.GetVertIndex2();
|
||||||
indicesOut[1] = e0.GetVertIndex1();
|
indicesOut[1] = e0.GetVertIndex1();
|
||||||
} else {
|
} else {
|
||||||
|
@ -122,17 +124,18 @@ void COBBTree::GetTriangleVertexIndices(u16 idx, u16 indicesOut[3]) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
CCollisionSurface COBBTree::GetTransformedSurface(u16 idx, const zeus::CTransform& xf) const {
|
CCollisionSurface COBBTree::GetTransformedSurface(u16 idx, const zeus::CTransform& xf) const {
|
||||||
int surfIdx = idx * 3;
|
const auto surfIdx = size_t{idx} * 3;
|
||||||
CCollisionEdge e0 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx]];
|
const CCollisionEdge e0 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx]];
|
||||||
CCollisionEdge e1 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx + 1]];
|
const CCollisionEdge e1 = x18_indexData.x40_edges[x18_indexData.x50_surfaceIndices[surfIdx + 1]];
|
||||||
u16 vert1 = e0.GetVertIndex1();
|
const u16 vert1 = e0.GetVertIndex1();
|
||||||
u16 vert2 = e0.GetVertIndex2();
|
const u16 vert2 = e0.GetVertIndex2();
|
||||||
u16 vert3 = e1.GetVertIndex1();
|
u16 vert3 = e1.GetVertIndex1();
|
||||||
|
|
||||||
if (vert3 == vert1 || vert3 == vert2)
|
if (vert3 == vert1 || vert3 == vert2) {
|
||||||
vert3 = e1.GetVertIndex2();
|
vert3 = e1.GetVertIndex2();
|
||||||
|
}
|
||||||
|
|
||||||
u32 mat = x18_indexData.x0_materials[x18_indexData.x30_surfaceMaterials[idx]];
|
const u32 mat = x18_indexData.x0_materials[x18_indexData.x30_surfaceMaterials[idx]];
|
||||||
|
|
||||||
if ((mat & 0x2000000) != 0) {
|
if ((mat & 0x2000000) != 0) {
|
||||||
return CCollisionSurface(xf * x18_indexData.x60_vertices[vert2], xf * x18_indexData.x60_vertices[vert1],
|
return CCollisionSurface(xf * x18_indexData.x60_vertices[vert2], xf * x18_indexData.x60_vertices[vert1],
|
||||||
|
@ -145,8 +148,9 @@ CCollisionSurface COBBTree::GetTransformedSurface(u16 idx, const zeus::CTransfor
|
||||||
zeus::CAABox COBBTree::CalculateLocalAABox() const { return CalculateAABox(zeus::CTransform()); }
|
zeus::CAABox COBBTree::CalculateLocalAABox() const { return CalculateAABox(zeus::CTransform()); }
|
||||||
|
|
||||||
zeus::CAABox COBBTree::CalculateAABox(const zeus::CTransform& xf) const {
|
zeus::CAABox COBBTree::CalculateAABox(const zeus::CTransform& xf) const {
|
||||||
if (x88_root)
|
if (x88_root) {
|
||||||
return x88_root->GetOBB().calculateAABox(xf);
|
return x88_root->GetOBB().calculateAABox(xf);
|
||||||
|
}
|
||||||
return zeus::CAABox();
|
return zeus::CAABox();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue