Rift tour

This commit is contained in:
Gray
2024-03-14 19:29:58 -04:00
parent 215d7b81d0
commit c19f67c675
7 changed files with 367 additions and 114 deletions

View File

@@ -65,6 +65,95 @@ struct FActorSpawnParametersUE500
TFunction<void(UObject*)> CustomPreSpawnInitalization; // my favorite
};
#if 0
static inline PadHexB0 CreateSpawnParameters(ESpawnActorCollisionHandlingMethod SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::Undefined, bool bDeferConstruction = false, UObject* Owner = nullptr)
{
if (Engine_Version >= 500)
{
FActorSpawnParametersUE500 addr{};
addr.Owner = Owner;
addr.bDeferConstruction = bDeferConstruction;
addr.SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
return *(PadHexB0*)&addr;
}
else
{
FActorSpawnParameters addr{};
addr.Owner = Owner;
addr.bDeferConstruction = bDeferConstruction;
addr.SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
return *(PadHexB0*)&addr;
}
return PadHexB0();
}
class UWorld : public UObject, public FNetworkNotify
{
public:
static inline UObject* (*SpawnActorOriginal)(UWorld* World, UClass* Class, FTransform const* UserTransformPtr, void* SpawnParameters);
template <typename T = AActor>
T*& GetGameMode()
{
static auto AuthorityGameModeOffset = GetOffset("AuthorityGameMode");
return this->Get<T*>(AuthorityGameModeOffset);
}
class AGameState*& GetGameState()
{
static auto GameStateOffset = GetOffset("GameState");
return this->Get<class AGameState*>(GameStateOffset);
}
class UNetDriver*& GetNetDriver()
{
static auto NetDriverOffset = GetOffset("NetDriver");
return this->Get<class UNetDriver*>(NetDriverOffset);
}
UGameInstance* GetOwningGameInstance()
{
static auto OwningGameInstanceOffset = GetOffset("OwningGameInstance");
return this->Get<UGameInstance*>(OwningGameInstanceOffset);
}
inline FTimerManager& GetTimerManager()
{
return GetOwningGameInstance()->GetTimerManager();
// return (GetOwningGameInstance() ? GetOwningGameInstance()->GetTimerManager() : *TimerManager);
}
template <typename ActorType>
ActorType* SpawnActor(UClass* Class, FTransform UserTransformPtr = FTransform(), PadHexB0 SpawnParameters = CreateSpawnParameters())
{
auto actor = (ActorType*)SpawnActorOriginal(this, Class, &UserTransformPtr, &SpawnParameters);
return actor;
}
template <typename ActorType>
ActorType* SpawnActor(UClass* Class, FVector Location, FQuat Rotation = FQuat(), FVector Scale3D = FVector(1, 1, 1), PadHexB0 SpawnParameters = CreateSpawnParameters())
{
FTransform UserTransformPtr{};
UserTransformPtr.Translation = Location;
UserTransformPtr.Rotation = Rotation;
UserTransformPtr.Scale3D = Scale3D;
auto actor = SpawnActor<ActorType>(Class, UserTransformPtr, SpawnParameters);
return actor;
}
AWorldSettings* GetWorldSettings(bool bCheckStreamingPersistent = false, bool bChecked = true) const;
AWorldSettings* K2_GetWorldSettings(); // DONT USE WHEN POSSIBLE
void Listen();
};
#else
// #define USE_VIRTUALALLOC_SPAWNPARAMS
static inline void* CreateSpawnParameters(ESpawnActorCollisionHandlingMethod SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::Undefined, bool bDeferConstruction = false, UObject* Owner = nullptr)
@@ -195,4 +284,5 @@ public:
AWorldSettings* K2_GetWorldSettings(); // DONT USE WHEN POSSIBLE
void Listen();
};
};
#endif