@@ -85,198 +85,197 @@ API in a way that is not compatible with how it was used in 2.6.
85
85
Note that texture/image handling are still separate systems. This is
86
86
however a solvable problem for intermediate and advanced users.
87
87
88
- ### Changes
89
-
90
- * ` arcade.Window `
91
- * Removal of the ` update ` function in favor of ` arcade.Window.on_update() `
92
- * ` update_rate ` parameter in the constructor can no longer be set to ` None ` .
93
- Must be a float.
94
- * Added ` draw_rate ` parameter to constructor
95
- ` arcade.Window.__init__ ` , this will control the interval that the
96
- ` arcade.Window.on_draw() ` function is called at. This can be used
97
- with the pre-existing ` update_rate ` parameter which controls
98
- ` arcade.Window.on_update() ` to achieve separate draw and update rates.
99
- * ` open_window() ` now accepts ` **kwargs ` to pass additional parameters to the
100
- ` arcade.Window ` constructor.
101
-
88
+ ### View and View
89
+
90
+ * Removal of the ` update ` function in favor of ` arcade.Window.on_update() `
91
+ * ` update_rate ` parameter in the constructor can no longer be set to ` None ` .
92
+ Must be a float.
93
+ * Added ` draw_rate ` parameter to constructor
94
+ ` arcade.Window.__init__ ` , this will control the interval that the
95
+ ` arcade.Window.on_draw() ` function is called at. This can be used
96
+ with the pre-existing ` update_rate ` parameter which controls
97
+ ` arcade.Window.on_update() ` to achieve separate draw and update rates.
98
+ * ` open_window() ` now accepts ` **kwargs ` to pass additional parameters to the
99
+ ` arcade.Window ` constructor.
102
100
* ` arcade.View `
103
101
* Removal of the `` update `` function in favor of ` arcade.View.on_update() `
104
-
105
102
* ` arcade.Section ` and ` arcade.SectionManager `
106
-
107
103
* Removal of the `` update `` function in favor of ` arcade.Section.on_update() `
108
104
109
- * Textures
110
- * ` arcade.load_texture `
111
-
112
- * GUI
113
-
114
- * ` arcade.gui.widgets.UIWidget `
115
-
116
- * Supports padding, border and background (color and texture)
117
- * Visibility: visible=False will prevent rendering of the widget. It will also
118
- not receive any UI events
119
- * Dropped ` arcade.gui.widget.UIWidget.with_space_around() `
120
- * `` UIWidget.with_ `` methods do not wrap the widget anymore, they only change
121
- the attributes
122
- * Fixed an blending issue when rendering the gui surface to the screen
123
- * Support nine patch information to draw background texture
124
- * Performance improvements
125
- * Removed some attributes from public interface, use ` UIWidget.with_ ` methods
126
- * ` UIWidget.border_width `
127
- * ` UIWidget.border_color `
128
- * ` UIWidget.bg_color `
129
- * ` UIWidget.bg_texture `
130
- * ` UIWidget.padding_top `
131
- * ` UIWidget.padding_right `
132
- * ` UIWidget.padding_bottom `
133
- * ` UIWidget.padding_left `
134
- * Update and add example code.
135
- * Iterable (providing direct children)
136
-
137
- * New widgets:
138
-
139
- * ` arcade.gui.widgets.dropdown.UIDropdown `
140
- * ` arcade.gui.widgets.image.UIImage `
141
- * ` arcade.gui.widgets.slider.UISlider `
142
- * ` arcade.gui.widgets.constructs.UIButtonRow `
143
- ([ PR1580] ( https://github.com/pythonarcade/arcade/pull/1580 ) )
144
-
145
- * ` arcade.gui.UIInteractiveWidget ` only reacts to left mouse button events
146
-
147
- * Arcade ` arcade.gui.property.Property ` :
148
-
149
- * Properties are observable attributes (supported: primitive, list and dict).
150
- Listener can be bound with ` arcade.gui.property.bind `
151
-
152
- * All ` arcade.gui.UILayout ` s support ` size_hint ` , ` size_hint_min ` , ` size_hint_max ` .
153
-
154
- * ` arcade.gui.UIBoxLayout `
155
- * ` arcade.gui.UIAnchorLayout `
156
- * ` arcade.gui.UIGridLayout ` [ PR1478] ( https://github.com/pythonarcade/arcade/pull/1478 )
157
-
158
- * Replaces deprecated usage of ` arcade.draw_text `
159
-
160
- * Misc Changes
161
-
162
- * ` arcade.color_from_hex_string ` changed to follow the CSS hex string standard
163
- * Windows Text glyph are now created with DirectWrite instead of GDI
164
- * Removal of various deprecated functions and parameters
165
- * OpenGL examples moved to
166
- ` examples/gl <https://github.com/pythonarcade/arcade/tree/development/arcade/examples/gl> ` _
167
- from `` experiments/examples ``
168
-
169
- * Sprites
170
- * The method signature for ` arcade.Sprite.__init__ ` has been changed.
171
- (May break old code.)
172
- * The sprite code has been cleaned up and broken into parts.
173
- * ` arcade.Sprite.angle ` now rotates clockwise. Why it ever rotated
174
- the other way, and why it lasted so long, we do not know.
175
-
176
- * Controller Input
177
-
178
- * Previously controllers were usable via the ` arcade.joysticks ` module. This
179
- module is still available in 3.0.
180
- However, it should largely be seen as deprecated for most people who want
181
- basic controller support. This module existed basically just as an alias to
182
- the Pyglet joysticks module. We now have a new ` arcade.controller ` module,
183
- which is similarly just an alias to Pyglet's newer
184
- Controller API. This change should make a much wider selection of controllers
185
- able to work with Arcade, and provide newer functionality and be
186
- easier to use for most cases than the joystick module. The joystick module
187
- may still be useful if you need specialty controllers such as racing
188
- wheels or flight sticks. All existing example code has been updated to use
189
- the new controller API.
190
-
191
- * Text
192
-
193
- * Complete removal of the old PIL based text system. In Arcade 2.6 we had largely
194
- switched to the newer Pyglet based system, however there were still remnants of
195
- the PIL implementation around. Namely the ` arcade.create_text_sprite ` function
196
- which has been updated to use the Pyglet system. There's no API breaking change
197
- here but if you are using the function it would be worth reading the new docs
198
- for it, as there are some different considerations surrounding use of a custom
199
- ` arcade.TextureAtlas ` if you are also doing that. This function should now be
200
- much much faster than the old PIL implementation. The texture generation happens
201
- almost entirely on the GPU now.
202
- * As part of this move, the ` arcade.text_pillow ` module has been removed completely,
203
- and the ` arcade.text_pyglet ` module has been re-named just be ` arcade.text ` .
204
- * ` arcade.draw_text ` and ` arcade.Text ` both now accept a ` start_z ` parameter.
205
- This will allow advanced usage to set the Z position of the underlying Label.
206
- This parameter defaults to 0 and does not change any existing usage.
207
-
208
- * ` arcade.draw_commands ` :
209
-
210
- * Added ` arcade.draw_commands.draw_lbwh_rectangle_textured `
211
-
212
- * Replaces the now-deprecated ` arcade.draw_commands.draw_lrwh_rectangle_textured `
213
- * Usage is exactly the same
214
-
215
- * OpenGL
216
-
217
- * Support for OpenGL ES 3.1 and 3.2. 3.2 is fully supported, 3.1 is only supported
218
- if the ` EXT_geometry_shader ` extension is provided by the driver. This is part
219
- of the minimum spec in 3.2 so it is guaranteed to be there. This is the only
220
- optional extension that Arcade needs to function with 3.1.
221
-
222
- As an example, the Raspberry Pi 4/5 only supports OpenGL ES 3.1, however does
223
- provide this extension, so is fully compatible with Arcade.
224
- * Textures now support immutable storage for OpenGL ES compatibility.
225
- * Arcade is now using Pyglet's projection and view matrix.
226
- All functions setting matrices will update the Pyglet window's
227
- ` view ` and ` projection ` attributes. Arcade shaders is also using Pyglet's
228
- ` WindowBlock ` UBO.
229
- * Uniforms are now set using ` glProgramUniform ` instead of ` glUniform ` when the
230
- extension is available for better performance.
231
- * Fixed many implicit type conversions in the shader code for wider support.
232
- * Added ` front_face ` property on the context for configuring front face winding
233
- order of triangles
234
- * Added ` cull_face ` property on the context for configuring what triangle face to cull
235
- * Added support for bindless textures
236
- * Added support for 64 bit integer uniforms
237
- * Added support for 64 float uniforms
238
-
239
- * ` arcade.tilemap.TileMap `
240
-
241
- * Added support Tiles defined as a sub-rectangle of an image. See
242
- [ Tiled 1.9 Release Notes] ( https://www.mapeditor.org/2022/06/25/tiled-1-9-released.html )
243
- for more information on this feature.
244
- * Changed the ` Sprite.properties ` key "type" to "class" to stay in line with Tiled's
245
- re-naming of this key in their API.
246
- * You can now define a custom texture atlas for SpriteLists created in a TileMap.
247
- You can provide a map default to the ` texture_atlas ` parameter of the ` arcade.tilemap.Tilemap `
248
- class or the ` arcade.tilemap.load_tilemap ` function. This will be used by default
249
- on all layers, however it can be overridden on a per-layer basis as defined by
250
- the new ` texture_atlas ` key in the ` layer_options ` dictionary. If no custom atlas
251
- is provided, then the global default atlas will be used (This is how it works
252
- pre-Arcade 3.0).
253
- * Fix for animated tiles from sprite sheets
254
- * DefaultTextureAtlas: Added ` sync_texture_image ` method to sync the texture in
255
- the atlas back into the internal pillow image in the ` arcade.Texture ` .
256
- * DefaultTextureAtlas: Added ` get_texture_image ` method to get pixel data of a
257
- texture in the atlas as a pillow image.
258
-
259
- * Collision Detection
260
-
261
- * Collision detection is now even faster.
262
- * Remove Shapely for collision detection as 3.11 is faster without it.
263
-
264
- * Shape list
265
-
266
- * Add in ` arcade.create_triangles_strip_filled_with_colors `
267
- * Moved all buffered items that can be added to a shape list to ` arcade.shape_list `
268
-
269
- * Documentation
270
-
271
- * Example code page has been reorganized
272
- * [ CONTRIBUTING.md] ( https://github.com/pythonarcade/arcade/blob/development/CONTRIBUTING.md ) page has been updated
273
- * Improve ` background_parallax ` example
274
-
275
- * Experimental
276
- * Started on a system for drawing large background textures with parallax scrolling.
277
- This is still experimental and may change in the future.
278
- * Started on an experimental event based input system for controllers
279
- * Started an experiment with vector based sprites
105
+ ### Textures
106
+
107
+ * ` arcade.load_texture `
108
+
109
+ ### GUI
110
+
111
+ * ` arcade.gui.widgets.UIWidget `
112
+
113
+ * Supports padding, border and background (color and texture)
114
+ * Visibility: visible=False will prevent rendering of the widget. It will also
115
+ not receive any UI events
116
+ * Dropped ` arcade.gui.widget.UIWidget.with_space_around() `
117
+ * `` UIWidget.with_ `` methods do not wrap the widget anymore, they only change
118
+ the attributes
119
+ * Fixed an blending issue when rendering the gui surface to the screen
120
+ * Support nine patch information to draw background texture
121
+ * Performance improvements
122
+ * Removed some attributes from public interface, use ` UIWidget.with_ ` methods
123
+ * ` UIWidget.border_width `
124
+ * ` UIWidget.border_color `
125
+ * ` UIWidget.bg_color `
126
+ * ` UIWidget.bg_texture `
127
+ * ` UIWidget.padding_top `
128
+ * ` UIWidget.padding_right `
129
+ * ` UIWidget.padding_bottom `
130
+ * ` UIWidget.padding_left `
131
+ * Update and add example code.
132
+ * Iterable (providing direct children)
133
+
134
+ * New widgets:
135
+
136
+ * ` arcade.gui.widgets.dropdown.UIDropdown `
137
+ * ` arcade.gui.widgets.image.UIImage `
138
+ * ` arcade.gui.widgets.slider.UISlider `
139
+ * ` arcade.gui.widgets.constructs.UIButtonRow `
140
+ ([ PR1580] ( https://github.com/pythonarcade/arcade/pull/1580 ) )
141
+
142
+ * ` arcade.gui.UIInteractiveWidget ` only reacts to left mouse button events
143
+
144
+ * Arcade ` arcade.gui.property.Property ` :
145
+
146
+ * Properties are observable attributes (supported: primitive, list and dict).
147
+ Listener can be bound with ` arcade.gui.property.bind `
148
+
149
+ * All ` arcade.gui.UILayout ` s support ` size_hint ` , ` size_hint_min ` , ` size_hint_max ` .
150
+
151
+ * ` arcade.gui.UIBoxLayout `
152
+ * ` arcade.gui.UIAnchorLayout `
153
+ * ` arcade.gui.UIGridLayout ` [ PR1478] ( https://github.com/pythonarcade/arcade/pull/1478 )
154
+
155
+ * Replace deprecated usage of ` arcade.draw_text `
156
+
157
+ ### Misc Changes
158
+
159
+ * ` arcade.color_from_hex_string ` changed to follow the CSS hex string standard
160
+ * Windows Text glyph are now created with DirectWrite instead of GDI
161
+ * Removal of various deprecated functions and parameters
162
+ * OpenGL examples moved to
163
+ ` examples/gl <https://github.com/pythonarcade/arcade/tree/development/arcade/examples/gl> ` _
164
+ from `` experiments/examples ``
165
+
166
+ ### Sprites
167
+
168
+ * The method signature for ` arcade.Sprite.__init__ ` has been changed.
169
+ (May break old code.)
170
+ * The sprite code has been cleaned up and broken into parts.
171
+ * ` arcade.Sprite.angle ` now rotates clockwise. Why it ever rotated
172
+ the other way, and why it lasted so long, we do not know.
173
+
174
+ ### Controller Input
175
+
176
+ Previously controllers were usable via the ` arcade.joysticks ` module. This
177
+ module is still available in 3.0.
178
+ However, it should largely be seen as deprecated for most people who want
179
+ basic controller support. This module existed basically just as an alias to
180
+ the Pyglet joysticks module. We now have a new ` arcade.controller ` module,
181
+ which is similarly just an alias to Pyglet's newer
182
+ Controller API. This change should make a much wider selection of controllers
183
+ able to work with Arcade, and provide newer functionality and be
184
+ easier to use for most cases than the joystick module. The joystick module
185
+ may still be useful if you need specialty controllers such as racing
186
+ wheels or flight sticks. All existing example code has been updated to use
187
+ the new controller API.
188
+
189
+ ### Text
190
+
191
+ * Complete removal of the old PIL based text system. In Arcade 2.6 we had largely
192
+ switched to the newer Pyglet based system, however there were still remnants of
193
+ the PIL implementation around. Namely the ` arcade.create_text_sprite ` function
194
+ which has been updated to use the Pyglet system. There's no API breaking change
195
+ here but if you are using the function it would be worth reading the new docs
196
+ for it, as there are some different considerations surrounding use of a custom
197
+ ` arcade.TextureAtlas ` if you are also doing that. This function should now be
198
+ much much faster than the old PIL implementation. The texture generation happens
199
+ almost entirely on the GPU now.
200
+ * As part of this move, the ` arcade.text_pillow ` module has been removed completely,
201
+ and the ` arcade.text_pyglet ` module has been re-named just be ` arcade.text ` .
202
+ * ` arcade.draw_text ` and ` arcade.Text ` both now accept a ` start_z ` parameter.
203
+ This will allow advanced usage to set the Z position of the underlying Label.
204
+ This parameter defaults to 0 and does not change any existing usage.
205
+
206
+ ### ` arcade.draw_* ` :
207
+
208
+ * Added ` arcade.draw_commands.draw_lbwh_rectangle_textured `
209
+ * Replaces the now-deprecated ` arcade.draw_commands.draw_lrwh_rectangle_textured `
210
+ * Usage is exactly the same
211
+
212
+ ### OpenGL
213
+
214
+ * Support for OpenGL ES 3.1 and 3.2. 3.2 is fully supported, 3.1 is only supported
215
+ if the ` EXT_geometry_shader ` extension is provided by the driver. This is part
216
+ of the minimum spec in 3.2 so it is guaranteed to be there. This is the only
217
+ optional extension that Arcade needs to function with 3.1.
218
+
219
+ As an example, the Raspberry Pi 4/5 only supports OpenGL ES 3.1, however does
220
+ provide this extension, so is fully compatible with Arcade.
221
+ * Textures now support immutable storage for OpenGL ES compatibility.
222
+ * Arcade is now using Pyglet's projection and view matrix.
223
+ All functions setting matrices will update the Pyglet window's
224
+ ` view ` and ` projection ` attributes. Arcade shaders is also using Pyglet's
225
+ ` WindowBlock ` UBO.
226
+ * Uniforms are now set using ` glProgramUniform ` instead of ` glUniform ` when the
227
+ extension is available for better performance.
228
+ * Fixed many implicit type conversions in the shader code for wider support.
229
+ * Added ` front_face ` property on the context for configuring front face winding
230
+ order of triangles
231
+ * Added ` cull_face ` property on the context for configuring what triangle face to cull
232
+ * Added support for bindless textures
233
+ * Added support for 64 bit integer uniforms
234
+ * Added support for 64 float uniforms
235
+
236
+ ### TileMap
237
+
238
+ * Added support Tiles defined as a sub-rectangle of an image. See
239
+ [ Tiled 1.9 Release Notes] ( https://www.mapeditor.org/2022/06/25/tiled-1-9-released.html )
240
+ for more information on this feature.
241
+ * Changed the ` Sprite.properties ` key "type" to "class" to stay in line with Tiled's
242
+ re-naming of this key in their API.
243
+ * You can now define a custom texture atlas for SpriteLists created in a TileMap.
244
+ You can provide a map default to the ` texture_atlas ` parameter of the ` arcade.tilemap.Tilemap `
245
+ class or the ` arcade.tilemap.load_tilemap ` function. This will be used by default
246
+ on all layers, however it can be overridden on a per-layer basis as defined by
247
+ the new ` texture_atlas ` key in the ` layer_options ` dictionary. If no custom atlas
248
+ is provided, then the global default atlas will be used (This is how it works
249
+ pre-Arcade 3.0).
250
+ * Fix for animated tiles from sprite sheets
251
+ * DefaultTextureAtlas: Added ` sync_texture_image ` method to sync the texture in
252
+ the atlas back into the internal pillow image in the ` arcade.Texture ` .
253
+ * DefaultTextureAtlas: Added ` get_texture_image ` method to get pixel data of a
254
+ texture in the atlas as a pillow image.
255
+
256
+ ### Collision Detection
257
+
258
+ * Collision detection is now even faster.
259
+ * Remove Shapely for collision detection as 3.11 is faster without it.
260
+
261
+ ### Shape list
262
+
263
+ * Add in ` arcade.create_triangles_strip_filled_with_colors `
264
+ * Moved all buffered items that can be added to a shape list to ` arcade.shape_list `
265
+
266
+ ### Documentation
267
+
268
+ * Example code page has been reorganized
269
+ * [ CONTRIBUTING.md] ( https://github.com/pythonarcade/arcade/blob/development/CONTRIBUTING.md )
270
+ page has been updated
271
+ * Improve ` background_parallax ` example
272
+
273
+ ### Experimental
274
+
275
+ * Started on a system for drawing large background textures with parallax scrolling.
276
+ This is still experimental and may change in the future.
277
+ * Started on an experimental event based input system for controllers
278
+ * Started an experiment with vector based sprites
280
279
281
280
### Contributors
282
281
0 commit comments