We have just released a new update for ChilloutVR on stable branch.
A small preview of the update made by Relic: https://www.youtube.com/watch?v=0mGb-9gpi_8
ChilloutVR 2021r162
General
- Fixed an issue that lead to target rotations on teleports to not work properly in VR
- Nudity and suggestive tags are now separated in-game and nsfw filter option was replaced by them
- Added the following new tags
- Extremely Bright
- Music
- Horror
- Jumpscare
- Extremely Bright
Interactable
- Added new Unity Events to the "Sit At Position" action for EnterSeat and ExitSeat
- Added a "Lock Controls" option to the "Sit At Position" action. You can only exit those seats by opening the main menu
- Fixed the offset calculations for offsets in VR for chairs
- Chairs now rotate on all 3 axis
- Added more filter options to the pointer event
- Added a generic input event, which can be used to trigger on key presses
- Added a new action to set a sync value of a spawnable component
- Added new actions "Play Audio" and "Stop Audio"
Assets Support
- Added Support for Azure Skybox Fog Scattering component (https://forums.abinteractive.net/d/318-azure-skies-fog-scattering-not-appearing-in-cvr)
- Added Support for Beautify
- Added Support for Modern Procedural UI Kit
- Added CarControllers to the game. They work together with the interactable "Sit At Position" action and the "Lock Controls" option
Spawnables
- Added Unity UI elements to the list of supported components
- Added Support for spawnable SubSyncs. You can sync sub transform in exchange for spawnable values.
A demo for the sub object sync can be found here: https://www.youtube.com/watch?v=YZYWj3m6ZO4
- Increase the max number of spawnable values to 40
- Fixed a bug that lead to spawnables being stuck to some avatars when the attachment component is used (https://forums.abinteractive.net/d/294-prop-stuck-to-hand)
- Fixed a Bug that lead to spawnable values not being updated, when they were placed below a parameter with update type none (https://forums.abinteractive.net/d/292-parameters-in-spawnables-have-a-weird-behaviour)
- Added the generic input event on interactables to the white list
UI
- Fixed a bug, that lead to periodic lag spikes every 25 seconds on some connections
- Fixed a bug, that lead to the cancel button on the confirmation window to not work (https://forums.abinteractive.net/d/343-the-unfriend-prompt-removes-people-from-friendslist-anyway)
- Fixed a bug that lead to items getting stuck to your hand when you drop them while pointing at the menu
Quick menu
Added the first version of the new quick menu
- The quick menu will give you quick access to the most used actions and the advanced avatar settings of the current avatar
- The quick menu will also show you the active world modifiers
- The quick menu uses the new menu engine and allows the creation of persistent modifications. A guide on how to create menu modification will follow soon
- You can open the quick menu using the left menu button in VR or using Tab on Desktop
- You can reposition the menu in VR by holding the left menu button for more than 2 seconds
A user made preview for the quick menu can be found here: https://www.youtube.com/watch?v=E1YUUwzgUAc
Video Player
- The Video Player is now using YoutubeDLP which will lead to more reliability when playing youtube videos
Worlds
- Added Support for disabling Nameplate world modifier
Avatars
- Added the function, that rescaling the avatar using advanced avatar settings will update the IK settings in VR
- Added an option, that your movement speed can be affected by your avatar size. This option will only slow you down when smaller and will not be able to make you faster than the default speed
- Avatars with smaller file size will now be priority-loaded
Infrastructure
- Changed the way asset versions are validated
- Content is now loaded from the new storage network
- Minor loading speed adjustments
Creating Modules for the new menu system
In order to create modules for the new UI system, you first need to create a directory for your module in [path to your game]\ChilloutVR_Data\StreamingAssets\Cohtml\UIResources\GameUI\mods
In there you need to create a mod.js that contains the following base code. For the example the mod is called testmod:
cvr.menu.prototype.testmod = {
uiRef: {},
info: function(){
return {
name: "Test Mod",
version_major: 1,
version_minor: 0,
description: "a quick mod to test some basic features",
author: "Your name",
author_id: "Your user id",
external_links: [],
stylesheets: [],
compatibility: [],
icon: "",
feature_level: 1,
supported_modes: ["quickmenu"]
};
},
register: function(menu){
uiRef = menu;
console.log("Test Mod: register");
},
init: function(menu){
console.log("Test Mod: init");
},
}
the info function will provide the menu system with all necessary information about your module.
"external_links" can consist of social links with the following structure:
{type: "twitter", url:""},
{type: "discord", url:""},
{type: "github", url: ""}
"stylesheets" contains a list of stylesheets that need to be positioned inside the same folder. The structure is as follows:
{filename: "mod.css", modes: ["quickmenu"]}
"compatibility" will later designate any dependencies your module may have, so it is loaded in the proper order. The structure is as follows:
{mod_name: "another_mod", type: "dependency_loaded_before"},
{mod_name: "second_mod", type: "dependency"},
{mod_name: "optional_mod", type: "optional"}
You can also play UI sound from your module. In order for audio files to be detected the files need to be in wav format.
You can play those audio files using the following code:
uiRef.core.playSound("testmod_Switch");
The name you need to use is the module name followed by "_" followed by the filename without ".wav"
Inside the register function, you can register for events with the menu system.
Currently the following events are supported:
"eventUpdate1sec" gets called every second
"eventUpdate10sec" gets called 10 times per second
"avatarUpdated" gets called when the avatar is switched
"advancedAvatarValueChanged" gets called when an advanced avatar setting is changed. has 2 parameters for the callback: name, value
In order to register for an event you use the following code:
menu.core.registerEvent("advancedAvatarValueChanged", this.advancedAvatarValueChanged);
The following is an example that will play a sound when an avatar is switched and logs the changes of advanced avatar values:
cvr.menu.prototype.testmod = {
uiRef: {},
info: function(){
return {
name: "Test Mod",
version_major: 1,
version_minor: 0,
description: "Plays a sound on avatar change and logs advanced avatar value changes",
author: "Khodrin",
author_id: "00e7b5f2-07ac-c0b5-fd11-22e86f52f9de",
external_links: [
{type: "twitter", url:"@Khodrin3D"},
{type: "discord", url:"Khodrin#4654"}
],
stylesheets: [],
compatibility: [],
icon: "",
feature_level: 1,
supported_modes: ["quickmenu"]
};
},
register: function(menu){
uiRef = menu;
},
init: function(menu){
menu.core.registerEvent("avatarUpdated", this.avatarUpdate);
menu.core.registerEvent("advancedAvatarValueChanged", this.advancedAvatarValueChanged);
},
avatarUpdate: function(){
uiRef.core.playSound("testmod_AvatarSwitch");
},
advancedAvatarValueChanged: function(name, value){
console.log("Adv Avatar Value \"" + name + "\" changed to: "+value);
}
}
Currently every module in the folder will load, but the new main menu will have a dedicated mod settings page, where you will be able to enable and disable modules.
Some of these new features will be available to be set up once CCK 3.0 is released.
Please note, that this update contains features that will be compatible with the upcoming CCK 3.0 update. Those features are not currently available and will become available to everyone once the CCK 3.0 update releases on thursday this week.
We will post another announcement in the upcoming days, asking for feedback regarding the new CDN and storage network. Please make sure to give us proper feedback once that form is available so we can make sure to improve its quality further.
If you encounter any issues please be sure to report a bug. You can find information on how to do so here: https://forums.abinteractive.net/d/5-how-to-report-a-bug
If you would like to request a feature, you can check up on how to do so here: https://forums.abinteractive.net/d/7-how-to-request-a-feature
Changed files in this update