Ready, Aim, Fire! - The latest release from Sansar.

As always, we are bringing you another one of our monthly updates. Each month we do our best to deliver one major, and one minor update - and this one is pretty major!

Not only are we adding a much better tutorial for Sansar controls, as well as streamlining a number of other features across the board, but we are also bringing emotes (custom or default) to VR and releasing “Project PewPew”.

What’s Being Added

Project PewPew

  • This is a whole suite of APIs and features that will allow for creators to explore gun-play in Sansar!
  • Scripts can now detect VR inputs, mouse clicks and what the player is targeting when any input is hit.
  • Even more script APIs for Ray/shape casting have been added.
  • Grab Points can be toggled to stay held when picked up (so you don’t have to hold your pewpewer the whole time)
  • Check out the new Game.Gun, Game.Target and Selector simple scripts to add these features to your scene!
  • Mouselook mode: allows desktop users to switch to a mode where you do not need to click and hold right-mouse to look around. You can instead hit the ESC key and just move your mouse round.
    • This a toggle-able feature
    • While active it will disable the menu


Avatar Emote Menu

  • New emote menu which is accessible in Desktop mode AND IN VR!
  • Full support for emotes in VR!
    • Moving your arms or head will no longer cancel an emote. To cancel an emote in VR, walk in any direction.
  • Desktop mode: keyboard shortcut CTRL+E to open the emote menu
  • Friendly reminder that CTRL+T opens and closes chat.
  • Better sitting camera support for “/sit” and “/sit2”
  • The /commands in Chat are still supported e.g. “/dance”

Sit Points

  • Much like “Grab Points” creators can now designate “Sit Points” on object, while in Edit Mode.
  • This works with Static objects only.
  • Clicking on a sit point will teleport your avatar to the location of the sit point, and the orientation that has been set.


Scene level settings

  • Free-cam & Teleportation distance limitation options
    • Free-Cam for Desktop users can be turned off in an experience in Edit Mode
    • Teleportation (VR & Desktop) distance can be limited or turned off in an experience in Edit Mode.
  • Available in Scene Settings in Edit Mode

What’s Being Fixed

Teleport to Friend

  • Teleport to a Friend will not be available if your friend is in an “unpublished” experience.
  • If a user is in an unpublished experience, or is in an experience where they have limited user access to the experience (Ban list / Allow list), then the experience name will not appear in your profile.
  • Experience names are now correctly formatted.

Chat improvements

  • You can now start a new conversation with a Friend directly from the Chat app
  • The Chat app now displays the name of experience you are in, as well as the name of the Friend you are chatting with
  • Timestamps have been added to Chat
  • The Chat app now supports 72 more languages. You can now freely type in Japanese, Korean, Greek and even Klingon. Qa’pla!

Tutorialization and Onboarding

  • All users now land in a home space when logging in.
  • Controls and UI have a new tutorial that will start in the home space when first logging in, you will also receive one-time prompts as you visit experiences.
    • This will impact both new and existing users.

Passing objects between VR users

  • Re-enabling the old behavior where people could grab things out of the hands of another VR user.

Cancel loading

  • Users can now cancel loading into an experience by clicking the “X” near the loading bar.

What’s Being Added to Scripting

There is a lot, so scripts are getting its own section!

  • Script updates
    • The Simple Scripts automatically provided in your inventory are now a single inventory item - but all the scripts are still there!
      • Add the Simple Script Library to an object and use the second drop down menu to select which simple script you want to use.
    • Script Projects: You can now bundle multiple scripts, or include multiple files, into a single script upload using a .json project file. The bundled scripts will show as a single inventory item and when applied to an object a second drop down will let you choose which script from the bundle to apply.
      • Use [EditorVisible(false)] on a class in a script project to hide that class from the drop down shown when choosing a script, mainly useful for base classes. Abstract classes are hidden automatically.
      • The .json file should be a json object containing a "source" entry with an array of file names:
         "source": [
        The paths may be absolute or relative to the json file.
      • The [DisplayName] attribute can be used on script classes to change how they show in the script selector.
      • The [DefaultScript] attribute can be used to control the script which is applied when first adding the project to an object.
    • Drag and Drop behavior change: When dragging a script from inventory onto an object it will now ADD the script to the object and will no longer replace the existing script if there is one.
    • Script properties and script projects can now have tooltips. Use the [Tooltip("Helpful text")] attribute to give your script properties tool tips. All Simple Script properties have tooltips now!
      • Use [assembly: Tooltip("Script project description")] to add a script project tooltip.
    • Cast Ray APIs phase two: CsCscene now has CastCapsule, and non-axis-aligned CastBox. GetXXXClosestPoints for Box, Capsule and Sphere expand a simple shape and return collisions, useful for placing objects without overlapping and effects like explosions.
    • Relaxed throttles on CreateCluster, SendChat, MessageAllUsers, OverrideMediaSource and HttpClient.Request
    • AgentInfo.Handle to get a user's handle.
    • Added RightVector and UpVector to ObjectPrivate and ObjectPublic
    • Grab points now have an option to be "sticky" where they will not be released when the grab button is released.
      • In desktop mode mouse clicking on a grabbable object will pick it up. Regular grabbable objects will be dropped or thrown when the mouse button is pressed a second time or the F button is pressed. Sticky objects can be dropped or thrown by pressing F. In both cases holding the button longer on drop/throw will increase the distance it is thrown.
      • On Oculus Touch the Grip trigger can be used to pick up objects. Regular grabbable objects will release when the Grip trigger is released. Sticky objects can be dropped or thrown by pressing the Grip trigger a second time.
      • On Vive wands the trigger will pick up objects. Regular grabbable objects will release when releasing the trigger. Sticky objects can be dropped or thrown by pressing the Grip button.
    • New "Trigger" command for SubscribeToCommand. This command is sent on mouse click and VR triggers.
      • "PrimaryAction" (Grip), "SecondaryAction" (A/X), "Confirm" (B) and "Cancel" (Y) have been mapped to oculus touch controllers.
      • "PrimaryAction" (Grip) and "SecondaryAction" (Center Click) have been mapped to Vive wands
    • CommandData from SubscribeToCommand now contains Targeting data. Targeting data is sent for all commands. If the command is from the keyboard or mouse then targeting data is what the mouse is targeting. If the command is from VR then targeting data is from the device or hand used.
      • TargetingPosition: The point in world space that was targeted.
      • TargetingOrigin: The origin of the action. In desktop this is the camera position; in VR it is the center of the hand used.
      • TargetingNormal: The surface normal of the object at the point that was targeted.
      • TargetingComponent: The component id of the object part that was targeted.
      • SimulationFrame: The simulation frame the action was done, according to the client.
      • ControlPoint: The device used for the command. For VR compare to HeldObjectInfo.ControlPoint to determine if the hand holding something was the same hand the object is held in.
      • MouseLookMode: True if the user was in mouselook mode when the command happened. Mouselook mode ties the camera to the mouse cursor. Some game types are trivial outside of MouseLook Mode in desktop and this flag can be used to ignore inputs from that mode.
      • CameraControlMode can be FlyCam, FirstPerson or ThirdPerson and can be used to further restrict game play by ignoring or warning if the command is received in an undesired mode. Creators should also consider the recently added options to disable flycam and restrict teleports in their game experiences.
Was this article helpful?
19 out of 20 found this helpful
Have more questions? Submit a request


Article is closed for comments.