# Changelog

## v0.9.25

Sep 12, 2023

* Added `uranus-controller-player-sound.js`, this is a system to automatically add sound effects to local and remote player controllers that respond to player state. This a work in progress, avoid using in production. Example on how to setup is coming in a future SDK version.
* Updated all SDK examples to use the updated version of the Player Controller.
* Updated `uranus-controller-third-person.js`, a major rewrite of the Player Controller script with new actions available (mantling/climbing), more properties exposed to handle input controls, support for several new systems coming to the SDK (server world clustering, player sounds, player "footfarts" particles). The internal template hierarchy has slightly changed so you are advised to follow the SDK examples to update your Player Controller instances. In addition the Anim State Graph has been updated and a few of the animation files (idle, jump, climb).
* Updated `uranus-controller-ready-player-me.js`, exposed a big number of properties that allow advanced control over the quality of local and remote (separate attributes) Ready Player Me models. These settings can help reduce the model file size <1 MB for fast download times.
* Updated `uranus-multiplayer-colyseus-room.js`, added support for server based message clustering. Special rooms have been added to the Colyseus Server example that automatically enable this feature (`relay_world_tiny`, `relay_world_small`, `relay_world_room`). The server will broadcast messages only to nearby players based on the `clusterDistance` server property. This is useful to improve server performance and reduce bandwidth in large world settings with a huge number of players.
* Updated `uranus-multiplayer-colyseus` server template: <https://github.com/Solar-Games-Corp/uranus-multiplayer-colyseus>
* Updated `uranus-controller-animation-timer.js`, with support for a `Hide Distance` property that allows you to hide players at a certain distance from the camera. This setting is especially useful when using the new world cluster room type on the Colyseus Server.
* Updated `uranus-instancer.js`, added support for global instancer cells. This can help easily enable instancing cells across all scene entities. Individual cells defined by the `uranus-instancer-cell.js` script are respected.
* Updated `uranus-effects-environment-snow.js`, added support for targeting the snow effect only to selected materials.
* Fixed `uranus-instancer-cell.js`, default settings were 0,0,0 which could lead to undesired behavior.
* Fixed `uranus-instancer-lod.js`, missing LOD preset when layer name on instancer LOD script is empty.
* Fixed `uranus-effects-skybox-cubemap.js`, render once settings weren't respected in some cases.
* Fixed `uranus-module-loader.js`, in some cases the module load url wasn't correct.
* Fixed `uranus-multiplayer-colyseus-room.js`, in some cases selected Ready Player Me avatars from remote players wouldn't load locally.

## v0.9.24

Jul 19, 2023

