diff --git a/main/implementors/core/clone/trait.Clone.js b/main/implementors/core/clone/trait.Clone.js
index 5c3373d93..5227ca2e6 100644
--- a/main/implementors/core/clone/trait.Clone.js
+++ b/main/implementors/core/clone/trait.Clone.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl Clone for TextureRegion"],["impl Clone for TextureCollection"],["impl Clone for SharedTexture"],["impl Clone for GlyphInfo"],["impl<'a, Unit: Clone> Clone for Text<'a, Unit>"],["impl<Unit: Clone> Clone for TextOrigin<Unit>"],["impl<Unit: Clone> Clone for PathEvent<Unit>"],["impl<Unit: Clone, const TEXTURED: bool> Clone for Shape<Unit, TEXTURED>"],["impl<Unit: Clone> Clone for Origin<Unit>"],["impl<Unit: Clone> Clone for StrokeOptions<Unit>"],["impl<Unit: Clone, const TEXTURED: bool> Clone for Path<Unit, TEXTURED>"],["impl<Message: Clone> Clone for WindowHandle<Message>"],["impl Clone for ObjectId"],["impl Clone for Color"],["impl Clone for MeasuredGlyph"],["impl Clone for CollectedTexture"],["impl<Unit: Clone> Clone for MeasuredText<Unit>"],["impl Clone for TileMapFocus"]]
+"kludgine":[["impl Clone for GlyphInfo"],["impl<Unit: Clone> Clone for Origin<Unit>"],["impl<Unit: Clone> Clone for TextOrigin<Unit>"],["impl<Unit: Clone> Clone for CornerRadii<Unit>"],["impl<Unit: Clone> Clone for StrokeOptions<Unit>"],["impl<Unit: Clone> Clone for PathEvent<Unit>"],["impl<Unit: Clone> Clone for MeasuredText<Unit>"],["impl Clone for CollectedTexture"],["impl Clone for TextureRegion"],["impl Clone for TileMapFocus"],["impl Clone for ObjectId"],["impl Clone for TextureCollection"],["impl<'a, Unit: Clone> Clone for Text<'a, Unit>"],["impl Clone for Color"],["impl<Unit: Clone, const TEXTURED: bool> Clone for Path<Unit, TEXTURED>"],["impl<Unit: Clone, const TEXTURED: bool> Clone for Shape<Unit, TEXTURED>"],["impl Clone for MeasuredGlyph"],["impl<Message: Clone> Clone for WindowHandle<Message>"],["impl Clone for SharedTexture"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/cmp/trait.Eq.js b/main/implementors/core/cmp/trait.Eq.js
index f84d4689c..e281a2fbc 100644
--- a/main/implementors/core/cmp/trait.Eq.js
+++ b/main/implementors/core/cmp/trait.Eq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<Unit: Eq> Eq for TextOrigin<Unit>"],["impl Eq for ObjectId"],["impl Eq for TextureRegion"],["impl Eq for Color"],["impl<Unit: Eq> Eq for Origin<Unit>"],["impl Eq for SharedTexture"]]
+"kludgine":[["impl Eq for Color"],["impl Eq for SharedTexture"],["impl Eq for TextureRegion"],["impl<Unit: Eq> Eq for CornerRadii<Unit>"],["impl Eq for ObjectId"],["impl<Unit: Eq> Eq for Origin<Unit>"],["impl<Unit: Eq> Eq for TextOrigin<Unit>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/cmp/trait.PartialEq.js b/main/implementors/core/cmp/trait.PartialEq.js
index 0554d47b3..9fa296ac8 100644
--- a/main/implementors/core/cmp/trait.PartialEq.js
+++ b/main/implementors/core/cmp/trait.PartialEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<Unit: PartialEq> PartialEq<StrokeOptions<Unit>> for StrokeOptions<Unit>"],["impl PartialEq<SharedTexture> for SharedTexture"],["impl<Unit: PartialEq> PartialEq<Origin<Unit>> for Origin<Unit>"],["impl<Unit: PartialEq, const TEXTURED: bool> PartialEq<Shape<Unit, TEXTURED>> for Shape<Unit, TEXTURED>"],["impl<Unit: PartialEq> PartialEq<TextOrigin<Unit>> for TextOrigin<Unit>"],["impl PartialEq<Color> for Color"],["impl PartialEq<TextureRegion> for TextureRegion"],["impl PartialEq<ObjectId> for ObjectId"]]
+"kludgine":[["impl PartialEq<SharedTexture> for SharedTexture"],["impl<Unit: PartialEq, const TEXTURED: bool> PartialEq<Shape<Unit, TEXTURED>> for Shape<Unit, TEXTURED>"],["impl<Unit: PartialEq> PartialEq<CornerRadii<Unit>> for CornerRadii<Unit>"],["impl<Unit: PartialEq> PartialEq<Origin<Unit>> for Origin<Unit>"],["impl PartialEq<TextureRegion> for TextureRegion"],["impl PartialEq<Color> for Color"],["impl<Unit: PartialEq> PartialEq<TextOrigin<Unit>> for TextOrigin<Unit>"],["impl PartialEq<ObjectId> for ObjectId"],["impl<Unit: PartialEq> PartialEq<StrokeOptions<Unit>> for StrokeOptions<Unit>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/convert/trait.AsRef.js b/main/implementors/core/convert/trait.AsRef.js
index 53d42b782..56a658d5f 100644
--- a/main/implementors/core/convert/trait.AsRef.js
+++ b/main/implementors/core/convert/trait.AsRef.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl AsRef<Queue> for Graphics<'_>"],["impl AsRef<Device> for Graphics<'_>"]]
+"kludgine":[["impl AsRef<Device> for Graphics<'_>"],["impl AsRef<Queue> for Graphics<'_>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/convert/trait.From.js b/main/implementors/core/convert/trait.From.js
index 853354371..9d92f93ae 100644
--- a/main/implementors/core/convert/trait.From.js
+++ b/main/implementors/core/convert/trait.From.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl From<Color> for Color"],["impl<Unit> From<StrokeOptions<Unit>> for StrokeOptionswhere\n Unit: FloatConversion<Float = f32>,"],["impl<'a, Unit> From<Text<'a, Unit>> for Drawable<Text<'a, Unit>, Unit>where\n Unit: Default,"],["impl From<Texture> for SharedTexture"],["impl<'a, Unit> From<&'a str> for Text<'a, Unit>"],["impl From<Color> for Color"],["impl From<Color> for Color"],["impl From<Texture> for AnyTexture"],["impl<'a, T, Unit> From<&'a T> for Drawable<&'a T, Unit>where\n T: DrawableSource,\n Unit: Default,"],["impl<'a, Unit> From<&'a String> for Text<'a, Unit>"],["impl<Unit, const TEXTURED: bool> From<Path<Unit, TEXTURED>> for PathBuilder<Unit, TEXTURED>where\n Unit: Default,"]]
+"kludgine":[["impl From<Texture> for AnyTexture"],["impl<'a, Unit> From<Text<'a, Unit>> for Drawable<Text<'a, Unit>, Unit>where\n Unit: Default,"],["impl<Unit> From<StrokeOptions<Unit>> for StrokeOptionswhere\n Unit: FloatConversion<Float = f32>,"],["impl<Unit, const TEXTURED: bool> From<Path<Unit, TEXTURED>> for PathBuilder<Unit, TEXTURED>where\n Unit: Default,"],["impl From<Color> for Color"],["impl From<Color> for Color"],["impl From<Color> for Color"],["impl<'a, Unit> From<&'a String> for Text<'a, Unit>"],["impl<'a, Unit> From<&'a str> for Text<'a, Unit>"],["impl<Unit> From<Color> for StrokeOptions<Unit>where\n Unit: DefaultStrokeWidth,"],["impl<'a, T, Unit> From<&'a T> for Drawable<&'a T, Unit>where\n T: DrawableSource,\n Unit: Default,"],["impl<Unit> From<Unit> for CornerRadii<Unit>where\n Unit: Copy,"],["impl From<Texture> for SharedTexture"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/default/trait.Default.js b/main/implementors/core/default/trait.Default.js
index 37935bb61..c69037de0 100644
--- a/main/implementors/core/default/trait.Default.js
+++ b/main/implementors/core/default/trait.Default.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<Unit> Default for StrokeOptions<Unit>where\n Unit: DefaultStrokeWidth,"],["impl<Unit> Default for TextOrigin<Unit>"],["impl<O> Default for ObjectLayer<O>"],["impl<Unit: Default, const TEXTURED: bool> Default for Path<Unit, TEXTURED>"],["impl<Unit, const TEXTURED: bool> Default for Shape<Unit, TEXTURED>"],["impl Default for TileMapFocus"],["impl Default for Drawing"]]
+"kludgine":[["impl<Unit> Default for TextOrigin<Unit>"],["impl<O> Default for ObjectLayer<O>"],["impl<Unit> Default for StrokeOptions<Unit>where\n Unit: DefaultStrokeWidth,"],["impl Default for Drawing"],["impl Default for TileMapFocus"],["impl<Unit, const TEXTURED: bool> Default for Shape<Unit, TEXTURED>"],["impl<Unit: Default, const TEXTURED: bool> Default for Path<Unit, TEXTURED>"],["impl<Unit> Default for PathBuilder<Unit, false>where\n Unit: Default + Copy,"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/fmt/trait.Debug.js b/main/implementors/core/fmt/trait.Debug.js
index e83eaebdf..cbf2c5075 100644
--- a/main/implementors/core/fmt/trait.Debug.js
+++ b/main/implementors/core/fmt/trait.Debug.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl Debug for AnyTexture"],["impl<Unit: Debug, const TEXTURED: bool> Debug for Shape<Unit, TEXTURED>"],["impl<Message: Debug> Debug for WindowHandle<Message>"],["impl<Unit: Debug> Debug for Origin<Unit>"],["impl Debug for Color"],["impl<'clip, T> Debug for ClipGuard<'clip, T>where\n T: Clipped + Debug,"],["impl Debug for TileKind"],["impl Debug for TextureRegion"],["impl<Unit: Debug> Debug for PreparedGraphic<Unit>"],["impl<'gfx> Debug for Graphics<'gfx>"],["impl Debug for TileMapFocus"],["impl Debug for GlyphInfo"],["impl Debug for CollectedTexture"],["impl Debug for ObjectId"],["impl<O: Debug> Debug for ObjectInfo<O>"],["impl<Unit: Debug> Debug for StrokeOptions<Unit>"],["impl Debug for Texture"],["impl<'a, Unit: Debug> Debug for Text<'a, Unit>"],["impl<Unit: Debug> Debug for TextOrigin<Unit>"],["impl Debug for Tiles"],["impl<Unit: Debug> Debug for PathEvent<Unit>"],["impl<'render, 'gfx> Debug for Renderer<'render, 'gfx>"],["impl Debug for Drawing"],["impl<Unit: Debug, const TEXTURED: bool> Debug for Path<Unit, TEXTURED>"],["impl<O: Debug> Debug for ObjectLayer<O>"],["impl Debug for MeasuredGlyph"],["impl Debug for SharedTexture"],["impl Debug for Kludgine"],["impl Debug for PreparedText"],["impl<Unit: Debug> Debug for MeasuredText<Unit>"]]
+"kludgine":[["impl<Unit: Debug> Debug for PathEvent<Unit>"],["impl Debug for Color"],["impl Debug for Drawing"],["impl<Unit: Debug> Debug for TextOrigin<Unit>"],["impl Debug for PreparedText"],["impl<O: Debug> Debug for ObjectLayer<O>"],["impl<Unit: Debug, const TEXTURED: bool> Debug for Shape<Unit, TEXTURED>"],["impl<'a, Unit: Debug> Debug for Text<'a, Unit>"],["impl<'render, 'gfx> Debug for Renderer<'render, 'gfx>"],["impl<Unit: Debug, const TEXTURED: bool> Debug for Path<Unit, TEXTURED>"],["impl<Message: Debug> Debug for WindowHandle<Message>"],["impl Debug for AnyTexture"],["impl Debug for TileMapFocus"],["impl Debug for Kludgine"],["impl Debug for GlyphInfo"],["impl Debug for SharedTexture"],["impl Debug for CollectedTexture"],["impl Debug for TileKind"],["impl<Unit: Debug> Debug for StrokeOptions<Unit>"],["impl Debug for Tiles"],["impl Debug for Texture"],["impl<'gfx> Debug for Graphics<'gfx>"],["impl<Unit: Debug> Debug for CornerRadii<Unit>"],["impl<O: Debug> Debug for ObjectInfo<O>"],["impl Debug for MeasuredGlyph"],["impl<Unit: Debug> Debug for PreparedGraphic<Unit>"],["impl Debug for TextureRegion"],["impl<'clip, T> Debug for ClipGuard<'clip, T>where\n T: Clipped + Debug,"],["impl Debug for ObjectId"],["impl<Unit: Debug> Debug for MeasuredText<Unit>"],["impl<Unit: Debug> Debug for Origin<Unit>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.Copy.js b/main/implementors/core/marker/trait.Copy.js
index 10bea08b2..1e5c07e10 100644
--- a/main/implementors/core/marker/trait.Copy.js
+++ b/main/implementors/core/marker/trait.Copy.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<Unit: Copy> Copy for StrokeOptions<Unit>"],["impl Copy for TileMapFocus"],["impl Copy for Color"],["impl<Unit: Copy> Copy for PathEvent<Unit>"],["impl<Unit: Copy> Copy for TextOrigin<Unit>"],["impl Copy for GlyphInfo"],["impl<'a, Unit: Copy> Copy for Text<'a, Unit>"],["impl<Unit: Copy> Copy for Origin<Unit>"],["impl Copy for ObjectId"]]
+"kludgine":[["impl Copy for GlyphInfo"],["impl<Unit: Copy> Copy for Origin<Unit>"],["impl<Unit: Copy> Copy for TextOrigin<Unit>"],["impl Copy for Color"],["impl<Unit: Copy> Copy for StrokeOptions<Unit>"],["impl Copy for TileMapFocus"],["impl<Unit: Copy> Copy for PathEvent<Unit>"],["impl Copy for ObjectId"],["impl<'a, Unit: Copy> Copy for Text<'a, Unit>"],["impl<Unit: Copy> Copy for CornerRadii<Unit>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.Freeze.js b/main/implementors/core/marker/trait.Freeze.js
index d8c3bd529..b849444a9 100644
--- a/main/implementors/core/marker/trait.Freeze.js
+++ b/main/implementors/core/marker/trait.Freeze.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<'window, WindowEvent> Freeze for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> Freeze for WindowHandle<Message>",1,["kludgine::app::WindowHandle"]],["impl Freeze for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl Freeze for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> !Freeze for PreparedGraphic<Unit>",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> Freeze for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl !Freeze for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> Freeze for Shape<Unit, TEXTURED>where\n Unit: Freeze,",1,["kludgine::shapes::Shape"]],["impl<Unit> Freeze for PathEvent<Unit>where\n Unit: Freeze,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> Freeze for Path<Unit, TEXTURED>where\n Unit: Freeze,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> Freeze for PathBuilder<Unit, TEXTURED>where\n Unit: Freeze,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> Freeze for StrokeOptions<Unit>where\n Unit: Freeze,",1,["kludgine::shapes::StrokeOptions"]],["impl !Freeze for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> Freeze for TextOrigin<Unit>where\n Unit: Freeze,",1,["kludgine::text::TextOrigin"]],["impl<Unit> Freeze for MeasuredText<Unit>where\n Unit: Freeze,",1,["kludgine::text::MeasuredText"]],["impl Freeze for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl Freeze for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> Freeze for Text<'a, Unit>where\n Unit: Freeze,",1,["kludgine::text::Text"]],["impl Freeze for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl Freeze for Tiles",1,["kludgine::tilemap::Tiles"]],["impl Freeze for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> Freeze for ObjectLayer<O>",1,["kludgine::tilemap::ObjectLayer"]],["impl Freeze for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> Freeze for ObjectInfo<O>where\n O: Freeze,",1,["kludgine::tilemap::ObjectInfo"]],["impl Freeze for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl !Freeze for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> Freeze for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> Freeze for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> Freeze for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> Freeze for ClipGuard<'clip, T>",1,["kludgine::ClipGuard"]],["impl Freeze for Color",1,["kludgine::Color"]],["impl Freeze for Texture",1,["kludgine::Texture"]],["impl<Unit> Freeze for Origin<Unit>where\n Unit: Freeze,",1,["kludgine::Origin"]],["impl Freeze for SharedTexture",1,["kludgine::SharedTexture"]],["impl Freeze for TextureRegion",1,["kludgine::TextureRegion"]],["impl Freeze for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> Freeze for Drawable<T, Unit>where\n T: Freeze,\n Unit: Freeze,",1,["kludgine::Drawable"]]]
+"kludgine":[["impl<'window, WindowEvent> Freeze for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> Freeze for WindowHandle<Message>",1,["kludgine::app::WindowHandle"]],["impl Freeze for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl Freeze for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> !Freeze for PreparedGraphic<Unit>",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> Freeze for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl !Freeze for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> Freeze for Shape<Unit, TEXTURED>where\n Unit: Freeze,",1,["kludgine::shapes::Shape"]],["impl<Unit> Freeze for PathEvent<Unit>where\n Unit: Freeze,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> Freeze for Path<Unit, TEXTURED>where\n Unit: Freeze,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> Freeze for PathBuilder<Unit, TEXTURED>where\n Unit: Freeze,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> Freeze for StrokeOptions<Unit>where\n Unit: Freeze,",1,["kludgine::shapes::StrokeOptions"]],["impl<Unit> Freeze for CornerRadii<Unit>where\n Unit: Freeze,",1,["kludgine::shapes::CornerRadii"]],["impl !Freeze for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> Freeze for TextOrigin<Unit>where\n Unit: Freeze,",1,["kludgine::text::TextOrigin"]],["impl<Unit> Freeze for MeasuredText<Unit>where\n Unit: Freeze,",1,["kludgine::text::MeasuredText"]],["impl Freeze for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl Freeze for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> Freeze for Text<'a, Unit>where\n Unit: Freeze,",1,["kludgine::text::Text"]],["impl Freeze for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl Freeze for Tiles",1,["kludgine::tilemap::Tiles"]],["impl Freeze for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> Freeze for ObjectLayer<O>",1,["kludgine::tilemap::ObjectLayer"]],["impl Freeze for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> Freeze for ObjectInfo<O>where\n O: Freeze,",1,["kludgine::tilemap::ObjectInfo"]],["impl Freeze for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl !Freeze for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> Freeze for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> Freeze for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> Freeze for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> Freeze for ClipGuard<'clip, T>",1,["kludgine::ClipGuard"]],["impl Freeze for Color",1,["kludgine::Color"]],["impl Freeze for Texture",1,["kludgine::Texture"]],["impl<Unit> Freeze for Origin<Unit>where\n Unit: Freeze,",1,["kludgine::Origin"]],["impl Freeze for SharedTexture",1,["kludgine::SharedTexture"]],["impl Freeze for TextureRegion",1,["kludgine::TextureRegion"]],["impl Freeze for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> Freeze for Drawable<T, Unit>where\n T: Freeze,\n Unit: Freeze,",1,["kludgine::Drawable"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.Send.js b/main/implementors/core/marker/trait.Send.js
index 91add1ee9..562dda482 100644
--- a/main/implementors/core/marker/trait.Send.js
+++ b/main/implementors/core/marker/trait.Send.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<'window, WindowEvent> Send for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> Send for WindowHandle<Message>where\n Message: Send,",1,["kludgine::app::WindowHandle"]],["impl Send for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl Send for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> Send for PreparedGraphic<Unit>where\n Unit: Send,",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> Send for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl Send for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> Send for Shape<Unit, TEXTURED>where\n Unit: Send,",1,["kludgine::shapes::Shape"]],["impl<Unit> Send for PathEvent<Unit>where\n Unit: Send,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> Send for Path<Unit, TEXTURED>where\n Unit: Send,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> Send for PathBuilder<Unit, TEXTURED>where\n Unit: Send,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> Send for StrokeOptions<Unit>where\n Unit: Send,",1,["kludgine::shapes::StrokeOptions"]],["impl Send for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> Send for TextOrigin<Unit>where\n Unit: Send,",1,["kludgine::text::TextOrigin"]],["impl<Unit> Send for MeasuredText<Unit>where\n Unit: Send,",1,["kludgine::text::MeasuredText"]],["impl Send for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl Send for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> Send for Text<'a, Unit>where\n Unit: Send,",1,["kludgine::text::Text"]],["impl Send for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl Send for Tiles",1,["kludgine::tilemap::Tiles"]],["impl Send for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> Send for ObjectLayer<O>where\n O: Send,",1,["kludgine::tilemap::ObjectLayer"]],["impl Send for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> Send for ObjectInfo<O>where\n O: Send,",1,["kludgine::tilemap::ObjectInfo"]],["impl Send for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl Send for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> Send for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> Send for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> Send for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> Send for ClipGuard<'clip, T>where\n T: Send,",1,["kludgine::ClipGuard"]],["impl Send for Color",1,["kludgine::Color"]],["impl Send for Texture",1,["kludgine::Texture"]],["impl<Unit> Send for Origin<Unit>where\n Unit: Send,",1,["kludgine::Origin"]],["impl Send for SharedTexture",1,["kludgine::SharedTexture"]],["impl Send for TextureRegion",1,["kludgine::TextureRegion"]],["impl Send for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> Send for Drawable<T, Unit>where\n T: Send,\n Unit: Send,",1,["kludgine::Drawable"]]]
+"kludgine":[["impl<'window, WindowEvent> Send for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> Send for WindowHandle<Message>where\n Message: Send,",1,["kludgine::app::WindowHandle"]],["impl Send for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl Send for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> Send for PreparedGraphic<Unit>where\n Unit: Send,",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> Send for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl Send for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> Send for Shape<Unit, TEXTURED>where\n Unit: Send,",1,["kludgine::shapes::Shape"]],["impl<Unit> Send for PathEvent<Unit>where\n Unit: Send,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> Send for Path<Unit, TEXTURED>where\n Unit: Send,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> Send for PathBuilder<Unit, TEXTURED>where\n Unit: Send,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> Send for StrokeOptions<Unit>where\n Unit: Send,",1,["kludgine::shapes::StrokeOptions"]],["impl<Unit> Send for CornerRadii<Unit>where\n Unit: Send,",1,["kludgine::shapes::CornerRadii"]],["impl Send for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> Send for TextOrigin<Unit>where\n Unit: Send,",1,["kludgine::text::TextOrigin"]],["impl<Unit> Send for MeasuredText<Unit>where\n Unit: Send,",1,["kludgine::text::MeasuredText"]],["impl Send for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl Send for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> Send for Text<'a, Unit>where\n Unit: Send,",1,["kludgine::text::Text"]],["impl Send for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl Send for Tiles",1,["kludgine::tilemap::Tiles"]],["impl Send for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> Send for ObjectLayer<O>where\n O: Send,",1,["kludgine::tilemap::ObjectLayer"]],["impl Send for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> Send for ObjectInfo<O>where\n O: Send,",1,["kludgine::tilemap::ObjectInfo"]],["impl Send for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl Send for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> Send for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> Send for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> Send for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> Send for ClipGuard<'clip, T>where\n T: Send,",1,["kludgine::ClipGuard"]],["impl Send for Color",1,["kludgine::Color"]],["impl Send for Texture",1,["kludgine::Texture"]],["impl<Unit> Send for Origin<Unit>where\n Unit: Send,",1,["kludgine::Origin"]],["impl Send for SharedTexture",1,["kludgine::SharedTexture"]],["impl Send for TextureRegion",1,["kludgine::TextureRegion"]],["impl Send for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> Send for Drawable<T, Unit>where\n T: Send,\n Unit: Send,",1,["kludgine::Drawable"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.StructuralEq.js b/main/implementors/core/marker/trait.StructuralEq.js
index 7a5c74976..f908d99d9 100644
--- a/main/implementors/core/marker/trait.StructuralEq.js
+++ b/main/implementors/core/marker/trait.StructuralEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl StructuralEq for ObjectId"],["impl<Unit> StructuralEq for Origin<Unit>"],["impl StructuralEq for TextureRegion"],["impl StructuralEq for Color"],["impl<Unit> StructuralEq for TextOrigin<Unit>"]]
+"kludgine":[["impl<Unit> StructuralEq for CornerRadii<Unit>"],["impl StructuralEq for Color"],["impl<Unit> StructuralEq for TextOrigin<Unit>"],["impl StructuralEq for ObjectId"],["impl<Unit> StructuralEq for Origin<Unit>"],["impl StructuralEq for TextureRegion"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.StructuralPartialEq.js b/main/implementors/core/marker/trait.StructuralPartialEq.js
index 0e07b0629..97e22b125 100644
--- a/main/implementors/core/marker/trait.StructuralPartialEq.js
+++ b/main/implementors/core/marker/trait.StructuralPartialEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl StructuralPartialEq for ObjectId"],["impl<Unit> StructuralPartialEq for Origin<Unit>"],["impl<Unit> StructuralPartialEq for TextOrigin<Unit>"],["impl StructuralPartialEq for Color"],["impl StructuralPartialEq for TextureRegion"],["impl<Unit> StructuralPartialEq for StrokeOptions<Unit>"],["impl<Unit, const TEXTURED: bool> StructuralPartialEq for Shape<Unit, TEXTURED>"]]
+"kludgine":[["impl<Unit> StructuralPartialEq for Origin<Unit>"],["impl<Unit> StructuralPartialEq for CornerRadii<Unit>"],["impl StructuralPartialEq for TextureRegion"],["impl<Unit, const TEXTURED: bool> StructuralPartialEq for Shape<Unit, TEXTURED>"],["impl StructuralPartialEq for ObjectId"],["impl<Unit> StructuralPartialEq for TextOrigin<Unit>"],["impl StructuralPartialEq for Color"],["impl<Unit> StructuralPartialEq for StrokeOptions<Unit>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.Sync.js b/main/implementors/core/marker/trait.Sync.js
index 1f0817524..3aa7b0982 100644
--- a/main/implementors/core/marker/trait.Sync.js
+++ b/main/implementors/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<'window, WindowEvent = ()> !Sync for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> Sync for WindowHandle<Message>where\n Message: Send,",1,["kludgine::app::WindowHandle"]],["impl Sync for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl Sync for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> Sync for PreparedGraphic<Unit>where\n Unit: Sync,",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> Sync for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl Sync for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> Sync for Shape<Unit, TEXTURED>where\n Unit: Sync,",1,["kludgine::shapes::Shape"]],["impl<Unit> Sync for PathEvent<Unit>where\n Unit: Sync,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> Sync for Path<Unit, TEXTURED>where\n Unit: Sync,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> Sync for PathBuilder<Unit, TEXTURED>where\n Unit: Sync,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> Sync for StrokeOptions<Unit>where\n Unit: Sync,",1,["kludgine::shapes::StrokeOptions"]],["impl Sync for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> Sync for TextOrigin<Unit>where\n Unit: Sync,",1,["kludgine::text::TextOrigin"]],["impl<Unit> Sync for MeasuredText<Unit>where\n Unit: Sync,",1,["kludgine::text::MeasuredText"]],["impl Sync for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl Sync for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> Sync for Text<'a, Unit>where\n Unit: Sync,",1,["kludgine::text::Text"]],["impl Sync for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl Sync for Tiles",1,["kludgine::tilemap::Tiles"]],["impl Sync for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> Sync for ObjectLayer<O>where\n O: Sync,",1,["kludgine::tilemap::ObjectLayer"]],["impl Sync for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> Sync for ObjectInfo<O>where\n O: Sync,",1,["kludgine::tilemap::ObjectInfo"]],["impl Sync for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl Sync for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> Sync for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> Sync for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> Sync for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> Sync for ClipGuard<'clip, T>where\n T: Sync,",1,["kludgine::ClipGuard"]],["impl Sync for Color",1,["kludgine::Color"]],["impl Sync for Texture",1,["kludgine::Texture"]],["impl<Unit> Sync for Origin<Unit>where\n Unit: Sync,",1,["kludgine::Origin"]],["impl Sync for SharedTexture",1,["kludgine::SharedTexture"]],["impl Sync for TextureRegion",1,["kludgine::TextureRegion"]],["impl Sync for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> Sync for Drawable<T, Unit>where\n T: Sync,\n Unit: Sync,",1,["kludgine::Drawable"]]]
+"kludgine":[["impl<'window, WindowEvent = ()> !Sync for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> Sync for WindowHandle<Message>where\n Message: Send,",1,["kludgine::app::WindowHandle"]],["impl Sync for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl Sync for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> Sync for PreparedGraphic<Unit>where\n Unit: Sync,",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> Sync for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl Sync for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> Sync for Shape<Unit, TEXTURED>where\n Unit: Sync,",1,["kludgine::shapes::Shape"]],["impl<Unit> Sync for PathEvent<Unit>where\n Unit: Sync,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> Sync for Path<Unit, TEXTURED>where\n Unit: Sync,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> Sync for PathBuilder<Unit, TEXTURED>where\n Unit: Sync,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> Sync for StrokeOptions<Unit>where\n Unit: Sync,",1,["kludgine::shapes::StrokeOptions"]],["impl<Unit> Sync for CornerRadii<Unit>where\n Unit: Sync,",1,["kludgine::shapes::CornerRadii"]],["impl Sync for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> Sync for TextOrigin<Unit>where\n Unit: Sync,",1,["kludgine::text::TextOrigin"]],["impl<Unit> Sync for MeasuredText<Unit>where\n Unit: Sync,",1,["kludgine::text::MeasuredText"]],["impl Sync for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl Sync for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> Sync for Text<'a, Unit>where\n Unit: Sync,",1,["kludgine::text::Text"]],["impl Sync for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl Sync for Tiles",1,["kludgine::tilemap::Tiles"]],["impl Sync for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> Sync for ObjectLayer<O>where\n O: Sync,",1,["kludgine::tilemap::ObjectLayer"]],["impl Sync for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> Sync for ObjectInfo<O>where\n O: Sync,",1,["kludgine::tilemap::ObjectInfo"]],["impl Sync for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl Sync for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> Sync for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> Sync for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> Sync for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> Sync for ClipGuard<'clip, T>where\n T: Sync,",1,["kludgine::ClipGuard"]],["impl Sync for Color",1,["kludgine::Color"]],["impl Sync for Texture",1,["kludgine::Texture"]],["impl<Unit> Sync for Origin<Unit>where\n Unit: Sync,",1,["kludgine::Origin"]],["impl Sync for SharedTexture",1,["kludgine::SharedTexture"]],["impl Sync for TextureRegion",1,["kludgine::TextureRegion"]],["impl Sync for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> Sync for Drawable<T, Unit>where\n T: Sync,\n Unit: Sync,",1,["kludgine::Drawable"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/marker/trait.Unpin.js b/main/implementors/core/marker/trait.Unpin.js
index e58f1521d..2da3d603f 100644
--- a/main/implementors/core/marker/trait.Unpin.js
+++ b/main/implementors/core/marker/trait.Unpin.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<'window, WindowEvent> Unpin for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> Unpin for WindowHandle<Message>",1,["kludgine::app::WindowHandle"]],["impl Unpin for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl Unpin for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> Unpin for PreparedGraphic<Unit>where\n Unit: Unpin,",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> Unpin for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl Unpin for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> Unpin for Shape<Unit, TEXTURED>where\n Unit: Unpin,",1,["kludgine::shapes::Shape"]],["impl<Unit> Unpin for PathEvent<Unit>where\n Unit: Unpin,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> Unpin for Path<Unit, TEXTURED>where\n Unit: Unpin,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> Unpin for PathBuilder<Unit, TEXTURED>where\n Unit: Unpin,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> Unpin for StrokeOptions<Unit>where\n Unit: Unpin,",1,["kludgine::shapes::StrokeOptions"]],["impl Unpin for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> Unpin for TextOrigin<Unit>where\n Unit: Unpin,",1,["kludgine::text::TextOrigin"]],["impl<Unit> Unpin for MeasuredText<Unit>where\n Unit: Unpin,",1,["kludgine::text::MeasuredText"]],["impl Unpin for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl Unpin for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> Unpin for Text<'a, Unit>where\n Unit: Unpin,",1,["kludgine::text::Text"]],["impl Unpin for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl Unpin for Tiles",1,["kludgine::tilemap::Tiles"]],["impl Unpin for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> Unpin for ObjectLayer<O>where\n O: Unpin,",1,["kludgine::tilemap::ObjectLayer"]],["impl Unpin for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> Unpin for ObjectInfo<O>where\n O: Unpin,",1,["kludgine::tilemap::ObjectInfo"]],["impl Unpin for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl Unpin for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> Unpin for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> Unpin for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> Unpin for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> Unpin for ClipGuard<'clip, T>",1,["kludgine::ClipGuard"]],["impl Unpin for Color",1,["kludgine::Color"]],["impl Unpin for Texture",1,["kludgine::Texture"]],["impl<Unit> Unpin for Origin<Unit>where\n Unit: Unpin,",1,["kludgine::Origin"]],["impl Unpin for SharedTexture",1,["kludgine::SharedTexture"]],["impl Unpin for TextureRegion",1,["kludgine::TextureRegion"]],["impl Unpin for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> Unpin for Drawable<T, Unit>where\n T: Unpin,\n Unit: Unpin,",1,["kludgine::Drawable"]]]
+"kludgine":[["impl<'window, WindowEvent> Unpin for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> Unpin for WindowHandle<Message>",1,["kludgine::app::WindowHandle"]],["impl Unpin for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl Unpin for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> Unpin for PreparedGraphic<Unit>where\n Unit: Unpin,",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> Unpin for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl Unpin for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> Unpin for Shape<Unit, TEXTURED>where\n Unit: Unpin,",1,["kludgine::shapes::Shape"]],["impl<Unit> Unpin for PathEvent<Unit>where\n Unit: Unpin,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> Unpin for Path<Unit, TEXTURED>where\n Unit: Unpin,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> Unpin for PathBuilder<Unit, TEXTURED>where\n Unit: Unpin,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> Unpin for StrokeOptions<Unit>where\n Unit: Unpin,",1,["kludgine::shapes::StrokeOptions"]],["impl<Unit> Unpin for CornerRadii<Unit>where\n Unit: Unpin,",1,["kludgine::shapes::CornerRadii"]],["impl Unpin for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> Unpin for TextOrigin<Unit>where\n Unit: Unpin,",1,["kludgine::text::TextOrigin"]],["impl<Unit> Unpin for MeasuredText<Unit>where\n Unit: Unpin,",1,["kludgine::text::MeasuredText"]],["impl Unpin for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl Unpin for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> Unpin for Text<'a, Unit>where\n Unit: Unpin,",1,["kludgine::text::Text"]],["impl Unpin for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl Unpin for Tiles",1,["kludgine::tilemap::Tiles"]],["impl Unpin for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> Unpin for ObjectLayer<O>where\n O: Unpin,",1,["kludgine::tilemap::ObjectLayer"]],["impl Unpin for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> Unpin for ObjectInfo<O>where\n O: Unpin,",1,["kludgine::tilemap::ObjectInfo"]],["impl Unpin for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl Unpin for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> Unpin for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> Unpin for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> Unpin for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> Unpin for ClipGuard<'clip, T>",1,["kludgine::ClipGuard"]],["impl Unpin for Color",1,["kludgine::Color"]],["impl Unpin for Texture",1,["kludgine::Texture"]],["impl<Unit> Unpin for Origin<Unit>where\n Unit: Unpin,",1,["kludgine::Origin"]],["impl Unpin for SharedTexture",1,["kludgine::SharedTexture"]],["impl Unpin for TextureRegion",1,["kludgine::TextureRegion"]],["impl Unpin for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> Unpin for Drawable<T, Unit>where\n T: Unpin,\n Unit: Unpin,",1,["kludgine::Drawable"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/ops/deref/trait.Deref.js b/main/implementors/core/ops/deref/trait.Deref.js
index 63359dd7e..90fe499c5 100644
--- a/main/implementors/core/ops/deref/trait.Deref.js
+++ b/main/implementors/core/ops/deref/trait.Deref.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl Deref for PreparedText"],["impl Deref for SharedTexture"],["impl Deref for Graphics<'_>"],["impl<'gfx> Deref for Renderer<'_, 'gfx>"],["impl<T> Deref for ClipGuard<'_, T>where\n T: Clipped,"]]
+"kludgine":[["impl Deref for SharedTexture"],["impl<'gfx> Deref for Renderer<'_, 'gfx>"],["impl<T> Deref for ClipGuard<'_, T>where\n T: Clipped,"],["impl Deref for Graphics<'_>"],["impl Deref for PreparedText"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/ops/deref/trait.DerefMut.js b/main/implementors/core/ops/deref/trait.DerefMut.js
index 8658ef427..0751991c5 100644
--- a/main/implementors/core/ops/deref/trait.DerefMut.js
+++ b/main/implementors/core/ops/deref/trait.DerefMut.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl DerefMut for PreparedText"],["impl DerefMut for Graphics<'_>"],["impl<T> DerefMut for ClipGuard<'_, T>where\n T: Clipped,"],["impl<'gfx> DerefMut for Renderer<'_, 'gfx>"]]
+"kludgine":[["impl DerefMut for Graphics<'_>"],["impl DerefMut for PreparedText"],["impl<T> DerefMut for ClipGuard<'_, T>where\n T: Clipped,"],["impl<'gfx> DerefMut for Renderer<'_, 'gfx>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/ops/drop/trait.Drop.js b/main/implementors/core/ops/drop/trait.Drop.js
index c6b81d01c..efcc65aab 100644
--- a/main/implementors/core/ops/drop/trait.Drop.js
+++ b/main/implementors/core/ops/drop/trait.Drop.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl Drop for CollectedTexture"],["impl Drop for Renderer<'_, '_>"],["impl Drop for Frame<'_>"],["impl<T> Drop for ClipGuard<'_, T>where\n T: Clipped,"]]
+"kludgine":[["impl Drop for Renderer<'_, '_>"],["impl Drop for Frame<'_>"],["impl<T> Drop for ClipGuard<'_, T>where\n T: Clipped,"],["impl Drop for CollectedTexture"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/ops/index/trait.IndexMut.js b/main/implementors/core/ops/index/trait.IndexMut.js
index cac3b9c82..8281b2763 100644
--- a/main/implementors/core/ops/index/trait.IndexMut.js
+++ b/main/implementors/core/ops/index/trait.IndexMut.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<O> IndexMut<usize> for ObjectLayer<O>"],["impl<O> IndexMut<ObjectId> for ObjectLayer<O>"]]
+"kludgine":[["impl<O> IndexMut<ObjectId> for ObjectLayer<O>"],["impl<O> IndexMut<usize> for ObjectLayer<O>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
index 4c47bab91..ecd0a6c8f 100644
--- a/main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<'window, WindowEvent = ()> !RefUnwindSafe for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> RefUnwindSafe for WindowHandle<Message>",1,["kludgine::app::WindowHandle"]],["impl RefUnwindSafe for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl RefUnwindSafe for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> !RefUnwindSafe for PreparedGraphic<Unit>",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> !RefUnwindSafe for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl !RefUnwindSafe for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> RefUnwindSafe for Shape<Unit, TEXTURED>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::Shape"]],["impl<Unit> RefUnwindSafe for PathEvent<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> RefUnwindSafe for Path<Unit, TEXTURED>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> RefUnwindSafe for PathBuilder<Unit, TEXTURED>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> RefUnwindSafe for StrokeOptions<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::StrokeOptions"]],["impl !RefUnwindSafe for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> RefUnwindSafe for TextOrigin<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::text::TextOrigin"]],["impl<Unit> RefUnwindSafe for MeasuredText<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::text::MeasuredText"]],["impl RefUnwindSafe for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl RefUnwindSafe for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> RefUnwindSafe for Text<'a, Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::text::Text"]],["impl RefUnwindSafe for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl RefUnwindSafe for Tiles",1,["kludgine::tilemap::Tiles"]],["impl !RefUnwindSafe for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> RefUnwindSafe for ObjectLayer<O>where\n O: RefUnwindSafe,",1,["kludgine::tilemap::ObjectLayer"]],["impl RefUnwindSafe for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> RefUnwindSafe for ObjectInfo<O>where\n O: RefUnwindSafe,",1,["kludgine::tilemap::ObjectInfo"]],["impl RefUnwindSafe for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl !RefUnwindSafe for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> !RefUnwindSafe for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> !RefUnwindSafe for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> !RefUnwindSafe for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> RefUnwindSafe for ClipGuard<'clip, T>where\n T: RefUnwindSafe,",1,["kludgine::ClipGuard"]],["impl RefUnwindSafe for Color",1,["kludgine::Color"]],["impl !RefUnwindSafe for Texture",1,["kludgine::Texture"]],["impl<Unit> RefUnwindSafe for Origin<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::Origin"]],["impl !RefUnwindSafe for SharedTexture",1,["kludgine::SharedTexture"]],["impl !RefUnwindSafe for TextureRegion",1,["kludgine::TextureRegion"]],["impl !RefUnwindSafe for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> RefUnwindSafe for Drawable<T, Unit>where\n T: RefUnwindSafe,\n Unit: RefUnwindSafe,",1,["kludgine::Drawable"]]]
+"kludgine":[["impl<'window, WindowEvent = ()> !RefUnwindSafe for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> RefUnwindSafe for WindowHandle<Message>",1,["kludgine::app::WindowHandle"]],["impl RefUnwindSafe for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl RefUnwindSafe for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> !RefUnwindSafe for PreparedGraphic<Unit>",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> !RefUnwindSafe for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl !RefUnwindSafe for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> RefUnwindSafe for Shape<Unit, TEXTURED>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::Shape"]],["impl<Unit> RefUnwindSafe for PathEvent<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> RefUnwindSafe for Path<Unit, TEXTURED>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> RefUnwindSafe for PathBuilder<Unit, TEXTURED>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> RefUnwindSafe for StrokeOptions<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::StrokeOptions"]],["impl<Unit> RefUnwindSafe for CornerRadii<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::shapes::CornerRadii"]],["impl !RefUnwindSafe for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> RefUnwindSafe for TextOrigin<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::text::TextOrigin"]],["impl<Unit> RefUnwindSafe for MeasuredText<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::text::MeasuredText"]],["impl RefUnwindSafe for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl RefUnwindSafe for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> RefUnwindSafe for Text<'a, Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::text::Text"]],["impl RefUnwindSafe for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl RefUnwindSafe for Tiles",1,["kludgine::tilemap::Tiles"]],["impl !RefUnwindSafe for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> RefUnwindSafe for ObjectLayer<O>where\n O: RefUnwindSafe,",1,["kludgine::tilemap::ObjectLayer"]],["impl RefUnwindSafe for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> RefUnwindSafe for ObjectInfo<O>where\n O: RefUnwindSafe,",1,["kludgine::tilemap::ObjectInfo"]],["impl RefUnwindSafe for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl !RefUnwindSafe for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> !RefUnwindSafe for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> !RefUnwindSafe for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> !RefUnwindSafe for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> RefUnwindSafe for ClipGuard<'clip, T>where\n T: RefUnwindSafe,",1,["kludgine::ClipGuard"]],["impl RefUnwindSafe for Color",1,["kludgine::Color"]],["impl !RefUnwindSafe for Texture",1,["kludgine::Texture"]],["impl<Unit> RefUnwindSafe for Origin<Unit>where\n Unit: RefUnwindSafe,",1,["kludgine::Origin"]],["impl !RefUnwindSafe for SharedTexture",1,["kludgine::SharedTexture"]],["impl !RefUnwindSafe for TextureRegion",1,["kludgine::TextureRegion"]],["impl !RefUnwindSafe for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> RefUnwindSafe for Drawable<T, Unit>where\n T: RefUnwindSafe,\n Unit: RefUnwindSafe,",1,["kludgine::Drawable"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
index 4d152ec52..28a3526ef 100644
--- a/main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<'window, WindowEvent = ()> !UnwindSafe for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> UnwindSafe for WindowHandle<Message>",1,["kludgine::app::WindowHandle"]],["impl UnwindSafe for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl UnwindSafe for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> !UnwindSafe for PreparedGraphic<Unit>",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> !UnwindSafe for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl !UnwindSafe for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> UnwindSafe for Shape<Unit, TEXTURED>where\n Unit: UnwindSafe + RefUnwindSafe,",1,["kludgine::shapes::Shape"]],["impl<Unit> UnwindSafe for PathEvent<Unit>where\n Unit: UnwindSafe,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> UnwindSafe for Path<Unit, TEXTURED>where\n Unit: UnwindSafe + RefUnwindSafe,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> UnwindSafe for PathBuilder<Unit, TEXTURED>where\n Unit: UnwindSafe + RefUnwindSafe,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> UnwindSafe for StrokeOptions<Unit>where\n Unit: UnwindSafe,",1,["kludgine::shapes::StrokeOptions"]],["impl !UnwindSafe for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> UnwindSafe for TextOrigin<Unit>where\n Unit: UnwindSafe,",1,["kludgine::text::TextOrigin"]],["impl<Unit> UnwindSafe for MeasuredText<Unit>where\n Unit: UnwindSafe,",1,["kludgine::text::MeasuredText"]],["impl UnwindSafe for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl UnwindSafe for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> UnwindSafe for Text<'a, Unit>where\n Unit: UnwindSafe,",1,["kludgine::text::Text"]],["impl UnwindSafe for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl UnwindSafe for Tiles",1,["kludgine::tilemap::Tiles"]],["impl !UnwindSafe for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> UnwindSafe for ObjectLayer<O>where\n O: UnwindSafe,",1,["kludgine::tilemap::ObjectLayer"]],["impl UnwindSafe for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> UnwindSafe for ObjectInfo<O>where\n O: UnwindSafe,",1,["kludgine::tilemap::ObjectInfo"]],["impl UnwindSafe for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl !UnwindSafe for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> !UnwindSafe for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> !UnwindSafe for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> !UnwindSafe for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> !UnwindSafe for ClipGuard<'clip, T>",1,["kludgine::ClipGuard"]],["impl UnwindSafe for Color",1,["kludgine::Color"]],["impl !UnwindSafe for Texture",1,["kludgine::Texture"]],["impl<Unit> UnwindSafe for Origin<Unit>where\n Unit: UnwindSafe,",1,["kludgine::Origin"]],["impl !UnwindSafe for SharedTexture",1,["kludgine::SharedTexture"]],["impl !UnwindSafe for TextureRegion",1,["kludgine::TextureRegion"]],["impl !UnwindSafe for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> UnwindSafe for Drawable<T, Unit>where\n T: UnwindSafe,\n Unit: UnwindSafe,",1,["kludgine::Drawable"]]]
+"kludgine":[["impl<'window, WindowEvent = ()> !UnwindSafe for Window<'window, WindowEvent>",1,["kludgine::app::Window"]],["impl<Message> UnwindSafe for WindowHandle<Message>",1,["kludgine::app::WindowHandle"]],["impl UnwindSafe for TextureCollection",1,["kludgine::atlas::TextureCollection"]],["impl UnwindSafe for CollectedTexture",1,["kludgine::atlas::CollectedTexture"]],["impl<Unit> !UnwindSafe for PreparedGraphic<Unit>",1,["kludgine::pipeline::PreparedGraphic"]],["impl<'render, 'gfx> !UnwindSafe for Renderer<'render, 'gfx>",1,["kludgine::render::Renderer"]],["impl !UnwindSafe for Drawing",1,["kludgine::render::Drawing"]],["impl<Unit, const TEXTURED: bool> UnwindSafe for Shape<Unit, TEXTURED>where\n Unit: UnwindSafe + RefUnwindSafe,",1,["kludgine::shapes::Shape"]],["impl<Unit> UnwindSafe for PathEvent<Unit>where\n Unit: UnwindSafe,",1,["kludgine::shapes::PathEvent"]],["impl<Unit, const TEXTURED: bool> UnwindSafe for Path<Unit, TEXTURED>where\n Unit: UnwindSafe + RefUnwindSafe,",1,["kludgine::shapes::Path"]],["impl<Unit, const TEXTURED: bool> UnwindSafe for PathBuilder<Unit, TEXTURED>where\n Unit: UnwindSafe + RefUnwindSafe,",1,["kludgine::shapes::PathBuilder"]],["impl<Unit> UnwindSafe for StrokeOptions<Unit>where\n Unit: UnwindSafe,",1,["kludgine::shapes::StrokeOptions"]],["impl<Unit> UnwindSafe for CornerRadii<Unit>where\n Unit: UnwindSafe,",1,["kludgine::shapes::CornerRadii"]],["impl !UnwindSafe for PreparedText",1,["kludgine::text::PreparedText"]],["impl<Unit> UnwindSafe for TextOrigin<Unit>where\n Unit: UnwindSafe,",1,["kludgine::text::TextOrigin"]],["impl<Unit> UnwindSafe for MeasuredText<Unit>where\n Unit: UnwindSafe,",1,["kludgine::text::MeasuredText"]],["impl UnwindSafe for MeasuredGlyph",1,["kludgine::text::MeasuredGlyph"]],["impl UnwindSafe for GlyphInfo",1,["kludgine::text::GlyphInfo"]],["impl<'a, Unit> UnwindSafe for Text<'a, Unit>where\n Unit: UnwindSafe,",1,["kludgine::text::Text"]],["impl UnwindSafe for TileOffset",1,["kludgine::tilemap::TileOffset"]],["impl UnwindSafe for Tiles",1,["kludgine::tilemap::Tiles"]],["impl !UnwindSafe for TileKind",1,["kludgine::tilemap::TileKind"]],["impl<O> UnwindSafe for ObjectLayer<O>where\n O: UnwindSafe,",1,["kludgine::tilemap::ObjectLayer"]],["impl UnwindSafe for ObjectId",1,["kludgine::tilemap::ObjectId"]],["impl<O> UnwindSafe for ObjectInfo<O>where\n O: UnwindSafe,",1,["kludgine::tilemap::ObjectInfo"]],["impl UnwindSafe for TileMapFocus",1,["kludgine::tilemap::TileMapFocus"]],["impl !UnwindSafe for Kludgine",1,["kludgine::Kludgine"]],["impl<'gfx> !UnwindSafe for Frame<'gfx>",1,["kludgine::Frame"]],["impl<'gfx> !UnwindSafe for Graphics<'gfx>",1,["kludgine::Graphics"]],["impl<'gfx, 'pass> !UnwindSafe for RenderingGraphics<'gfx, 'pass>",1,["kludgine::RenderingGraphics"]],["impl<'clip, T> !UnwindSafe for ClipGuard<'clip, T>",1,["kludgine::ClipGuard"]],["impl UnwindSafe for Color",1,["kludgine::Color"]],["impl !UnwindSafe for Texture",1,["kludgine::Texture"]],["impl<Unit> UnwindSafe for Origin<Unit>where\n Unit: UnwindSafe,",1,["kludgine::Origin"]],["impl !UnwindSafe for SharedTexture",1,["kludgine::SharedTexture"]],["impl !UnwindSafe for TextureRegion",1,["kludgine::TextureRegion"]],["impl !UnwindSafe for AnyTexture",1,["kludgine::AnyTexture"]],["impl<T, Unit> UnwindSafe for Drawable<T, Unit>where\n T: UnwindSafe,\n Unit: UnwindSafe,",1,["kludgine::Drawable"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/figures/traits/trait.ScreenScale.js b/main/implementors/figures/traits/trait.ScreenScale.js
index cd48ee478..394da9373 100644
--- a/main/implementors/figures/traits/trait.ScreenScale.js
+++ b/main/implementors/figures/traits/trait.ScreenScale.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"kludgine":[["impl<Unit> ScreenScale for TextOrigin<Unit>where\n Unit: ScreenScale<Px = Px, Lp = Lp, UPx = UPx>,"],["impl<Unit> ScreenScale for StrokeOptions<Unit>where\n Unit: ScreenScale<Px = Px, Lp = Lp, UPx = UPx>,"]]
+"kludgine":[["impl<Unit> ScreenScale for StrokeOptions<Unit>where\n Unit: ScreenScale<Px = Px, Lp = Lp, UPx = UPx>,"],["impl<Unit> ScreenScale for TextOrigin<Unit>where\n Unit: ScreenScale<Px = Px, Lp = Lp, UPx = UPx>,"],["impl<Unit> ScreenScale for CornerRadii<Unit>where\n Unit: ScreenScale<Lp = Lp, Px = Px, UPx = UPx>,"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/implementors/figures/traits/trait.Zero.js b/main/implementors/figures/traits/trait.Zero.js
new file mode 100644
index 000000000..39fd82781
--- /dev/null
+++ b/main/implementors/figures/traits/trait.Zero.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"kludgine":[["impl<Unit> Zero for CornerRadii<Unit>where\n Unit: Zero,"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/main/kludgine/all.html b/main/kludgine/all.html
index 4e9ef2f3d..57618db63 100644
--- a/main/kludgine/all.html
+++ b/main/kludgine/all.html
@@ -1 +1 @@
-
\ No newline at end of file
diff --git a/main/kludgine/app/fn.run.html b/main/kludgine/app/fn.run.html
index 1ae82800e..d7fcff959 100644
--- a/main/kludgine/app/fn.run.html
+++ b/main/kludgine/app/fn.run.html
@@ -1,4 +1,4 @@
-run in kludgine::app - Rust
Runs a callback as a single window. Continues to run until false is
returned.
\ No newline at end of file
diff --git a/main/kludgine/app/struct.Window.html b/main/kludgine/app/struct.Window.html
index 293d94e20..4e8e85238 100644
--- a/main/kludgine/app/struct.Window.html
+++ b/main/kludgine/app/struct.Window.html
@@ -1,6 +1,6 @@
Window in kludgine::app - Rust
Sends message to the window. If the message cannot be
Returns Ok if the message was successfully sent. The message may not
be received even if this function returns Ok, if the window closes
between when the message was sent and when the message is received.
In Kludgine, each window runs in its own thread. Kludgine allows does
not require WindowBehavior implementors to implement Send, but it
can be useful to receive input from the thread that is opening the
window. This is where Context is useful: it must implement Send,
allowing some data to still be passed when opening the window.
The graphic should be drawn so that the provided relative location
appears at the rendered location. When rotating the graphic, it will
rotate around this point.
An easy-to-use graphics renderer that batches operations on the GPU
automatically.
\ No newline at end of file
diff --git a/main/kludgine/render/struct.Drawing.html b/main/kludgine/render/struct.Drawing.html
index bdc63a8e4..21a6d420a 100644
--- a/main/kludgine/render/struct.Drawing.html
+++ b/main/kludgine/render/struct.Drawing.html
@@ -1,4 +1,4 @@
-Drawing in kludgine::render - Rust
A composite, multi-operation graphic, created with an easy-to-use
Renderer-driven API.
The process of preparing individual graphics and then rendering them allows
for efficient rendering. The downside is that it can be harder to use, and
@@ -7,14 +7,14 @@
This type allows rendering a batch of drawing operations using a
Renderer. Once the renderer is dropped, this type’s vertex buffer and
index buffer are updated.
An easy-to-use graphics renderer that batches operations on the GPU
automatically.
Using the draw operations on this type don’t immediately draw. Instead, once
this type is dropped, the [Rendering] that created this renderer will be
updated with the new drawing instructions. All of the pending operations can
be drawn using [Rendering::render].
Updates the size and scale of this Kludgine instance.
This function updates data stored in the GPU that affects how graphics
are rendered. It should be called before calling next_frame() if the
size or scale of the underlying surface has changed.
\ No newline at end of file
diff --git a/main/kludgine/shapes/sidebar-items.js b/main/kludgine/shapes/sidebar-items.js
index a3dd87da8..09e4862d3 100644
--- a/main/kludgine/shapes/sidebar-items.js
+++ b/main/kludgine/shapes/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"enum":["LineCap","LineJoin","PathEvent"],"struct":["Path","PathBuilder","Shape","StrokeOptions"],"trait":["DefaultStrokeWidth"],"type":["ControlPoint","Endpoint"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":["LineCap","LineJoin","PathEvent"],"struct":["CornerRadii","Path","PathBuilder","Shape","StrokeOptions"],"trait":["DefaultStrokeWidth"],"type":["ControlPoint","Endpoint"]};
\ No newline at end of file
diff --git a/main/kludgine/shapes/struct.CornerRadii.html b/main/kludgine/shapes/struct.CornerRadii.html
new file mode 100644
index 000000000..a87340651
--- /dev/null
+++ b/main/kludgine/shapes/struct.CornerRadii.html
@@ -0,0 +1,59 @@
+CornerRadii in kludgine::shapes - Rust
Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
+then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be
+further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
\ No newline at end of file
diff --git a/main/kludgine/shapes/struct.Path.html b/main/kludgine/shapes/struct.Path.html
index 53a68d982..cc2cd66b1 100644
--- a/main/kludgine/shapes/struct.Path.html
+++ b/main/kludgine/shapes/struct.Path.html
@@ -1,19 +1,26 @@
-Path in kludgine::shapes - Rust
Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be
-further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
That is, this conversion is whatever the implementation of
diff --git a/main/kludgine/shapes/trait.DefaultStrokeWidth.html b/main/kludgine/shapes/trait.DefaultStrokeWidth.html
index 440426b8c..371924bd9 100644
--- a/main/kludgine/shapes/trait.DefaultStrokeWidth.html
+++ b/main/kludgine/shapes/trait.DefaultStrokeWidth.html
@@ -1,7 +1,7 @@
-
\ No newline at end of file
diff --git a/main/kludgine/shapes/type.ControlPoint.html b/main/kludgine/shapes/type.ControlPoint.html
index 4ee610239..3d40c38c4 100644
--- a/main/kludgine/shapes/type.ControlPoint.html
+++ b/main/kludgine/shapes/type.ControlPoint.html
@@ -1,4 +1,4 @@
-ControlPoint in kludgine::shapes - Rust
That is, this conversion is whatever the implementation of
diff --git a/main/kludgine/struct.Drawable.html b/main/kludgine/struct.Drawable.html
index d9660a679..6aa41408a 100644
--- a/main/kludgine/struct.Drawable.html
+++ b/main/kludgine/struct.Drawable.html
@@ -1,4 +1,4 @@
-
After Frame::render() has been invoked, this type will panic if dropped
before either Frame::submit() or Frame::abort() are invoked. This
panic is designed to prevent accidentally forgetting to submit a frame to the GPU.q
If Frame::render() has been invoked, this function must be used
instead of dropping the frame. This type implements a panic-on-drop to
prevent forgetting to submit the frame to the GPU, and this function
prevents the panic from happening.
Updates the size and scale of this Kludgine instance.
This function updates data stored in the GPU that affects how graphics
are rendered. It should be called before calling next_frame() if the
size or scale of the underlying surface has changed.
Updates the size and scale of this Kludgine instance.
This function updates data stored in the GPU that affects how graphics
are rendered. It should be called before calling next_frame() if the
size or scale of the underlying surface has changed.
Returns a ClipGuard that causes all drawing operations to be offset
and clipped to clip until it is dropped.
This function causes the RenderingGraphics to act as if the origin
of the context is clip.origin, and the size of the context is
@@ -15,12 +15,12 @@
the effective clip rect’s origin.
clip is relative to the current clip rect and cannot extend the
current clipping rectangle.
fn cast<To>(self) -> Towhere
diff --git a/main/kludgine/struct.TextureCollection.html b/main/kludgine/struct.TextureCollection.html
index cd3bd9547..13646cafb 100644
--- a/main/kludgine/struct.TextureCollection.html
+++ b/main/kludgine/struct.TextureCollection.html
@@ -7,12 +7,12 @@
otherwise the packing may be inefficient. For example, packing many images
that are multiples of 32px wide/tall will be very efficient. Interally, this
type is used for caching rendered glyphs on the GPU.
-
\ No newline at end of file
diff --git a/main/kludgine/text/struct.GlyphInfo.html b/main/kludgine/text/struct.GlyphInfo.html
index 8f93f9c78..7a1586e07 100644
--- a/main/kludgine/text/struct.GlyphInfo.html
+++ b/main/kludgine/text/struct.GlyphInfo.html
@@ -1,4 +1,4 @@
-GlyphInfo in kludgine::text - Rust
Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be
-further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
That is, this conversion is whatever the implementation of
diff --git a/main/kludgine/tilemap/struct.ObjectLayer.html b/main/kludgine/tilemap/struct.ObjectLayer.html
index 89b5ce4fb..205bd52ae 100644
--- a/main/kludgine/tilemap/struct.ObjectLayer.html
+++ b/main/kludgine/tilemap/struct.ObjectLayer.html
@@ -1,4 +1,4 @@
-
Pushes a new clipping state to the clipping stack.
This function causes this type to act as if the origin of the context is
clip.origin, and the size of the context is clip.size. This means
that rendering at 0,0 will actually render at the effective clip rect’s
@@ -15,12 +15,12 @@
current clipping rectangle.
To restore the clipping rect to the state it was before this function
was called, use Clipped::pop_clip().
Returns a ClipGuard that causes all drawing operations to be offset
and clipped to clip until it is dropped.
This function causes this type to act as if the origin of the context is
clip.origin, and the size of the context is clip.size. This means
@@ -28,4 +28,4 @@
\ No newline at end of file
diff --git a/main/kludgine/trait.DrawableExt.html b/main/kludgine/trait.DrawableExt.html
index b546eb93d..12c76d2ea 100644
--- a/main/kludgine/trait.DrawableExt.html
+++ b/main/kludgine/trait.DrawableExt.html
@@ -1,12 +1,12 @@
-DrawableExt in kludgine - Rust
\ No newline at end of file
diff --git a/main/kludgine/trait.DrawableSource.html b/main/kludgine/trait.DrawableSource.html
index d5419a663..be4d20b0b 100644
--- a/main/kludgine/trait.DrawableSource.html
+++ b/main/kludgine/trait.DrawableSource.html
@@ -1,3 +1,3 @@
-DrawableSource in kludgine - Rust
\ No newline at end of file
diff --git a/main/kludgine/trait.ShaderScalable.html b/main/kludgine/trait.ShaderScalable.html
index 2243d51b5..036b9b473 100644
--- a/main/kludgine/trait.ShaderScalable.html
+++ b/main/kludgine/trait.ShaderScalable.html
@@ -1,3 +1,3 @@
-ShaderScalable in kludgine - Rust