When creating a new event, you can no longer link an event to a scene, but a built world instead. This would then create a new world copy of the published world.
When an event attendee attends the event, the original world is automatically added to the Codex, not the event world. This is so that the users can come back and visit the original world available in the Codex, whether it was published or not.
New event notifications in the client to notify interested attendees that the doors to the event has been opened and that the event has begun.
Creators can now link to specific spawn point coordinates. See New object editing component: Spawn point below.
Desktop aim improvements (pew-pew)
New “aim at cursor” property (optional) for the Grab Point component. When set, the avatar will hold the object so that it points towards the direction or object the mouse cursor is hovering over.
In mouse-look mode, it will point towards wherever the reticle is pointed at.
New support for uploading custom avatars with premorphed skeletons.
Previously, the avatar references’ base skeleton could not be modified and imported in Sansar. Now, you can adjust the position of bones to make taller or shorter avatars with different bone structures. Note: You cannot rotate or scale the bones. For best results, the avatar should be in the ‘A’ pose.
Updated custom avatar AABB limits are as follows…
Max AABB - 2.3m tall, .05m below the ground plane, 1.2m left and right, .4m front, 1.1m back
Min AABB - .9m tall, .25m left and right, .06m front to back
New support for free cam mode in the avatar editor. Now you can zoom in closer to specific areas of the avatar so you can access and adjust clothing. Access free cam mode by pressing the camera button on the lower left side of the editor or pressing F4.
World creation improvements
New object editing component: Spawn point
You can now add spawn points as a component on objects in a scene. See Object Editing to find out how.
You can assign or change the name of the spawn point component to allow spawning users at a specified named spawn location.
You can toggle whether a spawn point is an initial spawn point or one only accessible through script or world link. This toggle can be accessed from the Spawn Point component’s properties panel.
You can now add Camera as a component on objects, which can be activated and controlled using scripts.
The camera component can be positioned and oriented like any other object in the scene.
The camera component can be copied as a reference and pasted on a camera script parameter.
New Grid section under Scene Settings that allows you to enable Snap to Grid on/off and set the snapping distance coordinates. This works with move, rotate, and planar tools.
Added a texture memory counter to the Object stats Tool.
You can now move the color picker panel around the editor to any desired location on the screen.
You can now import .jpeg files.
Removed limitations on texture dimensions.
The material preview should be faster and should show textures no more detailed than 1k on the object in the scene upon importing a texture until it is saved.
In-client store improvements
You can now view items by seller by clicking their name from the Store or using scripting API: (openUserStore(creatorHandle)
Added filters to enable you to filter items by Male or Female or All in terms of compatibility.
Added filters to enable you to filter avatar-related items by Marvelous Designer, Rigged or Static (Accessories).
Tags assigned to items are now clickable and allows you to look at a filtered list based on that tag.
Resale information and price are now exposed in the item details page.
New copy URL button on the item details page to enables you to share direct URLs to specific store items.
This option is not available in the client for items that are hidden. Creators who are interested in grabbing a hidden item’s link may do so on web from the manage listings page.
Accessing store item links shared in nearby or direct chat will open the item in the store.
Hyperlinks within store listing description will resolve into clickable links. [IN CLIENT ONLY]
Valid experience links can be visited to and from within the description itself
Product listing links will open within client itself
External links will open in browser
Avatar texture LOD
We are releasing the first version of the avatar texture LOD system which will adjust avatar visual quality based on certain parameters to maintain product performance.
The system will load up to 100mb of texture data per avatar. Any texture data in excess of 100mb will be downsampled until it falls to 100mb. This means that the visual quality of an avatar may be reduced on some occasions.
This cap may be increased in larger events, which may affect the visual quality of an avatar further.
Scene Script References
The Scene Properties panel now has 6 slots to apply Script References. These scripts do not automatically run but can be used in objects in the scene. When choosing a script on an object from the drop-down any Scene Script References set in the Scene Properties will show at the top of the list. Choosing one of these will allow you to configure the script normally while linking it to the slot in the Scene Properties window.
If a script in the Scene Properties window is changed then all scripts in the scene that reference that slot will have their script automatically updated to the newly set script.
Sets the active camera and control mode for this client. ScriptCameraControlMode can take the following values:
NoControl: both agent and camera controls (user input) will be ignored while this camera is active (default).
AgentOnly: agent can be controlled. Camera control will be ignored.
CameraOnly: camera can be controlled. Agent control will be ignored.
FullControl: both agent and camera can be controlled while this camera is active.
Note: when camera control is active, user can only control pan and tilt.
Returns the active camera component for this Client. Returns null when the system default is active.
Resets the active camera for this Client to the system default
Ability to Teleport to Named Spawn Points
Client.TeleportToLocation() now has a variant that takes a Spawn Point Name. When used the client will be teleported to the given scene and spawn at the specified spawn point. If the spawn point does not exist, a random initial spawn point will be used.
Open a specific user's store within the client. agent.Client.OpenUserStore(CreatorHandle);
New events added to the Store Listing library script to open a user's store.
New Error Mode Behavior for Scripts:
Scripts will now have the following possible attributes applied to their class: [ErrorMode(Sansar.Microthreading.ApiErrorMode.Relaxed)] [ErrorMode(Sansar.Microthreading.ApiErrorMode.Strict)] [ErrorMode(Sansar.Microthreading.ApiErrorMode.Default)]
This mode can also be changed at runtime with
Default API Error Mode:
The following APIs that would throw exceptions before will now only log to the script console: Agent, Client, UI, Quest, and Objective APIs that could previously error and crash a script when a user left the scene.
Important clarification: the default mode is per API not error. If an Agent API would error for a reason besides the user leaving, then the behavior is still changed and it will log instead.
These APIs should return a "reasonable" error value in this case. That value is often null.
All API errors also log an additional line with the API method name and a message.
If the attribute isn't set on the class and none of the above methods are called the script is in Default mode. All existing scripts will default to Default mode.
Strict API Error Mode:
All APIs throw exceptions when they error, including those from user's leaving the scene.
In addition to the exception that the script may throw and crash, the API will also always log an additional message about the error.
Relaxed API Error Mode:
All API errors only log and do not throw any exceptions.
The return values when an API has an error should be reasonable:
Returned interfaces or class types will be null
Vectors will be Vector.Zero, Quaternions will be Quaternion.Identity
ObjectId, ComponentId, SessionId, ScriptId will return the corresponding Invalid
Strings will return an empty string
Some interfaces can specify custom error return values. Quest.Objectives will return a valid but empty Objective array if the Quest class is invalid.
Players can now abandon an in-progress quest if they are not interested in it anymore.
Fixed unloading avatar texture memory for avatars who have left the scene