From 543e22bc78b64405537ae545ecd382dcdf2c12b2 Mon Sep 17 00:00:00 2001 From: yaz0r <363511+yaz0r@users.noreply.github.com> Date: Fri, 1 Aug 2025 23:08:30 -0700 Subject: [PATCH] Display collision volumes for actors that don't have a body --- FitdLib/main.cpp | 26 ++++----- FitdLib/renderer.cpp | 126 +++++++++++++++++++++---------------------- 2 files changed, 77 insertions(+), 75 deletions(-) diff --git a/FitdLib/main.cpp b/FitdLib/main.cpp index 8ed2a2c..494bfb4 100644 --- a/FitdLib/main.cpp +++ b/FitdLib/main.cpp @@ -3071,18 +3071,6 @@ void AllRedraw(int flagFlip) getHotPoint(actorPtr->hotPointID, bodyPtr, &actorPtr->hotPoint); } } - - ///////////////////////////////////// DEBUG -#ifdef FITD_DEBUGGER - // if(debuggerVar_drawModelZv) - { - if (backgroundMode == backgroundModeEnum_3D) - { - drawZv(actorPtr); - } - } -#endif - ///////////////////////////////////// } } @@ -3128,6 +3116,20 @@ void AllRedraw(int flagFlip) #ifdef FITD_DEBUGGER { + if (backgroundMode == backgroundModeEnum_3D) + { + for (int i = 0; i < NUM_MAX_OBJECT; i++) + { + tObject* actorPtr = &ListObjets[i]; + + if (actorPtr->indexInWorld != -1) + { + drawZv(actorPtr); + } + } + } + + ///////////////////////////////////// for (int i = 0; i < getNumberOfRoom(); i++) { if (hardColDisplayMode != displayNone) { diff --git a/FitdLib/renderer.cpp b/FitdLib/renderer.cpp index be12642..d6632d6 100644 --- a/FitdLib/renderer.cpp +++ b/FitdLib/renderer.cpp @@ -95,9 +95,9 @@ int boneRotateZSin; char primBuffer[30000]; int renderVar3; - + #ifndef AITD_UE4 -void fillpoly(s16 * datas, int n, char c); +void fillpoly(s16 * datas, int n, char c); #endif /* @@ -246,7 +246,7 @@ void RotateList(point3dStruct* pointPtr, int numOfPoint) point.z = z; } } - + void RotateGroupeOptimise(sGroup* ptr) { if (ptr->m_numGroup) // if group number is 0 @@ -257,7 +257,7 @@ void RotateGroupeOptimise(sGroup* ptr) RotateList(pointBuffer.data() + baseBone, numPoints); } } - + void RotateGroupe(sGroup* ptr) { int baseBone = ptr->m_start; @@ -280,8 +280,8 @@ void RotateGroupe(sGroup* ptr) ptr++; } while (--temp2); -} - +} + void TranslateGroupe(int transX, int transY, int transZ, sGroup* ptr) { for (int i = 0; i < ptr->m_numVertices; i++) @@ -292,7 +292,7 @@ void TranslateGroupe(int transX, int transY, int transZ, sGroup* ptr) point.z += transZ; } } - + void ZoomGroupe(int zoomX, int zoomY, int zoomZ, sGroup* ptr) { for (int i = 0; i < ptr->m_numVertices; i++) @@ -305,24 +305,24 @@ void ZoomGroupe(int zoomX, int zoomY, int zoomZ, sGroup* ptr) } int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) -{ +{ renderX = x - translateX; renderY = y; renderZ = z - translateZ; ASSERT(pBody->m_vertices.size()m_vertices.size(); i++) - { - pointBuffer[i] = pBody->m_vertices[i]; - } - - numOfPoints = pBody->m_vertices.size(); + + for (int i = 0; i < pBody->m_vertices.size(); i++) + { + pointBuffer[i] = pBody->m_vertices[i]; + } + + numOfPoints = pBody->m_vertices.size(); numOfBones = pBody->m_groupOrder.size(); ASSERT(numOfBonesm_flags & INFO_OPTIMISE) - { + { for(int i=0;im_groupOrder.size();i++) { int boneDataOffset = pBody->m_groupOrder[i]; @@ -334,7 +334,7 @@ int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) if(pGroup->m_state.m_delta.x || pGroup->m_state.m_delta.y || pGroup->m_state.m_delta.z) { TranslateGroupe(pGroup->m_state.m_delta.x, pGroup->m_state.m_delta.y, pGroup->m_state.m_delta.z, pGroup); - } + } break; case 2: if (pGroup->m_state.m_delta.x || pGroup->m_state.m_delta.y || pGroup->m_state.m_delta.z) @@ -389,8 +389,8 @@ int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) } for(int i=0;im_groups.size();i++) - { - sGroup* pGroup = &pBody->m_groups[i]; + { + sGroup* pGroup = &pBody->m_groups[i]; for(int j=0;j< pGroup->m_numVertices;j++) { pointBuffer[pGroup->m_start + j].x += pointBuffer[pGroup->m_baseVertices].x; @@ -415,13 +415,13 @@ int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) X += renderX; - Y += renderY; + Y += renderY; Z += renderZ; - -#if defined(AITD_UE4) + +#if defined(AITD_UE4) *(outPtr++) = (s16)X; *(outPtr++) = (s16)Y; - *(outPtr++) = (s16)Z; + *(outPtr++) = (s16)Z; #else if(Y>10000) // height clamp { @@ -438,7 +438,7 @@ int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) *(outPtr++) = (s16)X; *(outPtr++) = (s16)Y; *(outPtr++) = (s16)Z; - } + } #endif } @@ -456,11 +456,11 @@ int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) Y = ptr[1]; Z = ptr[2]; ptr+=3; - -#if defined(AITD_UE4) + +#if defined(AITD_UE4) *(outPtr2++) = X; *(outPtr2++) = Y; - *(outPtr2++) = Z; + *(outPtr2++) = Z; #else Z += cameraPerspective; @@ -495,7 +495,7 @@ int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) *(outPtr2++) = Z; } -#endif +#endif k--; if(k==0) @@ -517,7 +517,7 @@ z - cameraZ */ int RotateNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) -{ +{ float* outPtr; renderX = x - translateX; @@ -543,7 +543,7 @@ int RotateNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) } outPtr = renderPointList; - + for(int i=0; im_vertices.size(); i++) { float X = pBody->m_vertices[i].x; @@ -582,12 +582,12 @@ int RotateNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) X += renderX; Y += renderY; - Z += renderZ; - -#if defined(AITD_UE4) + Z += renderZ; + +#if defined(AITD_UE4) *(outPtr++) = X; *(outPtr++) = Y; - *(outPtr++) = Z; + *(outPtr++) = Z; #else if(Y>10000) // height clamp { @@ -647,8 +647,8 @@ void primFunctionDefault(int primType,char** ptr,char** out) assert(0); } -void processPrim_Line(int primType, sPrimitive* ptr, char** out) -{ +void processPrim_Line(int primType, sPrimitive* ptr, char** out) +{ primEntryStruct* pCurrentPrimEntry = &primTable[positionInPrimEntry]; ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY); @@ -676,19 +676,19 @@ void processPrim_Line(int primType, sPrimitive* ptr, char** out) depth = pCurrentPrimEntry->vertices[i].Z; } - + #if !defined(AITD_UE4) - if (depth > 100) + if (depth > 100) #endif { positionInPrimEntry++; numOfPrimitiveToRender++; ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY); - } -} - -void processPrim_Poly(int primType, sPrimitive* ptr, char** out) + } +} + +void processPrim_Poly(int primType, sPrimitive* ptr, char** out) { primEntryStruct* pCurrentPrimEntry = &primTable[positionInPrimEntry]; @@ -717,19 +717,19 @@ void processPrim_Poly(int primType, sPrimitive* ptr, char** out) depth = pCurrentPrimEntry->vertices[i].Z; } - + #if !defined(AITD_UE4) - if (depth > 100) + if (depth > 100) #endif { positionInPrimEntry++; numOfPrimitiveToRender++; ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY); - } -} - -void processPrim_Point(primTypeEnum primType, sPrimitive* ptr, char** out) + } +} + +void processPrim_Point(primTypeEnum primType, sPrimitive* ptr, char** out) { primEntryStruct* pCurrentPrimEntry = &primTable[positionInPrimEntry]; @@ -751,20 +751,20 @@ void processPrim_Point(primTypeEnum primType, sPrimitive* ptr, char** out) depth = pCurrentPrimEntry->vertices[0].Z; } - + #if !defined(AITD_UE4) - if (depth > 100) + if (depth > 100) #endif { positionInPrimEntry++; numOfPrimitiveToRender++; ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY); - } -} - -void processPrim_Sphere(int primType, sPrimitive* ptr, char** out) -{ + } +} + +void processPrim_Sphere(int primType, sPrimitive* ptr, char** out) +{ primEntryStruct* pCurrentPrimEntry = &primTable[positionInPrimEntry]; ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY); @@ -786,16 +786,16 @@ void processPrim_Sphere(int primType, sPrimitive* ptr, char** out) depth = pCurrentPrimEntry->vertices[0].Z; } - + #if !defined(AITD_UE4) - if (depth > 100) + if (depth > 100) #endif { positionInPrimEntry++; numOfPrimitiveToRender++; ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY); - } + } } void primType5(int primType, char** ptr, char** out) // draw out of hardClip @@ -934,7 +934,7 @@ int AffObjet(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) modelFlags = pBody->m_flags; if(modelFlags&INFO_ANIM) - { + { if(!AnimNuage(x,y,z,alpha,beta,gamma, pBody)) { BBox3D3 = -32000; @@ -982,7 +982,7 @@ int AffObjet(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) // create the list of all primitives to render for(i=0;im_primitives[i]; primTypeEnum primType = pPrimitive->m_type; @@ -1088,7 +1088,7 @@ int AffObjet(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody) } void computeScreenBox(int x, int y, int z, int alpha, int beta, int gamma, sBody* bodyPtr) -{ +{ BBox3D1 = 0x7FFF; BBox3D2 = 0x7FFF; @@ -1102,9 +1102,9 @@ void computeScreenBox(int x, int y, int z, int alpha, int beta, int gamma, sBody renderVar2 = renderBuffer; modelFlags = bodyPtr->m_flags; - + if(modelFlags&INFO_ANIM) - { + { AnimNuage(x,y,z,alpha,beta,gamma, bodyPtr); } }