In this update4
Full notes
Full ChilloutVR update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Gameplay
- UI and audio
- Events
- Store
- Performance
- Fixes
ChilloutVR changes
We have just released a Stable update to ChilloutVR that includes various fixes and improvements, including how you interact with objects, players, and mature content.
Main Changes:
Player Interaction without Input
Allow or restrict other players/props from initiating certain interactions without your input, such as attaching objects or teleporting. Worlds always bypass this setting.
Desktop Throwing
Props & Objects can now be thrown in Desktop by holding the ‘G’ key while held
Mature Content Visibility
Players with access to Mature Content within ChilloutVR via the DLC now have a global toggle available in both the game Settings menu (General), and Account Settings on the HUB.
Unity Upgrade
While not a major change, ChilloutVR is now using Unity 2021.3.45f1. This editor version may be used to upload content going forward.
Note: CCK related changes, and uploading via Unity 2021.3.45f1, will be available along with the release of CCK 3.13 following soon.
Changes:
Added 'normalizeBoneAttachment' option to CVRAttachment to allow for attachments to work across differing avatar rigs
This means that bone attachment with fixed offsets won't be affected by bone roll & local scale
Added 'OnPickupUseUp' and 'OnPickupUseDown' to CVRInteractable
This differs from 'OnInteractDown' and 'OnInteractUp' by only firing for the held hand holding the pickup
Added 'RectTransform.SetParent' and 'Transform.SetParent' to the unity event whitelist, limited to worlds. These are available via 'CVRInteractable' method call.
Added a mipmap streaming toggle on the experimental settings
Added a MoveMode dropdown to CVRPickupObject
This just exposes Velocity / Instant tracked pickups, with the potential for more to be added in the future
Added an additional Exception Handling for Bundle Verifier
Added a throwing multiplier & min speed threshold to CVRPickupObject
Added CollisionWithPlayer configuration to CVRPickupObject & CVRAttachment
DisableWhileHeld: The pickup will not collide with the player while held Collision is immediately returned on release
DisableWhileHeldAndColliding: Same as above, but the pickup will not instantly collide on release, but instead push the player out after half a second
DontDisable: The pickup will continue to collide while held
Added destroy children option to 'CVRInteractable.DeleteGameObject' action
Added error handling and display for incompatible worlds in the player activity menu.
Added filtering of "illegal layers" on world load
PlayerClone & UI Internal are now filtered
Added logs for when unity events get filtered out, while also stating the reason they were filtered
Added starting Steam (if not running) when using DeepLink to start the game
This fixes the issues of losing SteamVR custom bindings and mature DLC when starting the game from DeepLink URLs while steam is closed
Adjusted 'CVRAttachment' to call the Detached event when the attachment is broken
This can occur on an avatar switch, prop deletion, or any general case where the tracked transform is no longer able to be tracked
This also fixed CVRInteractables attached state being incorrect if another attachment was done prior to calling DeAttach
Adjusted Drop key in Desktop '(G)' to accumulate a throw timer while held
You can now hold G for up to 3 seconds to charge a throw
Adjusted first CVRInteractable.OnEnable call to occur after world load
Adjusted GravityZone rotation alignment handling to not force ZeroG controls during the transition between two override zones which have the same alignment mode
This fixes Zero G controls being active while transitioning through aligned override gravity zones
Adjusted how velocity is applied on release of a pickup
This should make throwing things feel just a bit nicer
This also fixes rotational velocity not applying to a pickup on release
Adjusted order that 'CVRAttachment' checks for attachable transforms:
Now is Snapping Points -> Trackers -> Avatar Bones (was in reverse order)
Ex: an attachment set to look for a "holster" type and hip bone will prioritize the preconfigured snapping point if found over the hip bone
Adjusted the new non-whitelisted url notification
Changed 0m MaximumGrabDistance behaviour
When set to 0m only Proximity Grab will work
As desktop cannot physically do proximity grab they have an extra reach distance given to compensate
Existing pickups using 0m for infinite still work as expected
Changed CVRInteractable.OnTimer to use coroutine instead of scheduler system
Changed how 'StateMachineCallbackSender' works
You now must define a specific receiver to forward callbacks to
This was changed for performance & implementation reasons
CVRPickupObject will no longer change Kinematic mode on held rigidbody
If disabled, pickup object will respect collision
If enabled, pickup object does not respect collision
Disabled rich text on Portals, Avatar Markers, and Spawnable Markers
Enabled mipmap streaming and set mipmap memory budget appropriately (currently set to 80% of max VRAM)
This should resolve where textures were always the lowest mip selected on a previous build that had mipmaps enabled.
- NoteSome older avatars that have mipmap streaming enabled might use the lowest resolution at all times, which must be re-uploaded to resolve.
Exposed 'enabled', 'SetAutoHold', 'ForceRelease', & 'IsPickupable' on 'CVRPickupObject' for use with Unity Events
Fixed Advanced Safety not actually clamping transform positions
Fixed an issue where multiple delayed CVRInteractable actions being removed at once would stop other delayed actions
Fixed an issue where switching to VR after starting in Desktop would mess with VR push pull distance & speed
This caused pulling an object to you to stop before actually reaching you depending on your playspace scale prior to switch
Fixed an issue with Avatar Reloading not working properly when the upload is updated
Fixed an issue with Disconnect Messages being played twice
Fixed an issue with Max Prop Download Size not being enforced (it was using the avatars max limit setting instead)
Fixed an issue with Player Join and Leave toggles not working properly
Fixed an issue with Player Voice Pipelines not applying values properly
Fixed an issue with SteamVR not abiding by user-specified render resolution
Fixed CVRAdvancedAvatarSettingsTriggerTaskStay Add/Subtract per second being tied to target refresh rate
Fixed CVRBlitter Breaking when deleting content
Fixed CVRInteractable actions being needlessly iterated over during callbacks where actions weren't defined
Fixed CVRInteractableManagers enableInteractions state not being fully respected, causing desync while interactions were disabled
ex: CVRInteractable.OnGrab would not fire while in FBT calibration
Fixed CVRInteractables Teleport Player World Up option misbehaving
Fixed CVRInteractable Teleport Player with gravity alignment option not working
Fixed not orientating properly in certain scenarios
Fixed CVRPickupObject.RootTransform returning stored grip transform instead of active one
Fixed CVRPickupObject handling rotation of non-physics updated pickups properly
They used to move in FixedUpdate but rotate in Update, causing some visual issues
This also fixed GripOrigin pickups not being throwable
Fixed game initial Intro video not continuing the loading after finishing without user input to skip
Fixed Interactable not being able to handle multiple controllers properly
This fixes 'CVRInteractable.OnInteractUp' being wrongly invoked when hovering a controller over an object already being interacted with by the other controller
Fixed interactable-spawned objects in worlds set to Auto Pickup not working
It attempts to auto-pickup the spawned object if there is an available hand. If there is no available hand, it will drop the current held object and then grab the newer one
In VR it checks first the right and then the left hand for a free hand, if none available it force drops the right hand and then use it.
In Desktop just uses the single existent grab point (head)
Added options for interactions without user input option on Avatars and Props
Example: Attach props to users, or Teleport/Seat remote without clicking on something
Worlds do bypass these settings
For now 'UnityUI' calling 'CustomTrigger' does not count as user Input, so it will be restricted if players have this disabled
Currently the Me/Friends options look for the avatar wearer or prop spawner to decide whether the limits are applied or not. In the future this might be refactored to better interactions (like checking filtering depending on who's grabbing for example)
The default settings are:
Attachment without user input: Always
Teleport Player: Props spawns/Avatars worn by Friends (or self)
Note: This didn't improve the access to the mentioned functionalities, instead it restricts some funny ways to do it
Fixed issue with CVRBlitter breaking when multiple instances of the same prop were spawned
Fixed Mirror Facing Check, Mirrors should now be fully functional again
Fixed mirrors breaking with a skewed transformation matrix
Fixed notification for blocked prop due to max file size not showing
Fixed pressing prone key while in Desktop changing Seated Play state
Fixed reusing clips with shared Animation Events blows up AnimationEventHelper on content load
Fixed some youtube videos play using the wrong language
Fixed soundcloud.com links not working in the video player
Fixed typo on Player Interactions without Input description
Fixed VRModeSwitch Shader Replacement only occurring for only Legacy bundle format Worlds despite Compatibility Version being NotSpi
Fixed VR Switch Shader Replacement prompt using the wrong conditions to display
Would incorrectly display in any world using Legacy bundle format instead of NotSpi Compatibility Version
Fixed Worlds with Terrain set to Draw Instanced causing visual artifacts during Digitize transition
Implemented a system to handle shared physics & collision state across CCK components
This ensures CVRAttachment, CVRPickupObject, CVRPhysicsInfluencer, CVRObjectSync, & CVRSpawnable shouldn't end up reapplying values they shouldn't
This will also later allow creators to change the desired kinematic & gravity values when one of the above components is not overriding them
Implemented content blocking based on global mature content setting
You won't be able to see the details or use avatars/props/worlds/instances tagged with nudity or gore if you have the setting off
You won't be able to join instances of worlds that are tagged with nudity or gore if you have the setting off
Implemented global mature content setting associated with the users account
The toggle is available within the in-game General settings & on the Hub
You must run the game with the Mature Content DLC at least once to unlock this toggle
The toggle is automatically defaulted to true this first time you run with the DLC
Improved CVRBlitter functionality
Added RandomWriteTarget support to the CVRBlitter component
Added CVRBlitterController to ensure CVRBlitter execution order
Improved menu clarity and reduce aliasing significantly
Made Mirror Optimization always apply
Removed the setting from experimental
Pickups ineligible for grabbing will no longer highlight
Prevent some avatar materials that are not instantiated from getting destroyed
Renamed 'Input & Key-Bindings' to 'Controls'
Replaced 'Fade When Idle' setting with 'Display Behaviour' in Settings -> Graphics. Now it offers 3 modes:
'Always' - The HUD is always shown (previously Fade When Idle unchecked)
'Voice & Updates' - The HUD fades out if there are no updates nor voice activity both muted and unmuted (previously Fade When Idle checked)
'Only Updates' - The HUD fades out and only returns when there are updates, or there is voice activity while unmuted (new)
Upgraded Unity version to 2021.3.45f1.
Whitelisted 'CanvasGroup' for props
Whitelisted FinalIK's 'AimIK' and 'IKExecutionOrder' components for avatars and props
Whitelisted setting some properties of 'CanvasGroup' via UnityEvents (limited to props and worlds)
Source
Changelog.gg summarizes and formats this update. How we read updates.
