Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR exposes the
setVisible
andisVisible
sprite methods in the C api as Sprite::set_visible and Sprite::is_visible respectivelyIt also extends the
hello_world
example to have a sprite that toggles visibility on pressing A.On adding the example i was sent down a rabbit-hole of some confusing behaviour with Graphics functions when sprites are added.
Notably as soon as one calls
SpriteManager::new_sprite
all the graphics functions anddraw_fps
stop working.The first solution is that the graphics Context stack seems to get messed up with sprite drawing so if we want to draw to display framebuffer we must clear context. Bindings existed for this already (as part of the
Graphics::with_context
) so i just exposed aclear_context
to be called before attempting to write to display framebuffer.Curiously, though, this also changes a lot of the sprite drawing semantics and we have to start behaving properly with marking sprites as dirty for them to draw. in the Hello_world example this meant implementing the
update_sprite
function in itsimpl Game
and always marking all sprites as dirty every frame.In my personal project this required one tweak to a sprite using custom draw, but has otherwise drastically reduced per-frame redraws so seems like a big win!