Display collision volumes for actors that don't have a body

This commit is contained in:
yaz0r 2025-08-01 23:08:30 -07:00
parent 228f0856c4
commit 543e22bc78
2 changed files with 77 additions and 75 deletions

View File

@ -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) {

View File

@ -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()<NUM_MAX_POINT_IN_POINT_BUFFER);
for (int i = 0; i < pBody->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(numOfBones<NUM_MAX_BONES);
if(pBody->m_flags & INFO_OPTIMISE)
{
{
for(int i=0;i<pBody->m_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;i<pBody->m_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; i<pBody->m_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;i<numPrim;i++)
{
{
sPrimitive* pPrimitive = &pBody->m_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);
}
}