mirror of
https://github.com/OpenDriver2/REDRIVER2.git
synced 2024-11-25 11:52:32 +01:00
- correct model/shape flags
This commit is contained in:
parent
620e32e391
commit
ce8c27f56b
@ -868,7 +868,7 @@ int CarBuildingCollision(CAR_DATA *cp, BUILDING_BOX *building, CELL_OBJECT *cop,
|
|||||||
damage_object(cop, &velocity);
|
damage_object(cop, &velocity);
|
||||||
|
|
||||||
// smash object
|
// smash object
|
||||||
if ((model->shape_flags & SHAPE_FLAG_SMASH_QUIET) == 0)
|
if ((model->shape_flags & SHAPE_FLAG_TRANS) == 0)
|
||||||
{
|
{
|
||||||
sip = smashable;
|
sip = smashable;
|
||||||
match = sip;
|
match = sip;
|
||||||
|
@ -984,7 +984,7 @@ void DrawSmashable_sprites(void)
|
|||||||
object_matrix.m[2][1] = 0;
|
object_matrix.m[2][1] = 0;
|
||||||
object_matrix.m[2][2] = ONE;
|
object_matrix.m[2][2] = ONE;
|
||||||
|
|
||||||
if ((model->shape_flags & SHAPE_FLAG_SMASH_SPRITE) == 0)
|
if ((model->shape_flags & SHAPE_FLAG_SPRITE) == 0)
|
||||||
RotMatrixY(dam->rot_speed * dam->damage * 3 & 0xfff, &object_matrix);
|
RotMatrixY(dam->rot_speed * dam->damage * 3 & 0xfff, &object_matrix);
|
||||||
|
|
||||||
RotMatrixZ(dam->rot_speed * dam->damage & 0xfff, &object_matrix);
|
RotMatrixZ(dam->rot_speed * dam->damage & 0xfff, &object_matrix);
|
||||||
@ -1006,7 +1006,7 @@ void DrawSmashable_sprites(void)
|
|||||||
|
|
||||||
if (FrustrumCheck(&pos, model->bounding_sphere) != -1)
|
if (FrustrumCheck(&pos, model->bounding_sphere) != -1)
|
||||||
{
|
{
|
||||||
if (model->shape_flags & SHAPE_FLAG_SMASH_SPRITE)
|
if (model->shape_flags & SHAPE_FLAG_SPRITE)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED();
|
UNIMPLEMENTED();
|
||||||
|
|
||||||
@ -3633,7 +3633,7 @@ void AddRainDrops(void)
|
|||||||
{
|
{
|
||||||
ROADS_GetRouteData(rt->position.vx, rt->position.vz, &routeData);
|
ROADS_GetRouteData(rt->position.vx, rt->position.vz, &routeData);
|
||||||
|
|
||||||
if (modelpointers[routeData.type]->flags2 & MODEL_FLAG_HASROOF)
|
if (modelpointers[routeData.type]->flags2 & MODEL_FLAG_INDOORS)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
@ -1156,7 +1156,7 @@ void ControlReplay(void)
|
|||||||
/*
|
/*
|
||||||
ROADS_GetRouteData(player[0].cameraPos.vx, player[0].cameraPos.vz, &routeData1);
|
ROADS_GetRouteData(player[0].cameraPos.vx, player[0].cameraPos.vz, &routeData1);
|
||||||
|
|
||||||
if (modelpointers[routeData1.type]->flags2 & MODEL_FLAG_HASROOF)
|
if (modelpointers[routeData1.type]->flags2 & MODEL_FLAG_INDOORS)
|
||||||
{
|
{
|
||||||
int road_height;
|
int road_height;
|
||||||
road_height = -450 - MapHeight(&player[0].cameraPos);
|
road_height = -450 - MapHeight(&player[0].cameraPos);
|
||||||
@ -1291,7 +1291,7 @@ void ControlReplay(void)
|
|||||||
/*
|
/*
|
||||||
ROADS_GetRouteData(player[0].cameraPos.vx, player[0].cameraPos.vz, &routeData);
|
ROADS_GetRouteData(player[0].cameraPos.vx, player[0].cameraPos.vz, &routeData);
|
||||||
|
|
||||||
if ((modelpointers[routeData.type]->flags2 & MODEL_FLAG_HASROOF) && player[0].cameraPos.vy < height - 450)
|
if ((modelpointers[routeData.type]->flags2 & MODEL_FLAG_INDOORS) && player[0].cameraPos.vy < height - 450)
|
||||||
{
|
{
|
||||||
player[0].cameraPos.vy = height - 450;
|
player[0].cameraPos.vy = height - 450;
|
||||||
}*/
|
}*/
|
||||||
|
@ -1416,7 +1416,7 @@ void DrawMapPSX(int* comp_val)
|
|||||||
if (FrustrumCheck16(ppco, model->bounding_sphere) != -1)
|
if (FrustrumCheck16(ppco, model->bounding_sphere) != -1)
|
||||||
{
|
{
|
||||||
// sprity type
|
// sprity type
|
||||||
if (model->shape_flags & SHAPE_FLAG_SMASH_SPRITE)
|
if (model->shape_flags & SHAPE_FLAG_SPRITE)
|
||||||
{
|
{
|
||||||
if (drawData.sprites_found < MAX_DRAWN_SPRITES)
|
if (drawData.sprites_found < MAX_DRAWN_SPRITES)
|
||||||
spriteList[drawData.sprites_found++] = ppco;
|
spriteList[drawData.sprites_found++] = ppco;
|
||||||
@ -1468,8 +1468,8 @@ void DrawMapPSX(int* comp_val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((model->shape_flags & (SHAPE_FLAG_SUBSURFACE | SHAPE_FLAG_ALLEYWAY)) ||
|
if ((model->shape_flags & (SHAPE_FLAG_WATER | SHAPE_FLAG_TILE)) ||
|
||||||
(model->flags2 & (MODEL_FLAG_SIDEWALK | MODEL_FLAG_GRASS)))
|
(model->flags2 & (MODEL_FLAG_PATH | MODEL_FLAG_GRASS)))
|
||||||
{
|
{
|
||||||
if (model->flags2 & MODEL_FLAG_ALLEY)
|
if (model->flags2 & MODEL_FLAG_ALLEY)
|
||||||
{
|
{
|
||||||
|
@ -49,7 +49,7 @@ char CellEmpty(VECTOR *pPosition, int radius)
|
|||||||
pModel = modelpointers[type];
|
pModel = modelpointers[type];
|
||||||
|
|
||||||
if ((uint)pModel->collision_block > 0 &&
|
if ((uint)pModel->collision_block > 0 &&
|
||||||
(pModel->flags2 & (MODEL_FLAG_NOCOL_200 | MODEL_FLAG_SMASHABLE)) == 0)
|
(pModel->flags2 & (MODEL_FLAG_CHAIR | MODEL_FLAG_SMASHABLE)) == 0)
|
||||||
{
|
{
|
||||||
QuickUnpackCellObject(ppco, &ci.nearCell, &tempCO);
|
QuickUnpackCellObject(ppco, &ci.nearCell, &tempCO);
|
||||||
|
|
||||||
@ -385,7 +385,7 @@ char lineClear(VECTOR *v1, VECTOR *v2)
|
|||||||
sphere_sq = pModel->bounding_sphere + 800;
|
sphere_sq = pModel->bounding_sphere + 800;
|
||||||
|
|
||||||
if ((uint)pModel->collision_block > 0 &&
|
if ((uint)pModel->collision_block > 0 &&
|
||||||
(pModel->flags2 & (MODEL_FLAG_NOCOL_200 | MODEL_FLAG_SMASHABLE)) == 0 &&
|
(pModel->flags2 & (MODEL_FLAG_CHAIR | MODEL_FLAG_SMASHABLE)) == 0 &&
|
||||||
(xd*xd + zd*zd < sphere_sq*sphere_sq))
|
(xd*xd + zd*zd < sphere_sq*sphere_sq))
|
||||||
{
|
{
|
||||||
num_cb = *(int*)pModel->collision_block;
|
num_cb = *(int*)pModel->collision_block;
|
||||||
@ -733,7 +733,7 @@ void CheckScenaryCollisions(CAR_DATA *cp)
|
|||||||
}
|
}
|
||||||
else if (cp->controlType == CONTROL_TYPE_CAMERACOLLIDER)
|
else if (cp->controlType == CONTROL_TYPE_CAMERACOLLIDER)
|
||||||
{
|
{
|
||||||
if ((model->flags2 & (MODEL_FLAG_NOCOL_200 | MODEL_FLAG_SMASHABLE)) == 0 &&
|
if ((model->flags2 & (MODEL_FLAG_CHAIR | MODEL_FLAG_SMASHABLE)) == 0 &&
|
||||||
(bbox.xsize > 100 || (bbox.zsize > 100)))
|
(bbox.xsize > 100 || (bbox.zsize > 100)))
|
||||||
{
|
{
|
||||||
coll_test_count = 5;
|
coll_test_count = 5;
|
||||||
|
@ -24,7 +24,7 @@ void Tile1x1(MODEL *model)
|
|||||||
polys = (PL_POLYFT4*)model->poly_block;
|
polys = (PL_POLYFT4*)model->poly_block;
|
||||||
|
|
||||||
// grass should be under pavements and other things
|
// grass should be under pavements and other things
|
||||||
if ((model->shape_flags & SHAPE_FLAG_SUBSURFACE) || (model->flags2 & 0x4000))
|
if ((model->shape_flags & SHAPE_FLAG_WATER) || (model->flags2 & 0x4000))
|
||||||
ofse = 229;
|
ofse = 229;
|
||||||
else
|
else
|
||||||
ofse = 133;
|
ofse = 133;
|
||||||
@ -416,7 +416,7 @@ void TileNxN(MODEL *model, int levels, int Dofse)
|
|||||||
tileTypes = *(u_int *)(model + 1) >> 2;
|
tileTypes = *(u_int *)(model + 1) >> 2;
|
||||||
|
|
||||||
// grass should be under pavements and other things
|
// grass should be under pavements and other things
|
||||||
if((model->shape_flags & SHAPE_FLAG_SUBSURFACE) || (model->flags2 & 0x4000))
|
if((model->shape_flags & SHAPE_FLAG_WATER) || (model->flags2 & 0x4000))
|
||||||
ofse = 229;
|
ofse = 229;
|
||||||
else
|
else
|
||||||
ofse = 133;
|
ofse = 133;
|
||||||
|
@ -22,6 +22,9 @@ extern short rcossin_tbl[8192];
|
|||||||
#define RSIN(a) rcossin_tbl[(a & 0xFFFU) * 2]
|
#define RSIN(a) rcossin_tbl[(a & 0xFFFU) * 2]
|
||||||
#define RCOS(a) rcossin_tbl[(a & 0xFFFU) * 2 + 1]
|
#define RCOS(a) rcossin_tbl[(a & 0xFFFU) * 2 + 1]
|
||||||
|
|
||||||
|
#define DIFF_ANGLES( A, B ) \
|
||||||
|
(((((B) - (A)) + 2048) & 4095) - 2048)
|
||||||
|
|
||||||
// Remap a value in the range [A,B] to [C,D].
|
// Remap a value in the range [A,B] to [C,D].
|
||||||
#define RemapVal( val, A, B, C, D) \
|
#define RemapVal( val, A, B, C, D) \
|
||||||
(C + (D - C) * (val - A) / (B - A))
|
(C + (D - C) * (val - A) / (B - A))
|
||||||
|
@ -345,44 +345,55 @@ struct OUT_CELL_FILE_HEADER
|
|||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// TODO: MODELS.H
|
// TODO: MDL.H
|
||||||
|
|
||||||
enum ModelShapeFlags
|
enum ModelShapeFlags
|
||||||
{
|
{
|
||||||
SHAPE_FLAG_SMASH_QUIET = 0x8,
|
SHAPE_FLAG_LITPOLY = 0x1,
|
||||||
|
SHAPE_FLAG_BSPDATA = 0x2,
|
||||||
|
SHAPE_FLAG_TRANS = 0x8,
|
||||||
SHAPE_FLAG_NOCOLLIDE = 0x10,
|
SHAPE_FLAG_NOCOLLIDE = 0x10,
|
||||||
SHAPE_FLAG_SUBSURFACE = 0x80, // grass, dirt, water
|
SHAPE_FLAG_WATER = 0x80, // model is water
|
||||||
SHAPE_FLAG_ALLEYWAY = 0x400, // alleyway
|
SHAPE_FLAG_AMBIENT2 = 0x100, // Ambient sound 2 associated - maybe used in D1
|
||||||
SHAPE_FLAG_SMASH_SPRITE = 0x4000,
|
SHAPE_FLAG_AMBIENT1 = 0x200, // Ambient sound 1 associated - maybe used in D1
|
||||||
|
SHAPE_FLAG_TILE = 0x400, // treat as road
|
||||||
|
SHAPE_FLAG_SHADOW = 0x800, // D1 leftover flag
|
||||||
|
SHAPE_FLAG_ALPHA = 0x1000, // alpha tested object
|
||||||
|
SHAPE_FLAG_ROAD = 0x2000, // section of road
|
||||||
|
SHAPE_FLAG_SPRITE = 0x4000,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ModelFlags2
|
enum ModelFlags2
|
||||||
{
|
{
|
||||||
MODEL_FLAG_ANIMOBJ = 0x1,
|
MODEL_FLAG_ANIMOBJ = 0x1, // CUSTOM FLAG!
|
||||||
MODEL_FLAG_MEDIAN = 0x20,
|
|
||||||
MODEL_FLAG_ALLEY = 0x80,
|
MODEL_FLAG_MEDIAN = 0x20, // Hmmmm...
|
||||||
MODEL_FLAG_HASROOF = 0x100,
|
MODEL_FLAG_JUNC = 0x40,
|
||||||
MODEL_FLAG_NOCOL_200 = 0x200,
|
MODEL_FLAG_ALLEY = 0x80, // alley tile
|
||||||
|
MODEL_FLAG_INDOORS = 0x100,
|
||||||
|
MODEL_FLAG_CHAIR = 0x200,
|
||||||
MODEL_FLAG_BARRIER = 0x400,
|
MODEL_FLAG_BARRIER = 0x400,
|
||||||
MODEL_FLAG_SMASHABLE = 0x800,
|
MODEL_FLAG_SMASHABLE = 0x800,
|
||||||
MODEL_FLAG_LAMP = 0x1000,
|
MODEL_FLAG_LAMP = 0x1000,
|
||||||
MODEL_FLAG_TREE = 0x2000,
|
MODEL_FLAG_TREE = 0x2000,
|
||||||
MODEL_FLAG_GRASS = 0x4000,
|
MODEL_FLAG_GRASS = 0x4000,
|
||||||
MODEL_FLAG_SIDEWALK = 0x8000,
|
MODEL_FLAG_PATH = 0x8000,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define COLLISION_BOX 0
|
||||||
|
#define COLLISION_CYLINDER 1
|
||||||
|
#define COLLISION_CONE 2
|
||||||
|
#define COLLISION_SPHERE 3
|
||||||
|
#define COLLISION_INDOORS 4
|
||||||
|
|
||||||
struct COLLISION_PACKET
|
struct COLLISION_PACKET
|
||||||
{
|
{
|
||||||
short type;
|
short type;
|
||||||
short xpos;
|
short xpos, ypos, zpos;
|
||||||
short ypos;
|
|
||||||
short zpos;
|
|
||||||
short flags;
|
short flags;
|
||||||
short yang;
|
short yang;
|
||||||
short empty;
|
short empty;
|
||||||
short xsize;
|
short xsize, ysize, zsize;
|
||||||
short ysize;
|
|
||||||
short zsize;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct POLYFT4
|
struct POLYFT4
|
||||||
@ -391,14 +402,8 @@ struct POLYFT4
|
|||||||
u_char texture_set;
|
u_char texture_set;
|
||||||
u_char texture_id;
|
u_char texture_id;
|
||||||
u_char spare;
|
u_char spare;
|
||||||
u_char v0;
|
u_char v0, v1, v2, v3;
|
||||||
u_char v1;
|
UV_INFO uv0, uv1, uv2, uv3;
|
||||||
u_char v2;
|
|
||||||
u_char v3;
|
|
||||||
UV_INFO uv0;
|
|
||||||
UV_INFO uv1;
|
|
||||||
UV_INFO uv2;
|
|
||||||
UV_INFO uv3;
|
|
||||||
RGB color;
|
RGB color;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -408,18 +413,9 @@ struct POLYGT4
|
|||||||
u_char texture_set;
|
u_char texture_set;
|
||||||
u_char texture_id;
|
u_char texture_id;
|
||||||
u_char spare;
|
u_char spare;
|
||||||
u_char v0;
|
u_char v0, v1, v2, v3;
|
||||||
u_char v1;
|
u_char n0, n1, n2, n3;
|
||||||
u_char v2;
|
UV_INFO uv0, uv1, uv2, uv3;
|
||||||
u_char v3;
|
|
||||||
u_char n0;
|
|
||||||
u_char n1;
|
|
||||||
u_char n2;
|
|
||||||
u_char n3;
|
|
||||||
UV_INFO uv0;
|
|
||||||
UV_INFO uv1;
|
|
||||||
UV_INFO uv2;
|
|
||||||
UV_INFO uv3;
|
|
||||||
RGB color;
|
RGB color;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -429,14 +425,8 @@ struct PL_POLYFT4
|
|||||||
u_char texture_set;
|
u_char texture_set;
|
||||||
u_char texture_id;
|
u_char texture_id;
|
||||||
u_char th;
|
u_char th;
|
||||||
u_char v0;
|
u_char v0, v1, v2, v3;
|
||||||
u_char v1;
|
UV_INFO uv0, uv1, uv2, uv3;
|
||||||
u_char v2;
|
|
||||||
u_char v3;
|
|
||||||
UV_INFO uv0;
|
|
||||||
UV_INFO uv1;
|
|
||||||
UV_INFO uv2;
|
|
||||||
UV_INFO uv3;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -446,14 +436,8 @@ struct POLYFT3
|
|||||||
u_char texture_set;
|
u_char texture_set;
|
||||||
u_char texture_id;
|
u_char texture_id;
|
||||||
u_char spare;
|
u_char spare;
|
||||||
u_char v0;
|
u_char v0, v1, v2, pad;
|
||||||
u_char v1;
|
UV_INFO uv0, uv1, uv2, pad2;
|
||||||
u_char v2;
|
|
||||||
u_char pad;
|
|
||||||
UV_INFO uv0;
|
|
||||||
UV_INFO uv1;
|
|
||||||
UV_INFO uv2;
|
|
||||||
UV_INFO pad2;
|
|
||||||
RGB color;
|
RGB color;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -463,18 +447,9 @@ struct POLYGT3
|
|||||||
u_char texture_set;
|
u_char texture_set;
|
||||||
u_char texture_id;
|
u_char texture_id;
|
||||||
u_char spare;
|
u_char spare;
|
||||||
u_char v0;
|
u_char v0, v1, v2, pad;
|
||||||
u_char v1;
|
u_char n0, n1, n2, pad2;
|
||||||
u_char v2;
|
UV_INFO uv0, uv1, uv2, pad3;
|
||||||
u_char pad;
|
|
||||||
u_char n0;
|
|
||||||
u_char n1;
|
|
||||||
u_char n2;
|
|
||||||
u_char pad2;
|
|
||||||
UV_INFO uv0;
|
|
||||||
UV_INFO uv1;
|
|
||||||
UV_INFO uv2;
|
|
||||||
UV_INFO pad3;
|
|
||||||
RGB color;
|
RGB color;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user