mirror of
https://github.com/halpz/re3.git
synced 2024-12-27 18:25:28 +00:00
Merge branch 'master' into miami
# Conflicts: # src/core/Game.cpp
This commit is contained in:
commit
12fbf8cede
|
@ -23,7 +23,6 @@ uint32 CBridge::TimeOfBridgeBecomingOperational;
|
|||
|
||||
void CBridge::Init()
|
||||
{
|
||||
#ifdef GTA_BRIDGE
|
||||
FindBridgeEntities();
|
||||
OldLift = -1.0f;
|
||||
if (pLiftPart && pWeight)
|
||||
|
@ -36,12 +35,10 @@ void CBridge::Init()
|
|||
|
||||
ThePaths.SetLinksBridgeLights(-330.0, -230.0, -700.0, -588.0, true);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void CBridge::Update()
|
||||
{
|
||||
#ifdef GTA_BRIDGE
|
||||
if (!pLiftPart || !pWeight)
|
||||
return;
|
||||
|
||||
|
@ -116,21 +113,15 @@ void CBridge::Update()
|
|||
ThePaths.SetLinksBridgeLights(-330.0, -230.0, -700.0, -588.0, true);
|
||||
else if (State == STATE_LIFT_PART_IS_DOWN && OldState == STATE_LIFT_PART_MOVING_DOWN)
|
||||
ThePaths.SetLinksBridgeLights(-330.0, -230.0, -700.0, -588.0, false);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CBridge::ShouldLightsBeFlashing()
|
||||
{
|
||||
#ifdef GTA_BRIDGE
|
||||
return State != STATE_LIFT_PART_IS_DOWN;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void CBridge::FindBridgeEntities()
|
||||
{
|
||||
#ifdef GTA_BRIDGE
|
||||
pWeight = nil;
|
||||
pLiftRoad = nil;
|
||||
pLiftPart = nil;
|
||||
|
@ -147,17 +138,12 @@ void CBridge::FindBridgeEntities()
|
|||
pWeight = entry;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CBridge::ThisIsABridgeObjectMovingUp(int index)
|
||||
{
|
||||
#ifdef GTA_BRIDGE
|
||||
if (index != MI_BRIDGEROADSEGMENT && index != MI_BRIDGELIFT)
|
||||
return false;
|
||||
|
||||
return State == STATE_LIFT_PART_ABOUT_TO_MOVE_UP || State == STATE_LIFT_PART_MOVING_UP;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -696,7 +696,7 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle)
|
|||
if (pVehicle->bExtendedRange)
|
||||
threshold *= 1.5f;
|
||||
if (distanceToPlayer > threshold && !CGarages::IsPointWithinHideOutGarage(pVehicle->GetPosition())){
|
||||
if (pVehicle->GetIsOnScreenAndNotCulled()){
|
||||
if (pVehicle->GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(pVehicle)) {
|
||||
pVehicle->bFadeOut = true;
|
||||
}else{
|
||||
CWorld::Remove(pVehicle);
|
||||
|
@ -722,7 +722,7 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle)
|
|||
if (pVehicle->GetStatus() != STATUS_WRECKED || pVehicle->m_nTimeOfDeath == 0)
|
||||
return;
|
||||
if (CTimer::GetTimeInMilliseconds() > pVehicle->m_nTimeOfDeath + 60000 &&
|
||||
!pVehicle->GetIsOnScreenAndNotCulled()){
|
||||
!(pVehicle->GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(pVehicle)) ){
|
||||
if ((pVehicle->GetPosition() - vecPlayerPos).MagnitudeSqr() > SQR(7.5f)){
|
||||
if (!CGarages::IsPointWithinHideOutGarage(pVehicle->GetPosition())){
|
||||
CWorld::Remove(pVehicle);
|
||||
|
@ -2743,13 +2743,9 @@ bool CCarCtrl::ThisRoadObjectCouldMove(int16 mi)
|
|||
|
||||
bool CCarCtrl::MapCouldMoveInThisArea(float x, float y)
|
||||
{
|
||||
#ifdef GTA_BRIDGE // actually they forgot that in VC...
|
||||
// bridge moves up and down
|
||||
return x > -342.0f && x < -219.0f &&
|
||||
y > -677.0f && y < -580.0f;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
float CCarCtrl::FindSpeedMultiplierWithSpeedFromNodes(int8 type)
|
||||
|
|
|
@ -1424,7 +1424,6 @@ CPathFind::RemoveBadStartNode(CVector pos, CPathNode **nodes, int16 *n)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef GTA_BRIDGE
|
||||
void
|
||||
CPathFind::SetLinksBridgeLights(float x1, float x2, float y1, float y2, bool enable)
|
||||
{
|
||||
|
@ -1436,7 +1435,6 @@ CPathFind::SetLinksBridgeLights(float x1, float x2, float y1, float y2, bool ena
|
|||
m_carPathLinks[i].bBridgeLights = enable;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
//--MIAMI: done
|
||||
void
|
||||
|
|
|
@ -273,12 +273,8 @@ CTrafficLights::ShouldCarStopForLight(CVehicle *vehicle, bool alwaysStop)
|
|||
bool
|
||||
CTrafficLights::ShouldCarStopForBridge(CVehicle *vehicle)
|
||||
{
|
||||
#ifdef GTA_BRIDGE
|
||||
return ThePaths.m_carPathLinks[vehicle->AutoPilot.m_nNextPathNodeInfo].bBridgeLights &&
|
||||
!ThePaths.m_carPathLinks[vehicle->AutoPilot.m_nCurrentPathNodeInfo].bBridgeLights;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -633,11 +633,7 @@ CCamera::CamControl(void)
|
|||
m_bInitialNodeFound = false;
|
||||
m_bInitialNoNodeStaticsSet = false;
|
||||
}
|
||||
#ifdef GTA_TRAIN
|
||||
Process_Train_Camera_Control();
|
||||
#else
|
||||
assert(0 && "this can't happen");
|
||||
#endif
|
||||
}else{
|
||||
if(((CVehicle*)pTargetEntity)->IsBoat())
|
||||
boatTarget = true;
|
||||
|
@ -2713,7 +2709,6 @@ CCamera::DontProcessObbeCinemaCamera(void)
|
|||
bDidWeProcessAnyCinemaCam = false;
|
||||
}
|
||||
|
||||
#ifdef GTA_TRAIN
|
||||
void
|
||||
CCamera::LoadTrainCamNodes(char const *name)
|
||||
{
|
||||
|
@ -2891,7 +2886,6 @@ CCamera::Process_Train_Camera_Control(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void
|
||||
|
|
|
@ -377,9 +377,7 @@ bool CGame::Initialise(const char* datFile)
|
|||
CWorld::RepositionCertainDynamicObjects();
|
||||
#endif
|
||||
LoadingScreen("Loading the Game", "Initialise vehicle paths", nil);
|
||||
#ifdef GTA_ZONECULL
|
||||
CCullZones::ResolveVisibilities();
|
||||
#endif
|
||||
CTrain::InitTrains();
|
||||
CPlane::InitPlanes();
|
||||
CCredits::Init();
|
||||
|
@ -498,9 +496,7 @@ void CGame::ReInitGameObjectVariables(void)
|
|||
CSpecialFX::Init();
|
||||
CWaterCannons::Init();
|
||||
CParticle::ReloadConfig();
|
||||
#ifdef GTA_ZONECULL
|
||||
CCullZones::ResolveVisibilities();
|
||||
#endif
|
||||
|
||||
if ( !FrontEndMenuManager.m_bWantToLoad )
|
||||
{
|
||||
|
@ -535,9 +531,7 @@ void CGame::ReloadIPLs(void)
|
|||
#ifndef MIAMI
|
||||
CWorld::RepositionCertainDynamicObjects();
|
||||
#endif
|
||||
#ifdef GTA_ZONECULL
|
||||
CCullZones::ResolveVisibilities();
|
||||
#endif
|
||||
CRenderer::SortBIGBuildings();
|
||||
CTimer::Update();
|
||||
}
|
||||
|
|
|
@ -2235,9 +2235,7 @@ CStreaming::ProcessEntitiesInSectorList(CPtrList &list, float x, float y, float
|
|||
if(xmin < pos.x && pos.x < xmax &&
|
||||
ymin < pos.y && pos.y < ymax &&
|
||||
(CVector2D(x, y) - pos).MagnitudeSqr() < lodDistSq)
|
||||
#ifdef GTA_ZONECULL
|
||||
if(CRenderer::IsEntityCullZoneVisible(e))
|
||||
#endif
|
||||
RequestModel(e->GetModelIndex(), 0);
|
||||
}
|
||||
}
|
||||
|
@ -2261,9 +2259,7 @@ CStreaming::ProcessEntitiesInSectorList(CPtrList &list)
|
|||
(!e->IsObject() || ((CObject*)e)->ObjectCreatedBy != TEMP_OBJECT)){
|
||||
CTimeModelInfo *mi = (CTimeModelInfo*)CModelInfo::GetModelInfo(e->GetModelIndex());
|
||||
if (mi->GetModelType() != MITYPE_TIME || CClock::GetIsTimeInRange(mi->GetTimeOn(), mi->GetTimeOff()))
|
||||
#ifdef GTA_ZONECULL
|
||||
if(CRenderer::IsEntityCullZoneVisible(e))
|
||||
#endif
|
||||
RequestModel(e->GetModelIndex(), 0);
|
||||
}
|
||||
}
|
||||
|
@ -2687,9 +2683,7 @@ CStreaming::LoadScene(const CVector &pos)
|
|||
RemoveModel(si - ms_aInfoForModel);
|
||||
}
|
||||
CRenderer::m_loadingPriority = false;
|
||||
#ifdef GTA_ZONECULL
|
||||
CCullZones::ForceCullZoneCoors(pos);
|
||||
#endif
|
||||
DeleteAllRwObjects();
|
||||
#ifndef MIAMI
|
||||
AddModelsToRequestList(pos);
|
||||
|
|
|
@ -38,7 +38,6 @@ CCullZones::Init(void)
|
|||
CurrentFlags_Camera = 0;
|
||||
CurrentFlags_Player = 0;
|
||||
bCurrentSubwayIsInvisible = false;
|
||||
#ifdef GTA_ZONECULL
|
||||
NumCullZones = 0;
|
||||
OldCullZone = -1;
|
||||
EntityIndicesUsed = 0;
|
||||
|
@ -47,10 +46,8 @@ CCullZones::Init(void)
|
|||
aPointersToBigBuildingsForBuildings[i] = -1;
|
||||
for(i = 0; i < NUMTREADABLES; i++)
|
||||
aPointersToBigBuildingsForTreadables[i] = -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef GTA_ZONECULL
|
||||
bool CCullZone::TestLine(CVector vec1, CVector vec2)
|
||||
{
|
||||
CColPoint colPoint;
|
||||
|
@ -216,7 +213,6 @@ CCullZones::DoVisibilityTestCullZone(int zoneId, bool doIt)
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
CCullZones::Update(void)
|
||||
|
@ -229,10 +225,8 @@ CCullZones::Update(void)
|
|||
switch(CTimer::GetFrameCounter() & 7){
|
||||
case 0:
|
||||
case 4:
|
||||
#ifdef GTA_ZONECULL
|
||||
/* Update Cull zone */
|
||||
ForceCullZoneCoors(TheCamera.GetGameCamPosition());
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 2:
|
||||
|
@ -256,7 +250,6 @@ CCullZones::Update(void)
|
|||
void
|
||||
CCullZones::ForceCullZoneCoors(CVector coors)
|
||||
{
|
||||
#ifdef GTA_ZONECULL
|
||||
int32 z;
|
||||
z = FindCullZoneForCoors(coors);
|
||||
if(z != OldCullZone){
|
||||
|
@ -266,10 +259,8 @@ CCullZones::ForceCullZoneCoors(CVector coors)
|
|||
aZones[z].DoStuffEnteringZone();
|
||||
OldCullZone = z;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef GTA_ZONECULL
|
||||
int32
|
||||
CCullZones::FindCullZoneForCoors(CVector coors)
|
||||
{
|
||||
|
@ -282,7 +273,6 @@ CCullZones::FindCullZoneForCoors(CVector coors)
|
|||
return i;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
int32
|
||||
CCullZones::FindAttributesForCoors(CVector coors, int32 *wantedLevel)
|
||||
|
@ -360,7 +350,6 @@ CCullZones::AddCullZone(CVector const &position,
|
|||
CAttributeZone *attrib;
|
||||
|
||||
CVector v;
|
||||
#ifdef GTA_ZONECULL
|
||||
if((flag & ATTRZONE_NOTCULLZONE) == 0){
|
||||
cull = &aZones[NumCullZones++];
|
||||
v = position;
|
||||
|
@ -383,7 +372,6 @@ CCullZones::AddCullZone(CVector const &position,
|
|||
cull->m_groupIndexCount[2] = 0;
|
||||
cull->m_indexStart = 0;
|
||||
}
|
||||
#endif
|
||||
if(flag & ~ATTRZONE_NOTCULLZONE){
|
||||
attrib = &aAttributeZones[NumAttributeZones++];
|
||||
attrib->minx = minx;
|
||||
|
@ -398,7 +386,6 @@ CCullZones::AddCullZone(CVector const &position,
|
|||
}
|
||||
|
||||
|
||||
#ifdef GTA_ZONECULL
|
||||
void
|
||||
CCullZone::DoStuffLeavingZone(void)
|
||||
{
|
||||
|
@ -573,5 +560,4 @@ CCullZones::DoWeHaveMoreThanXOccurencesOfSet(int32 count, uint16 *set)
|
|||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
}
|
|
@ -160,12 +160,6 @@ enum Config {
|
|||
//#define GTA_PS2
|
||||
//#define GTA_XBOX
|
||||
|
||||
#ifndef MIAMI
|
||||
#define GTA_TRAIN // This game has trains
|
||||
#define GTA_BRIDGE // This game has the bridge
|
||||
#define GTA_ZONECULL // This game culls by zones
|
||||
#endif
|
||||
|
||||
// This enables things from the PS2 version on PC
|
||||
#define GTA_PS2_STUFF
|
||||
|
||||
|
|
|
@ -63,10 +63,8 @@ CEntity::CEntity(void)
|
|||
bMeleeProof = false;
|
||||
bOnlyDamagedByPlayer = false;
|
||||
bStreamingDontDelete = false;
|
||||
#ifdef GTA_ZONECULL
|
||||
bZoneCulled = false;
|
||||
bZoneCulled2 = false;
|
||||
#endif
|
||||
|
||||
bRemoveFromWorld = false;
|
||||
bHasHitWall = false;
|
||||
|
@ -153,17 +151,6 @@ CEntity::GetIsOnScreenComplex(void)
|
|||
return TheCamera.IsBoxVisible(boundBox, &TheCamera.GetCameraMatrix());
|
||||
}
|
||||
|
||||
bool
|
||||
CEntity::GetIsOnScreenAndNotCulled(void)
|
||||
{
|
||||
#ifdef GTA_ZONECULL
|
||||
return GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(this);
|
||||
#else
|
||||
return GetIsOnScreen();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CEntity::Add(void)
|
||||
{
|
||||
|
@ -975,10 +962,8 @@ CEntity::SaveEntityFlags(uint8*& buf)
|
|||
if (bMeleeProof) tmp |= BIT(27);
|
||||
if (bOnlyDamagedByPlayer) tmp |= BIT(28);
|
||||
if (bStreamingDontDelete) tmp |= BIT(29);
|
||||
#ifdef GTA_ZONECULL
|
||||
if (bZoneCulled) tmp |= BIT(30);
|
||||
if (bZoneCulled2) tmp |= BIT(31);
|
||||
#endif
|
||||
|
||||
WriteSaveBuf<uint32>(buf, tmp);
|
||||
|
||||
|
@ -1030,10 +1015,8 @@ CEntity::LoadEntityFlags(uint8*& buf)
|
|||
bMeleeProof = !!(tmp & BIT(27));
|
||||
bOnlyDamagedByPlayer = !!(tmp & BIT(28));
|
||||
bStreamingDontDelete = !!(tmp & BIT(29));
|
||||
#ifdef GTA_ZONECULL
|
||||
bZoneCulled = !!(tmp & BIT(30));
|
||||
bZoneCulled2 = !!(tmp & BIT(31));
|
||||
#endif
|
||||
|
||||
tmp = ReadSaveBuf<uint32>(buf);
|
||||
|
||||
|
|
|
@ -71,10 +71,8 @@ public:
|
|||
uint32 bMeleeProof : 1;
|
||||
uint32 bOnlyDamagedByPlayer : 1;
|
||||
uint32 bStreamingDontDelete : 1; // Dont let the streaming remove this
|
||||
#ifdef GTA_ZONECULL
|
||||
uint32 bZoneCulled : 1;
|
||||
uint32 bZoneCulled2 : 1; // only treadables+10m
|
||||
#endif
|
||||
|
||||
// flagsD
|
||||
uint32 bRemoveFromWorld : 1; // remove this entity next time it should be processed
|
||||
|
@ -156,7 +154,6 @@ public:
|
|||
bool GetIsTouching(CVector const ¢er, float r);
|
||||
bool GetIsOnScreen(void);
|
||||
bool GetIsOnScreenComplex(void);
|
||||
bool GetIsOnScreenAndNotCulled(void);
|
||||
bool IsVisible(void) { return m_rwObject && bIsVisible && GetIsOnScreen(); }
|
||||
bool IsVisibleComplex(void) { return m_rwObject && bIsVisible && GetIsOnScreenComplex(); }
|
||||
int16 GetModelIndex(void) const { return m_modelIndex; }
|
||||
|
|
|
@ -717,7 +717,7 @@ CCopPed::ProcessControl(void)
|
|||
return;
|
||||
|
||||
bool dontShoot = false;
|
||||
if (GetIsOnScreenAndNotCulled()) {
|
||||
if (GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(this)) {
|
||||
if (((CTimer::GetFrameCounter() + m_randomSeed) & 0x1F) == 17) {
|
||||
CEntity *foundBuilding = nil;
|
||||
CColPoint foundCol;
|
||||
|
|
|
@ -1263,9 +1263,7 @@ CRenderer::ScanSectorList(CPtrList *lists)
|
|||
continue; // already seen
|
||||
ent->m_scanCode = CWorld::GetCurrentScanCode();
|
||||
|
||||
#ifdef GTA_ZONECULL
|
||||
if(IsEntityCullZoneVisible(ent))
|
||||
#endif
|
||||
switch(SetupEntityVisibility(ent)){
|
||||
case VIS_VISIBLE:
|
||||
ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent;
|
||||
|
@ -1288,14 +1286,12 @@ CRenderer::ScanSectorList(CPtrList *lists)
|
|||
CStreaming::RequestModel(ent->GetModelIndex(), 0);
|
||||
break;
|
||||
}
|
||||
#ifdef GTA_ZONECULL
|
||||
else if(ent->IsBuilding() && ((CBuilding*)ent)->GetIsATreadable()){
|
||||
if(!CStreaming::ms_disableStreaming)
|
||||
if(SetupEntityVisibility(ent) == VIS_STREAMME)
|
||||
if(!m_loadingPriority || CStreaming::ms_numModelsRequested < 10)
|
||||
CStreaming::RequestModel(ent->GetModelIndex(), 0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1317,9 +1313,7 @@ CRenderer::ScanSectorList_Priority(CPtrList *lists)
|
|||
continue; // already seen
|
||||
ent->m_scanCode = CWorld::GetCurrentScanCode();
|
||||
|
||||
#ifdef GTA_ZONECULL
|
||||
if(IsEntityCullZoneVisible(ent))
|
||||
#endif
|
||||
switch(SetupEntityVisibility(ent)){
|
||||
case VIS_VISIBLE:
|
||||
ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent;
|
||||
|
@ -1344,13 +1338,11 @@ CRenderer::ScanSectorList_Priority(CPtrList *lists)
|
|||
}
|
||||
break;
|
||||
}
|
||||
#ifdef GTA_ZONECULL
|
||||
else if(ent->IsBuilding() && ((CBuilding*)ent)->GetIsATreadable()){
|
||||
if(!CStreaming::ms_disableStreaming)
|
||||
if(SetupEntityVisibility(ent) == VIS_STREAMME)
|
||||
CStreaming::RequestModel(ent->GetModelIndex(), 0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1403,9 +1395,7 @@ CRenderer::ScanSectorList_RequestModels(CPtrList *lists)
|
|||
if(ent->m_scanCode == CWorld::GetCurrentScanCode())
|
||||
continue; // already seen
|
||||
ent->m_scanCode = CWorld::GetCurrentScanCode();
|
||||
#ifdef GTA_ZONECULL
|
||||
if(IsEntityCullZoneVisible(ent))
|
||||
#endif
|
||||
if(ShouldModelBeStreamed(ent))
|
||||
CStreaming::RequestModel(ent->GetModelIndex(), 0);
|
||||
}
|
||||
|
@ -1451,7 +1441,6 @@ CRenderer::ShouldModelBeStreamed(CEntity *ent)
|
|||
return dist - FADE_DISTANCE - STREAM_DISTANCE < mi->GetLargestLodDistance();
|
||||
}
|
||||
|
||||
#ifdef GTA_ZONECULL
|
||||
bool
|
||||
CRenderer::IsEntityCullZoneVisible(CEntity *ent)
|
||||
{
|
||||
|
@ -1494,7 +1483,6 @@ CRenderer::IsVehicleCullZoneVisible(CEntity *ent)
|
|||
return !(v->m_pCurGroundEntity && v->m_pCurGroundEntity->bZoneCulled2);
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
CRenderer::RemoveVehiclePedLights(CEntity *ent, bool reset)
|
||||
|
|
|
@ -64,10 +64,8 @@ public:
|
|||
static void SortBIGBuildingsForSectorList(CPtrList *list);
|
||||
|
||||
static bool ShouldModelBeStreamed(CEntity *ent);
|
||||
#ifdef GTA_ZONECULL
|
||||
static bool IsEntityCullZoneVisible(CEntity *ent);
|
||||
static bool IsVehicleCullZoneVisible(CEntity *ent);
|
||||
#endif
|
||||
|
||||
static void RemoveVehiclePedLights(CEntity *ent, bool reset);
|
||||
};
|
||||
|
|
|
@ -38,7 +38,6 @@ CVector CTrain::aStationCoors_S[4];
|
|||
CTrain::CTrain(int32 id, uint8 CreatedBy)
|
||||
: CVehicle(CreatedBy)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(id);
|
||||
m_vehType = VEHICLE_TYPE_TRAIN;
|
||||
pHandling = mod_HandlingManager.GetHandlingData((eHandlingId)mi->m_handlingId);
|
||||
|
@ -61,28 +60,22 @@ CTrain::CTrain(int32 id, uint8 CreatedBy)
|
|||
|
||||
bUsesCollision = true;
|
||||
SetStatus(STATUS_TRAIN_MOVING);
|
||||
#else
|
||||
assert(0 && "No trains in this game");
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
CTrain::SetModelIndex(uint32 id)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
int i;
|
||||
|
||||
CVehicle::SetModelIndex(id);
|
||||
for(i = 0; i < NUM_TRAIN_NODES; i++)
|
||||
m_aTrainNodes[i] = nil;
|
||||
CClumpModelInfo::FillFrameArray(GetClump(), m_aTrainNodes);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
CTrain::ProcessControl(void)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
if(gbModelViewer || m_isFarAway && (CTimer::GetFrameCounter() + m_nWagonId) & 0xF)
|
||||
return;
|
||||
|
||||
|
@ -285,13 +278,11 @@ CTrain::ProcessControl(void)
|
|||
TrainHitStuff(s->m_lists[ENTITYLIST_PEDS_OVERLAP]);
|
||||
}
|
||||
}
|
||||
#endif GTA_TRAIN
|
||||
}
|
||||
|
||||
void
|
||||
CTrain::PreRender(void)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex());
|
||||
|
||||
if(m_bIsFirstWagon){
|
||||
|
@ -351,21 +342,17 @@ CTrain::PreRender(void)
|
|||
CCoronas::TYPE_NORMAL, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON,
|
||||
CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
CTrain::Render(void)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
CEntity::Render();
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
CTrain::TrainHitStuff(CPtrList &list)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
CPtrNode *node;
|
||||
CPhysical *phys;
|
||||
|
||||
|
@ -374,13 +361,11 @@ CTrain::TrainHitStuff(CPtrList &list)
|
|||
if(phys != this && Abs(this->GetPosition().z - phys->GetPosition().z) < 1.5f)
|
||||
phys->bHitByTrain = true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
CTrain::AddPassenger(CPed *ped)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
int i = ped->m_vehEnterType;
|
||||
if((i == TRAIN_POS_LEFT_ENTRY || i == TRAIN_POS_MID_ENTRY || i == TRAIN_POS_RIGHT_ENTRY) && pPassengers[i] == nil){
|
||||
pPassengers[i] = ped;
|
||||
|
@ -393,13 +378,11 @@ CTrain::AddPassenger(CPed *ped)
|
|||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
CTrain::OpenTrainDoor(float ratio)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
if(m_rwObject == nil)
|
||||
return;
|
||||
|
||||
|
@ -424,7 +407,6 @@ CTrain::OpenTrainDoor(float ratio)
|
|||
|
||||
doorL.UpdateRW();
|
||||
doorR.UpdateRW();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -432,7 +414,6 @@ CTrain::OpenTrainDoor(float ratio)
|
|||
void
|
||||
CTrain::InitTrains(void)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
int i, j;
|
||||
CTrain *train;
|
||||
|
||||
|
@ -499,25 +480,21 @@ CTrain::InitTrains(void)
|
|||
for(j = 0; pTrackNodes_S[j].t < StationDist_S[i]; j++);
|
||||
aStationCoors_S[i] = pTrackNodes_S[j].p;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
CTrain::Shutdown(void)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
delete[] pTrackNodes;
|
||||
delete[] pTrackNodes_S;
|
||||
pTrackNodes = nil;
|
||||
pTrackNodes_S = nil;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
CTrain::ReadAndInterpretTrackFile(char *filename, CTrainNode **nodes, int16 *numNodes, int32 numStations, float *stationDists,
|
||||
float *totalLength, float *totalDuration, CTrainInterpolationLine *interpLines, bool rightRail)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
bool readingFile = false;
|
||||
int bp, lp;
|
||||
int i, tmp;
|
||||
|
@ -639,7 +616,6 @@ CTrain::ReadAndInterpretTrackFile(char *filename, CTrainNode **nodes, int16 *num
|
|||
|
||||
// end
|
||||
interpLines[j].time = *totalDuration;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -651,7 +627,6 @@ ProcessTrainAnnouncements(void)
|
|||
void
|
||||
CTrain::UpdateTrains(void)
|
||||
{
|
||||
#ifdef GTA_TRAIN
|
||||
int i, j;
|
||||
uint32 time;
|
||||
float t, deltaT;
|
||||
|
@ -715,5 +690,4 @@ CTrain::UpdateTrains(void)
|
|||
// time offset for each train
|
||||
time += 0x40000/4;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue