void CJaw::PostSerialize() { BaseClass::PostSerialize(); if(m_auxSlotUsed) { SetViewMode(0); DrawSlot(eIGS_ThirdPersonAux,true); } else if (GetOwner() != 0 && !IsAttachedToBack() && !IsAttachedToHand()) { Hide(true); } else if (!IsOwnerFP()) { SetViewMode(eIVM_ThirdPerson); DrawSlot(eIGS_ThirdPerson, true); DrawSlot(eIGS_ThirdPersonAux,false); } if (m_smokeActive) { Pickalize(false, true); } if (GetOwner() != 0) { CActor* pOwner = GetOwnerActor(); IInventory* pInventory = pOwner ? pOwner->GetInventory() : 0; UnregisterUsedAmmoWithInventory(pInventory); RegisterUsedAmmoWithInventory(pInventory); } }
//------------------------------------------------------------------------ void CItem::PostFilterView(struct SViewParams &viewParams) { if (m_camerastats.animating && !m_camerastats.follow) { const Matrix34 tm = GetEntity()->GetSlotWorldTM(eIGS_FirstPerson); Vec3 offset(0.0f,0.0f,0.0f); offset += tm.GetColumn(0).GetNormalized()*m_camerastats.pos.x; offset += tm.GetColumn(1).GetNormalized()*m_camerastats.pos.y; offset += tm.GetColumn(2).GetNormalized()*m_camerastats.pos.z; viewParams.position+=offset; viewParams.rotation*=m_camerastats.rot; viewParams.blend=true; viewParams.viewID=5; } if (m_camerastats.animating && m_stats.mounted && !m_camerastats.helper.empty() && IsOwnerFP()) { viewParams.position = GetSlotHelperPos(eIGS_FirstPerson, m_camerastats.helper, true); viewParams.rotation = Quat(GetSlotHelperRotation(eIGS_FirstPerson, m_camerastats.helper, true)); viewParams.blend = true; viewParams.viewID=5; viewParams.nearplane = 0.1f; } }
//======================================= void CRocketLauncher::Select(bool select) { if(select && m_auxSlotUsed) { DrawSlot(eIGS_ThirdPersonAux,false); m_auxSlotUsed = false; } CWeapon::Select(select); if(select) { if(IsOwnerFP()) { ActivateLaserDot(true,true); m_laserFPOn = true; } else { ActivateTPLaser(true); m_laserTPOn = true; } } else { m_laserFPOn = false; ActivateTPLaser(false); //Will do the rest (FP and TP) } }
bool CJaw::Init(IGameObject * pGameObject) { if(!CWeapon::Init(pGameObject)) return false; eGeometrySlot geometrySlot = IsOwnerFP() ? eIGS_FirstPerson : eIGS_ThirdPerson; m_laserGuider.Initialize(GetEntityId(), &CItemSharedParams::GetDefaultLaserParameters(), geometrySlot); return true; }
void CHeavyMountedWeapon::StartUse(EntityId userId) { HighlightWeapon(false); if(m_rippedOff) { m_stats.dropped = false; BaseClass::StartUse(userId); } else { CWeapon::StartUse(userId); if (IsOwnerFP()) { DrawSlot(eIGS_FirstPerson, true, true); } } RegisterAsUser(); CActor* pOwner = GetOwnerActor(); if (pOwner) { CHANGED_NETWORK_STATE(pOwner, CPlayer::ASPECT_CURRENT_ITEM); if (!m_rippedOff) { IPlayerInput* pPlayerInput = pOwner && pOwner->IsPlayer() ? static_cast<CPlayer*>(pOwner)->GetPlayerInput() : 0; if (pPlayerInput) pPlayerInput->ClearXIMovement(); } } m_expended_ammo = 0; }