mirror of
https://github.com/GTAmodding/re3.git
synced 2025-07-14 12:44:08 +00:00
Weapon layer in Peds
This commit is contained in:
parent
ede6b7db6a
commit
acd1ea9909
36 changed files with 2182 additions and 875 deletions
|
@ -1627,20 +1627,6 @@ CCam::Process_FollowPedWithMouse(const CVector &CameraTarget, float TargetOrient
|
|||
entity = nil;
|
||||
}
|
||||
|
||||
if(CamTargetEntity->m_rwObject){
|
||||
// what's going on here?
|
||||
if(RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_WEAPON_PUMP) ||
|
||||
RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_WEAPON_THROW) ||
|
||||
RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_WEAPON_THROWU) ||
|
||||
RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_WEAPON_START_THROW)){
|
||||
CPed *player = FindPlayerPed();
|
||||
float PlayerDist = (Source - player->GetPosition()).Magnitude();
|
||||
if(PlayerDist < 2.75f)
|
||||
Near = PlayerDist/2.75f * DEFAULT_NEAR - 0.3f;
|
||||
RwCameraSetNearClipPlane(Scene.camera, Max(Near, 0.1f));
|
||||
}
|
||||
}
|
||||
|
||||
TheCamera.m_bCamDirectlyInFront = false;
|
||||
TheCamera.m_bCamDirectlyBehind = false;
|
||||
|
||||
|
|
|
@ -375,11 +375,11 @@ CFileLoader::FindRelatedModelInfoCB(RpAtomic *atomic, void *data)
|
|||
mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(name, nil);
|
||||
if(mi){
|
||||
assert(mi->IsSimple());
|
||||
CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
|
||||
mi->SetAtomic(n, atomic);
|
||||
RpClumpRemoveAtomic(clump, atomic);
|
||||
RpAtomicSetFrame(atomic, RwFrameCreate());
|
||||
CVisibilityPlugins::SetAtomicModelInfo(atomic, mi);
|
||||
CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
|
||||
}else{
|
||||
debug("Can't find Atomic %s\n", name);
|
||||
}
|
||||
|
@ -506,11 +506,11 @@ CFileLoader::SetRelatedModelInfoCB(RpAtomic *atomic, void *data)
|
|||
|
||||
nodename = GetFrameNodeName(RpAtomicGetFrame(atomic));
|
||||
GetNameAndLOD(nodename, name, &n);
|
||||
CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
|
||||
gpRelatedModelInfo->SetAtomic(n, atomic);
|
||||
RpClumpRemoveAtomic(clump, atomic);
|
||||
RpAtomicSetFrame(atomic, RwFrameCreate());
|
||||
CVisibilityPlugins::SetAtomicModelInfo(atomic, gpRelatedModelInfo);
|
||||
CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
|
||||
return atomic;
|
||||
}
|
||||
|
||||
|
|
|
@ -314,6 +314,7 @@ bool CGame::Initialise(const char* datFile)
|
|||
printf("Streaming uses %dK of its memory", CStreaming::ms_memoryUsed / 1024);
|
||||
LoadingScreen("Loading the Game", "Load animations", GetRandomSplashScreen());
|
||||
CAnimManager::LoadAnimFiles();
|
||||
CStreaming::LoadInitialWeapons();
|
||||
CPed::Initialise();
|
||||
CRouteNode::Initialise();
|
||||
CEventList::Initialise();
|
||||
|
|
|
@ -65,17 +65,36 @@ extern bool gbFastTime;
|
|||
void WeaponCheat()
|
||||
{
|
||||
CHud::SetHelpMessage(TheText.Get("CHEAT2"), true);
|
||||
|
||||
CStreaming::RequestModel(MI_GRENADE, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::RequestModel(MI_BOMB, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::RequestModel(MI_AK47, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::RequestModel(MI_BASEBALL_BAT, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::RequestModel(MI_COLT, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::RequestModel(MI_ROCKETLAUNCHER, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::RequestModel(MI_SHOTGUN, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::RequestModel(MI_SNIPER, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::RequestModel(MI_MP5, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::LoadAllRequestedModels(false);
|
||||
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_BASEBALLBAT, 0);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_COLT45, 100);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_UZI, 100);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_MP5, 100);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_SHOTGUN, 20);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_AK47, 200);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_M16, 200);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_SNIPERRIFLE, 5);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_ROCKETLAUNCHER, 5);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_MOLOTOV, 5);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_GRENADE, 5);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_FLAMETHROWER, 200);
|
||||
FindPlayerPed()->GiveWeapon(WEAPONTYPE_DETONATOR_GRENADE, 5);
|
||||
|
||||
CStreaming::SetModelIsDeletable(MI_GRENADE);
|
||||
CStreaming::SetModelIsDeletable(MI_BOMB);
|
||||
CStreaming::SetModelIsDeletable(MI_AK47);
|
||||
CStreaming::SetModelIsDeletable(MI_BASEBALL_BAT);
|
||||
CStreaming::SetModelIsDeletable(MI_COLT);
|
||||
CStreaming::SetModelIsDeletable(MI_ROCKETLAUNCHER);
|
||||
CStreaming::SetModelIsDeletable(MI_SHOTGUN);
|
||||
CStreaming::SetModelIsDeletable(MI_SNIPER);
|
||||
CStreaming::SetModelIsDeletable(MI_MP5);
|
||||
}
|
||||
|
||||
void HealthCheat()
|
||||
|
|
|
@ -499,8 +499,20 @@ INITSAVEBUF
|
|||
pPed->CharCreatedBy = pBufferPlayer->CharCreatedBy;
|
||||
pPed->m_currentWeapon = 0;
|
||||
pPed->m_maxWeaponTypeAllowed = pBufferPlayer->m_maxWeaponTypeAllowed;
|
||||
for (int i = 0; i < WEAPONTYPE_TOTAL_INVENTORY_WEAPONS; i++)
|
||||
pPed->m_weapons[i] = pBufferPlayer->m_weapons[i];
|
||||
for (int i = 0; i < TOTAL_WEAPON_SLOTS; i++) {
|
||||
if (pBufferPlayer->HasWeaponSlot(i)) {
|
||||
int modelId = CWeaponInfo::GetWeaponInfo(pBufferPlayer->GetWeapon(i).m_eWeaponType)->m_nModelId;
|
||||
if (modelId != -1) {
|
||||
CStreaming::RequestModel(modelId, STREAMFLAGS_DEPENDENCY);
|
||||
int modelId2 = CWeaponInfo::GetWeaponInfo(pBufferPlayer->GetWeapon(i).m_eWeaponType)->m_nModel2Id;
|
||||
if (modelId2 != -1)
|
||||
CStreaming::RequestModel(modelId2, STREAMFLAGS_DEPENDENCY);
|
||||
|
||||
CStreaming::LoadAllRequestedModels(false);
|
||||
}
|
||||
pPed->GiveWeapon(pBufferPlayer->GetWeapon(i).m_eWeaponType, pBufferPlayer->GetWeapon(i).m_nAmmoTotal);
|
||||
}
|
||||
}
|
||||
|
||||
if (pedtype == PEDTYPE_PLAYER1) {
|
||||
pPed->m_wepAccuracy = 100;
|
||||
|
|
|
@ -1332,12 +1332,14 @@ CStreaming::LoadInitialPeds(void)
|
|||
RequestModel(MI_COP, STREAMFLAGS_DONT_REMOVE);
|
||||
RequestModel(MI_MALE01, STREAMFLAGS_DONT_REMOVE);
|
||||
RequestModel(MI_TAXI_D, STREAMFLAGS_DONT_REMOVE);
|
||||
}
|
||||
|
||||
// TODO(MIAMI): remove this hack once we can stream weapons
|
||||
for(int i = 0; i < MODELINFOSIZE; i++)
|
||||
if(CModelInfo::GetModelInfo(i) &&
|
||||
CModelInfo::GetModelInfo(i)->GetModelType() == MITYPE_WEAPON)
|
||||
RequestModel(i, STREAMFLAGS_DONT_REMOVE);
|
||||
void
|
||||
CStreaming::LoadInitialWeapons(void)
|
||||
{
|
||||
// TODO(Miami): Enable when weapons have been ported
|
||||
//CStreaming::RequestModel(MI_NIGHTSTICK, STREAMFLAGS_DONT_REMOVE);
|
||||
CStreaming::RequestModel(MI_MISSILE, STREAMFLAGS_DONT_REMOVE);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -165,6 +165,7 @@ public:
|
|||
static void SetModelTxdIsDeletable(int32 id);
|
||||
static void SetMissionDoesntRequireModel(int32 id);
|
||||
static void LoadInitialPeds(void);
|
||||
static void LoadInitialWeapons(void);
|
||||
static void LoadInitialVehicles(void);
|
||||
static void StreamVehiclesAndPeds(void);
|
||||
static void StreamZoneModels(const CVector &pos);
|
||||
|
|
|
@ -2048,9 +2048,12 @@ CWorld::Process(void)
|
|||
movingPed->EnteringCar()) {
|
||||
CVehicle *movingCar = movingPed->m_pMyVehicle;
|
||||
if(movingCar) {
|
||||
#ifdef GTA_TRAIN
|
||||
if(movingCar->IsTrain()) {
|
||||
movingPed->SetPedPositionInTrain();
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
switch(movingPed->m_nPedState) {
|
||||
case PED_ENTER_CAR:
|
||||
case PED_CARJACK: movingPed->EnterCar(); break;
|
||||
|
@ -2235,4 +2238,5 @@ CWorld::UseDetonator(CEntity *pEntity)
|
|||
pVehicle->m_pBlowUpEntity->RegisterReference(&pVehicle->m_pBlowUpEntity);
|
||||
}
|
||||
}
|
||||
CProjectileInfo::RemoveDetonatorProjectiles();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue