diff --git a/Content/Assets/FPS_Weapon_Bundle/Weapons/Meshes/SMG11/SK_SMG11_Nostock_Y.uasset b/Content/Assets/FPS_Weapon_Bundle/Weapons/Meshes/SMG11/SK_SMG11_Nostock_Y.uasset index 236db52..0463de5 100644 Binary files a/Content/Assets/FPS_Weapon_Bundle/Weapons/Meshes/SMG11/SK_SMG11_Nostock_Y.uasset and b/Content/Assets/FPS_Weapon_Bundle/Weapons/Meshes/SMG11/SK_SMG11_Nostock_Y.uasset differ diff --git a/Content/Assets/FPS_Weapon_Bundle/Weapons/Meshes/SMG11/SMG_PhyAt_Strap.uasset b/Content/Assets/FPS_Weapon_Bundle/Weapons/Meshes/SMG11/SMG_PhyAt_Strap.uasset new file mode 100644 index 0000000..3985250 Binary files /dev/null and b/Content/Assets/FPS_Weapon_Bundle/Weapons/Meshes/SMG11/SMG_PhyAt_Strap.uasset differ diff --git a/Source/Blaster/Weapon/Weapon.cpp b/Source/Blaster/Weapon/Weapon.cpp index 98cec9a..6947cf0 100644 --- a/Source/Blaster/Weapon/Weapon.cpp +++ b/Source/Blaster/Weapon/Weapon.cpp @@ -133,6 +133,12 @@ void AWeapon::SetWeaponState(EWeaponState State) WeaponMesh->SetSimulatePhysics(false); WeaponMesh->SetEnableGravity(false); WeaponMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision); + if (WeaponType == EWeaponType::EWT_SubmachineGun) + { + WeaponMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); + WeaponMesh->SetEnableGravity(true); + WeaponMesh->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); + } break; case EWeaponState::EWS_Dropped: if (HasAuthority()) @@ -142,6 +148,9 @@ void AWeapon::SetWeaponState(EWeaponState State) WeaponMesh->SetSimulatePhysics(true); WeaponMesh->SetEnableGravity(true); WeaponMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); + WeaponMesh->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Block); + WeaponMesh->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Ignore); + WeaponMesh->SetCollisionResponseToChannel(ECollisionChannel::ECC_Camera, ECollisionResponse::ECR_Ignore); break; } } @@ -160,11 +169,20 @@ void AWeapon::OnRep_WeaponState() WeaponMesh->SetSimulatePhysics(false); WeaponMesh->SetEnableGravity(false); WeaponMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision); + if (WeaponType == EWeaponType::EWT_SubmachineGun) + { + WeaponMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); + WeaponMesh->SetEnableGravity(true); + WeaponMesh->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); + } break; case EWeaponState::EWS_Dropped: WeaponMesh->SetSimulatePhysics(true); WeaponMesh->SetEnableGravity(true); WeaponMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); + WeaponMesh->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Block); + WeaponMesh->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Ignore); + WeaponMesh->SetCollisionResponseToChannel(ECollisionChannel::ECC_Camera, ECollisionResponse::ECR_Ignore); break; } }