## pokepetter/ursina — v3.2.2…v8.0.0

_1832+ commits._

### Features
- **add prefabs/particle_systems to pyproject.toml** (583dd5c)
- **new ursina splash screen.** (8b41f44)
- **added support for passing a list of start directions to particle system.** (41684b9)
- **webpage: added generated html files for new api reference.** (a552007)
- **made terrain use the new to_PIL_Image function.** (0a4d9b1)
- **updated documentation to new sswg version.** (c9127d1)
- **trying out new website font.** (01a135e)

### Fixes
- **Merge pull request #780 from a2cy/patch-1** (2b044b6)
- **small css fix.** (ad6cdab)
- **made GridEditor use Array2D more and fixed bug when trying to paste data that was 1 wide or tall.** (48a387d)
- **Fix spelling mistake that was causing CI Lint job to error** (b807439)
- **temp fix for font loading on linux.** (d57f9f8)

### Backend
- **started writing a CONTRIBUTING.md.** (fbe513d)
- **updated documentation to v8.0.0.** (cbf8ea8)
- **fixed linter warnings and sorted imports.** (d872fd4)
- **split documenentation generator into parser(gets information about package) and generator(makes the html files). also added some more linting rules and sorted imports.** (d13ae2b)
- **forgot some files.** (68cfd3c)
- **disabled multisample AA by default.** (3023f1a)
- **deleted old pixels getter code.** (3729293)
- **renames auto loaded settings file: settings.py -> ursina_settings.py, to make it less likely to accidentally load a file you didn't indent to. fixed settings file exec.** (fe9cc8d)
- **fixed issue with documentation parser, the html generating part.** (16de0c1)
- **added .blend file for ursina wireframe logo.** (6f3f412)
- **added script to run all samples so it's easier to test all of them. some minor fixes.** (7aa35aa)
- **fixed import issues after moving code last commit.** (313afc0)
- **fixed issue #783 where entity could skip update because destroy() was removing entity from the list while in the for loop. also moved destroy from ursinastuff into its own file.** (e9594a1)
- **added another ninesclice texture.** (d41d416)
- **adjusted ssao_shader settings so there's less artifacts, especially on the skydome.** (7288e4e)
- **fixed issue with Quad caching nobreaking if the mesh got destroyed.** (95e0521)
- **added example for getting mose position in 3d.** (9f381c5)
- **added tigger box sample.** (c5d82d1)
- **added look_at_2d example.** (06bbed7)
- **changed how ursina's testing framework works.** (8463af5)
- **added time_scale to Sequence. moved arguments into __init__ for better IDE suggestions.** (eb4488d)
- **disabled audio clip caching since it causes crackling if you reuse the same sound and don't let them overlap.** (4b76656)
- **fixed Conversation using old blink().** (6741fc4)
- **added grass_fields sample.** (6f8e78b)
- **added *.todo to .gitignore.** (15e1ed1)
- **fixed Entity.blink() crashing if the entity got destroyed before it resets.** (3e2ac4a)
- **added look_at test.** (3b909ef)
- **made sure origin_x, origin_y and origin_z gets set before collider in Entity, so the automatically fitted collider is correct.** (3c52bd7)
- **bumped versions of some dependencies.** (1751999)
- **added play_ambiance() to music_system so you can have both a music track and a ambiance(wind sounds, rain sounds, etc.) track playing at the same time.** (98e34fa)
- **made scene.fog_color return a Color and not a Vec4f.** (16f4d38)
- **fixed GridEditor, ASCIIEditor and Tilemap.** (496d1aa)
- **elaborated duplicate example a little bit.** (b29f46a)
- **put ursina.build into a function so it doesn't run on import.** (c2c615c)
- **removed SSAO from terraincast test/example.** (00d4a6e)
- **made Terrain gradient be one to one with vertex y.** (4459823)
- **Merge pull request #779 from fjansson/allow-numpy-terrain** (704052c)
- **procedural terrain: change to allow numpy array to be passed as input to Terrain()** (da79195)
- **fixed grid editor crashing when trying to floodfill outside the canvas.** (99541c6)
- **fixed comment typo.** (f9dfa32)
- **updated nineslice example.** (b8867e2)
- **made mesh importer show the error when loading invalid ursinamesh file.** (fe99172)
- **added option for custom lerp function to Entity.animate(), for example if you want to use lerp_angle and go the shortest way.** (4558cf8)
- **added caching to Cone mesh.** (883792d)
- **fixed editor_ui_enabled passed to Ursina() not working since window was just checking development_mode and not this.** (b8e629f)
- **fixed typo in text color tags.** (e1ccf29)
- **made FirstPersonController set rotation to zero on on_window_ready so it's not rotated.** (1b6fb22)
- **added on_window_ready to handle edge cases where you want the window to be open and ready before things happen. you can pu on_window_ready on an Entity or in __main__.** (b95d2e7)
- **fixed VideoRecorder. also upped video quality.** (8180eca)
- **moved more Entity parameters from kwargs into explicitly declared named parameters, so make it easier to see hat the possible inputs are, for example from an IDE.** (ad7b958)
- **documentation work.** (a6745d3)
- **fixed CI linting task.** (2184654)
- **linting: made codespell ignore html files, since they are generated anyway.** (b606746)
- **documentation generator rewite.** (b1f647b)
- **moved Quad caching into the class by implementing __new__. this makes it easier for documentation since you're supposed to use Quad, not QuadMesh.** (ffd356e)
- **fixed TextField cursor blinking animation after blink() change. since blink() works differently from before, use animate_color() instead.** (64b203a)
- **made some variables hide from the doumentation generator by prefixing '_'.** (61ce67f)
- **website: made code blocks fit content.** (ee42e0e)
- **added chunk_mesh() error handling.** (0d7a685)
- **handled edge case in _test().** (c17584b)
- **moved EditorCamera arguments from __init__ body to __init__ arguments so tools can auto document better.** (2337034)
- **explicit imports in shaders.** (2c1d4aa)
- **renamed CheckBox -> Checkbox.** (3483e77)
- **moved Quad caching from a separate function into __new__, so the documentation parser can understand it.** (bf6039e)
- **fixed flickering issue with DropdownMenu.** (acded90)
- **added Vec3.__neg__() to make it return a Vec3.** (7da7857)
- **started fixing ursinamesh_to_obj().** (20df9ad)
- **added bounds getter to Array2D.** (090163f)
- **added rgb and rgb32 getters to Color.** (17dfebc)
- **added **kwargs back in for DirectionalLight and expanded the example a little.** (da5b451)
- **made it easier to pass shadow_map_resolution to DirectionLight in the correct order and got rid of **kwargs.** (ac9f00b)
- **fixed level editor crashing when duplicating an object because deepcopy tried to set parent to a string (the parent's name) instead an entity.** (ceb09bd)
- **fixed missing import in vec_field.** (4c07dc2)
- **added Text.to_PIL_Image and made .pixels return an Array2D of colors.** (122e51c)
- **added color option to print_on_screen.** (3479a47)
- **changed Bounds to take either start and end or center and size. added Array3D.bounds getter.** (b988c05)
- **made it possible to start drawing from outside the canvas when using GridEditor with a bigger brush.** (81e018e)
- **fixed in_game_console using hard coded font.** (f9171cd)
- **nineslice fixes.** (2e8b052)
- **made things use Text.default_monospace_font instead of hard coded name.** (e5333fe)
- **made ursina not crash is a font is missing.** (1a6c7ee)
- **fixed typo in after decorator description.** (f84957d)
- **fixed code_block style not getting loaded from style.css.** (9d7dad7)
- **restored old api_reference.html.** (28a3184)
- **fixed documentation website sidebar overlapping main content on small screens.** (aa77069)
- **added volume slider to main menu sample.** (9a80c15)
- **made Plane example also show the wireframe.** (b09d57b)
- **made PokeShape use property generator.** (43d5c29)
- **fixed example_game.py** (4b3e98e)
- **uncommented curve visualization.** (013fc51)
- **added fallback if Light.update_bounds() can't get scene bounds.** (9caa682)
- **added colored warning to animator.** (ddbde8a)
- **particle system work. added option for color_sample_function ('random'/'sequential'). started on bake_to_vertex_animation_texture() as a generic way to eventually also bake FrameAnimation3ds to vertex animation textures.** (2b5fda4)
- **added test for loading blender files.** (ec43a17)
- **added example of how to put fresnel shader on UI elements.** (c9db703)
- **fixed website css issues.** (f77f6c2)
- **Merge remote-tracking branch 'refs/remotes/origin/master'** (7a267d7)
- **updated sswg v2.3.0 -> v4.1.0.** (8245df7)
- **fixed typo.** (40f9eac)
- **updated samples, made a split between single file projects and multi-file projects, the latter which will link to github. added protein visualization sample. made documentation generator produce valid samples for sswg v4.1.0.** (575b12a)
- **clarified difference between rgba and rgba32. made rgb alias rgba and rgb32 alias rgba32 instead of having separate implementations.** (6c1211e)
- **removed Mesh.recipe() since it's been deprecated and replaced with Mesh.serialize().** (9f4b9cd)
- **added height input variable to FirstPersonController instead of being hard coded to 2.** (1ed5430)
- **added normals to Quad.** (e2d8949)
- **added Array2D.from_string and Array2D.size.** (e25ab00)
- **Merge pull request #770 from JamesParrott/master** (a71c33a)
- **Trivial change to run CI** (bf2e2d4)
- **added better error when blender is not found. same error message, but you don't have to scroll up.** (acba980)
- **started on removing panda3d shader as the defatul shader. because of this, point meshes are currently broken!** (8df51d3)
- **made sure after decorator sequences gets added to the entity, so it gets killed when the entity gets destroyed.** (7b327f3)
- **added better error message that says who destroyed an entity, if you try to transform the entity after it's been destroyed.** (1f68bde)
- **added option for 'boomerang' loop mode to FrameAnimation3d.** (eebab0d)
- **explicit imports in shaders.** (b7c68e9)
- **fixed GridEditor hiding the cursor when it shouldn't.** (8c0336b)
- **fixed font loading on Windows, although, using full path doesn't work like I'd expect.** (b016fa6)
- **removed debug print.** (def6aa6)
- **added Array2D.get(), to make it easier to handle out of bound indices.** (73f0d39)
- **made enumerate_2d move row by row, instead of column by column.** (d4c1032)
- **added list of compass directions to Vec2.** (38aa7e9)
- **fixed issue with PixelEditor where you could draw if you clicked on a button and then dragged the cursor over the canvas. it should only draw if you start on the canvas.** (c6785d2)
- **made shader files use specific imports instead of wildcard import.** (3f5f245)
- **made level editor hierarchy menu use Entity.get_descendands instead of having it hard coded to three levels deep.** (ca2c14e)
- **mesh importer fixes.** (527c578)
- **made texture loading use TexturePool instead of loader from builtins, which panda3d adds. this also means you can load textures before instantiating a window.** (ea09bc4)
- **added .mp3 to list of supported audio file types.** (e845e10)
- **music system fixes.** (72919e6)
- **made it possible to set value on Slider and GradientEditor without having on_value_changed get automatically called.** (4f98d1a)
- **change how font loading works, so it work even if you change application.asset_folder.** (c427d3d)
- **added rows and columns getters to Array2D. also improved Array2D.to_string().** (7657389)
- **fixed issue with ursina's subfolders not being detected after pip install.** (dc6cfdf)
- **added package-data to pyproject.toml.** (e5f9c72)
- **made animation generation much faster by not regenerating sequence on every append, but instead, only once at the end.** (e64e0ed)
- **added minimum scale to all scale setters to prevent panda3d assertion error.** (0af1dc1)
- **fixed scripts assuming .txt instead of .sswg.** (a6a2320)
- **made incorrect types passed to lerp riase a type error instead of printing a warning.** (89e0cdd)
- **changed from poetry to uv and updated pyproject.toml.** (9bcd8e8)
- **getter setter style change in Vec3.** (e73d216)
- **added type hints to HitInfo.** (5b85fae)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/pokepetter/ursina?utm_source=github-action)._