Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Fill out your copyright notice in the Description page of Project Settings.
- #include "MusicalRange.h"
- #include "MusicalRangeInstance.h"
- //#include "OnlineSubsystemSteam.h"
- //#include "ThirdParty/Steamworks/Steamv132/sdk/public/steam/steam_api.h"
- //UE_LOG(LogSteamworks, Log, TEXT("Message!"));
- //Musical Range Game Instance Elements
- UMusicalRangeInstance::UMusicalRangeInstance() {
- if (SteamAPI_Init())
- {
- UE_LOG(LogSteamworks, Log, TEXT("UMusicalRangeInstance Constructor Called"));
- CallbackAsyncVariable = new FSteamworksCallbackAsync();
- UE_LOG(LogSteamworks, Log, TEXT("Assigning Game Instance object to CallbackAsyncVariable"));
- CallbackAsyncVariable->AssignGameInstance(this);
- }
- else
- {
- UE_LOG(LogSteamworks, Warning, TEXT("UMusicalRangeInstance Constructor FAILED! No Steam Log on"));
- }
- }
- UMusicalRangeInstance::~UMusicalRangeInstance() {
- if (CallbackAsyncVariable != nullptr)
- {
- UE_LOG(LogSteamworks, Log, TEXT("Deleting CallbackAsyncPointer"));
- delete CallbackAsyncVariable;
- }
- }
- bool UMusicalRangeInstance::InterLevelPersitentValuePONE() {
- InterLevelPersitentValue++;
- return true;
- }
- bool UMusicalRangeInstance::RunSteamCallbacks() {
- SteamAPI_RunCallbacks();
- return true;
- }
- void UMusicalRangeInstance::SteamOverlayActive() {
- SteamAPICall_t hSteamAPICall = SteamUtils()->IsOverlayEnabled();
- m_callResultGameOverlayActive.Set(hSteamAPICall, this, &UMusicalRangeInstance::OnSteamOverlayEnabled);
- return;
- }
- void UMusicalRangeInstance::OnSteamOverlayEnabled(GameOverlayActivated_t *pResult, bool bIOFailure) {
- IsSteamOverlayActive = (pResult->m_bActive != 0);
- if (IsSteamOverlayActive)
- {
- UE_LOG(LogSteamworks, Log, TEXT("Overlay is ACTIVE"));
- }
- else
- {
- UE_LOG(LogSteamworks, Log, TEXT("Overlay is OFF"));
- }
- OnSteamOverlayIsActive(IsSteamOverlayActive);
- return;
- }
- //FSteamworksCallbackAsync elements
- FSteamworksCallbackAsync::FSteamworksCallbackAsync() :
- OnSteamOverlayActiveCallback(this, &FSteamworksCallbackAsync::OnSteamOverlayActive)
- {
- UE_LOG(LogSteamworks, Log, TEXT("Initializing FSteamworksCallbackAsync"));
- if (GEngine && GEngine->GetWorld() != nullptr)
- {
- UE_LOG(LogSteamworks, Log, TEXT("Creating new LiveSteamSubsystem"));
- LiveSteamSubsystem = new FOnlineSubsystemSteam();
- UE_LOG(LogSteamworks, Log, TEXT("Initializing LiveSteamSubsystem"));
- if (LiveSteamSubsystem->Init())
- {
- UE_LOG(LogSteamworks, Log, TEXT("LiveSteamSubsystem Succesfully Activated!"));
- }
- else {
- UE_LOG(LogSteamworks, Error, TEXT("LiveSteamSubsystem FAILED!"));
- }
- }
- UE_LOG(LogSteamworks, Warning, TEXT("LiveSteamSubsystem Not Created. GEngine OR GetWorld() not valid!"));
- }
- FSteamworksCallbackAsync::~FSteamworksCallbackAsync() {
- if (LiveSteamSubsystem != nullptr)
- {
- UE_LOG(LogSteamworks, Log, TEXT("Shutting Down LiveSteamSubsystem"));
- LiveSteamSubsystem->Shutdown();
- UE_LOG(LogSteamworks, Log, TEXT("Deleting LiveSteamSubsystem"));
- delete LiveSteamSubsystem;
- }
- }
- void FSteamworksCallbackAsync::AssignGameInstance(UMusicalRangeInstance *NewMusicalRangeGameInstance) {
- MusicalRangeGameInstance = NewMusicalRangeGameInstance;
- UE_LOG(LogSteamworks, Log, TEXT("New Musical Range Game Instance Assigned to CallbackAsyncVariable"));
- }
- void FSteamworksCallbackAsync::OnSteamOverlayActive(GameOverlayActivated_t *CallbackData) {
- check(CallbackData != nullptr);
- //Copy the CallbacData as it may be deleted to quickly https://answers.unrealengine.com/questions/569160/game-crash-runnable-thread-onlineasynctaskthreadst.html
- const bool IsOverlayActive = (CallbackData->m_bActive != 0);
- LiveSteamSubsystem->ExecuteNextTick([IsOverlayActive, this]() {
- if (IsOverlayActive)
- {
- UE_LOG(LogSteamworks, Log, TEXT("Overlay is ACTIVE"));
- }
- else
- {
- UE_LOG(LogSteamworks, Log, TEXT("Overlay is OFF"));
- }
- if (MusicalRangeGameInstance != nullptr)
- {
- UE_LOG(LogSteamworks, Log, TEXT("Calling Event OnSteamOverlayIsActive"));
- MusicalRangeGameInstance->OnSteamOverlayIsActive(IsOverlayActive);
- UE_LOG(LogSteamworks, Log, TEXT("Music Should be paused now"));
- }
- else
- {
- UE_LOG(LogSteamworks, Error, TEXT("Error with Musical Range Game Instance Pointer!"));
- UE_LOG(LogSteamworks, Error, TEXT("OnSteamOverlayActive WILL NOT FIRING!"));
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement