sorted out object collision enums

This commit is contained in:
aap 2020-05-06 17:13:46 +02:00
parent d015e09c92
commit c11912a8ec
4 changed files with 31 additions and 22 deletions

View File

@ -1837,7 +1837,7 @@ CPhysical::ProcessCollision(void)
step = savedTimeStep / n; step = savedTimeStep / n;
}else if(IsObject()){ }else if(IsObject()){
int responsecase = ((CObject*)this)->m_nSpecialCollisionResponseCases; int responsecase = ((CObject*)this)->m_nSpecialCollisionResponseCases;
if(responsecase == COLLRESPONSE_CHANGE_MODEL){ if(responsecase == COLLRESPONSE_LAMPOST){
CVector speedUp = { 0.0f, 0.0f, 0.0f }; CVector speedUp = { 0.0f, 0.0f, 0.0f };
CVector speedDown = { 0.0f, 0.0f, 0.0f }; CVector speedDown = { 0.0f, 0.0f, 0.0f };
speedUp.z = GetBoundRadius(); speedUp.z = GetBoundRadius();
@ -1856,7 +1856,7 @@ CPhysical::ProcessCollision(void)
n = NUMSTEPS(0.09f); n = NUMSTEPS(0.09f);
step = savedTimeStep / n; step = savedTimeStep / n;
} }
}else if(responsecase == COLLRESPONSE_SPLIT_MODEL || responsecase == COLLRESPONSE_CHANGE_THEN_SMASH){ }else if(responsecase == COLLRESPONSE_SMALLBOX || responsecase == COLLRESPONSE_FENCEPART){
if(distSq >= sq(0.15f)){ if(distSq >= sq(0.15f)){
n = NUMSTEPS(0.15f); n = NUMSTEPS(0.15f);
step = savedTimeStep / n; step = savedTimeStep / n;

View File

@ -174,12 +174,12 @@ CObject::ObjectDamage(float amount)
const float fDirectionZ = 0.0002f * amount; const float fDirectionZ = 0.0002f * amount;
switch (m_nCollisionDamageEffect) switch (m_nCollisionDamageEffect)
{ {
case COLLRESPONSE_CHANGE_MODEL: case DAMAGE_EFFECT_CHANGE_MODEL:
bRenderDamaged = true; bRenderDamaged = true;
break; break;
case COLLRESPONSE_SPLIT_MODEL: case DAMAGE_EFFECT_SPLIT_MODEL:
break; break;
case COLLRESPONSE_SMASH_COMPLETELY: case DAMAGE_EFFECT_SMASH_COMPLETELY:
bIsVisible = false; bIsVisible = false;
bUsesCollision = false; bUsesCollision = false;
bIsStatic = true; bIsStatic = true;
@ -187,7 +187,7 @@ CObject::ObjectDamage(float amount)
SetMoveSpeed(0.0f, 0.0f, 0.0f); SetMoveSpeed(0.0f, 0.0f, 0.0f);
SetTurnSpeed(0.0f, 0.0f, 0.0f); SetTurnSpeed(0.0f, 0.0f, 0.0f);
break; break;
case COLLRESPONSE_CHANGE_THEN_SMASH: case DAMAGE_EFFECT_CHANGE_THEN_SMASH:
if (!bRenderDamaged) { if (!bRenderDamaged) {
bRenderDamaged = true; bRenderDamaged = true;
} }
@ -200,7 +200,7 @@ CObject::ObjectDamage(float amount)
SetTurnSpeed(0.0f, 0.0f, 0.0f); SetTurnSpeed(0.0f, 0.0f, 0.0f);
} }
break; break;
case COLLRESPONSE_SMASH_CARDBOARD_COMPLETELY: { case DAMAGE_EFFECT_SMASH_CARDBOARD_COMPLETELY: {
bIsVisible = false; bIsVisible = false;
bUsesCollision = false; bUsesCollision = false;
bIsStatic = true; bIsStatic = true;
@ -223,7 +223,7 @@ CObject::ObjectDamage(float amount)
PlayOneShotScriptObject(_SCRSOUND_CARDBOARD_BOX_SMASH, vecPos); PlayOneShotScriptObject(_SCRSOUND_CARDBOARD_BOX_SMASH, vecPos);
break; break;
} }
case COLLRESPONSE_SMASH_WOODENBOX_COMPLETELY: { case DAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY: {
bIsVisible = false; bIsVisible = false;
bUsesCollision = false; bUsesCollision = false;
bIsStatic = true; bIsStatic = true;
@ -246,7 +246,7 @@ CObject::ObjectDamage(float amount)
PlayOneShotScriptObject(_SCRSOUND_WOODEN_BOX_SMASH, vecPos); PlayOneShotScriptObject(_SCRSOUND_WOODEN_BOX_SMASH, vecPos);
break; break;
} }
case COLLRESPONSE_SMASH_TRAFFICCONE_COMPLETELY: { case DAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY: {
bIsVisible = false; bIsVisible = false;
bUsesCollision = false; bUsesCollision = false;
bIsStatic = true; bIsStatic = true;
@ -271,7 +271,7 @@ CObject::ObjectDamage(float amount)
PlayOneShotScriptObject(_SCRSOUND_TYRE_BUMP, vecPos); PlayOneShotScriptObject(_SCRSOUND_TYRE_BUMP, vecPos);
break; break;
} }
case COLLRESPONSE_SMASH_BARPOST_COMPLETELY: { case DAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY: {
bIsVisible = false; bIsVisible = false;
bUsesCollision = false; bUsesCollision = false;
bIsStatic = true; bIsStatic = true;

View File

@ -10,19 +10,28 @@ enum {
CUTSCENE_OBJECT = 4, CUTSCENE_OBJECT = 4,
}; };
enum { enum CollisionSpecialResponseCase
{
COLLRESPONSE_NONE, COLLRESPONSE_NONE,
COLLRESPONSE_CHANGE_MODEL, COLLRESPONSE_LAMPOST,
COLLRESPONSE_SPLIT_MODEL, COLLRESPONSE_SMALLBOX,
COLLRESPONSE_SMASH_COMPLETELY, COLLRESPONSE_BIGBOX,
COLLRESPONSE_CHANGE_THEN_SMASH, COLLRESPONSE_FENCEPART,
COLLRESPONSE_UNKNOWN5, COLLRESPONSE_UNKNOWN5
};
COLLRESPONSE_SMASH_CARDBOARD_COMPLETELY = 50, enum CollisionDamageEffect
COLLRESPONSE_SMASH_WOODENBOX_COMPLETELY = 60, {
COLLRESPONSE_SMASH_TRAFFICCONE_COMPLETELY = 70, DAMAGE_EFFECT_NONE,
COLLRESPONSE_SMASH_BARPOST_COMPLETELY = 80, DAMAGE_EFFECT_CHANGE_MODEL,
DAMAGE_EFFECT_SPLIT_MODEL,
DAMAGE_EFFECT_SMASH_COMPLETELY,
DAMAGE_EFFECT_CHANGE_THEN_SMASH,
DAMAGE_EFFECT_SMASH_CARDBOARD_COMPLETELY = 50,
DAMAGE_EFFECT_SMASH_WOODENBOX_COMPLETELY = 60,
DAMAGE_EFFECT_SMASH_TRAFFICCONE_COMPLETELY = 70,
DAMAGE_EFFECT_SMASH_BARPOST_COMPLETELY = 80
}; };
class CVehicle; class CVehicle;

View File

@ -9548,7 +9548,7 @@ CPed::ProcessControl(void)
{ {
CBaseModelInfo *collidingModel = CModelInfo::GetModelInfo(collidingEnt->GetModelIndex()); CBaseModelInfo *collidingModel = CModelInfo::GetModelInfo(collidingEnt->GetModelIndex());
CColModel *collidingCol = collidingModel->GetColModel(); CColModel *collidingCol = collidingModel->GetColModel();
if (collidingEnt->IsObject() && ((CObject*)collidingEnt)->m_nSpecialCollisionResponseCases != COLLRESPONSE_CHANGE_THEN_SMASH if (collidingEnt->IsObject() && ((CObject*)collidingEnt)->m_nSpecialCollisionResponseCases != COLLRESPONSE_FENCEPART
|| collidingCol->boundingBox.max.x < 3.0f || collidingCol->boundingBox.max.x < 3.0f
&& collidingCol->boundingBox.max.y < 3.0f) { && collidingCol->boundingBox.max.y < 3.0f) {
@ -16931,7 +16931,7 @@ CPed::SpawnFlyingComponent(int pedNode, int8 direction)
obj->ObjectCreatedBy = TEMP_OBJECT; obj->ObjectCreatedBy = TEMP_OBJECT;
obj->bIsStatic = false; obj->bIsStatic = false;
obj->bIsPickup = false; obj->bIsPickup = false;
obj->m_nSpecialCollisionResponseCases = COLLRESPONSE_SPLIT_MODEL; obj->m_nSpecialCollisionResponseCases = COLLRESPONSE_SMALLBOX;
// life time - the more objects the are, the shorter this one will live // life time - the more objects the are, the shorter this one will live
CObject::nNoTempObjects++; CObject::nNoTempObjects++;