void AOnlineBeaconHost::RegisterHost(AOnlineBeaconHostObject* NewHostObject) { const FString& BeaconType = NewHostObject->GetBeaconType(); bool bFound = false; for (int32 HostIdx=0; HostIdx < Children.Num(); HostIdx++) { AOnlineBeaconHostObject* HostObject = Cast<AOnlineBeaconHostObject>(Children[HostIdx]); if (HostObject && HostObject->GetBeaconType() == BeaconType) { bFound = true; break; } } if (!bFound) { NewHostObject->SetOwner(this); OnBeaconSpawned(BeaconType).BindUObject(NewHostObject, &AOnlineBeaconHostObject::SpawnBeaconActor); OnBeaconConnected(BeaconType).BindUObject(NewHostObject, &AOnlineBeaconHostObject::ClientConnected); } else { UE_LOG(LogBeacon, Warning, TEXT("Beacon host type %s already exists"), *BeaconType); } }
bool APartyBeaconHost::InitHost() { if(AOnlineBeaconHost::InitHost()) { OnBeaconConnected(FName(TEXT("PartyBeacon"))).BindUObject(this, &APartyBeaconHost::ClientConnected); return true; } return false; }
void AOnlineBeaconHost::UnregisterHost(const FString& BeaconType) { AOnlineBeaconHostObject* HostObject = GetHost(BeaconType); if (HostObject) { HostObject->SetOwner(NULL); } OnBeaconSpawned(BeaconType).Unbind(); OnBeaconConnected(BeaconType).Unbind(); }
void AOnlineBeaconHost::RegisterHost(AOnlineBeaconHostObject* NewHostObject) { const FString& BeaconType = NewHostObject->GetBeaconType(); if (GetHost(BeaconType) == NULL) { NewHostObject->SetOwner(this); OnBeaconSpawned(BeaconType).BindUObject(NewHostObject, &AOnlineBeaconHostObject::SpawnBeaconActor); OnBeaconConnected(BeaconType).BindUObject(NewHostObject, &AOnlineBeaconHostObject::OnClientConnected); } else { UE_LOG(LogBeacon, Warning, TEXT("Beacon host type %s already exists"), *BeaconType); } }