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; | ||
|  | }; | ||
|  | 
 |