mirror of https://github.com/AxioDL/metaforce.git
Fix crash
This commit is contained in:
parent
5fd78e4c75
commit
8b12a48302
|
@ -168,7 +168,8 @@ public:
|
||||||
const CMaterialList& matList, const zeus::CVector3f& dir, float mag,
|
const CMaterialList& matList, const zeus::CVector3f& dir, float mag,
|
||||||
CCollisionInfo& infoOut, double& dOut);
|
CCollisionInfo& infoOut, double& dOut);
|
||||||
static void ResetInternalCounters();
|
static void ResetInternalCounters();
|
||||||
static std::array<u16, 0x4000> GetTriangleList() { return g_DupTriangleList; }
|
static std::array<u16, 0x4000>& GetTriangleList() { return g_DupTriangleList; }
|
||||||
|
static u16 GetPrimitiveCheckCount() { return g_DupPrimitiveCheckCount; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class CAreaCollisionCache {
|
class CAreaCollisionCache {
|
||||||
|
|
|
@ -242,11 +242,11 @@ void CIceImpact::GenerateParticlesAgainstWorld(CStateManager& mgr,
|
||||||
for (auto const& node : leaf_cache) {
|
for (auto const& node : leaf_cache) {
|
||||||
CAreaOctTree::TriListReference arr = node.GetTriangleArray();
|
CAreaOctTree::TriListReference arr = node.GetTriangleArray();
|
||||||
bool subdivide_result = false;
|
bool subdivide_result = false;
|
||||||
for (int i = 0; i < static_cast<u32>(arr.GetAt(0)) && !subdivide_result; i++) {
|
for (int i = 0; i < arr.GetSize() && !subdivide_result; i++) {
|
||||||
u16 v1 = arr.GetAt(i + 1) << 1;
|
u16 v1 = arr.GetAt(i);
|
||||||
if (triangle_list[v1] != 0x6438) {
|
if (triangle_list[v1] != CMetroidAreaCollider::GetPrimitiveCheckCount()) {
|
||||||
triangle_list[v1] = 0x6438;
|
triangle_list[v1] = CMetroidAreaCollider::GetPrimitiveCheckCount();
|
||||||
CCollisionSurface surface = node.GetOwner().GetMasterListTriangle(arr.GetAt(i + 1));
|
CCollisionSurface surface = node.GetOwner().GetMasterListTriangle(arr.GetAt(i));
|
||||||
if (filter.Passes(CMaterialList(surface.GetSurfaceFlags()))) {
|
if (filter.Passes(CMaterialList(surface.GetSurfaceFlags()))) {
|
||||||
subdivide_result =
|
subdivide_result =
|
||||||
SubdivideAndGenerateParticles(mgr, surface.GetVert(0), surface.GetVert(1), surface.GetVert(1), a, b);
|
SubdivideAndGenerateParticles(mgr, surface.GetVert(0), surface.GetVert(1), surface.GetVert(1), a, b);
|
||||||
|
|
Loading…
Reference in New Issue