mirror of https://github.com/yaz0r/FITD.git
Display collision volumes for actors that don't have a body
This commit is contained in:
parent
228f0856c4
commit
543e22bc78
|
@ -3071,18 +3071,6 @@ void AllRedraw(int flagFlip)
|
||||||
getHotPoint(actorPtr->hotPointID, bodyPtr, &actorPtr->hotPoint);
|
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
|
#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++)
|
for (int i = 0; i < getNumberOfRoom(); i++)
|
||||||
{
|
{
|
||||||
if (hardColDisplayMode != displayNone) {
|
if (hardColDisplayMode != displayNone) {
|
||||||
|
|
|
@ -95,9 +95,9 @@ int boneRotateZSin;
|
||||||
char primBuffer[30000];
|
char primBuffer[30000];
|
||||||
|
|
||||||
int renderVar3;
|
int renderVar3;
|
||||||
|
|
||||||
#ifndef AITD_UE4
|
#ifndef AITD_UE4
|
||||||
void fillpoly(s16 * datas, int n, char c);
|
void fillpoly(s16 * datas, int n, char c);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -246,7 +246,7 @@ void RotateList(point3dStruct* pointPtr, int numOfPoint)
|
||||||
point.z = z;
|
point.z = z;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RotateGroupeOptimise(sGroup* ptr)
|
void RotateGroupeOptimise(sGroup* ptr)
|
||||||
{
|
{
|
||||||
if (ptr->m_numGroup) // if group number is 0
|
if (ptr->m_numGroup) // if group number is 0
|
||||||
|
@ -257,7 +257,7 @@ void RotateGroupeOptimise(sGroup* ptr)
|
||||||
RotateList(pointBuffer.data() + baseBone, numPoints);
|
RotateList(pointBuffer.data() + baseBone, numPoints);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RotateGroupe(sGroup* ptr)
|
void RotateGroupe(sGroup* ptr)
|
||||||
{
|
{
|
||||||
int baseBone = ptr->m_start;
|
int baseBone = ptr->m_start;
|
||||||
|
@ -280,8 +280,8 @@ void RotateGroupe(sGroup* ptr)
|
||||||
|
|
||||||
ptr++;
|
ptr++;
|
||||||
} while (--temp2);
|
} while (--temp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TranslateGroupe(int transX, int transY, int transZ, sGroup* ptr)
|
void TranslateGroupe(int transX, int transY, int transZ, sGroup* ptr)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < ptr->m_numVertices; i++)
|
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;
|
point.z += transZ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZoomGroupe(int zoomX, int zoomY, int zoomZ, sGroup* ptr)
|
void ZoomGroupe(int zoomX, int zoomY, int zoomZ, sGroup* ptr)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < ptr->m_numVertices; i++)
|
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)
|
int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody)
|
||||||
{
|
{
|
||||||
renderX = x - translateX;
|
renderX = x - translateX;
|
||||||
renderY = y;
|
renderY = y;
|
||||||
renderZ = z - translateZ;
|
renderZ = z - translateZ;
|
||||||
|
|
||||||
ASSERT(pBody->m_vertices.size()<NUM_MAX_POINT_IN_POINT_BUFFER);
|
ASSERT(pBody->m_vertices.size()<NUM_MAX_POINT_IN_POINT_BUFFER);
|
||||||
|
|
||||||
for (int i = 0; i < pBody->m_vertices.size(); i++)
|
for (int i = 0; i < pBody->m_vertices.size(); i++)
|
||||||
{
|
{
|
||||||
pointBuffer[i] = pBody->m_vertices[i];
|
pointBuffer[i] = pBody->m_vertices[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
numOfPoints = pBody->m_vertices.size();
|
numOfPoints = pBody->m_vertices.size();
|
||||||
numOfBones = pBody->m_groupOrder.size();
|
numOfBones = pBody->m_groupOrder.size();
|
||||||
ASSERT(numOfBones<NUM_MAX_BONES);
|
ASSERT(numOfBones<NUM_MAX_BONES);
|
||||||
|
|
||||||
if(pBody->m_flags & INFO_OPTIMISE)
|
if(pBody->m_flags & INFO_OPTIMISE)
|
||||||
{
|
{
|
||||||
for(int i=0;i<pBody->m_groupOrder.size();i++)
|
for(int i=0;i<pBody->m_groupOrder.size();i++)
|
||||||
{
|
{
|
||||||
int boneDataOffset = pBody->m_groupOrder[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)
|
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);
|
TranslateGroupe(pGroup->m_state.m_delta.x, pGroup->m_state.m_delta.y, pGroup->m_state.m_delta.z, pGroup);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (pGroup->m_state.m_delta.x || pGroup->m_state.m_delta.y || pGroup->m_state.m_delta.z)
|
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++)
|
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++)
|
for(int j=0;j< pGroup->m_numVertices;j++)
|
||||||
{
|
{
|
||||||
pointBuffer[pGroup->m_start + j].x += pointBuffer[pGroup->m_baseVertices].x;
|
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;
|
X += renderX;
|
||||||
Y += renderY;
|
Y += renderY;
|
||||||
Z += renderZ;
|
Z += renderZ;
|
||||||
|
|
||||||
#if defined(AITD_UE4)
|
#if defined(AITD_UE4)
|
||||||
*(outPtr++) = (s16)X;
|
*(outPtr++) = (s16)X;
|
||||||
*(outPtr++) = (s16)Y;
|
*(outPtr++) = (s16)Y;
|
||||||
*(outPtr++) = (s16)Z;
|
*(outPtr++) = (s16)Z;
|
||||||
#else
|
#else
|
||||||
if(Y>10000) // height clamp
|
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)X;
|
||||||
*(outPtr++) = (s16)Y;
|
*(outPtr++) = (s16)Y;
|
||||||
*(outPtr++) = (s16)Z;
|
*(outPtr++) = (s16)Z;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -456,11 +456,11 @@ int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody)
|
||||||
Y = ptr[1];
|
Y = ptr[1];
|
||||||
Z = ptr[2];
|
Z = ptr[2];
|
||||||
ptr+=3;
|
ptr+=3;
|
||||||
|
|
||||||
#if defined(AITD_UE4)
|
#if defined(AITD_UE4)
|
||||||
*(outPtr2++) = X;
|
*(outPtr2++) = X;
|
||||||
*(outPtr2++) = Y;
|
*(outPtr2++) = Y;
|
||||||
*(outPtr2++) = Z;
|
*(outPtr2++) = Z;
|
||||||
#else
|
#else
|
||||||
Z += cameraPerspective;
|
Z += cameraPerspective;
|
||||||
|
|
||||||
|
@ -495,7 +495,7 @@ int AnimNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody)
|
||||||
|
|
||||||
*(outPtr2++) = Z;
|
*(outPtr2++) = Z;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
k--;
|
k--;
|
||||||
if(k==0)
|
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)
|
int RotateNuage(int x,int y,int z,int alpha,int beta,int gamma, sBody* pBody)
|
||||||
{
|
{
|
||||||
float* outPtr;
|
float* outPtr;
|
||||||
|
|
||||||
renderX = x - translateX;
|
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;
|
outPtr = renderPointList;
|
||||||
|
|
||||||
for(int i=0; i<pBody->m_vertices.size(); i++)
|
for(int i=0; i<pBody->m_vertices.size(); i++)
|
||||||
{
|
{
|
||||||
float X = pBody->m_vertices[i].x;
|
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;
|
X += renderX;
|
||||||
Y += renderY;
|
Y += renderY;
|
||||||
Z += renderZ;
|
Z += renderZ;
|
||||||
|
|
||||||
#if defined(AITD_UE4)
|
#if defined(AITD_UE4)
|
||||||
*(outPtr++) = X;
|
*(outPtr++) = X;
|
||||||
*(outPtr++) = Y;
|
*(outPtr++) = Y;
|
||||||
*(outPtr++) = Z;
|
*(outPtr++) = Z;
|
||||||
#else
|
#else
|
||||||
if(Y>10000) // height clamp
|
if(Y>10000) // height clamp
|
||||||
{
|
{
|
||||||
|
@ -647,8 +647,8 @@ void primFunctionDefault(int primType,char** ptr,char** out)
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void processPrim_Line(int primType, sPrimitive* ptr, char** out)
|
void processPrim_Line(int primType, sPrimitive* ptr, char** out)
|
||||||
{
|
{
|
||||||
primEntryStruct* pCurrentPrimEntry = &primTable[positionInPrimEntry];
|
primEntryStruct* pCurrentPrimEntry = &primTable[positionInPrimEntry];
|
||||||
|
|
||||||
ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY);
|
ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY);
|
||||||
|
@ -676,19 +676,19 @@ void processPrim_Line(int primType, sPrimitive* ptr, char** out)
|
||||||
depth = pCurrentPrimEntry->vertices[i].Z;
|
depth = pCurrentPrimEntry->vertices[i].Z;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(AITD_UE4)
|
#if !defined(AITD_UE4)
|
||||||
if (depth > 100)
|
if (depth > 100)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
positionInPrimEntry++;
|
positionInPrimEntry++;
|
||||||
|
|
||||||
numOfPrimitiveToRender++;
|
numOfPrimitiveToRender++;
|
||||||
ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY);
|
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];
|
primEntryStruct* pCurrentPrimEntry = &primTable[positionInPrimEntry];
|
||||||
|
|
||||||
|
@ -717,19 +717,19 @@ void processPrim_Poly(int primType, sPrimitive* ptr, char** out)
|
||||||
depth = pCurrentPrimEntry->vertices[i].Z;
|
depth = pCurrentPrimEntry->vertices[i].Z;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(AITD_UE4)
|
#if !defined(AITD_UE4)
|
||||||
if (depth > 100)
|
if (depth > 100)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
positionInPrimEntry++;
|
positionInPrimEntry++;
|
||||||
|
|
||||||
numOfPrimitiveToRender++;
|
numOfPrimitiveToRender++;
|
||||||
ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY);
|
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];
|
primEntryStruct* pCurrentPrimEntry = &primTable[positionInPrimEntry];
|
||||||
|
|
||||||
|
@ -751,20 +751,20 @@ void processPrim_Point(primTypeEnum primType, sPrimitive* ptr, char** out)
|
||||||
|
|
||||||
depth = pCurrentPrimEntry->vertices[0].Z;
|
depth = pCurrentPrimEntry->vertices[0].Z;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(AITD_UE4)
|
#if !defined(AITD_UE4)
|
||||||
if (depth > 100)
|
if (depth > 100)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
positionInPrimEntry++;
|
positionInPrimEntry++;
|
||||||
|
|
||||||
numOfPrimitiveToRender++;
|
numOfPrimitiveToRender++;
|
||||||
ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY);
|
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];
|
primEntryStruct* pCurrentPrimEntry = &primTable[positionInPrimEntry];
|
||||||
|
|
||||||
ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY);
|
ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY);
|
||||||
|
@ -786,16 +786,16 @@ void processPrim_Sphere(int primType, sPrimitive* ptr, char** out)
|
||||||
|
|
||||||
depth = pCurrentPrimEntry->vertices[0].Z;
|
depth = pCurrentPrimEntry->vertices[0].Z;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(AITD_UE4)
|
#if !defined(AITD_UE4)
|
||||||
if (depth > 100)
|
if (depth > 100)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
positionInPrimEntry++;
|
positionInPrimEntry++;
|
||||||
|
|
||||||
numOfPrimitiveToRender++;
|
numOfPrimitiveToRender++;
|
||||||
ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY);
|
ASSERT(positionInPrimEntry < NUM_MAX_PRIM_ENTRY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void primType5(int primType, char** ptr, char** out) // draw out of hardClip
|
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;
|
modelFlags = pBody->m_flags;
|
||||||
|
|
||||||
if(modelFlags&INFO_ANIM)
|
if(modelFlags&INFO_ANIM)
|
||||||
{
|
{
|
||||||
if(!AnimNuage(x,y,z,alpha,beta,gamma, pBody))
|
if(!AnimNuage(x,y,z,alpha,beta,gamma, pBody))
|
||||||
{
|
{
|
||||||
BBox3D3 = -32000;
|
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
|
// create the list of all primitives to render
|
||||||
for(i=0;i<numPrim;i++)
|
for(i=0;i<numPrim;i++)
|
||||||
{
|
{
|
||||||
sPrimitive* pPrimitive = &pBody->m_primitives[i];
|
sPrimitive* pPrimitive = &pBody->m_primitives[i];
|
||||||
primTypeEnum primType = pPrimitive->m_type;
|
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)
|
void computeScreenBox(int x, int y, int z, int alpha, int beta, int gamma, sBody* bodyPtr)
|
||||||
{
|
{
|
||||||
BBox3D1 = 0x7FFF;
|
BBox3D1 = 0x7FFF;
|
||||||
BBox3D2 = 0x7FFF;
|
BBox3D2 = 0x7FFF;
|
||||||
|
|
||||||
|
@ -1102,9 +1102,9 @@ void computeScreenBox(int x, int y, int z, int alpha, int beta, int gamma, sBody
|
||||||
renderVar2 = renderBuffer;
|
renderVar2 = renderBuffer;
|
||||||
|
|
||||||
modelFlags = bodyPtr->m_flags;
|
modelFlags = bodyPtr->m_flags;
|
||||||
|
|
||||||
if(modelFlags&INFO_ANIM)
|
if(modelFlags&INFO_ANIM)
|
||||||
{
|
{
|
||||||
AnimNuage(x,y,z,alpha,beta,gamma, bodyPtr);
|
AnimNuage(x,y,z,alpha,beta,gamma, bodyPtr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue