diff --git a/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs b/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs
new file mode 100644
index 0000000..49e6e34
--- /dev/null
+++ b/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Steamworks.Data
+{
+ public struct UgcAdditionalPreview
+ {
+ internal UgcAdditionalPreview( string urlOrVideoID, string originalFileName, ItemPreviewType itemPreviewType )
+ {
+ this.UrlOrVideoID = urlOrVideoID;
+ this.OriginalFileName = originalFileName;
+ this.ItemPreviewType = itemPreviewType;
+ }
+
+ public string UrlOrVideoID { get; private set; }
+ public string OriginalFileName { get; private set; }
+ internal ItemPreviewType ItemPreviewType { get; private set; }
+
+ ///
+ /// Flags that specify the type of preview an item has:
+ /// Image = 0,
+ /// YouTubeVideo = 1,
+ /// Sketchfab = 2,
+ /// EnvironmentMap_HorizontalCross = 3,
+ /// EnvironmentMap_LatLong = 4,
+ /// ReservedMax = 255
+ ///
+ public int GetItemPreviewType() => (int)ItemPreviewType;
+ }
+}
diff --git a/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs.meta b/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs.meta
new file mode 100644
index 0000000..511f7d5
--- /dev/null
+++ b/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 48f086235d5dbeb44bccbb40802e30fb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Facepunch.Steamworks/Structs/UgcItem.cs b/Facepunch.Steamworks/Structs/UgcItem.cs
index 08617ba..fb63898 100644
--- a/Facepunch.Steamworks/Structs/UgcItem.cs
+++ b/Facepunch.Steamworks/Structs/UgcItem.cs
@@ -113,6 +113,11 @@ namespace Steamworks.Ugc
///
public PublishedFileId[] Children;
+ ///
+ /// Additional previews of this item or collection, available only from WithAdditionalPreviews(true) queries
+ ///
+ public UgcAdditionalPreview[] AdditionalPreviews { get; internal set; }
+
public bool IsInstalled => (State & ItemState.Installed) == ItemState.Installed;
public bool IsDownloading => (State & ItemState.Downloading) == ItemState.Downloading;
public bool IsDownloadPending => (State & ItemState.DownloadPending) == ItemState.DownloadPending;
diff --git a/Facepunch.Steamworks/Structs/UgcQuery.cs b/Facepunch.Steamworks/Structs/UgcQuery.cs
index eb8901a..79893bb 100644
--- a/Facepunch.Steamworks/Structs/UgcQuery.cs
+++ b/Facepunch.Steamworks/Structs/UgcQuery.cs
@@ -153,6 +153,7 @@ namespace Steamworks.Ugc
ReturnsDefaultStats = WantsDefaultStats ?? true, //true by default
ReturnsMetadata = WantsReturnMetadata ?? false,
ReturnsChildren = WantsReturnChildren ?? false,
+ ReturnsAdditionalPreviews = WantsReturnAdditionalPreviews ?? false,
};
}
diff --git a/Facepunch.Steamworks/Structs/UgcResultPage.cs b/Facepunch.Steamworks/Structs/UgcResultPage.cs
index 352f98a..03399b5 100644
--- a/Facepunch.Steamworks/Structs/UgcResultPage.cs
+++ b/Facepunch.Steamworks/Structs/UgcResultPage.cs
@@ -16,6 +16,7 @@ namespace Steamworks.Ugc
internal bool ReturnsDefaultStats;
internal bool ReturnsMetadata;
internal bool ReturnsChildren;
+ internal bool ReturnsAdditionalPreviews;
public IEnumerable- Entries
{
@@ -83,7 +84,27 @@ namespace Steamworks.Ugc
item.Children = children;
}
}
- // TODO GetQueryUGCAdditionalPreview
+
+ if ( ReturnsAdditionalPreviews )
+ {
+ var previewsCount = SteamUGC.Internal.GetQueryUGCNumAdditionalPreviews( Handle, i );
+ if ( previewsCount > 0 )
+ {
+ item.AdditionalPreviews = new UgcAdditionalPreview[previewsCount];
+ for ( uint j = 0; j < previewsCount; j++ )
+ {
+ string previewUrlOrVideo;
+ string originalFileName; //what is this???
+ ItemPreviewType previewType = default;
+ if ( SteamUGC.Internal.GetQueryUGCAdditionalPreview(
+ Handle, i, j, out previewUrlOrVideo, out originalFileName, ref previewType ) )
+ {
+ item.AdditionalPreviews[j] = new UgcAdditionalPreview(
+ previewUrlOrVideo, originalFileName, previewType );
+ }
+ }
+ }
+ }
yield return item;
}