If this function is called like this:
MakeWeapon(/*CHILD CLASS OF ADHWeapon*/, EWeaponSlot::PrimaryWeapon);
Will it set the variables in the new actor of ADHWeapon to the data in WeaponToUse?
If not, please write an alternate solution
/**
* Spawns new weapon then adds to inventory
* @param WeaponToSpawn : Weapon to spawn
* @param SlotToUse : Slot to add weapon to
*/
void ADHCharacter::MakeWeapon(ADHItem* WeaponToSpawn, EWeaponSlot SlotToUse)
{
// Declare and configure ActorSpawnParams
FActorSpawnParameters ActorSpawnParams;
ActorSpawnParams.bNoCollisionFail = false;
// Determine if WeaponToSpawn is a weapon, and else return
bool bIsWeapon;
if (Cast<ADHWeapon>(WeaponToSpawn))
{
ActorSpawnParams.Template = Cast<ADHWeapon>(WeaponToSpawn);
bIsWeapon == true;
}
else if (Cast<ADHSpecialWeapon>(WeaponToSpawn))
{
ActorSpawnParams.Template = Cast<ADHSpecialWeapon>(WeaponToSpawn);
bIsWeapon == false;
}
else return;
// Spawn weapon if character has authority, otherwise request spawn to authority
if (HasAuthority())
{
if (bIsWeapon) GetWorld()->SpawnActor<ADHWeapon>(ADHWeapon::StaticClass(), ActorSpawnParams);
else if (!bIsWeapon) GetWorld()->SpawnActor<ADHSpecialWeapon>(ADHSpecialWeapon::StaticClass(), ActorSpawnParams);
else return;
}
else if (!HasAuthority())
{
// Request weapon spawn from authority
}
else return;
}