//------------------------------------------------------------------------ void CProjectile::SetParams(EntityId ownerId, EntityId hostId, EntityId weaponId, int damage, int hitTypeId, float damageDrop /*= 0.0f*/, float damageDropMinR /*=0.0f*/) { m_ownerId = ownerId; m_weaponId = weaponId; m_hostId = hostId; m_damage = damage; m_hitTypeId = hitTypeId; m_damageDropPerMeter = damageDrop; m_damageDropMinDisSqr = damageDropMinR*damageDropMinR; if(m_hostId || m_ownerId) { IEntity *pSelfEntity = GetEntity(); if(pSelfEntity) pSelfEntity->AddEntityLink("Shooter", m_ownerId); IEntity *pEntity = gEnv->pEntitySystem->GetEntity(m_hostId?m_hostId:m_ownerId); if(pEntity) { if(pSelfEntity) { //need to set AI species to the shooter - not to be scared of it's own rockets IAIObject *projectileAI = pSelfEntity->GetAI(); IAIObject *shooterAI = pEntity->GetAI(); if(projectileAI && shooterAI) projectileAI->SetFactionID(shooterAI->GetFactionID()); } if(m_pPhysicalEntity && m_pPhysicalEntity->GetType()==PE_PARTICLE) { pe_params_particle pparams; pparams.pColliderToIgnore = pEntity->GetPhysics(); m_pPhysicalEntity->SetParams(&pparams); } } } }
//------------------------------------------------------------------------ void CProjectile::SetParams(EntityId ownerId, EntityId hostId, EntityId weaponId, int fmId, int damage, int hitTypeId) { m_ownerId = ownerId; m_weaponId = weaponId; m_fmId = fmId; m_hostId = hostId; m_damage = damage; m_hitTypeId = hitTypeId; if (m_hostId || m_ownerId) { IEntity* pSelfEntity = GetEntity(); if (pSelfEntity) pSelfEntity->AddEntityLink("Shooter", m_ownerId); IEntity *pEntity = gEnv->pEntitySystem->GetEntity(m_hostId?m_hostId:m_ownerId); if (pEntity) { if (pSelfEntity) { //need to set AI species to the shooter - not to be scared of it's own rockets IAIActor* pAIActor = CastToIAIActorSafe(pSelfEntity->GetAI()); IAIActor* pShooterAIActor = CastToIAIActorSafe(pEntity->GetAI()); if (pAIActor && pShooterAIActor) { AgentParameters ap = pAIActor->GetParameters(); ap.m_nSpecies = pShooterAIActor->GetParameters().m_nSpecies; pAIActor->SetParameters(ap); } } if (m_pPhysicalEntity && m_pPhysicalEntity->GetType()==PE_PARTICLE) { pe_params_particle pparams; pparams.pColliderToIgnore = pEntity->GetPhysics(); m_pPhysicalEntity->SetParams(&pparams); } } } }