Releases: MindPort-GmbH/VR-Builder
Releases · MindPort-GmbH/VR-Builder
Support for Unity 6 and XRI 3
[Changed]
- VR Builder now supports Unity 6 out of the box. Unity 2022 and previous versions are not officially supported by VR Builder 5.
- Since Unity 6 uses URP by default, we now consider URP as our default render pipeline as well, and updated our content accordingly.
- The default interaction component is now based on XRI 3. This entails a completely new rig (based on the XRI default rig) and some updated interactions.
- The default raycast and interaction layers for teleportation are now named "Teleport" instead of "XR Teleport" and set to layer 31 if possible.
- Teleportation anchors now have two more options: Add Snap Volume and Add Interaction Affordance, respectively auto configuring the anchor so that the teleportation ray snaps to it and so that it provides affordance when hovered.
- Changed and tidied up namespaces. This can result in API breaks on custom content, but it should be a simple case of pointing to the new namespace.
- Merged Text-to-Speech and Basic Interaction assemblies in the Core assembly, in order to simplify the architecture. Custom content that referenced these assemblies now needs to reference the Core assembly.
- Removed obsolete code.
[Known issues]
- There is no automated upgrade path from VR Builder 4 processes. It's technically still possible by manually editing the JSONs, but we recommend not upgrading a project in progress.
Text-to-speech API Updates
[Added]
- The
Object in Collider
condition now supports multiple object references and lets the user specify a number of objects that needs to be in the collider. - Every text-to-speech provider implementation can now have custom configuration fields. This makes it easier to implement custom TTS providers.
UserSceneObject
now has aBase
property corresponding to the position of the user's feet.
[Changed]
- Standardized component configuration sections in Project Settings (like the SnapZone settings) to make it easier to create more.
[Fixed]
- Fixed automatically focusing the Step Inspector window when recompiling.
- Play Audio behavior now stops playing before aborting.
- If a condition is a lockable property provider, lockable properties are retrieved using the condition's API instead of a helper method. This makes it easier to implement custom conditions that return a specific set of lockable properties.
Abort Lifecycle
[Added]
- The Parallel Execution node now lets you create optional paths. You can make a path optional by clicking the new button next to its name. An optional path will be interrupted when all non-optional paths have completed, and execution will immediately proceed to the next node. This can be useful to create background looping animations, recurring hints and so on. An optional path can even be an endless loop and it will still be interrupted.
- Added advanced user settings to
Project Settings > VR Builder
. Advanced users can, for example, skip the "adding Process Scene Object" dialog or automatically add properties when an object is dragged in the step inspector, effectively auto-pressing the "Fix it" button. - VR Builder components now have a custom icon instead of the Unity script icon.
- Added API to abort entities to entity lifecycle. Calling the
Abort()
method on an entity lifecycle will enter a short Aborting stage where all child entities are aborted as well, then will revert the entity to Inactive. Note that while every lifecycle can be individually aborted, it mostly makes sense to abort entire processes or chapters.
[Changed]
- The
Set Next Chapter
node has been renamed toEnd Chapter
node. It now actively ends the current chapter (by aborting it) instead of just setting the following one. This means it now also works reliably in nested nodes, so we made it possible to create this node inside step groups or parallel execution nodes, where it was previously greyed out.
[Fixed]
- Fixed warning in Unity 2022+ when using the Move Object behavior to move a kinematic object.
Compatibility Update
[Added]
- Added resource drawer for animation clips, in order to support the new Play Animation Clip behavior in the Animations add-on version 2.1.0.
Copy/Paste Behaviors and Conditions
[Added]
- Added support for copy/pasting behaviors and conditions in the Step Inspector. The Delete button has been replaced with a Menu button which allows to delete, copy and paste behaviors and conditions, similar to the Unity inspector. Additionally, a Paste button has been added next to the New Behavior/Condition button to allow pasting into an empty inspector.
- New Load Scene behavior letting you load scenes with options to load additively and/or asynchronously.
- Generic dropdown drawer that can be used for your custom behaviors/conditions: your class should extend
DropdownDrawer
and should be passed a string in the attribute[UsesSpecificProcessDrawer("YourDrawerName")]
above the property you want to select via dropdown.
[Changed]
- The Process Editor now displays a message when it is open in a scene without a process. This also displays warnings in case the process has been moved/deleted.
- The Runtime Configurator now handles a moved/deleted process by displaying a message in the dropdown instead of silently defaulting to the first selectable process.
- Improved the UI of the dropdowns showing scene object groups.
- Improved error handling with having multiple instances of type RuntimeConfigurator in all loaded scenes.
[Fixed]
- Black text on the "drop object here" box of scene object references in Step Inspector.
- Fixed exception when attempting to create snap zone highlight from multiple large meshes.
- Fixed a build error.
- Small editor performance improvements in behaviors/conditions that let you choose between a data property and a constant value.
Editor Improvements
[Changed]
- Significantly improved editor performance when deleting a step in a chapter with many steps.
- The user's position in the graph is now persisted between sessions.
- The selected tab in the step inspector (Behaviors, Transitions or Unlocked Objects) is now stored globally, so it will stay the same when cycling through steps.
- HasGuidValidation no longer accepts any object if no guids are specified, but will accept no object as is logical instead. While this can result in an unusable snapzone, it makes it possible to potentially add valid objects at runtime.
[Fixed]
- The progress bar doesn't get stuck when the TTS provider fails to generate a clip, an error message is displayed in the console.
- Fixed language settings not being saved correctly in certain cases.
- Fixed process controller prefab so that unnecessary components are not present when Standard is selected.
- Groups created from a Process Scene Object are persisted correctly.
- Fix for occasional ArgumentOutOfRangeException causing the wizard not to display correctly when importing VR Builder for the first time.
- Fixed the bug where an outdated process is executed when pressing play.
Runtime Performance Improvements
[Added]
- Significantly improved runtime performance for processes with many steps. Now the number of steps in a process has no impact on the performance.
- New multiline text drawer contributed by LEFX - thank you! The drawer is currently used in the Text To Speech behavior but can be manually set for fields in other behaviors/conditions.
- Added
ForceLockControllerState
andUnlockControllerState
public methods toActionBasedControllerManager
. These can be used to externally lock the controllers e.g. in UI mode or teleport mode, which can be useful if the user is required to perform a specific action.
[Changed]
- The
UserSceneObject
component does not inherit fromProcessSceneObject
anymore. This allows you to use the rig in a scene without scene object registry without getting errors - for example when loading additively scenes with processes in them. As a result,BaseRuntimeConfiguration.User
does not work anymore. You can still useBaseRuntimeConfiguration.LocalUser
which provides the same functionality while returning aUserSceneObject
component. Note that nothing stops you from manually addingProcessSceneObject
components to parts of the rig you want to interact with the process.
[Fixed]
- A
link.xml
file is now automatically created before Android builds in order to prevent managed stripping from removing behavior/condition code which is actually in use, and thus resulting in a non-functional process in a standalone headset. - Fixed tags on game objects not being converted to groups when upgrading from version 3 to 4.
- Fixed bug in the automatic updater of the Enable/Disable Object by Tag behaviors. Now these should be replaced by a correctly configured non-obsolete behavior.
- Scene property extensions will not be added multiple times when selecting the
Add Scene Property Extension
menu entry in a scene where they have already been added.
New Object Referencing System
[Added]
- Added upgrade tool for updating processes to the new referencing system (see below). If you open an old process in VR Builder 4.0.0, all object references will be null because the system has changed. You can attempt to update the process by opening its scene, then selecting Tools > VR Builder > Developer > Update Process in Scene. Note it's important that the correct scene is loaded, as the updater will have to search for the correct game objects in order to update the references.
If you have custom behaviors or conditions in your project, you'll need to update them to the new referencing system. Afterwards they will be supported by the automatic updater. - Added support for TTS when using an async provider, courtesy of LEFX.
[Changed]
- Rebuilt the system for referencing scene objects in the process from the ground up. The new system is more robust and lets you use prefabs normally, without worrying about unique name conflicts. References in behaviors and conditions now can hold a mix of unique objects and object groups (formerly tags). They can be single or multiple references, meaning they will return one object or all viable objects. Make sure to check the documentation for more information.
- "By tag" behaviors and conditions have been removed. Now there is only one version of a given behavior/condition, but where it makes sense it will be possible to reference multiple objects, thus replicating the functionality.
- VR Builder is now a hybrid package. This means that while it's still an Asset Store .unitypackage, it will be imported in the Packages section of the project instead of your Assets folder. It's recommended to delete the MindPort/VR Builder/Core folder under Assets before updating to this version.
- Scene Object Tags have been renamed to Groups. Functionality is the same, but if updating from an old project you will notice that the Scene Object Groups settings page is empty. You can import your old tags by selecting Tools > VR Builder > Developer > Update Object Groups.
- Objects unlocked by conditions are now unlocked when the step is active instead of activating. This means, for example, that the teleportation anchor for a teleport condition will appear after all blocking behaviors have finished instead of the beginning of the step. It also means that it won't be possible to teleport there before the condition starts checking.
- The process won't stop executing because of entity lifecycle exceptions, instead, an informative error will be displayed in the console.
[Fixed]
- Fixed Set Next Chapter node exception when being fast forwarded.
- Fixed some errors when creating a new scene through the wizard.
- Fixed manually unlocked objects not locking again if they had been manually unlocked in multiple consecutive steps.
- Fixed unresponsive buttons in the Scene Object Groups settings page.
[Removed]
- Removed previously deprecated code. This includes the C# events on all properties, the old process editor, and more.
Experimental Hand Tracking Rig
[Added]
- Experimental hand tracking rig based on the default XRI Hands rig. The prefab is named
XR_Setup_Action_Based_HandTracking
and can be used in place of the default rig. The rig supports both controllers and hand tracking. Note that there is no teleportation solution currently available for hand tracking, and some controls and behaviors are slightly different from the standard rig. - Added dependency to the XR Hands package.
- The XR Teleport interaction layer is now automatically created when importing VR Builder.
- Added a check to ensure rig and teleportation areas/anchors are set to the correct raycast/interaction layers. The rig is automatically set up on rig creation, and you can check the entire scene manually by selecting
Tools > VR Builder > Developer > Configure Teleportation Layers
. The demo scene is automatically set up when opened from the menu or the wizard. - Added animation curve functionality to the Move and Scale Object behaviors. Thanks LEFX!
[Changed]
- Updated XRI dependency to XRI 2.5.2
- Changed how the Project Setup Wizard decides whether to show the hardware selection page: now the page will show if none of the common XR SDKs (OpenXR, OculusXR, WMR) are installed.
[Fixed]
- Fixed having a full path stored in the runtime configuration instead of a relative one when renaming a process, which could cause issues in builds or when working across different computers.
Anchor Proximity Detection
[Added]
- It is now possible to add proximity detection to VR Builder teleportation anchors. This means that the anchor will send a teleported event readable by VR Builder even if the user gets near it by continuous locomotion or walking, without teleporting. Click the "Add Teleportation Proximity Entry" button on the teleportation anchor to instantiate the necessary components.
- Added support for the Cognitive3D integration.
- Added drawer for selectable value between int and data property reference.
[Changed]
- The touchable property now recognizes touch from any direct interactor, not only from interactors parented to the user scene object.
[Fixed]
- Fixed issue when having punctuation in the name of a localization table.