aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Venner <[email protected]>2021-03-31 01:00:29 +0100
committerWilliam Venner <[email protected]>2021-03-31 01:00:29 +0100
commitf08cf246e2b4d7bf96da494a79f13b6fa537469a (patch)
tree96480303ecd9338b764172175448ca62ab1aaeac
parentAdd From<u64> for PublishedFileId (diff)
downloadsteamworks-rs-f08cf246e2b4d7bf96da494a79f13b6fa537469a.tar.xz
steamworks-rs-f08cf246e2b4d7bf96da494a79f13b6fa537469a.zip
Add QueryResults::get_children
-rw-r--r--src/ugc.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ugc.rs b/src/ugc.rs
index d7721a0..6019a0c 100644
--- a/src/ugc.rs
+++ b/src/ugc.rs
@@ -1191,6 +1191,26 @@ impl<'a> QueryResults<'a> {
(0..self.returned_results())
.map(move |i| self.get(i))
}
+
+ /// Returns the given index's children as a list of PublishedFileId.
+ ///
+ /// You must call `include_children(true)` before fetching the query for this to work.
+ ///
+ /// Returns None if the index was out of bounds.
+ pub fn get_children(&self, index: u32) -> Option<Vec<PublishedFileId>> {
+ let num_children = self.get(index)?.num_children;
+ let mut children: Vec<sys::PublishedFileId_t> = vec![0; num_children as usize];
+
+ let ok = unsafe {
+ sys::SteamAPI_ISteamUGC_GetQueryUGCChildren(self.ugc, self.handle, index, children.as_mut_ptr(), num_children)
+ };
+
+ if ok {
+ Some(children.into_iter().map(Into::into).collect())
+ } else {
+ None
+ }
+ }
}
/// Query result