48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
struct FCSNamespace
 | 
						|
{
 | 
						|
	FCSNamespace(FName InNamespace = NAME_None) : Namespace(InNamespace)
 | 
						|
	{
 | 
						|
		
 | 
						|
	}
 | 
						|
 | 
						|
	// Get the namespace as a FName
 | 
						|
	FName GetFName() const { return Namespace; }
 | 
						|
 | 
						|
	// Get the namespace as a string
 | 
						|
	FString GetName() const { return Namespace.ToString(); }
 | 
						|
 | 
						|
	// Gets the name of the last part of the namespace. For example, if the namespace is "UnrealSharp.Core", this will return "Core".
 | 
						|
	FString GetLastNamespace() const;
 | 
						|
 | 
						|
	bool GetParentNamespace(FCSNamespace& OutParent) const;
 | 
						|
	bool IsValid() const { return Namespace != NAME_None; }
 | 
						|
 | 
						|
	UPackage* GetPackage() const;
 | 
						|
 | 
						|
	UPackage* TryGetAsNativePackage() const
 | 
						|
	{
 | 
						|
		FString NativePackageName = FString::Printf(TEXT("/Script/%s"), *GetLastNamespace());
 | 
						|
		return FindPackage(nullptr, *NativePackageName);
 | 
						|
	}
 | 
						|
	
 | 
						|
	FName GetPackageName() const { return *FString::Printf(TEXT("/Script/%s"), *Namespace.ToString()); }
 | 
						|
 | 
						|
	static FCSNamespace Invalid() { return FCSNamespace(); }
 | 
						|
 | 
						|
	bool operator == (const FCSNamespace& Other) const
 | 
						|
	{
 | 
						|
		return Namespace == Other.Namespace;
 | 
						|
	}
 | 
						|
 | 
						|
	friend uint32 GetTypeHash(const FCSNamespace& InNamespace)
 | 
						|
	{
 | 
						|
		return GetTypeHash(InNamespace.Namespace);
 | 
						|
	}
 | 
						|
 | 
						|
private:
 | 
						|
	FName Namespace;
 | 
						|
};
 | 
						|
 |