```C++
void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)
{
if (SoldierCharacter == nullptr || WeaponToEquip == nullptr)
{
return;
}
EquippedWeapon = WeaponToEquip;
EquippedWeapon->SetWeaponState(EWeaponState::EWS_Equipped);
if (SoldierCharacter->IsLocallyControlled())
{
EquippedWeapon->GetWeaponMesh()->CastShadow = false;
const USkeletalMeshSocket\* HandSocket = SoldierCharacter->GetFPSMesh()->GetSocketByName(FName("RightHandSocket"));
if (HandSocket)
{
HandSocket->AttachActor(EquippedWeapon, SoldierCharacter->GetFPSMesh());
}
}
else
{
EquippedWeapon->GetWeaponMesh()->CastShadow = true;
const USkeletalMeshSocket\* HandSocket = SoldierCharacter->GetMesh()->GetSocketByName(FName("RightHandSocket"));
if (HandSocket)
{
HandSocket->AttachActor(EquippedWeapon, SoldierCharacter->GetMesh());
}
}
EquippedWeapon->SetOwner(SoldierCharacter);
}
void UCombatComponent::OnRep_EquippedWeapon()
{
EquippedWeapon->SetWeaponState(EWeaponState::EWS_Equipped);
if (SoldierCharacter->IsLocallyControlled())
{
EquippedWeapon->GetWeaponMesh()->CastShadow = false;
const USkeletalMeshSocket\* HandSocket = SoldierCharacter->GetFPSMesh()->GetSocketByName(FName("RightHandSocket"));
if (HandSocket)
{
HandSocket->AttachActor(EquippedWeapon, SoldierCharacter->GetFPSMesh());
}
}
else
{
EquippedWeapon->GetWeaponMesh()->CastShadow = true;
const USkeletalMeshSocket\* HandSocket = SoldierCharacter->GetMesh()->GetSocketByName(FName("RightHandSocket"));
if (HandSocket)
{
HandSocket->AttachActor(EquippedWeapon, SoldierCharacter->GetMesh());
}
}
}
```
Weapon is not connecting to TP mesh for Simulated proxies.
OnRep_AttachmentReplication are override and didn’t called Super on weapon