SClientGameHitInfo info;
memset(&info, 0, sizeof(info));
info.source.itemId = pItem->GetItemId();
info.source.projectileId = projectitleId;
info.source.ammoClassId = 65535;
info.shared.shooterId = pClient->GetEntityId();
info.shared.targetId = pExp->GetEntityId();
info.shared.material = GetMaterialObject(pGameRules, pExp);
info.shared.partId = 0;
info.shared.pos = vPos;
info.shared.typeId = 1;
info.shared.shootPos = SSystemGlobalEnvironment::Singleton()->GetRenderer()->GetViewCamera();
info.shared.dir = info.shared.pos - info.shared.shootPos;
info.travelDistance = info.shared.dir.GetLength();
info.shared.dir = info.shared.dir / info.travelDistance;
info.source.normal = info.shared.dir * -1.f;
info.bFromRemote = false;
info.canBeReported = true;
info.bRequest = true;
if (isVisCheck ? true : SSystemGlobalEnvironment::Singleton()->GetPhysicalWorld()->isVisible(info.shared.shootPos, info.shared.pos)) {
if (pAimWTS ? true : SSystemGlobalEnvironment::Singleton()->GetRenderer()->WorldToScreen(info.shared.pos, OutPos)) {
if (SSystemGlobalEnvironment::Singleton()->GetRenderer()->GetPriority(info.shared.pos)) {
switch (pAimType) {
case 1: {
pItem->GetWeapon()->SetFiringPos(info.shared.pos);
if (pAutoShoot) {
pItem->GetWeapon()->StartFire();
pItem->GetWeapon()->StopFire();
if (pItem->GetWeapon()->GetWeaponGeneral()->IsFiring() == true) pItem->GetWeapon()->StopFire();
}
}
break;
case 2:
if (pItem->GetWeapon()->GetWeaponGeneral()->IsFiring() == pAutoShoot ? false : true) pGameRules->ClientHit(&info);
break;
}
}
}
}