* Added support for the Earthatile library with in editor rendering (<https://github.com/playcanvas/earthatile>). This brings support for the new Google Map Tiles API to PlayCanvas.
* Added Earthatile example scene. To run it a Google Map Tiles API key is required, you can register for one here: <https://developers.google.com/maps/documentation/tile/get-api-key>
* Updated the PCUI library used in the SDK to the latest version.
* Updated `uranus-effects-shadows-timer.js`, to add support for the latest v1.64 PlayCanvas engine version.
* Fixed `uranus-controller-third-person.js`, right click menu interfering with player movement (mouse context menu has been disabled).
* Fixed `uranus-controller-third-person.js`, player can't get out of the water without jumping bug.

## v0.9.23

Jun 18, 2023

* Updated all scripts to be compatible with the upcoming PlayCanvas engine v1.64.0, except for the `uranus-effects-shadows-timer.js` script (support for this is coming post release).
* Updated `uranus-effects-planar-reflections.js`, to take into consideration the camera viewing angle. This provides more realistic and physically correct reflections.
* Updated `uranus-effects-planar-reflections.js`, exposed a Reflection Index attribute to control the camera viewing angle against the reflections effect.
* Updated `uranus-effects-planar-reflections.js`, exposed reflections map UV channel as an attribute.
* Updated `uranus-controller-animated-path.js`, added Time Events list property to allow for easy scheduling of app wide events during animation playback.
* Updated `uranus-controller-animated-path.js`, exposed resume, pause and stop app wide events to easily control any animation path.
* Updated `uranus-controller-animated-path.js`, added Acceleration Factor attribute to provide real-time control over the animation playback speed.
* Updated `uranus-controller-third-person.js`, added Force Swim attribute to provide a new player controller behavior. It can be toggled in real-time.
* Fixed `uranus-instancer.js`, negative scale instanced models breaking on recent PC engine builds (added support for flipFacesFactor).
* Fixed `uranus-controller-animated-path.js`, missing player controller error thrown on animation end event.
* Fixed `uranus-controller-third-person.js`, bumpy swimming behavior while the player is floating in the water.

## v0.9.22

May 10,  2023

* Added `Demo Solar Appartment` demo, showcasing a top down player controller.
* Added `Pathfinder Player Agent` example, showcasing the new navmesh based pathfinder system.
* Added `Animated Path Player` example, showcasing the new animated path controller.
* Added `Animated Path Camera` example, showcasing the new animated path controller.
* Added `Animated Path Object` example, showcasing the new animated path controller.
* Added `uranus-pathfinder-[navmesh/crowd/agent/obstacle].js`, an advanced 3D pathfinder system using a WASM build of Recast/Detour.
* Added `uranus-controller-picker.js`, a simply physics based entity picker, currently used as a utility script in the pathfinder examples.
* Updated `uranus-controller-animated-path.js`, expanded the controller with various features: path lines on launch and in editor, editor playback controls, curve types. The script can now animate any type of entity.
* Updated `uranus-controller-third-person.js`, to automatically calculate the feet position for raycasting. The `playerOffsetY` attribute has been removed and is no longer required.
* Updated `uranus-controller-third-person.js`, with an optional `forwardEntity` attribute that can provide the input forward direction when the third person camera is disabled (e.g. on a top down controller).
* Updated `uranus-controller-third-person.js`, the camera will automatically face the player model direction on initialize.
* Updated `uranus-controller-third-person.js`, to work with the new pathfinder system. If a `uranusPathfinderAgent` script is attached the controller can receive navigation requests automatically.
* Fixed `uranus-effects-shadows-timer.js`, bug with v1.63 PC engine throwing an error (still VSM shadows aren't supported by this script).
* Fixed `uranus-terrain-distributor.worker.js`, randomize base option not working in terrain distributor.
* Fixed `uranus-controller-ready-player-me.js`, ready player me avatar selection not being networked in some cases.
* Fixed `uranus-effects-skybox-cubemap.js`, bug with skybox seams by disabling mipmaps generation.
* Fixed `uranus-instancer-paint.js`, with picker state selection failing to execute on latest PlayCanvas editor version.

## v0.9.21

Apr 17, 2023

* All effect scripts that override shader chunks have been updated to work with the new PlayCanvas frontend/backend shader architecture (introduced with PC v1.62.0).
* Added `uranus-graphics-resolution.js`, to easily control the frame buffer render resolution (0% to 200%). This is a great way to improve performance on lower end devices.
* Updated `uranus-graphics-settings.js`, with support for graphics (frame buffer) Resolution.
* Updated `uranus-controller-player-emojis.js`, added attributed to control the final top position (Y) for the emoji animation.
* Updated `uranus-instancer-paint.js`, to support relative instance scaling.
* Updated `uranus-terrain-distributor.js`, to allow for randomizing the base point that is extracted from the distribution surface. This allows for varied distribution when aren't using any density increase.
* Fixed `uranus-controller-third-person.js`, VR jumping bug when looking upwards.
* Fixed PCUI library loading bug with script loading order dependencies, now all PCUI dependencies are packed in a single file.

## v0.9.20

Apr 03, 2023

* Added `Demo Solar City` to showcase, among others, the use of hardware occlusion culling in a real world setup.
* Added `Hierarchical Building LOD + Occlusion Culling` to showcase a simple setup of hardware occlusion culling.
* Added `uranus-instancer-occlusion.js`, a powerful yet easy to use system to run hardware based occlusion queries. Automatic shape calculation, occluder vs occludee mode, referenced entities, event callbacks.
* Updated all examples and demos that included multiplayer to point to the new server (Colyseus Arena is no longer available).
* Updated `uranus-effects-shadows-timer.js`, added Dir Lights toggle attribute.
* Updated `uranus-effects-planar-reflections.js`, with an optional mask sampler to mask the reflections using a grayscale texture (used in the new Demo Solar City).
* Updated `uranus-controller-animation-timer.js`, added support for occlusion culling. Animated characters that are occluded will automatically stop the playback of their skeleton.
* Updated `uranus-graphics-settings.js`, added Default Controller attribute to automatically select the default controller from the provided list (if available).
* Updated `uranus-instancer.js`, major performance optimizations especially when using a large number of instances and cells. Pushing the instancer to the GPU has better performance now (30% increase).
* Updated `uranus-effects-skybox.js`, performance optimizations. The clouds now render with a far-away perspective close to the horizon. The clouds now receive lighting from the sun depending on their position on the sky.
* Renamed `uranus-instancer-occluder.js` to `uranus-instancer-zone.js`, to free the name for the occlusion culling script.
* Fixed `uranus-controller-third-person.js`, player rotation being wrong after exiting VR mode.
* Fixed `uranus-controller-third-person.js`, player angleY not being networked correctly when running in VR mode.
* Fixed `uranus-controller-third-person.js`, mouse/touch issue on input out/end events
* Fixed `uranus-controller-third-person.js`, lerping angle issue when rotating to > 360 degrees, now the player will correctly rotate using the minimum required angle.
* Fixed `uranus-controller-third-person.js`, player getting stuck on edges after jumping or falling.
* Fixed `uranus-effects-shadows-timer.js`, missing samplers shader error coming from PlayCanvas clustered lights renderer.
* Fixed `uranus-effects-skybox-cubemap.js`, render once flag sometimes will not renderer the cubemap on the first frame as expected.
* Fixed `uranus-instancer-data.js`, in some cases single instance data buffers will get prematurely deallocated from memory resulting in their instances not getting rendered.
* Fixed `uranus-instancer.js`, in some cases the instancer will update a vertex buffer even when no instancer were visible.
* Fixed `uranus-controller-third-person.js`, bug that forced the player to exit the flying or swimming states early.
* Fixed `uranus-effects-skybox-cubemap.js`, bug that will not updated the referenced materials with the rendered cubemap on the first frame.

## v0.9.19

Mar 20, 2023

* Added `Demo Solar XR Room` demo to provide an easy to start Web XR enabled scene (optional multiplayer requires an Enterprise license).
* Updated `uranus-instancer.js`, added LOD Multiplier to easily scale performance by affecting the LOD distances on the fly.
* Updated `uranus-effects-material-surface-color.js`, added separate surface noise channels.
* Updated `uranus-effects-shadows-timer.js`, added distance based shadows culling for spot/omni lights to increase performance. Local shadows can now be enabled only when the selected active camera is close enough.
* Updated `uranus-effects-skybox-cubemap.js`, added skybox time monitor property to have the skybox render only when the skybox time has changed.
* Updated `uranus-effects-water.js`, added specular blinking and render surface vertical depth support for improved depth based effects.
* Updated `uranus-instancer.js`, added dynamic cells support auto and manual options. This completes the support of dynamic entities included in instancer cells.
* Updated `uranus-terrain-texture.js`, the terrain texture shader now can use multiple noise channels. This allows packing different noise masks in a single texture file.
* Updated `uranus-terrain-distributor.js`, added `surfaceRotation` and `nonValidSurfaces` distribution options.
* Updated `three-mesh-bvh.js`, to its latest public version.
* Updated `seedrandom.js`, to include an instance of the library in the main JavaScript thread.
* Updated `uranus-controller-spawn-area.js`, added spawn area tag support to the controller.
* Updated `uranus-controller-virtual-joystick.js`, added option to keep the virtual controller in place.
* Updated `uranus-effects-planar-reflections.js`, added multiple camera properties observers.
* Updated `uranus-effects-shadows-timer.js`, added option to toggle on/off local lights handling.
* Updated `uranus-effects-skybox-cubemap.js`, added render once option.

## v0.9.18

Feb 19, 2023

* Added `Terrain + Distributors + Surface Color (Enterprise License)` example scene to provide an easy to start base with several open world SDK systems.
* Updated `uranus-terrain-texture.js`, improved terrain texture shader with better noise support for texture border/slope/color variation and support for noise packing.
* Updated `uranus-effects-water.js`, added normals smoothing based on water depth in the water effect.
* Updated `uranus-effects-water.js`, with vertex waves (position and normals) and specular highlights.
* Updated `uranus-effects-material-surface-color.js`, added Surface Blend option for blending color and normals from a surface to any model (partially or fully).
* Updated `uranus-effects-render-surface.js`, added render depth option for render surface effect. Optionally any render surface can render to a depth buffer (required by the new Surface Blend surface color effect).
* Updated `uranus-effects-render-surface.js`, added render normals preset for rendering a surface.
* Updated `uranus-instancer-data.js`, added support for calling instancer data with custom (non JSON) data, in code.
* Updated `uranus-effects-material-distance-fade.js`, added material distance fade effect shader update on attribute change.
* Updated `uranus-instancer.js`, added bypass dynamic cells properties on instancer, bug fixes on instancer culling state methods.
* Updated `uranus-terrain-distributor.js`, to allow for fixed height. Useful when raycasting based distribution is required but the final instances should be placed at a fixed height.
* Updated `uranus-utilities.js`, refactored utilities methods.
* Fixed `uranus-terrain.js`, the initial box primitive model that was rendered while the terrain is loading will be now hidden.
* Fixed `uranus-instancer-data-rigidbody.js`, bug with data rigidbody not being able to create a shape if mesh implementation was missing.
* Fixed `uranus-effects-material-surface-color.js`, material surface color wind timer bug (sync issue).
* Fixed `uranus-instancer.js`, bug with dynamic cells when using instancer data non entity instances.
* Fixed `uranus-effects-material-surface-color.js`, visual glitches on surface color effect by moving the depth calculation on the vertices.
* Fixed `uranus-effects-render-surface.js`, instancing culling bug on render surface effect.
* Fixed `uranus-effects-skybox.js`, time change on skybox effect bug.
* Fixed `uranus-terrain-distributor.worker.js`, terrain distributor bug, collision meshes position and scaled was wrong in some cases.

## v0.9.17

Jan 29, 2023

* Added `uranus-effects-environment-fog.js`, added a material based procedural environment snow effect.
* Updated Solar Island demo to v1.1.0.
* Updated Solar Pool demo to v1.1.0 and added the new environment snow effect.
* Updated Solar Stage demo to v1.2.2 and added player emojis (press keyboard E to bring the emoji selector up).
* Updated `uranus-instancer-cell.js`, added support for dynamic entities on instancing cells. This allows entities to be culled using their spawn cell but update their position/rotation/scale at the same time (although cell swapping isn't supported).
* Updated `uranus-effects-water.js`, a major rewrite adding better reflections, refraction, specular highlights and animated depth based 2D caustics.
* Updated `uranus-effects-planar-reflections.js`, to support rendering a refraction map together with reflections. The developer can use one or more PlayCanvas layers to drive which models render to the refraction map.
* Updated `uranus-effects-shadows-timer.js`, to work with the PlayCanvas rendering changes introduced in PC engine v1.60.0.
* Updated `uranus-physics-collider.js`, to use meaningful names on cached collision shapes to make debugging easier.
* Fixed `uranus-controller-player-emojis.js`, updated the emoji CDN to use CloudFront.
* Bug fixes in all scenes/scripts that required updates to be compatible with PC engine v1.60.0.

## v0.9.15

Jan 07, 2023

* Added `Multiplayer Colyseus + Player Emojis (Enterprise License)` example scene.
* Added `Multiplayer Colyseus + VR (Enterprise License)` example scene.
* Added `uranus-controller-player-emojis.js`, an emoji interface for the main player controller.
* Updated `uranus-effects-shadows-timer.js`, to support changes in PlayCanvas engine v1.59.0.
* Updated `uranus-controller-third-person.js`, with VR and Gamepad input support.
* Updated `uranus-controller-ready-player-me.js`, to make auto show of the character selection screen optional. An app wide event is available for manually invoking it (`uranusControllerReadyPlayerMe:showCharacterSelection`).
* Updated `uranus-graphics-settings.js`, an app wide event is now available to set the graphics preset (`UranusGraphicsSettings:onPresetChange`).
* Updated `uranus-effects-skybox-animate.js`, a set time app wide event has been added (`uranusEffectsSkyboxAnimate:onSetTime`).
* Updated `uranus-effects-planar-reflections.js`, added update frequency property to improve performance by skipping rendering on a number of frames.
* Updated `uranus-effects-planar-reflections.js`, added a world position offset for the reflection plane to allow finer control.
* Updated `uranus-controller-ready-player-me.js`, added optional saving of the last selected avatar to local storage.
* Updated `uranus-controller-ready-player-me.js`, added a parent iframe div element and close event handlers, useful for appending your own UI on top of the Ready Player Me screen modal.
* Updated `uranus-effects-skybox-animate.js`, added property to animate the skybox fog density.
* Updated `uranus-instancer-data.js`, added support for local position/rotation offset based on the position of the parent entity.
* Updated `uranus-controller-third-person.js`, added option for moving t he player towards the camera view direction in VR mode.
* Updated `uranus-controller-third-person.js`, added an optional sprint = 0 check to fully disable running if required.
* Updated `uranus-effects-material-video.js`, added a custom play event property on video material effect.
* Updated `uranus-controller-spawn-area.js`, added face angle range on the spawn area to control the facing direction of spawn players.
* Updated `uranus-instancer.js`, added optional tag to skip material cloning on specific materials.
* Fixed `uranus-instancer.js`, reference missing bug thrown.
* Fixed `uranus-instancer.js`, shadows sometimes will not update and stay stuck.
* Fixed `uranus-instancer.js`, multiple layers on the same component sometimes would result in the same payload being used.
* Fixed `uranus-instancer-data.js`, sometimes async parsing would exit late, even after the parent entity is destroyed.
* Fixed `uranus-controller-third-person.js`, fixed missing audio listener component error.
* Fixed `uranus-effects-planar-reflections.js`, the camera rect wasn't taken into account.
* Fixed `uranus-effects-planar-reflections.js`, horizontal fov on camera breaking planar reflections.

## v0.9.14

Nov 21, 2022

* Added `Animated Player Path` example scene.
* Added `uranus-controller-spawn-area.js`, to allow for random player spawn position in predefined areas.
* Added `uranus-controller-animated-path.js`, to automatically animate the player controller as soon as he steps in a trigger.
* Added `uranus-controller-animation-custom.js`, to play animations on the default player controller using global events.
* Added `uranus-effects-skybox-animate.js`, to easily animate the skybox to a selected time.
* Added `uranus-effects-material-texture-mix.js`, to easily mix animate on the same material between two diffuse/emissive maps.
* Updated `uranus-controller-third-person.js`, added flying to third person controller.
* Updated `uranus-controller-third-person.js`, added lock player to camera rotation script attribute.
* Updated `uranus-controller-ready-player-me.js`, added support for local placeholder model while remote is loading.
* Updated `uranus-instancer-occluder.js`, occluder script now will exclude any entities/components initially disabled.
* Updated `uranus-multiplayer-colyseus-chat.js`, cleaned up event handlers on chat script.
* Updated `uranus-multiplayer-colyseus-chat.js`, added optional group filtering for sent/received messages (allows private/group chats rooms).
* Updated `uranus-multiplayer-colyseus-chat.js`, added get connected users event/method.
* Updated `uranus-multiplayer-agora-media.js`, added optional url param pass for broadcasting users.
* Updated `uranus-multiplayer-agora-media.js`, added support for a fixed Agora channel ID that works outside of Colyseus.
* Updated `uranus-multiplayer-colyseus-server.js`, added optional url params to control the selected server.
* Updated `uranus-effects-skybox.js`, bug fixes.
* Fixed `uranus-controller-third-person.js`, player template wouldn't persist between networked room changes.
* Fixed `uranus-controller-third-person.js`, fixed bug that blocked jumping out of the water.
* Fixed `uranus-editor-sdk.js`, fixed bug that broke editor scripting execution due to recent changes in the PlayCanvas editor.

## v0.9.13

Oct 21, 2022

* Added `Demo Solar Gallery` example scene.
* Added `Multiplayer Colyseus + Chat` example scene.
* Added `uranus-multiplayer-agora-client.js`, a script to handle connectivity with the Agora cloud service.
* Added `uranus-multiplayer-agora-media.js`, a script to easily define local and global audio/video rooms.
* Added `uranus-multiplayer-agora-screen.js`, a script to easily bind 3D surfaces for live video streaming with Agora.
* Added `uranus-multiplayer-colyseus-chat.js`, an easy to use text based chat module.
* Added `uranus-instancer-occluder.js`, an easy to setup occluder script that works with both the Uranus Instancer and with regular render/model components.
* Added `uranus-module-loader.js`, a utilities script to easily load ES6 modules.
* Updated `Hierarchical Building LOD + Occluder` example scene.
* Updated `uranus-multiplayer-agora-media.js`, to support 3D spatial mono and stereo audio.
* Updated `uranus-controller-ready-player-me.js`, to support custom layers rendering.
* Updated `uranus-multiplayer-colyseus-room.js`, with support for multiple local and global networking rooms, that can be used in parallel.
* Updated `uranus-controller-third-person.js`, with a custom username attribute that is automatically networked.
* Numerous bug fixes on the Colyseus networking solution.

## v0.9.12

Sep 08, 2022

* Added `Animation LOD` example scene.
* Added `Multiplayer Colyseus` example scene.
* Added `Ready Player Me + Multiplayer Colyseus` example scene.
* Updated `Demo Solar Stage` with multiplayer and ready player me avatars.
* Added `uranus-controller-animation-timer.js`, a script to easily improve performance on animated characters by introducing distance based LOD playback.
* Added `uranus-multiplayer-colyseus-[server/room/player].js`, scripts for easy to use networking with Colyseus.io.
* Added `uranus-controller-ready-player-me.js`, to easily import ready player me avatars to any PlayCanvas scene. The script works with the Multiplayer scripts.
* Updated `uranus-controller-third-person.js`, to work with the Multiplayer scripts. The player controller is automatically networked if the `uranus-multiplayer-colyseus-player.js` is attached.
* Updated effect scripts and SDK templates to work with PlayCanvas engine version 1.56.0.
* Fixed `uranus-effects-skybox-cubemap.js` that made mini stats flash. The cubemap cameras now render with priority 0. If all player controlled cameras have a higher than 0 priority the mini stats will render with no flashing.

## v0.9.11

Aug 07, 2022

* Added Demo Solar Stage.
* Added `uranus-effects-material-video.js`, effect script to easily play mp4 video files, local and remote, on any model surface.
* Added `uranus-effects-skybox-cubemap.js`, extracted skybox cubemap effect script to a separate script file and added local cubemap projection settings. The effect can now be used to render box reflections for any kind of box like volume.
* Updated `uranus-effects-skybox-cubemap.js`, added support for more than one materials to receive the skybox cubemap.
* Updated all SDK scripts to be compatible with PlayCanvas engine v1.55.3.
* Updated `uranus-graphics-settings.js`, made map button optional in graphics settings.
* Fixed `uranus-graphics-settings.js`, fixed planar reflections toggle on settings not working correctly.

## v0.9.10

Aug 01, 2022

* Added Demo Solar Pool.
* Added Demo Solar Supermarket.
* Updated Demo Solar Island with post effects support.
* Updated `uranus-effects-shadows-timer.js`, added support for point/spot light shadows timer.
* Updated `uranus-utilities.js`, to support PlayCanvas web builds when using web worker scripts.
* Updated `uranus-graphics-settings.js`, to support smaller min shadows in the widget.
* Updated `uranus-graphics-settings.js`, with local shadows toggle for point/spot lights.
* Updated `uranus-graphics-settings.js`, with post effects toggle.
* Updated `uranus-graphics-settings.js`, added support for multiple player controllers when using post effects.
* Updated `uranus-instancer.js`, with special tag to exclude certain materials from rendering shadows.
* Updated `uranus-effects-planar-reflections.js`, improved planar reflections shader to support normals distortion map.
* Updated `uranus-effects-planar-reflections.js`, added support for reflections shader properties per material.
* Updated `uranus-controller-third-person.js`, added mouse pointer lock attribute.
* Fixed `uranus-effects-planar-reflections.js`, planar reflections distortion issue on portrait screens.
* Fixed `uranus-controller-third-person.js`, jump/fall actions to take into account delta time.
* Fixed `uranus-effects-environment-fog.js`, environment fog zero shader division bug.
* Fixed `uranus-graphics-settings.js`, missing button error thrown.
* Fixed `uranus-instancer.js`, bug with entity disable tag not working with deleted entities.
* Fixed `uranus-effects-shadows-timer.js`, bug with missing shadow cascades rendering when using shadows timers.

## v0.9.9

Jul 17, 2022

* Added `playcanvas-terrain.js` based on the default PlayCanvas terrain example with in editor execution support.
* Updated `uranus-effects-planar-reflections` to use a secondary camera, instead of overriding the pre/post layer render methods. This effect can now be used with post effects without any issue.
* Updated `uranus-terrain-distributor.js` to support multiple models for calculating is AABB.
* Fixed `uranus-effects-planar-reflections` that produced shaking reflections to using a secondary camera.
* Fixed `uranus-effects-environment-fog.js` shader bug that throwed an exception on runtime.

## v0.9.8

Jul 07, 2022

* Added new SDK example `Solar Island`, a massive open world terrain (3km x 3km).
* Updated `uranus-controller-third-person` to support keyboard arrow keys.
* Updated `uranus-controller-third-person` to avoid locking the mouse pointer if mouse is not over the PlayCanvas canvas element.
* Updated `uranus-controller-third-person` with lock player and camera movement attributes.
* Updated `uranus-graphics-settings` with a 24 hours daytime slider.
* Updated `uranus-graphics-settings` with a 0 to 1 global sound level slider.
* Updated `uranus-graphics-settings` with device pixel ratio setting.
* Updated `uranus-graphics-settings` with auto preset selection based on device type.
* Updated `uranus-effects-sky` with min/max attributes for raleigh, allowing for more dramatic sunrises/sunsets without affecting the regular day color.
* Updated `uranus-terrain-distributor` with optional onReady event.

## v0.9.7

Jul 01, 2022

* Added `uranus-controller-third-person` a fully functional third person player controller that can walk, run, swim and jump. Supports both mixamo and ready player me skeletons.
* Added `uranus-controller-virtual-joystick` to be used by player controllers for touch input using virtual joysticks.
* Added `uranus-effects-normals-override` that can override world normals on any material. Useful when shading flat surfaces like vegetation/billboards.
* Added `uranus-effects-material-contrast` to allow setting the screen brightness and contrast without using a post effect (works by overriding globally material shaders).
* Added `uranus-graphics-settings` an easy to use script that includes a PCUI dialog handling basic graphics presets and settings.
* Added an optional Ammo Bullet 3.0 library.
* Update all `material` effect scripts to accept multiple materials on the same script instance.
* Updated `uranus-effects-material-wind` with 2D billboard support.
* Updated `uranus-instancer-data-rigidbody` with support for primitive colliders.
* Updated `uranus-effects-water` with support for the new camera request depth map API that shipped with PlayCanvas v1.54.0.
* Updated `uranus-effects-water` with support for multiple referenced cameras. The script will filter all cameras on each frame update and use the active one, making it easy to switch player controllers.
* Updated `uranus-effects-shadows-timer` adding per camera timers.
* Updated `uranus-instancer-cell` adding per cell visibility caches to improve performance.
* Updated `uranus-terrain` adding support for regular trimesh colliders for terrains.
* Updated `uranus-effects-water` adding simple underwater fog when camera is under the water level.
* Updated `uranus-effects-planar-reflections` to not require an active camera reference to render simplifying its use.
* Updated `uranus-effects-planar-reflections` added resolution factor to reduce the render target size and pixel density.
* Updated `uranus-effects-environment-fog` to support CPU/GPU based particles rendered in scene when this effect is enabled.
* Fixed `uranus-instancer` with LOD pers shadow setting not working.
* Fixed `uranus-effects-render-surface` with disabling lights/shadows not working as expected when multiple layers were selected.
* Fixed `uranus-instancer` that made the instances flicker when using cells with a > 0.0 update time.
* Fixed `.worker` scripts with malformed URLs that broke workers loading on published builds.
* Fixed `uranus-effects-shadows-timer` that prevented the effect from running in editor.
* Fixed `uranus-terrain-distributor` to detach all pending event handlers in case the entity/script gets disabled.
* Fixed `uranus-editor-sdk` that didn't respect inEditor being disabled and continued loading the script that included this property.

## v0.9.6

May 30, 2022

* Added `uranus-terrain-distributor.worker.js`, moved the terrain object distributors outside of the terrain generation worker. That improves performance since it allows running several workers in parallel. And at the same time allows for more complex placement logic.
* Updated `uranus-instancer-cell.js` to take into account the size of the mesh instance at the borders when calculating the cell bounding box.
* Updated `uranus-terrain-distributor.js`, added Min Distance property that can be used to control the minimum placement distance between the objects.
* Updated `uranus-terrain-distributor.js`, fixed wrong loading order for distributors that used mesh surfaces with preload set to off.
* Updated `uranus-effects-environment-fog.js`, improved the fog color by sampling across the horizon line instead of a single pixel.
* * Updated `uranus-effects-environment-fog.js`, fixed a bug that prevented scene change for other effects that use global fog uniforms (e.g. water).
* Updated `uranus-effects-multi-material.js`, fixed metalness/specula error when using a channel without a mask.
* Updated `uranus-instancer-data-rigidbody.js`, added support for scaled trimesh shapes for no entity instances (buffer). You can now spawn quickly large number of rigid bodies with different scaling (varied by step).
* Updated `uranus-instancer-data.js`, added save button in editor that can quickly dump the active buffer into a JSON file. Useful for saving the distributor results for use with the painter.
* Updated `uranus-terrain-texture.js`, added texture variation to break the tiling of seamless textures on terrains.

## v0.9.5

May 24, 2022

* Added `uranus-instancer-data-rigidbody.js` script that can spawn rigid bodies directly from instanced data buffers, bypassing the need to spawn regular entities. That improves performance and memory allocation by a big factor for large numbers of objects.
* Updated `uranus-instancer-cell.js` with an `updateFrequency` and an `updateShadowsFrequency` properties to control how often culling updates on those grouped instances. Increasing the frequency time results in better performance when a large number of cells is used.

## v0.9.4

May 22, 2022

* Added `uranus-effects-planar-reflections.js` script that enables easy to use planar reflections on any material/mesh instance.
* Added `uranus-instancer.worker.js` for async calculating cells on single instance instancing buffers.
* Updated `uranus-effects-water.js` with support for optional planar reflections.
* Updated `uranus-effects-environment-fog.js` with `fogDensityMax` uniform to control the density of the ground fog.
* Updated `uranus-instancer.js` with `excludeShadowsLayers` property to disable shadow payload generation per layer.

## v0.9.3

May 13, 2022

* Massive improvement in memory usage (JS heap) for instances using data cells.
* Fixed memory leak with distribution buffers returned by the web worker.
* Script attributes titles/descriptions fixes.

## v0.9.2

May **11**, 2022

* Removed versioning from header to avoid polluting commits.

## v0.9.1

May 07, 2022

* Fixed: `uranus-instancer-data.js` broke when input .json file wasn't an array.
* Fixed: `uranus-instancer-painter.js` failed to paint instances on a blank data .json file.
* Fixed: `uranus-instancer-data.js` data parsing failed when template element index wasn't used.
* Fixed: `uranus-utilities.js` added empty script type so the script executes in editor.

## v0.9.0

May 07, 2022

* Initial release for early access.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.solargames.io/changelog.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
