mirror of
				https://github.com/kevinporetti/UnrealImGui.git
				synced 2025-11-03 23:33:16 +00:00 
			
		
		
		
	Support for general UTexture instead of being limited to Texture2D for ImGui interop
This commit is contained in:
		
							parent
							
								
									fa7134f553
								
							
						
					
					
						commit
						2b8f3e55c3
					
				@ -84,7 +84,7 @@ FImGuiTextureHandle FImGuiModule::FindTextureHandle(const FName& Name)
 | 
				
			|||||||
	return (Index != INDEX_NONE) ? FImGuiTextureHandle{ Name, ImGuiInterops::ToImTextureID(Index) } : FImGuiTextureHandle{};
 | 
						return (Index != INDEX_NONE) ? FImGuiTextureHandle{ Name, ImGuiInterops::ToImTextureID(Index) } : FImGuiTextureHandle{};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FImGuiTextureHandle FImGuiModule::RegisterTexture(const FName& Name, class UTexture2D* Texture, bool bMakeUnique)
 | 
					FImGuiTextureHandle FImGuiModule::RegisterTexture(const FName& Name, class UTexture* Texture, bool bMakeUnique)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	FTextureManager& TextureManager = ImGuiModuleManager->GetTextureManager();
 | 
						FTextureManager& TextureManager = ImGuiModuleManager->GetTextureManager();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -27,7 +27,7 @@ TextureIndex FTextureManager::CreatePlainTexture(const FName& Name, int32 Width,
 | 
				
			|||||||
	return CreatePlainTextureInternal(Name, Width, Height, Color);
 | 
						return CreatePlainTextureInternal(Name, Width, Height, Color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TextureIndex FTextureManager::CreateTextureResources(const FName& Name, UTexture2D* Texture)
 | 
					TextureIndex FTextureManager::CreateTextureResources(const FName& Name, UTexture* Texture)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	checkf(Name != NAME_None, TEXT("Trying to create texture resources with a name 'NAME_None' is not allowed."));
 | 
						checkf(Name != NAME_None, TEXT("Trying to create texture resources with a name 'NAME_None' is not allowed."));
 | 
				
			||||||
	checkf(Texture, TEXT("Null Texture."));
 | 
						checkf(Texture, TEXT("Null Texture."));
 | 
				
			||||||
@ -87,7 +87,7 @@ TextureIndex FTextureManager::CreatePlainTextureInternal(const FName& Name, int3
 | 
				
			|||||||
	return CreateTextureInternal(Name, Width, Height, Bpp, SrcData, SrcDataCleanup);
 | 
						return CreateTextureInternal(Name, Width, Height, Bpp, SrcData, SrcDataCleanup);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TextureIndex FTextureManager::AddTextureEntry(const FName& Name, UTexture2D* Texture, bool bAddToRoot)
 | 
					TextureIndex FTextureManager::AddTextureEntry(const FName& Name, UTexture* Texture, bool bAddToRoot)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// Try to find an entry with that name.
 | 
						// Try to find an entry with that name.
 | 
				
			||||||
	TextureIndex Index = FindTextureIndex(Name);
 | 
						TextureIndex Index = FindTextureIndex(Name);
 | 
				
			||||||
@ -110,7 +110,7 @@ TextureIndex FTextureManager::AddTextureEntry(const FName& Name, UTexture2D* Tex
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FTextureManager::FTextureEntry::FTextureEntry(const FName& InName, UTexture2D* InTexture, bool bAddToRoot)
 | 
					FTextureManager::FTextureEntry::FTextureEntry(const FName& InName, UTexture* InTexture, bool bAddToRoot)
 | 
				
			||||||
	: Name(InName)
 | 
						: Name(InName)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	checkf(InTexture, TEXT("Null texture."));
 | 
						checkf(InTexture, TEXT("Null texture."));
 | 
				
			||||||
 | 
				
			|||||||
@ -84,7 +84,7 @@ public:
 | 
				
			|||||||
	// @param Name - The texture name
 | 
						// @param Name - The texture name
 | 
				
			||||||
	// @param Texture - The texture
 | 
						// @param Texture - The texture
 | 
				
			||||||
	// @returns The index to created/updated texture resources
 | 
						// @returns The index to created/updated texture resources
 | 
				
			||||||
	TextureIndex CreateTextureResources(const FName& Name, UTexture2D* Texture);
 | 
						TextureIndex CreateTextureResources(const FName& Name, UTexture* Texture);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Release resources for given texture. Ignores invalid indices.
 | 
						// Release resources for given texture. Ignores invalid indices.
 | 
				
			||||||
	// @param Index - The index of a texture resources
 | 
						// @param Index - The index of a texture resources
 | 
				
			||||||
@ -107,7 +107,7 @@ private:
 | 
				
			|||||||
	// @param Texture - The texture
 | 
						// @param Texture - The texture
 | 
				
			||||||
	// @param bAddToRoot - If true, we should add texture to root to prevent garbage collection (use for own textures)
 | 
						// @param bAddToRoot - If true, we should add texture to root to prevent garbage collection (use for own textures)
 | 
				
			||||||
	// @returns The index of the entry that we created or reused
 | 
						// @returns The index of the entry that we created or reused
 | 
				
			||||||
	TextureIndex AddTextureEntry(const FName& Name, UTexture2D* Texture, bool bAddToRoot);
 | 
						TextureIndex AddTextureEntry(const FName& Name, UTexture* Texture, bool bAddToRoot);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check whether index is in range allocated for TextureResources (it doesn't mean that resources are valid).
 | 
						// Check whether index is in range allocated for TextureResources (it doesn't mean that resources are valid).
 | 
				
			||||||
	FORCEINLINE bool IsInRange(TextureIndex Index) const
 | 
						FORCEINLINE bool IsInRange(TextureIndex Index) const
 | 
				
			||||||
@ -125,7 +125,7 @@ private:
 | 
				
			|||||||
	struct FTextureEntry
 | 
						struct FTextureEntry
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		FTextureEntry() = default;
 | 
							FTextureEntry() = default;
 | 
				
			||||||
		FTextureEntry(const FName& InName, UTexture2D* InTexture, bool bAddToRoot);
 | 
							FTextureEntry(const FName& InName, UTexture* InTexture, bool bAddToRoot);
 | 
				
			||||||
		~FTextureEntry();
 | 
							~FTextureEntry();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Copying is not supported.
 | 
							// Copying is not supported.
 | 
				
			||||||
@ -146,7 +146,7 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		FName Name = NAME_None;
 | 
							FName Name = NAME_None;
 | 
				
			||||||
		mutable FSlateResourceHandle CachedResourceHandle;
 | 
							mutable FSlateResourceHandle CachedResourceHandle;
 | 
				
			||||||
		TWeakObjectPtr<UTexture2D> Texture;
 | 
							TWeakObjectPtr<UTexture> Texture;
 | 
				
			||||||
		FSlateBrush Brush;
 | 
							FSlateBrush Brush;
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -108,7 +108,7 @@ public:
 | 
				
			|||||||
	 * @returns Handle to the texture resources, which can be used to release allocated resources and as an argument to
 | 
						 * @returns Handle to the texture resources, which can be used to release allocated resources and as an argument to
 | 
				
			||||||
	 *     relevant ImGui functions
 | 
						 *     relevant ImGui functions
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	virtual FImGuiTextureHandle RegisterTexture(const FName& Name, class UTexture2D* Texture, bool bMakeUnique = false);
 | 
						virtual FImGuiTextureHandle RegisterTexture(const FName& Name, class UTexture* Texture, bool bMakeUnique = false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Unregister texture and release its Slate resources. If handle is null or not valid, this function fails silently
 | 
						 * Unregister texture and release its Slate resources. If handle is null or not valid, this function fails silently
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user