sorted out object collision enums

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

View file

@ -1847,7 +1847,7 @@ CPhysical::ProcessCollision(void)
step = savedTimeStep / n;
}else if(IsObject()){
int responsecase = ((CObject*)this)->m_nSpecialCollisionResponseCases;
if(responsecase == COLLRESPONSE_CHANGE_MODEL){
if(responsecase == COLLRESPONSE_LAMPOST){
CVector speedUp = { 0.0f, 0.0f, 0.0f };
CVector speedDown = { 0.0f, 0.0f, 0.0f };
speedUp.z = GetBoundRadius();
@ -1866,7 +1866,7 @@ CPhysical::ProcessCollision(void)
n = NUMSTEPS(0.09f);
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)){
n = NUMSTEPS(0.15f);
step = savedTimeStep / n;

View file

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

View file

@ -10,19 +10,28 @@ enum {
CUTSCENE_OBJECT = 4,
};
enum {
enum CollisionSpecialResponseCase
{
COLLRESPONSE_NONE,
COLLRESPONSE_CHANGE_MODEL,
COLLRESPONSE_SPLIT_MODEL,
COLLRESPONSE_SMASH_COMPLETELY,
COLLRESPONSE_CHANGE_THEN_SMASH,
COLLRESPONSE_UNKNOWN5,
COLLRESPONSE_LAMPOST,
COLLRESPONSE_SMALLBOX,
COLLRESPONSE_BIGBOX,
COLLRESPONSE_FENCEPART,
COLLRESPONSE_UNKNOWN5
};
COLLRESPONSE_SMASH_CARDBOARD_COMPLETELY = 50,
COLLRESPONSE_SMASH_WOODENBOX_COMPLETELY = 60,
COLLRESPONSE_SMASH_TRAFFICCONE_COMPLETELY = 70,
COLLRESPONSE_SMASH_BARPOST_COMPLETELY = 80,
enum CollisionDamageEffect
{
DAMAGE_EFFECT_NONE,
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;

View file

@ -9551,7 +9551,7 @@ CPed::ProcessControl(void)
{
CBaseModelInfo *collidingModel = CModelInfo::GetModelInfo(collidingEnt->GetModelIndex());
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.y < 3.0f) {
@ -16934,7 +16934,7 @@ CPed::SpawnFlyingComponent(int pedNode, int8 direction)
obj->ObjectCreatedBy = TEMP_OBJECT;
obj->bIsStatic = 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
CObject::nNoTempObjects++;