diff options
| author | William Venner <[email protected]> | 2021-03-31 01:00:29 +0100 |
|---|---|---|
| committer | William Venner <[email protected]> | 2021-03-31 01:00:29 +0100 |
| commit | f08cf246e2b4d7bf96da494a79f13b6fa537469a (patch) | |
| tree | 96480303ecd9338b764172175448ca62ab1aaeac | |
| parent | Add From<u64> for PublishedFileId (diff) | |
| download | steamworks-rs-f08cf246e2b4d7bf96da494a79f13b6fa537469a.tar.xz steamworks-rs-f08cf246e2b4d7bf96da494a79f13b6fa537469a.zip | |
Add QueryResults::get_children
| -rw-r--r-- | src/ugc.rs | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -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 |