From 37e9fe50660d4cddb89a92f47b0f239c61b633eb Mon Sep 17 00:00:00 2001 From: Gwilym Inzani Date: Tue, 30 Apr 2024 20:39:50 +0100 Subject: [PATCH] Add a set_next method on OamIterator --- agb/src/display/object/unmanaged/object.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/agb/src/display/object/unmanaged/object.rs b/agb/src/display/object/unmanaged/object.rs index 9059f4ca..b4badab9 100644 --- a/agb/src/display/object/unmanaged/object.rs +++ b/agb/src/display/object/unmanaged/object.rs @@ -71,6 +71,27 @@ pub struct OamIterator<'oam> { frame_data: &'oam UnsafeCell, } +impl<'oam> OamIterator<'oam> { + /// Sets the next oam slot with the provided `object`. + /// + /// Is equivalent to the following: + /// ```rust + /// # #![no_main] + /// # #![no_std] + /// # use agb::display::object::{OamIterator, ObjectUnmanaged}; + /// # fn set_next_example(oam_iterator: &mut OamIterator, object: &ObjectUnmanaged) { + /// if let Some(slot) = oam_iterator.next() { + /// slot.set(object); + /// } + /// # } + /// ``` + pub fn set_next(&mut self, object: &ObjectUnmanaged) { + if let Some(slot) = self.next() { + slot.set(object); + } + } +} + /// A slot in Oam that you can write to. Note that you must call [OamSlot::set] /// or else it is a bug and will panic when dropped. ///