mirror of
https://github.com/halpz/re3.git
synced 2025-07-15 14:28:10 +00:00
CVehicle
This commit is contained in:
@ -3281,6 +3281,18 @@ CCamera::Find3rdPersonQuickAimPitch(void)
|
||||
return -(DEGTORAD(((0.5f - m_f3rdPersonCHairMultY) * 1.8f * 0.5f * Cams[ActiveCam].FOV)) + rot);
|
||||
}
|
||||
|
||||
bool
|
||||
CCamera::Using1stPersonWeaponMode(void)
|
||||
{
|
||||
switch(PlayerWeaponMode.Mode)
|
||||
case CCam::MODE_SNIPER:
|
||||
case CCam::MODE_M16_1STPERSON:
|
||||
case CCam::MODE_ROCKETLAUNCHER:
|
||||
case CCam::MODE_HELICANNON_1STPERSON:
|
||||
case CCam::MODE_CAMERA:
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
|
@ -91,7 +91,9 @@ public:
|
||||
MODE_M16_1STPERSON_RUNABOUT,
|
||||
MODE_FIGHT_CAM_RUNABOUT,
|
||||
MODE_EDITOR,
|
||||
MODE_HELICANNON_1STPERSON, // vice city leftover
|
||||
MODE_HELICANNON_1STPERSON,
|
||||
MODE_45,
|
||||
MODE_CAMERA,
|
||||
};
|
||||
|
||||
bool bBelowMinDist; //used for follow ped mode
|
||||
@ -625,6 +627,7 @@ public:
|
||||
void UpdateAimingCoors(CVector const &coors);
|
||||
void Find3rdPersonCamTargetVector(float dist, CVector pos, CVector &source, CVector &target);
|
||||
float Find3rdPersonQuickAimPitch(void);
|
||||
bool Using1stPersonWeaponMode(void);
|
||||
|
||||
// Physical camera
|
||||
void SetRwCamera(RwCamera *cam);
|
||||
|
@ -414,8 +414,9 @@ CCollision::TestSphereTriangle(const CColSphere &sphere,
|
||||
return dist < sphere.radius;
|
||||
}
|
||||
|
||||
//--MIAMI: TODO
|
||||
bool
|
||||
CCollision::TestLineOfSight(const CColLine &line, const CMatrix &matrix, CColModel &model, bool ignoreSeeThrough)
|
||||
CCollision::TestLineOfSight(const CColLine &line, const CMatrix &matrix, CColModel &model, bool ignoreSeeThrough, bool ignoreShootThrough)
|
||||
{
|
||||
static CMatrix matTransform;
|
||||
int i;
|
||||
@ -1042,10 +1043,11 @@ CCollision::ProcessSphereTriangle(const CColSphere &sphere,
|
||||
return true;
|
||||
}
|
||||
|
||||
//--MIAMI: TODO
|
||||
bool
|
||||
CCollision::ProcessLineOfSight(const CColLine &line,
|
||||
const CMatrix &matrix, CColModel &model,
|
||||
CColPoint &point, float &mindist, bool ignoreSeeThrough)
|
||||
CColPoint &point, float &mindist, bool ignoreSeeThrough, bool ignoreShootThrough)
|
||||
{
|
||||
static CMatrix matTransform;
|
||||
int i;
|
||||
@ -1081,10 +1083,11 @@ CCollision::ProcessLineOfSight(const CColLine &line,
|
||||
return false;
|
||||
}
|
||||
|
||||
//--MIAMI: TODO
|
||||
bool
|
||||
CCollision::ProcessVerticalLine(const CColLine &line,
|
||||
const CMatrix &matrix, CColModel &model,
|
||||
CColPoint &point, float &mindist, bool ignoreSeeThrough, CStoredCollPoly *poly)
|
||||
CColPoint &point, float &mindist, bool ignoreSeeThrough, bool ignoreShootThrough, CStoredCollPoly *poly)
|
||||
{
|
||||
static CStoredCollPoly TempStoredPoly;
|
||||
int i;
|
||||
|
@ -151,7 +151,7 @@ public:
|
||||
static bool TestLineTriangle(const CColLine &line, const CVector *verts, const CColTriangle &tri, const CColTrianglePlane &plane);
|
||||
static bool TestLineSphere(const CColLine &line, const CColSphere &sph);
|
||||
static bool TestSphereTriangle(const CColSphere &sphere, const CVector *verts, const CColTriangle &tri, const CColTrianglePlane &plane);
|
||||
static bool TestLineOfSight(const CColLine &line, const CMatrix &matrix, CColModel &model, bool ignoreSeeThrough);
|
||||
static bool TestLineOfSight(const CColLine &line, const CMatrix &matrix, CColModel &model, bool ignoreSeeThrough, bool ignoreShootThrough);
|
||||
|
||||
static bool ProcessSphereSphere(const CColSphere &s1, const CColSphere &s2, CColPoint &point, float &mindistsq);
|
||||
static bool ProcessSphereBox(const CColSphere &sph, const CColBox &box, CColPoint &point, float &mindistsq);
|
||||
@ -160,8 +160,8 @@ public:
|
||||
static bool ProcessLineTriangle(const CColLine &line , const CVector *verts, const CColTriangle &tri, const CColTrianglePlane &plane, CColPoint &point, float &mindist);
|
||||
static bool ProcessLineSphere(const CColLine &line, const CColSphere &sphere, CColPoint &point, float &mindist);
|
||||
static bool ProcessSphereTriangle(const CColSphere &sph, const CVector *verts, const CColTriangle &tri, const CColTrianglePlane &plane, CColPoint &point, float &mindistsq);
|
||||
static bool ProcessLineOfSight(const CColLine &line, const CMatrix &matrix, CColModel &model, CColPoint &point, float &mindist, bool ignoreSeeThrough);
|
||||
static bool ProcessVerticalLine(const CColLine &line, const CMatrix &matrix, CColModel &model, CColPoint &point, float &mindist, bool ignoreSeeThrough, CStoredCollPoly *poly);
|
||||
static bool ProcessLineOfSight(const CColLine &line, const CMatrix &matrix, CColModel &model, CColPoint &point, float &mindist, bool ignoreSeeThrough, bool ignoreShootThrough);
|
||||
static bool ProcessVerticalLine(const CColLine &line, const CMatrix &matrix, CColModel &model, CColPoint &point, float &mindist, bool ignoreSeeThrough, bool ignoreShootThrough, CStoredCollPoly *poly);
|
||||
static int32 ProcessColModels(const CMatrix &matrixA, CColModel &modelA, const CMatrix &matrixB, CColModel &modelB, CColPoint *spherepoints, CColPoint *linepoints, float *linedists);
|
||||
static bool IsStoredPolyStillValidVerticalLine(const CVector &pos, float z, CColPoint &point, CStoredCollPoly *poly);
|
||||
|
||||
|
@ -51,6 +51,7 @@ public:
|
||||
int32 field_268;
|
||||
int32 field_272;
|
||||
uint32 m_nHavocLevel;
|
||||
float m_fMediaAttention;
|
||||
bool m_bInfiniteSprint;
|
||||
bool m_bFastReload;
|
||||
bool m_bFireproof;
|
||||
|
@ -33,22 +33,24 @@
|
||||
|
||||
CColPoint gaTempSphereColPoints[MAX_COLLISION_POINTS];
|
||||
|
||||
CPtrList CWorld::ms_bigBuildingsList[4];// = (CPtrList*)0x6FAB60;
|
||||
CPtrList CWorld::ms_listMovingEntityPtrs;// = *(CPtrList*)0x8F433C;
|
||||
CSector CWorld::ms_aSectors[NUMSECTORS_Y][NUMSECTORS_X];// = (CSector (*)[NUMSECTORS_Y])0x665608;
|
||||
uint16 CWorld::ms_nCurrentScanCode;// = *(uint16*)0x95CC64;
|
||||
CPtrList CWorld::ms_bigBuildingsList[4];
|
||||
CPtrList CWorld::ms_listMovingEntityPtrs;
|
||||
CSector CWorld::ms_aSectors[NUMSECTORS_Y][NUMSECTORS_X];
|
||||
uint16 CWorld::ms_nCurrentScanCode;
|
||||
|
||||
uint8 CWorld::PlayerInFocus;// = *(uint8 *)0x95CD61;
|
||||
uint8 CWorld::PlayerInFocus;
|
||||
CPlayerInfo CWorld::Players[NUMPLAYERS];
|
||||
bool CWorld::bNoMoreCollisionTorque;// = *(bool*)0x95CDCC;
|
||||
CEntity *CWorld::pIgnoreEntity;// = *(CEntity**)0x8F6494;
|
||||
bool CWorld::bIncludeDeadPeds;// = *(bool*)0x95CD8F;
|
||||
bool CWorld::bSecondShift;// = *(bool*)0x95CD54;
|
||||
bool CWorld::bForceProcessControl;// = *(bool*)0x95CD6C;
|
||||
bool CWorld::bProcessCutsceneOnly;// = *(bool*)0x95CD8B;
|
||||
bool CWorld::bNoMoreCollisionTorque;
|
||||
CEntity *CWorld::pIgnoreEntity;
|
||||
bool CWorld::bIncludeDeadPeds;
|
||||
bool CWorld::bSecondShift;
|
||||
bool CWorld::bForceProcessControl;
|
||||
bool CWorld::bProcessCutsceneOnly;
|
||||
|
||||
bool CWorld::bDoingCarCollisions;// = *(bool*)0x95CD8C;
|
||||
bool CWorld::bIncludeCarTyres;// = *(bool*)0x95CDAA;
|
||||
bool CWorld::bDoingCarCollisions;
|
||||
bool CWorld::bIncludeCarTyres;
|
||||
|
||||
CColPoint CWorld::m_aTempColPts[MAX_COLLISION_POINTS];
|
||||
|
||||
void
|
||||
CWorld::Initialise()
|
||||
@ -165,7 +167,7 @@ CWorld::CameraToIgnoreThisObject(CEntity *ent)
|
||||
bool
|
||||
CWorld::ProcessLineOfSight(const CVector &point1, const CVector &point2, CColPoint &point, CEntity *&entity,
|
||||
bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects,
|
||||
bool checkDummies, bool ignoreSeeThrough, bool ignoreSomeObjects)
|
||||
bool checkDummies, bool ignoreSeeThrough, bool ignoreSomeObjects, bool ignoreShootThrough)
|
||||
{
|
||||
int x, xstart, xend;
|
||||
int y, ystart, yend;
|
||||
@ -184,7 +186,7 @@ CWorld::ProcessLineOfSight(const CVector &point1, const CVector &point2, CColPoi
|
||||
|
||||
#define LOSARGS \
|
||||
CColLine(point1, point2), point, dist, entity, checkBuildings, checkVehicles, checkPeds, checkObjects, \
|
||||
checkDummies, ignoreSeeThrough, ignoreSomeObjects
|
||||
checkDummies, ignoreSeeThrough, ignoreSomeObjects, ignoreShootThrough
|
||||
|
||||
if(xstart == xend && ystart == yend) {
|
||||
// Only one sector
|
||||
@ -266,7 +268,7 @@ CWorld::ProcessLineOfSight(const CVector &point1, const CVector &point2, CColPoi
|
||||
bool
|
||||
CWorld::ProcessLineOfSightSector(CSector §or, const CColLine &line, CColPoint &point, float &dist, CEntity *&entity,
|
||||
bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects,
|
||||
bool checkDummies, bool ignoreSeeThrough, bool ignoreSomeObjects)
|
||||
bool checkDummies, bool ignoreSeeThrough, bool ignoreSomeObjects, bool ignoreShootThrough)
|
||||
{
|
||||
float mindist = dist;
|
||||
bool deadPeds = !!bIncludeDeadPeds;
|
||||
@ -274,39 +276,39 @@ CWorld::ProcessLineOfSightSector(CSector §or, const CColLine &line, CColPoin
|
||||
|
||||
if(checkBuildings) {
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_BUILDINGS], line, point, mindist, entity,
|
||||
ignoreSeeThrough);
|
||||
ignoreSeeThrough, false, ignoreShootThrough);
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_BUILDINGS_OVERLAP], line, point, mindist, entity,
|
||||
ignoreSeeThrough);
|
||||
ignoreSeeThrough, false, ignoreShootThrough);
|
||||
}
|
||||
|
||||
if(checkVehicles) {
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_VEHICLES], line, point, mindist, entity,
|
||||
ignoreSeeThrough);
|
||||
ignoreSeeThrough, false, ignoreShootThrough);
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_VEHICLES_OVERLAP], line, point, mindist, entity,
|
||||
ignoreSeeThrough);
|
||||
ignoreSeeThrough, false, ignoreShootThrough);
|
||||
}
|
||||
|
||||
if(checkPeds) {
|
||||
if(deadPeds) bIncludeDeadPeds = true;
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_PEDS], line, point, mindist, entity,
|
||||
ignoreSeeThrough);
|
||||
ignoreSeeThrough, false, ignoreShootThrough);
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_PEDS_OVERLAP], line, point, mindist, entity,
|
||||
ignoreSeeThrough);
|
||||
ignoreSeeThrough, false, ignoreShootThrough);
|
||||
bIncludeDeadPeds = false;
|
||||
}
|
||||
|
||||
if(checkObjects) {
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_OBJECTS], line, point, mindist, entity,
|
||||
ignoreSeeThrough, ignoreSomeObjects);
|
||||
ignoreSeeThrough, ignoreSomeObjects, ignoreShootThrough);
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_OBJECTS_OVERLAP], line, point, mindist, entity,
|
||||
ignoreSeeThrough, ignoreSomeObjects);
|
||||
ignoreSeeThrough, ignoreSomeObjects, ignoreShootThrough);
|
||||
}
|
||||
|
||||
if(checkDummies) {
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_DUMMIES], line, point, mindist, entity,
|
||||
ignoreSeeThrough);
|
||||
ignoreSeeThrough, false, ignoreShootThrough);
|
||||
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_DUMMIES_OVERLAP], line, point, mindist, entity,
|
||||
ignoreSeeThrough);
|
||||
ignoreSeeThrough, false, ignoreShootThrough);
|
||||
}
|
||||
|
||||
bIncludeDeadPeds = deadPeds;
|
||||
@ -320,7 +322,7 @@ CWorld::ProcessLineOfSightSector(CSector §or, const CColLine &line, CColPoin
|
||||
|
||||
bool
|
||||
CWorld::ProcessLineOfSightSectorList(CPtrList &list, const CColLine &line, CColPoint &point, float &dist,
|
||||
CEntity *&entity, bool ignoreSeeThrough, bool ignoreSomeObjects)
|
||||
CEntity *&entity, bool ignoreSeeThrough, bool ignoreSomeObjects, bool ignoreShootThrough)
|
||||
{
|
||||
bool deadPeds = false;
|
||||
float mindist = dist;
|
||||
@ -347,7 +349,7 @@ CWorld::ProcessLineOfSightSectorList(CPtrList &list, const CColLine &line, CColP
|
||||
colmodel = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel();
|
||||
|
||||
if(colmodel && CCollision::ProcessLineOfSight(line, e->GetMatrix(), *colmodel, point, dist,
|
||||
ignoreSeeThrough))
|
||||
ignoreSeeThrough, ignoreShootThrough))
|
||||
entity = e;
|
||||
}
|
||||
}
|
||||
@ -436,7 +438,7 @@ CWorld::ProcessVerticalLineSectorList(CPtrList &list, const CColLine &line, CCol
|
||||
|
||||
colmodel = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel();
|
||||
if(CCollision::ProcessVerticalLine(line, e->GetMatrix(), *colmodel, point, dist,
|
||||
ignoreSeeThrough, poly))
|
||||
ignoreSeeThrough, false, poly))
|
||||
entity = e;
|
||||
}
|
||||
}
|
||||
@ -637,7 +639,7 @@ CWorld::GetIsLineOfSightSectorListClear(CPtrList &list, const CColLine &line, bo
|
||||
|
||||
colmodel = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel();
|
||||
|
||||
if(CCollision::TestLineOfSight(line, e->GetMatrix(), *colmodel, ignoreSeeThrough))
|
||||
if(CCollision::TestLineOfSight(line, e->GetMatrix(), *colmodel, ignoreSeeThrough, false))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -71,6 +71,7 @@ public:
|
||||
static bool bProcessCutsceneOnly;
|
||||
static bool bDoingCarCollisions;
|
||||
static bool bIncludeCarTyres;
|
||||
static CColPoint m_aTempColPts[MAX_COLLISION_POINTS];
|
||||
|
||||
static void Remove(CEntity *entity);
|
||||
static void Add(CEntity *entity);
|
||||
@ -90,9 +91,9 @@ public:
|
||||
|
||||
static bool CameraToIgnoreThisObject(CEntity *ent);
|
||||
|
||||
static bool ProcessLineOfSight(const CVector &point1, const CVector &point2, CColPoint &point, CEntity *&entity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool ignoreSeeThrough, bool ignoreSomeObjects = false);
|
||||
static bool ProcessLineOfSightSector(CSector §or, const CColLine &line, CColPoint &point, float &dist, CEntity *&entity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool ignoreSeeThrough, bool ignoreSomeObjects = false);
|
||||
static bool ProcessLineOfSightSectorList(CPtrList &list, const CColLine &line, CColPoint &point, float &dist, CEntity *&entity, bool ignoreSeeThrough, bool ignoreSomeObjects = false);
|
||||
static bool ProcessLineOfSight(const CVector &point1, const CVector &point2, CColPoint &point, CEntity *&entity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool ignoreSeeThrough, bool ignoreSomeObjects = false, bool ignoreShootThrough = false);
|
||||
static bool ProcessLineOfSightSector(CSector §or, const CColLine &line, CColPoint &point, float &dist, CEntity *&entity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool ignoreSeeThrough, bool ignoreSomeObjects, bool ignoreShootThrough);
|
||||
static bool ProcessLineOfSightSectorList(CPtrList &list, const CColLine &line, CColPoint &point, float &dist, CEntity *&entity, bool ignoreSeeThrough, bool ignoreSomeObjects, bool ignoreShootThrough);
|
||||
static bool ProcessVerticalLine(const CVector &point1, float z2, CColPoint &point, CEntity *&entity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool ignoreSeeThrough, CStoredCollPoly *poly);
|
||||
static bool ProcessVerticalLineSector(CSector §or, const CColLine &line, CColPoint &point, CEntity *&entity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool ignoreSeeThrough, CStoredCollPoly *poly);
|
||||
static bool ProcessVerticalLineSectorList(CPtrList &list, const CColLine &line, CColPoint &point, float &dist, CEntity *&entity, bool ignoreSeeThrough, CStoredCollPoly *poly);
|
||||
|
@ -273,7 +273,7 @@ DebugMenuPopulate(void)
|
||||
{
|
||||
if(1){
|
||||
static const char *weathers[] = {
|
||||
"Sunny", "Cloudy", "Rainy", "Foggy"
|
||||
"Sunny", "Cloudy", "Rainy", "Foggy", "Extrasunny", "Stormy"
|
||||
};
|
||||
DebugMenuEntry *e;
|
||||
e = DebugMenuAddVar("Time & Weather", "Current Hour", &CClock::GetHoursRef(), nil, 1, 0, 23, nil);
|
||||
@ -281,9 +281,9 @@ DebugMenuPopulate(void)
|
||||
e = DebugMenuAddVar("Time & Weather", "Current Minute", &CClock::GetMinutesRef(),
|
||||
[](){ CWeather::InterpolationValue = CClock::GetMinutes()/60.0f; }, 1, 0, 59, nil);
|
||||
DebugMenuEntrySetWrap(e, true);
|
||||
e = DebugMenuAddVar("Time & Weather", "Old Weather", (int16*)&CWeather::OldWeatherType, nil, 1, 0, 3, weathers);
|
||||
e = DebugMenuAddVar("Time & Weather", "Old Weather", (int16*)&CWeather::OldWeatherType, nil, 1, 0, 5, weathers);
|
||||
DebugMenuEntrySetWrap(e, true);
|
||||
e = DebugMenuAddVar("Time & Weather", "New Weather", (int16*)&CWeather::NewWeatherType, nil, 1, 0, 3, weathers);
|
||||
e = DebugMenuAddVar("Time & Weather", "New Weather", (int16*)&CWeather::NewWeatherType, nil, 1, 0, 5, weathers);
|
||||
DebugMenuEntrySetWrap(e, true);
|
||||
DebugMenuAddVar("Time & Weather", "Wind", (float*)&CWeather::Wind, nil, 0.1f, 0.0f, 1.0f);
|
||||
DebugMenuAddVar("Time & Weather", "Time scale", (float*)&CTimer::GetTimeScale(), nil, 0.1f, 0.0f, 10.0f);
|
||||
@ -337,7 +337,11 @@ DebugMenuPopulate(void)
|
||||
DebugMenuAddCmd("Spawn", "Spawn Banshee", [](){ SpawnCar(MI_BANSHEE); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn Cuban", [](){ SpawnCar(MI_CUBAN); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn Voodoo", [](){ SpawnCar(MI_VOODOO); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn Maverick", [](){ SpawnCar(MI_MAVERICK); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn VCN Maverick", [](){ SpawnCar(MI_VCNMAV); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn Sparrow", [](){ SpawnCar(MI_SPARROW); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn Sea Sparrow", [](){ SpawnCar(MI_SEASPAR); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn Hunter", [](){ SpawnCar(MI_HUNTER); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn Rhino", [](){ SpawnCar(MI_RHINO); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn Firetruck", [](){ SpawnCar(MI_FIRETRUCK); });
|
||||
DebugMenuAddCmd("Spawn", "Spawn Predator", [](){ SpawnCar(MI_PREDATOR); });
|
||||
|
Reference in New Issue
Block a user