diff --git a/en.json b/en.json
index de615d9..1a142a6 100644
--- a/en.json
+++ b/en.json
@@ -1,6 +1,6 @@
{
"localeCode": "en",
- "authors": ["Frooxius", "Enverex", "rampa_3", "Melnus", "dfgHiatus", "Earthmark", "Ryuvi", "Nammi", "WattleFoxxo", "StiefelJackal", "RueShejn", "NepuShiro", "Choco"],
+ "authors": ["Frooxius", "Enverex", "rampa_3", "Melnus", "dfgHiatus", "Earthmark", "Ryuvi", "Nammi", "WattleFoxxo", "StiefelJackal", "RueShejn", "NepuShiro", "Choco", "Modern", "Xau", "Charizmare", "bredo"],
"messages": {
"General.OK": "OK",
@@ -38,6 +38,7 @@
"General.UnderstandEnable": "I understand, Enable",
"General.Dismiss": "Dismiss",
"General.Edit": "Edit",
+ "General.DontShowAgain": "Don't Show Again",
"General.UI.SearchPrompt": "Search...",
"General.UI.SearchPromptLong": "Type to search...",
@@ -96,9 +97,9 @@
"Interaction.Grab.Precision": "Grab: Precision",
"Interaction.Grab.Auto": "Grab: Auto",
"Interaction.Grab.Off": "Grab: Laser Only",
- "Interaction.Grabbing" : "Grabbing",
- "Interaction.Grab.StickyGrab" : "Sticky Grab",
- "Interaction.Grab.HoldToHold" : "Hold to hold",
+ "Interaction.Grabbing": "Grabbing",
+ "Interaction.Grab.StickyGrab": "Sticky Grab",
+ "Interaction.Grab.HoldToHold": "Hold to hold",
"Interaction.Locomotion": "Locomotion",
"Interaction.Locomotion.None": "None",
@@ -150,6 +151,7 @@
"Dash.Screens.Session": "Session",
"Dash.Screens.FileBrowser": "Files",
"Dash.Screens.Settings": "Settings",
+ "Dash.Screens.Help": "Help",
"Dash.Screens.Exit": "Exit",
"Dash.Actions.PasteFromClipboard": "Paste content from clipboard",
@@ -675,20 +677,20 @@
"Contacts.SearchResult": "Search Result",
"Contacts.Bot": "Bot account",
"Contacts.Migrated": "Contact hasn't Migrated",
- "Contacts.IncompatibleSession" : "Incompatible session",
- "Contacts.AskToJoin" : "Ask to Join",
+ "Contacts.IncompatibleSession": "Incompatible session",
+ "Contacts.AskToJoin": "Ask to Join",
- "Contacts.InviteRequest.UserWantsToJoin" : "{username} would like to join you",
- "Contacts.InviteRequest.UserWantsToInviteAnother" : "\"{requestingUser}\" wants to invite \"{userToInvite}\" to \"{sessionName}\"",
- "Contacts.InviteRequest.GrantInvite" : "Grant Invite (one time)",
- "Contacts.InviteRequest.AddAsContact" : "Add \"{username}\" as contact",
- "Contacts.InviteRequest.AddAsContactOfHeadless" : "Add \"{username}\" as contact of the headless",
- "Contacts.InviteRequest.AddHostAsContact" : "Add \"{username}\" (host) as contact",
- "Contacts.InviteRequest.HostIsUnregistered" : "Host is unregistered user",
- "Contacts.InviteRequest.ForwardToHost" : "Forward to host: {username}",
- "Contacts.InviteRequest.SentRequest" : "Requested invite",
- "Contacts.InviteRequest.ForwardedRequest" : "Forwarded invite request from \"{username}\" to session \"{sessionName}\"",
- "Contacts.InviteRequest.GrantedRequest" : "Granted \"{username}\" invite to session \"{sessionName}\"",
+ "Contacts.InviteRequest.UserWantsToJoin": "{username} would like to join you",
+ "Contacts.InviteRequest.UserWantsToInviteAnother": "\"{requestingUser}\" wants to invite \"{userToInvite}\" to \"{sessionName}\"",
+ "Contacts.InviteRequest.GrantInvite": "Grant Invite (one time)",
+ "Contacts.InviteRequest.AddAsContact": "Add \"{username}\" as contact",
+ "Contacts.InviteRequest.AddAsContactOfHeadless": "Add \"{username}\" as contact of the headless",
+ "Contacts.InviteRequest.AddHostAsContact": "Add \"{username}\" (host) as contact",
+ "Contacts.InviteRequest.HostIsUnregistered": "Host is unregistered user",
+ "Contacts.InviteRequest.ForwardToHost": "Forward to host: {username}",
+ "Contacts.InviteRequest.SentRequest": "Requested invite",
+ "Contacts.InviteRequest.ForwardedRequest": "Forwarded invite request from \"{username}\" to session \"{sessionName}\"",
+ "Contacts.InviteRequest.GrantedRequest": "Granted \"{username}\" invite to session \"{sessionName}\"",
"Notifications.IsSociable": "Is sociable, poke or invite them!",
"Notifications.IsOnline": "Is now Online",
@@ -866,10 +868,10 @@
"Tools.RigTransfer.Name": "Rig Mesh Transfer Tool",
"Tools.RigTransfer.ClearSource": "Clear source",
- "Tools.GaussianSplat.Name" : "Gaussian Splat Tool",
- "Tools.GaussianSplat.ClipBox" : "Clip Box",
- "Tools.GaussianSplat.ClipSphere" : "Clip Sphere",
- "Tools.GaussianSplat.ClipCylinder" : "Clip Cylinder",
+ "Tools.GaussianSplat.Name": "Gaussian Splat Tool",
+ "Tools.GaussianSplat.ClipBox": "Clip Box",
+ "Tools.GaussianSplat.ClipSphere": "Clip Sphere",
+ "Tools.GaussianSplat.ClipCylinder": "Clip Cylinder",
"Tools.ComponentClone.Name": "Component Clone Tool",
"Tools.ComponentClone.SingleInstanceOn": "Single Instance: On",
@@ -1089,19 +1091,19 @@
"Importer.Splat.Progress.ConvertingSplats": "Converted {converted} splats out of {total}",
"Importer.Splat.Progress.EncodingData": "Encoding converted data",
- "GaussianSplat.Encoding.Title" : "Encoding Gaussian Splat",
- "GaussianSplat.Encoding.Metadata" : "Encoding metadata",
- "GaussianSplat.Encoding.EncodingPositions" : "Encoding positions {encoded} of {total}",
- "GaussianSplat.Encoding.EncodingRotations" : "Encoding rotations {encoded} of {total}",
- "GaussianSplat.Encoding.EncodingScales" : "Encoding scales {encoded} of {total}",
- "GaussianSplat.Encoding.EncodingAlphas" : "Encoding alphas {encoded} of {total}",
- "GaussianSplat.Encoding.EncodingColors" : "Encoding colors {encoded} of {total}",
- "GaussianSplat.Encoding.EncodingFinalizing" : "Finalizing encode",
+ "GaussianSplat.Encoding.Title": "Encoding Gaussian Splat",
+ "GaussianSplat.Encoding.Metadata": "Encoding metadata",
+ "GaussianSplat.Encoding.EncodingPositions": "Encoding positions {encoded} of {total}",
+ "GaussianSplat.Encoding.EncodingRotations": "Encoding rotations {encoded} of {total}",
+ "GaussianSplat.Encoding.EncodingScales": "Encoding scales {encoded} of {total}",
+ "GaussianSplat.Encoding.EncodingAlphas": "Encoding alphas {encoded} of {total}",
+ "GaussianSplat.Encoding.EncodingColors": "Encoding colors {encoded} of {total}",
+ "GaussianSplat.Encoding.EncodingFinalizing": "Finalizing encode",
- "GaussianSplat.Processing.RemovingSplats" : "Removing Splats",
- "GaussianSplat.Processing.SplatProgress" : "Processed {count} of {total}",
- "GaussianSplat.Processing.LoadingData" : "Loading Asset Data",
- "GaussianSplat.Processing.FailNoData" : "Could not get asset data to process",
+ "GaussianSplat.Processing.RemovingSplats": "Removing Splats",
+ "GaussianSplat.Processing.SplatProgress": "Processed {count} of {total}",
+ "GaussianSplat.Processing.LoadingData": "Loading Asset Data",
+ "GaussianSplat.Processing.FailNoData": "Could not get asset data to process",
"Importer.Video.Title": "Import Video",
"Importer.Video.Prompt": "What are you importing?",
@@ -1119,10 +1121,10 @@
"Importer.Slices.TitleGrayscale": "Image slices as volumetric texture (grayscale)",
"Importer.Slices.Description": "Processes all image files in the folder into a volumetric texture",
- "Importer.UnsupportedRecordType.Heading":"Unsupported Record Type",
- "Importer.UnsupportedRecordType.Description":"The record you are trying to import({url}) has an unsupported type. It's type is: {recordType}. Please report this to us at {bugUrl}.",
- "Importer.Link.Invalid.Heading":"Invalid Folder Link",
- "Importer.Link.Invalid.Description":"The folder link({url}), you are trying to import is invalid. Double check your link and try again.",
+ "Importer.UnsupportedRecordType.Heading": "Unsupported Record Type",
+ "Importer.UnsupportedRecordType.Description": "The record you are trying to import({url}) has an unsupported type. It's type is: {recordType}. Please report this to us at {bugUrl}.",
+ "Importer.Link.Invalid.Heading": "Invalid Folder Link",
+ "Importer.Link.Invalid.Description": "The folder link({url}), you are trying to import is invalid. Double check your link and try again.",
"Inventory.Link.LinkText": "Inventory link to {name}",
"Exporter.Title": "Export",
@@ -1135,19 +1137,19 @@
"Export.PackageExportable.Package": "Resonite Package",
"Export.PackageExportable.PackageWithVariants": "Resonite Package (+variants)",
- "Export.AudioExportable.OriginalFormat" : "Audio (original format)",
+ "Export.AudioExportable.OriginalFormat": "Audio (original format)",
- "Export.VideoExportable.OriginalFormat" : "Video (original format)",
+ "Export.VideoExportable.OriginalFormat": "Video (original format)",
- "Export.GaussianSplatExportable.PLY" : "PLY (lossless)",
- "Export.GaussianSplatExportable.SPZ" : "SPZ (lossy)",
+ "Export.GaussianSplatExportable.PLY": "PLY (lossless)",
+ "Export.GaussianSplatExportable.SPZ": "SPZ (lossy)",
- "Importer.Package.Progress.DecodingPackage" : "Decoding Package",
- "Importer.Package.Progress.DecodingObject" : "Decoding Object",
- "Importer.Package.Progress.ImportingAssets" : "Importing Assets",
- "Importer.Package.Progress.LoadingObject" : "Loading Object",
- "Importer.Package.Progress.Imported" : "Package Imported",
- "Importer.Package.Progress.Fail" : "Failed to import. Check logs",
+ "Importer.Package.Progress.DecodingPackage": "Decoding Package",
+ "Importer.Package.Progress.DecodingObject": "Decoding Object",
+ "Importer.Package.Progress.ImportingAssets": "Importing Assets",
+ "Importer.Package.Progress.LoadingObject": "Loading Object",
+ "Importer.Package.Progress.Imported": "Package Imported",
+ "Importer.Package.Progress.Fail": "Failed to import. Check logs",
"NewWorld.Title": "New World",
"NewWorld.SessionTitle": "New Session",
@@ -1337,19 +1339,19 @@
"Settings.UserMetricsSettings": "User Metrics",
- "Settings.OnlineStatusSettings" : "Online Status",
- "Settings.OnlineStatusSettings.DefaultStatus" : "Default Status",
- "Settings.OnlineStatusSettings.DefaultStatus.Description" : "This is the default status that you will start with after logging in, unless there's a previously remembered status.",
- "Settings.OnlineStatusSettings.RememberMode" : "Remember last status",
- "Settings.OnlineStatusSettings.RememberMode.Description" : "Use this to control if your last online status should be preserved between logins or not. This includes any statuses other than Invisible, which is controlled via separate setting.",
- "Settings.OnlineStatusSettings.RememberTimespan" : "Remember status for",
- "Settings.OnlineStatusSettings.RememberTimespan.Description" : "Your last online status will be remembered only if you log in again within this timeframe. If you take longer than this, you'll start with your default status instead.",
- "Settings.OnlineStatusSettings.InvisibleRememberMode" : "Remember last invisible status",
- "Settings.OnlineStatusSettings.InvisibleRememberMode.Description" : "This controls how your last status is remembered specifically if you were last set to Invisible. Otherwise this functions the same.\n\nThe invisible status has a separate setting for privacy reasons, to ensure that if you were last set to invisible, you can ensure that you'll stay invisible at the next login even if your other statuses are not remembered.",
- "Settings.OnlineStatusSettings.InvisibleRememberTimespan" : "Remember invisible status for",
- "Settings.OnlineStatusSettings.InvisibleRememberTimespan.Description" : "Your last invisible status will be remembered only if you log in again within this timeframe. If you take longer than this, you'll start with your default status instead.",
- "Settings.OnlineStatusSettings.AutoAwayTimespan" : "Switch to Away when idle for",
- "Settings.OnlineStatusSettings.AutoAwayTimespan.Description" : "When you are idle for this amount of time, your online status will automatically be switched to Away. Once you come back, it will automatically be set back to previous state, unless you set it to Away manually.",
+ "Settings.OnlineStatusSettings": "Online Status",
+ "Settings.OnlineStatusSettings.DefaultStatus": "Default Status",
+ "Settings.OnlineStatusSettings.DefaultStatus.Description": "This is the default status that you will start with after logging in, unless there's a previously remembered status.",
+ "Settings.OnlineStatusSettings.RememberMode": "Remember last status",
+ "Settings.OnlineStatusSettings.RememberMode.Description": "Use this to control if your last online status should be preserved between logins or not. This includes any statuses other than Invisible, which is controlled via separate setting.",
+ "Settings.OnlineStatusSettings.RememberTimespan": "Remember status for",
+ "Settings.OnlineStatusSettings.RememberTimespan.Description": "Your last online status will be remembered only if you log in again within this timeframe. If you take longer than this, you'll start with your default status instead.",
+ "Settings.OnlineStatusSettings.InvisibleRememberMode": "Remember last invisible status",
+ "Settings.OnlineStatusSettings.InvisibleRememberMode.Description": "This controls how your last status is remembered specifically if you were last set to Invisible. Otherwise this functions the same.\n\nThe invisible status has a separate setting for privacy reasons, to ensure that if you were last set to invisible, you can ensure that you'll stay invisible at the next login even if your other statuses are not remembered.",
+ "Settings.OnlineStatusSettings.InvisibleRememberTimespan": "Remember invisible status for",
+ "Settings.OnlineStatusSettings.InvisibleRememberTimespan.Description": "Your last invisible status will be remembered only if you log in again within this timeframe. If you take longer than this, you'll start with your default status instead.",
+ "Settings.OnlineStatusSettings.AutoAwayTimespan": "Switch to Away when idle for",
+ "Settings.OnlineStatusSettings.AutoAwayTimespan.Description": "When you are idle for this amount of time, your online status will automatically be switched to Away. Once you come back, it will automatically be set back to previous state, unless you set it to Away manually.",
"Settings.AudioInputDeviceSettings": "Audio Input",
"Settings.AudioOutputDeviceSettings": "Audio Output",
@@ -1424,8 +1426,8 @@
"Settings.GrabbingSettings.DefaultHandGrabType.Description": "This determines what your default grab mode for hands is when you spawn in new worlds.\n\nPalm: You will grab all objects that are near your palm.\n\nPrecision: You will grab a single object between your index finger and thumb.\n\nAuto: Mode is automatically switched between palm and precision depending on the orientation of your hand.\n\nOff: You'll only be able to grab items with your lasers.",
"Settings.FullBodyTrackingSettings": "Full Body Tracking",
- "Settings.FullBodyTrackingSettings.BodyHorizontalAngle" : "Body Horizontal Angle",
- "Settings.FullBodyTrackingSettings.BodyHorizontalAngle.Description" : "This is the angle deviation between feet and head, beyond which you'll be considered in a horizontal pose. This affects certain things like overriding your tracker poses with feet simulation.",
+ "Settings.FullBodyTrackingSettings.BodyHorizontalAngle": "Body Horizontal Angle",
+ "Settings.FullBodyTrackingSettings.BodyHorizontalAngle.Description": "This is the angle deviation between feet and head, beyond which you'll be considered in a horizontal pose. This affects certain things like overriding your tracker poses with feet simulation.",
"Settings.GamepadSettings": "Gamepad",
"Settings.GamepadSettings.ThumbstickLookSpeed": "Thumbstick Looking Speed",
@@ -1694,21 +1696,21 @@
"Settings.VoiceSettings.MutePersistence": "Mute Persistence",
"Settings.VoiceSettings.MutePersistence.Description": "Start Unmuted: When you log in, you will always start unmuted.\n\nStarted Muted: When you log in, your voice will always start muted. You will either have to unmute or press the \"push to talk\" key (V by default) to speak.\n\nRemember Last: When you login, the status from the last time you logged out will be preserved.",
- "Settings.EarmuffSettings" : "Earmuff",
- "Settings.EarmuffSettings.EarmuffEnabled" : "Use Earmuff",
- "Settings.EarmuffSettings.EarmuffEnabled.Description" : "When earmuff mode is activated, voices of users will be significantly attenuated based on their distance and the direction you are facing.\n\nIn effect, this creates a \"listening cone\", which can help when there are too many overlapping voices in a world.",
- "Settings.EarmuffSettings.Directionality" : "Directionality",
- "Settings.EarmuffSettings.Directionality.Description" : "This controls how directional the voice attenuation is. At 0 %, voices behind you will be at same volume as voices same distance in front of you. At 100 % values, you will not hear voices behind you unless they're really close.\n\nIf you want to hear voices behind you better, lower this value.",
- "Settings.EarmuffSettings.Distance" : "Distance",
- "Settings.EarmuffSettings.Distance.Description" : "This controls the distance in front of you (and behind you if directionality is 0 %) beyond which will voices become quieter.",
- "Settings.EarmuffSettings.Angle" : "Angle",
- "Settings.EarmuffSettings.Angle.Description" : "This controls the angle in front of your face within which the voices are at their normal level. Any voices beyond this angle will start attenuating once they reach the transition distance.",
- "Settings.EarmuffSettings.TransitionStart" : "Transition Start",
- "Settings.EarmuffSettings.TransitionStart.Description" : "This controls the distance from the \"listening cone\" at which voices will become quieter. It's recommended to keep this above zero, because that will better include voices on the sides and voices near your head (e.g. users who are technically behind you, but very close).",
- "Settings.EarmuffSettings.TransitionLength" : "Transition Range",
- "Settings.EarmuffSettings.TransitionLength.Description" : "Use this to control the distance over which the voices will fade from their normal volume to fully attenuated. Larger values will transition the volume more smoothly, while lower values will result in more abrupt transition.",
- "Settings.EarmuffSettings.VolumeAttenuation" : "Volume Attenuation",
- "Settings.EarmuffSettings.VolumeAttenuation.Description" : "This controls how loud voices beyond the \"listening cone\" will be. Setting this to 0 % will completely mute all users beyond the listening cone.",
+ "Settings.EarmuffSettings": "Earmuff",
+ "Settings.EarmuffSettings.EarmuffEnabled": "Use Earmuff",
+ "Settings.EarmuffSettings.EarmuffEnabled.Description": "When earmuff mode is activated, voices of users will be significantly attenuated based on their distance and the direction you are facing.\n\nIn effect, this creates a \"listening cone\", which can help when there are too many overlapping voices in a world.",
+ "Settings.EarmuffSettings.Directionality": "Directionality",
+ "Settings.EarmuffSettings.Directionality.Description": "This controls how directional the voice attenuation is. At 0 %, voices behind you will be at same volume as voices same distance in front of you. At 100 % values, you will not hear voices behind you unless they're really close.\n\nIf you want to hear voices behind you better, lower this value.",
+ "Settings.EarmuffSettings.Distance": "Distance",
+ "Settings.EarmuffSettings.Distance.Description": "This controls the distance in front of you (and behind you if directionality is 0 %) beyond which will voices become quieter.",
+ "Settings.EarmuffSettings.Angle": "Angle",
+ "Settings.EarmuffSettings.Angle.Description": "This controls the angle in front of your face within which the voices are at their normal level. Any voices beyond this angle will start attenuating once they reach the transition distance.",
+ "Settings.EarmuffSettings.TransitionStart": "Transition Start",
+ "Settings.EarmuffSettings.TransitionStart.Description": "This controls the distance from the \"listening cone\" at which voices will become quieter. It's recommended to keep this above zero, because that will better include voices on the sides and voices near your head (e.g. users who are technically behind you, but very close).",
+ "Settings.EarmuffSettings.TransitionLength": "Transition Range",
+ "Settings.EarmuffSettings.TransitionLength.Description": "Use this to control the distance over which the voices will fade from their normal volume to fully attenuated. Larger values will transition the volume more smoothly, while lower values will result in more abrupt transition.",
+ "Settings.EarmuffSettings.VolumeAttenuation": "Volume Attenuation",
+ "Settings.EarmuffSettings.VolumeAttenuation.Description": "This controls how loud voices beyond the \"listening cone\" will be. Setting this to 0 % will completely mute all users beyond the listening cone.",
"Settings.RealtimeNetworkingSettings.DisableLAN": "Disable LAN",
"Settings.RealtimeNetworkingSettings.DisableLAN.Description": "This disables networking features specific to local networks, such as broadcasting your session on the local network or listening to other sessions broadcasted on this network.",
@@ -2023,22 +2025,22 @@
"Settings.TextureQualitySettings.ReloadAllTextures": "Reload All Textures (can be heavy)",
"Settings.GaussianSplatQualitySettings": "Gaussian Splat Rendering Quality",
- "Settings.GaussianSplatQualitySettings.SortMegaOperationsPerCamera" : "Sorting Mega-operations per camera",
- "Settings.GaussianSplatQualitySettings.SortMegaOperationsPerCamera.Description" : "When rendering Gaussian Splats, the splats must be sorted for each camera. Currently, this operation can be quite heavy, so it is spread over time to improve overall framerate.
Increase the value for sorting to happen faster. This will reduce artifacts when changing the view angle around Gaussian Splats rapidly.
Decrease the value to reduce the GPU usage if your GPU has trouble handling it. However this will increase artifacts when you rapidly change view angle.",
- "Settings.GaussianSplatQualitySettings.QualityPreset" : "Quality Preset",
- "Settings.GaussianSplatQualitySettings.QualityPreset.Description" : "This controls the quality of rendered gaussian splats and their VRAM usage. Higher quality will use more VRAM.
Very Low: ~18.62x smaller
Low: ~14x smaller
Medium: ~5.14x smaller
High: ~2.94x smaller
Very High: Uncompressed (original)",
- "Settings.GaussianSplatQualitySettings.MinLocalQuality" : "Minimum locally compressed quality",
- "Settings.GaussianSplatQualitySettings.MinLocalQuality.Description" : "For locally imported gaussian splats, the quality will never be lower than this value.
We do not recommend setting this below Medium, as lower quality levels are significantly more intense and time consuming to compress and should be left to compress on the cloud.
Setting this to Very High will make gaussian splats load much faster after import due to not having to be compressed at cost of high VRAM usage.",
- "Settings.GaussianSplatQualitySettings.AdvancedQuality" : "Advanced Quality Settings",
- "Settings.GaussianSplatQualitySettings.AdvancedQuality.Description" : "When enabled, you can configure the specific encodings used for different Gaussian Splat buffers. This gives you very fined grained control over the quality. It can also be used for testing/diagnostics purposes.",
- "Settings.GaussianSplatQualitySettings.PositionFormat" : "Position data format",
- "Settings.GaussianSplatQualitySettings.PositionFormat.Description" : "Encoding used for the positions of the splats",
- "Settings.GaussianSplatQualitySettings.ScaleFormat" : "Scale data format",
- "Settings.GaussianSplatQualitySettings.ScaleFormat.Description" : "Encoding used for the scales of the splats",
- "Settings.GaussianSplatQualitySettings.ColorFormat" : "Color data format",
- "Settings.GaussianSplatQualitySettings.ColorFormat.Description" : "Encoding used for the colors & opacities of the splats",
- "Settings.GaussianSplatQualitySettings.SphericalHarmonicsFormat" : "Spherical Harmonics data format",
- "Settings.GaussianSplatQualitySettings.SphericalHarmonicsFormat.Description" : "Encoding used for the spherical harmonic data of the splats",
+ "Settings.GaussianSplatQualitySettings.SortMegaOperationsPerCamera": "Sorting Mega-operations per camera",
+ "Settings.GaussianSplatQualitySettings.SortMegaOperationsPerCamera.Description": "When rendering Gaussian Splats, the splats must be sorted for each camera. Currently, this operation can be quite heavy, so it is spread over time to improve overall framerate.
Increase the value for sorting to happen faster. This will reduce artifacts when changing the view angle around Gaussian Splats rapidly.
Decrease the value to reduce the GPU usage if your GPU has trouble handling it. However this will increase artifacts when you rapidly change view angle.",
+ "Settings.GaussianSplatQualitySettings.QualityPreset": "Quality Preset",
+ "Settings.GaussianSplatQualitySettings.QualityPreset.Description": "This controls the quality of rendered gaussian splats and their VRAM usage. Higher quality will use more VRAM.
Very Low: ~18.62x smaller
Low: ~14x smaller
Medium: ~5.14x smaller
High: ~2.94x smaller
Very High: Uncompressed (original)",
+ "Settings.GaussianSplatQualitySettings.MinLocalQuality": "Minimum locally compressed quality",
+ "Settings.GaussianSplatQualitySettings.MinLocalQuality.Description": "For locally imported gaussian splats, the quality will never be lower than this value.
We do not recommend setting this below Medium, as lower quality levels are significantly more intense and time consuming to compress and should be left to compress on the cloud.
Setting this to Very High will make gaussian splats load much faster after import due to not having to be compressed at cost of high VRAM usage.",
+ "Settings.GaussianSplatQualitySettings.AdvancedQuality": "Advanced Quality Settings",
+ "Settings.GaussianSplatQualitySettings.AdvancedQuality.Description": "When enabled, you can configure the specific encodings used for different Gaussian Splat buffers. This gives you very fined grained control over the quality. It can also be used for testing/diagnostics purposes.",
+ "Settings.GaussianSplatQualitySettings.PositionFormat": "Position data format",
+ "Settings.GaussianSplatQualitySettings.PositionFormat.Description": "Encoding used for the positions of the splats",
+ "Settings.GaussianSplatQualitySettings.ScaleFormat": "Scale data format",
+ "Settings.GaussianSplatQualitySettings.ScaleFormat.Description": "Encoding used for the scales of the splats",
+ "Settings.GaussianSplatQualitySettings.ColorFormat": "Color data format",
+ "Settings.GaussianSplatQualitySettings.ColorFormat.Description": "Encoding used for the colors & opacities of the splats",
+ "Settings.GaussianSplatQualitySettings.SphericalHarmonicsFormat": "Spherical Harmonics data format",
+ "Settings.GaussianSplatQualitySettings.SphericalHarmonicsFormat.Description": "Encoding used for the spherical harmonic data of the splats",
"Settings.ResolutionSettings": "Resolution",
"Settings.ResolutionSettings.Fullscreen": "Fullscreen",
@@ -2069,7 +2071,7 @@
"Settings.ImportSettings.NetworkUrls": "On Network URL Import",
"Settings.ImportSettings.NetworkUrls.Description": "When a Network URL is imported, what should happen. The available options are:\n\nOpen - Open a connection to the session at the URL.\nSpawnInterface - Spawns a representation(such as a session orb) of the url in your current location.\nSpawnUrl - Spawns the URL in your current location as a URL Interface.",
- "Settings.MysterySettings" : "Mystery Settings",
+ "Settings.MysterySettings": "Mystery Settings",
"LocomotionArchetype.Walk": "Walk",
"LocomotionArchetype.Fly": "Fly",
@@ -2195,7 +2197,7 @@
"Inspector.MeshCollider.VHACD": "Convex Hull Decomposition (V-HACD 2.0)",
"Inspector.MeshCollider.ReplaceBox": "Replace With Box Collider",
- "Inspector.Texture3D.SpawnVisualizer" : "Spawn Visualizer",
+ "Inspector.Texture3D.SpawnVisualizer": "Spawn Visualizer",
"Inspector.Skybox.SetActiveSkybox": "Set as active skybox",
"Inspector.AmbientLightSH2.SetActiveAmbientLight": "Set as active ambient light",
@@ -2352,10 +2354,10 @@
"Inspector.AudioStream.DecodeState": "Total Packets: {total}, Total Lost Packets: {lost}, Packet Loss: {loss, number, percent}",
"Inspector.AudioStream.BufferStats": "Avg codec: {avgCodec}/s, Avg read: {avgRead}/s, Avg written: {avgWritten}/s",
- "Inspector.GaussianSplat.SplatInfo" : "Splat Count: {count}, VRAM usage: {vram}",
- "Inspector.GaussianSplat.Variant" : "Loaded variant: {variant}",
- "Inspector.GaussianSplat.ColorByIndex" : "Color splats by index",
- "Inspector.GaussianSplat.ReorderMorton" : "Reorder splats with Morton ordering",
+ "Inspector.GaussianSplat.SplatInfo": "Splat Count: {count}, VRAM usage: {vram}",
+ "Inspector.GaussianSplat.Variant": "Loaded variant: {variant}",
+ "Inspector.GaussianSplat.ColorByIndex": "Color splats by index",
+ "Inspector.GaussianSplat.ReorderMorton": "Reorder splats with Morton ordering",
"Inspector.DynamicBoneChain.SetupFromChildren": "Setup From Children",
"Inspector.DynamicBoneChain.SetupFromChildrenAll": "Setup From Children (force all)",
@@ -2378,11 +2380,11 @@
"Inspector.CharacterController.Warning": "WARNING!
It is possible to use this component as a simple rigidbody by checking SimulateRotation. Before you do, please understand that it is not optimized for this purpose and proper Rigidbody Support is coming in the future.
Proper rigidbody support will offer:
- CPU and network efficiency - with CharacterController you'll be getting higher CPU usage and significant amount of network traffic
- Constraints - you'll be able to create joints, hinges, springs and other constraints between rigidbodies
- Smooth simulation and interactions for everyone - CharacterController will glitch out if another person tries to interact
- New Features and Tools - to make using them much easier
-----------------------
As long as you understand those limitations, have fun!",
"Inspector.PrimitiveMemberEditor.Warning": "WARNING!
It is possible to use this component to interact with references by using their IDs. This process is commonly called 'Ref Hacking'.
Before you do this, please understand that this is not supported and may break at any time. Do not rely on this functionality for your creations.",
- "Inspector.FacetPreset.Warning":"WARNING!
FacetPresets will automatically upgrade their contents when we publish new versions of those presets. If you're making a custom version, we recommend deleting this component.",
- "Inspector.GrabbableSaveBlock.Warning":"WARNING!
This component is not designed as a security/asset theft protection system. It is intended to be used for cases where you wish to block the easier methods of saving for gameplay or design reasons. It can easily be bypassed and it will not be made more secure under any circumstances.",
+ "Inspector.FacetPreset.Warning": "WARNING!
FacetPresets will automatically upgrade their contents when we publish new versions of those presets. If you're making a custom version, we recommend deleting this component.",
+ "Inspector.GrabbableSaveBlock.Warning": "WARNING!
This component is not designed as a security/asset theft protection system. It is intended to be used for cases where you wish to block the easier methods of saving for gameplay or design reasons. It can easily be bypassed and it will not be made more secure under any circumstances.",
- "Inspector.ParticleSystem.BasicInfo" : "Particles: {count}, FPS: {fps}, Simulation Time: {time}, Submit Time: {renderSubmitTime}, Render allocations: {allocationCount}",
- "Inspector.ParticleSystem.TrailInfo" : "Trails: {trailCount} (capacity: {trailCapacity}), Trail Point Capacity: {trailPointCapacity}, Allocations: {allocationCount}",
+ "Inspector.ParticleSystem.BasicInfo": "Particles: {count}, FPS: {fps}, Simulation Time: {time}, Submit Time: {renderSubmitTime}, Render allocations: {allocationCount}",
+ "Inspector.ParticleSystem.TrailInfo": "Trails: {trailCount} (capacity: {trailCapacity}), Trail Point Capacity: {trailPointCapacity}, Allocations: {allocationCount}",
"Inspector.ParticleStyle.CommonTransitions": "Common Transition Templates:",
"Inspector.ParticleStyle.AlphaFadeInOut": "Alpha Fade In & Fade Out",
@@ -3128,6 +3130,635 @@
"Universe.Units.EarthRadius": "Earth Radius",
"Universe.Units.LunarDistance": "Lunar Distance",
+ "Help.Help": "Help",
+ "Help.ComingSoon": "Coming Soon!",
+ "Help.ExampleText": "Example Text!",
+ "Help.DataType": "Type:",
+ "Help.WikiLinkName.SyncErrors": "{appName} Wiki: Sync Errors",
+ "Help.WikiLinkName.CloudVariables": "{appName} Wiki: Cloud Variables",
+ "Help.WikiLinkName.SyncConflicts": "{appName} Wiki: Sync Conflicts",
+ "Help.WikiLinkName.StuckSyncs": "{appName} Wiki: Stuck Syncs",
+ "Help.WikiLinkName.RichTextFormatting": "{appName} Wiki: Rich Text Formatting",
+ "Help.WikiLinkName.Groups": "{appName} Wiki: Groups",
+ "Help.WikiLinkName.FAQ": "{appName} Wiki: Frequently Asked Questions",
+
+ "Help.VROnlyNote": "Note: This feature is only available in VR.",
+
+ "Help.PlatformBotLinkName": "Go to the {appName} Bot",
+ "Help.PlatformEssentialsSubmissionLinkName": "{appName} Essentials Submission Form",
+
+ "Help.Modal.Header": "What do you need help with?",
+ "Help.Modal.Avatar": "I want to setup my avatar...",
+ "Help.Modal.Explore": "I want to explore...",
+ "Help.Modal.Graphics": "How do I change my graphics?",
+ "Help.Modal.Socialize": "I want to socialize...",
+ "Help.Modal.Building": "I want to create...",
+ "Help.Modal.BrowseTopics": "I'd like to browse on my own",
+
+ "Help.ControllerDiagram.ViewingYourControllerLayout": "Viewing Your Controller Layout",
+ "Help.ControllerDiagram.GoToYourControllerLayout": "Go to Your Controller Layout",
+
+ "Help.HelpTabExploreReminder": "
Now that you're done here, don't forget to check out the rest of what the help tab has to offer! Click Help on the top left to navigate back to the main page.",
+
+ "Help.MainPage.Content": "
Welcome to the Help tab!
Here you can find answers to a lot of common questions, and plenty of further reading if you want to dive deeper. Pick a category on the left to get started!
Useful Links:
",
+ "Help.MainPage.Content2": "
FAQ:
Frequently Asked Questions",
+
+ "Help.FAQ.AvatarQuestions": "Who can I ask to get help with an avatar?",
+ "Help.FAQ.AvatarQuestions.Content": "You can ask any Mentor for help! Mentors are volunteer community members who offers their time to help new users and facilitate community questions, as well as provide avatar help. You can identify them with the Mentor badge.",
+
+ "Help.GettingStarted": "Getting Started",
+ "Help.GettingStarted.Content": "
Getting Started
Guided Introductions To {appName}
Pick a category on the left to find quick information on what you can do in {appName}!
These introductions only scratch the surface for what {appName} has to offer, so take a look at the rest of what the help tab has to offer when you're done here!",
+
+ "Help.GettingStarted.AvatarBasics": "Avatar Basics",
+ "Help.GettingStarted.AvatarBasics.Equipping": "Equipping",
+ "Help.GettingStarted.AvatarBasics.Equipping.Content": "Avatars in {appName} are like outfits - you can put on whatever avatar you like whenever you like, and you can own many avatars or spawn many into your world!
To wear an avatar,{is_desktop, select, True {} other { first press {Primary_Input} to show your laser. Then,}} aim at it{is_desktop, select, True {} other { with your laser}} and press {Primary_Input}{is_desktop, select, True {} other { again}}. On the menu that appears, select Equip Avatar. Now you're wearing that avatar!",
+ "Help.GettingStarted.AvatarBasics.Equipping.Content2": "Another way to wear an avatar is to first grab it with {Grip_Input}, then open your Context Menu {is_using_vive_wands, select, True {by quickly pressing} other {with}} {Context_Menu_Input} and select Equip Avatar.",
+ "Help.GettingStarted.AvatarBasics.OpeningYourDashboard": "Opening Your Dashboard",
+ "Help.GettingStarted.AvatarBasics.OpeningYourDashboard.Content": "If you want the avatar you're currently using to be the one you load in as, you can do this using your Dashboard, which is your all-in-one place to talk with others, browse your Inventory, or explore different worlds.
To open or close it, press {is_using_vive_wands, select, True{and hold } other{}}{Menu_Input}{is_using_vive_wands, select, True{ until the ring is full, then release} other{}}!",
+ "Help.GettingStarted.AvatarBasics.CreatingAFolder": "Creating A Folder",
+ "Help.GettingStarted.AvatarBasics.CreatingAFolder.Content": "Your Dashboard has many tabs and things you can do with it. One of these things is being able to save items and avatars to your personal Inventory. Regarding saving items and other things on your time here in {appName}, organization is key to a good inventory, so first you'll make a folder to keep your avatar in.
To do this, in the assortment of buttons at the top of the Inventory screen, press the Create Folder button. Give your folder a name and select Create to make it - you'll automatically be placed inside that folder.",
+ "Help.GettingStarted.AvatarBasics.Saving": "Saving",
+ "Help.GettingStarted.AvatarBasics.Saving.Content": "To save an avatar, go to your Inventory if you're not already there, and press the Save Avatar button. This takes the avatar you're currently using and saves it into the folder you're currently looking at inside your inventory.",
+ "Help.GettingStarted.AvatarBasics.Saving.Content2": "If instead you want to save an avatar that you aren't currently using, grab it first {is_desktop, select, True {by looking at it and pressing and} other {by}} holding {Grip_Input}. Then while you are holding it, inside your Inventory, press the Save Held button. This will save the avatar into the folder you're currently in.",
+ "Help.GettingStarted.AvatarBasics.Saving.Content3": "While grabbing the avatar, you can also open your Context Menu {is_using_vive_wands, select, True {by quickly pressing} other {with}} {Context_Menu_Input} and select Save To Inventory to save the avatar without needing to open your Dashboard.",
+ "Help.GettingStarted.AvatarBasics.Wearing": "Wearing",
+ "Help.GettingStarted.AvatarBasics.Wearing.Content": "To equip an avatar from your Inventory, click once on the avatar {is_desktop, select, True {} other {with your {Primary_Input} }}to select it, then select Equip Avatar at the top left of the Inventory window. This will replace the avatar you are currently using with the one you chose.",
+ "Help.GettingStarted.AvatarBasics.Favoriting": "Favoriting",
+ "Help.GettingStarted.AvatarBasics.Favoriting.Content": "To Favorite - or make default - an avatar, click once on the avatar {is_desktop, select, True {} other {with your {Primary_Input} }}to select it, then click the Favorite Avatar button at the top of your Inventory window. Your favorite avatar will appear in your Inventory with a pink background. If you want to un-favorite an avatar, select it and press the Favorite Avatar button again.",
+ "Help.GettingStarted.AvatarBasics.FindingMoreAvatars": "Finding More Avatars",
+ "Help.GettingStarted.AvatarBasics.FindingMoreAvatars.Content": "{appName} has a wide variety of avatars available that are both made by {appName} and by the community. You can find these avatars in a variety of worlds, first by going to your Worlds tab, found at the bottom of your Dashboard. On the left is a list of categories - select the Avatars category to explore worlds which will have avatars for you to browse.",
+
+ "Help.GettingStarted.ExploringWorlds": "Exploring Worlds",
+ "Help.GettingStarted.ExploringWorlds.WorldBrowser": "World Browser",
+ "Help.GettingStarted.ExploringWorlds.WorldBrowser.Content": "{appName} has a wide variety of worlds you can see and explore! To browse what's available, head to the Worlds tab on your Dashboard. On the left are a few categories of worlds to help narrow your search, and if you're looking for something specific, you can use the search bar at the top.
If you want to find worlds where you can meet up with others and socialize, take a look at the Active Sessions category!
Any worlds you have created or have saved into your Inventory will appear in the My Worlds category.",
+ "Help.GettingStarted.ExploringWorlds.Categories": "Categories",
+ "Help.GettingStarted.ExploringWorlds.Categories.Content": "Narrowing your search for worlds is easy - on the left of the Worlds tab you can find a list of categories to help you get started. These categories work using the Tags assigned to worlds.
If you want to have more granular searching of worlds, at the bottom of the category list is the Custom button, which will provide you with an assortment of advanced filtering options.",
+ "Help.GettingStarted.ExploringWorlds.BrowserInformation": "Browser Information",
+ "Help.GettingStarted.ExploringWorlds.BrowserInformation.Content": "To see more information about a world or opened session, click on the world preview {is_desktop, select, True {} other {with your {Primary_Input} }} to select it, then click on the More Info button on the top right of the pop-up. This expanded view provides you with more info, including but not limited to: tags, opened sessions, present users, and more.",
+ "Help.GettingStarted.ExploringWorlds.SessionInformation": "Session Information",
+ "Help.GettingStarted.ExploringWorlds.SessionInformation.Content": "You can cycle through the available opened sessions for a particular world by first clicking on the world preview{is_desktop, select, True {} other { with your {Primary_Input}}}, then selecting the left or right arrow buttons on the top right of the pop-up to see the different sessions available.",
+ "Help.GettingStarted.ExploringWorlds.JoiningASession": "Joining A Session",
+ "Help.GettingStarted.ExploringWorlds.JoiningASession.Content": "To join a session, click on the world preview {is_desktop, select, True {} other {with your {Primary_Input} }}and click Join. This will begin loading you into that world, which may take a moment.
Note that you will still be in the world you came from, since in {appName} you can be in multiple sessions at once and switch between them quickly.",
+ "Help.GettingStarted.ExploringWorlds.SessionManagement": "Session Management",
+ "Help.GettingStarted.ExploringWorlds.SessionManagement.Content": "Worlds in {appName} have a variety of permissions you can apply to them, allowing you to choose who can join your world. To change these permissions, head to the Session tab at the bottom of your Dashboard. On the right is a list of access levels you can set the world to. These access levels include:
• Private (invite only) - Only users with a direct invite from the host of the session can join.
• LAN - Only users on the same local network can join.
• Contacts - Only users that are contacts of the host can join.
• Contacts+ - Users who are a contact of any user in the session can join.
• Registered Users - Any user that has a {appName} account can join.
• Anyone - Any user can join, including unregistered users.",
+ "Help.GettingStarted.ExploringWorlds.WorldsToSee": "Worlds To See",
+ "Help.GettingStarted.ExploringWorlds.WorldsToSee.Content": "Looking for cool worlds to see? Take a look at the MMC and Featured Worlds categories to explore some of the best experiences {appName} has to offer!",
+
+ "Help.GettingStarted.YourContacts": "Your Contacts",
+ "Help.GettingStarted.YourContacts.FindingContacts": "Finding Contacts",
+ "Help.GettingStarted.YourContacts.FindingContacts.Content": "In {appName} you can add other users as Contacts, letting you see and join the worlds they are in, send messages to one another, and more.
To see your contacts list, head to the Contacts tab on your Dashboard.",
+ "Help.GettingStarted.YourContacts.ContactsBrowser": "Contacts Browser",
+ "Help.GettingStarted.YourContacts.ContactsBrowser.Content": "On the left of the Contacts tab, you will see a list of all of your contacts, as well as a search bar to find specific users. On the right you will see information and actions you can take with a selected contact.",
+ "Help.GettingStarted.YourContacts.Searching": "Searching",
+ "Help.GettingStarted.YourContacts.Searching.Content": "Looking for a particular contact or want to find someone to add as a contact? Type their name into the search bar at the top-left! As you type, you'll be presented with users who match the name you have entered.",
+ "Help.GettingStarted.YourContacts.AddingAContact": "Adding A Contact",
+ "Help.GettingStarted.YourContacts.AddingAContact.Content": "Found the user you're looking for? Select them to get some actions you can do with them at the top of the Dash. If you want to add the user as a contact, send them a contact request using the Add Contact button! If they accept, they will appear in your contacts list and you can message them and join them in worlds they're in.",
+ "Help.GettingStarted.YourContacts.ContactRequests": "Contact Requests",
+ "Help.GettingStarted.YourContacts.ContactRequests.Content": "When someone sends you a contact request, you will get a notification, and the requesting user will appear on the left in your contacts list with a purple outline. You can accept or ignore the request by selecting the user and choosing the action you want to take.",
+ "Help.GettingStarted.YourContacts.Invites": "Invites",
+ "Help.GettingStarted.YourContacts.Invites.Content": "Want to invite a contact to the world you're in? You can do so by selecting the user in your contacts list and clicking Invite.
Sometimes you won't be able to invite users to the world you're in - in this case, ask the world host instead.",
+
+ "Help.GettingStarted.GraphicsSettings": "Graphics Settings",
+ "Help.GettingStarted.GraphicsSettings.Overview": "Overview",
+ "Help.GettingStarted.GraphicsSettings.Overview.Content": "{appName} has a growing list of options to tailor your graphical experience to the quality and performance you are looking for.",
+ "Help.GettingStarted.GraphicsSettings.SettingsTab": "Settings Tab",
+ "Help.GettingStarted.GraphicsSettings.SettingsTab.Content": "All of the graphical settings available to you can be found in the Settings tab on your Dashboard, alongside a wide variety of other settings.",
+ "Help.GettingStarted.GraphicsSettings.GraphicsCategory": "Graphics Category",
+ "Help.GettingStarted.GraphicsSettings.GraphicsCategory.Content": "Graphical settings can be found in the Graphics category on the left of the Settings tab.",
+ "Help.GettingStarted.GraphicsSettings.TextureQuality": "Texture Quality",
+ "Help.GettingStarted.GraphicsSettings.TextureQuality.Content": "If your VRAM usage is too high or you otherwise want to reduce the load on your GPU, you can reduce the maximum texture size. This can be changed in the Texture Quality section, and may help improve performance.",
+ "Help.GettingStarted.GraphicsSettings.Resolution": "Resolution",
+ "Help.GettingStarted.GraphicsSettings.Resolution.Content": "For when you're using {appName} on your desktop, if you want to use a specific render resolution, head to the Resolution section. Here, you can adjust the resolutions for fullscreen and windowed views separately, as well as a toggle to make {appName} fullscreen or not.",
+ "Help.GettingStarted.GraphicsSettings.RenderingQuality": "Rendering Quality",
+ "Help.GettingStarted.GraphicsSettings.RenderingQuality.Content": "If you're really seeking to increase performance, the Rendering section includes settings which will affect it more than most others. Here you can change the number of lights that can be rendered at once, the quality of shadows, and more.",
+ "Help.GettingStarted.GraphicsSettings.PostProcessing": "Post Processing",
+ "Help.GettingStarted.GraphicsSettings.PostProcessing.Content": "Provided in the Post Processing section are a few post processing effects to enhance the look of {appName}. These settings include Motion Blur, Bloom, and Ambient Occlusion.",
+ "Help.GettingStarted.GraphicsSettings.VRRenderQuality": "VR Render Quality",
+ "Help.GettingStarted.GraphicsSettings.VRRenderQuality.Content": "Additional performance settings can be found in the app for your specific headset. For example, SteamVR has options for rendering, performance, and more.",
+
+ "Help.GettingStarted.BuildingBasics": "Building Basics",
+ "Help.GettingStarted.BuildingBasics.BuildingInPlatform": "Building In-Platform",
+ "Help.GettingStarted.BuildingBasics.BuildingInPlatform.Content": "{appName} gives you the freedom and tools to be creative and make whatever you can imagine, including items, worlds, and even avatars - all of which can be collaboratively created entirely from within {appName}. A variety of tools are at your disposal to help you in your creative process, from drawing with brushes to using advanced tools to edit any and all aspects of a world, or even make custom tools to suit your specific needs and workflow.",
+ "Help.GettingStarted.BuildingBasics.PlatformEssentials": "{appName} Essentials",
+ "Help.GettingStarted.BuildingBasics.PlatformEssentials.Content": "A great place to start when on the path to making something is {appName} Essentials, a folder in your Inventory provided to you, which contains a wide variety of items and tools to help you get started.
To navigate to this folder, Double Click{is_desktop, select, True {} other { with your {Primary_Input}}} on it to open it. Above the grid of items and folders you will see a list of folder you are currently in - akin to the address bar in a file browser. To spawn items from your inventory, Double Click on an item.
A benefit of the {appName} Essentials folder is that it does not count toward your storage usage! This is because the folder is a link and not a folder saved directly inside your inventory - this is why the folder is blue.",
+ "Help.GettingStarted.BuildingBasics.InventoryFolders": "Inventory Folders",
+ "Help.GettingStarted.BuildingBasics.InventoryFolders.Content": "To create a new folder in your inventory, click on the Create Folder button at the top. Give the folder a name and click Create to make it, which will place you inside the folder automatically - creating folders and staying organized will be important for when you start to collect a larger number of items.",
+ "Help.GettingStarted.BuildingBasics.BasicCreationTools": "Basic Creation Tools",
+ "Help.GettingStarted.BuildingBasics.BasicCreationTools.Content": "A place to start when creating something in {appName} is with four basic tools: Brushes, the Shape Tool, the Color Tool, and the Glue Tool.
• Brushes allow you to draw in 3D space like drawing on a piece of paper with a pencil. To draw with a brush, press and hold {Primary_Input} and move your {is_desktop, select, True {mouse} other {hand}} around to draw. {is_desktop, select, True {} other {Some brushes may change the thickness of the stroke depending on how much your {Primary_Input} is pressed. }}
Some brushes have the option to adjust their stroke size by grabbing the brush size ring and twisting it left or right.
To find a collection of pre-made brushes you can use right away, look in the {appName} Essentials folder under Tools/Brushes.
• The Shape Tool is a tool that creates simple 3D shapes. To create a shape, hold your {Primary_Input} and drag your {is_desktop, select, True {mouse} other {hand}}. To change the shape you want to create, press {is_desktop, select, True {} other {your }}{Secondary_Input} to switch between all available shapes. The Shape Tool is located in the Tools folder in the {appName} Essentials folder.
• The Color Tool allows you to tint items a certain color. To change the current selected color, open your Context Menu {is_using_vive_wands, select, True {by quickly pressing} other {with}} {Context_Menu_Input} and select Color Picker. A Color Dialogue will appear, this is used to adjust the color the tool is using. You can sample a color on an object by aiming your laser at it and pressing {is_desktop, select, True {} other {your }}{Secondary_Input}.
• The Glue Tool allows you to attach objects together. Pay attention while using this tool, if you're not careful, you could unintentionally glue items you don't intend to, or even glue yourself! To glue things together first remove unwanted items around the objects you want to glue, then press and hold {is_desktop, select, True {} other {your }}{Primary_Input} and drag across the items you are gluing. The glue tool uses a bubble to show the area where you are gluing objects together. Once you have the objects you want to glue together in the bubble, you can either let go of your {Primary_Input} and let it dry, or press {is_desktop, select, True {} other {your }}{Secondary_Input} to confirm gluing the objects. In some cases you may also need to glue pieces together using smaller bubbles to attach multiple objects to each other - as long as a part of the objects are inside a bubble it will attach to other objects.",
+ "Help.GettingStarted.BuildingBasics.SavingYourCreations": "Saving Your Creations",
+ "Help.GettingStarted.BuildingBasics.SavingYourCreations.Content": "To save your creations, first navigate to the folder you want to save to in your Inventory, then grab the item with {Grip_Input}. Then while you are holding it, inside your Inventory, press the Save Held button. This will save the item into the folder you're currently in.
While grabbing the item, open your Context Menu {is_using_vive_wands, select, True {by quickly pressing} other {with}} {Context_Menu_Input} and select Save To Inventory to save the item without needing to go to open your Dashboard.",
+ "Help.GettingStarted.BuildingBasics.ImportingFiles": "Importing Files",
+ "Help.GettingStarted.BuildingBasics.ImportingFiles.Content": "{appName} supports a wide variety of file formats which can be imported directly into the world and saved to your inventory.
To import a file, you can drag and drop it from your desktop onto the {appName} window, or copy the file from your system's file browser and paste it into the {appName} window using Ctrl + V or the Paste content from clipboard button on your Dashboard, or use the Files Dashboard tab to find your files.
Once imported, an Import Dialog will appear and will have different options depending on what you are importing.",
+ "Help.GettingStarted.BuildingBasics.EndlessPossibilities": "Endless Possibilities",
+ "Help.GettingStarted.BuildingBasics.EndlessPossibilities.Content": "The tools that have been shown here are just a fraction of what you can use to create within {appName}, many tools exist within the {appName} Essentials folders you can use to create anything you can imagine!",
+
+ "Help.Controls": "Controls",
+ "Help.Controls.Interaction": "Interaction",
+ "Help.Controls.Interaction.Content": "{appName} has a set of ways to interact with the world around you. Pick a category on the left to learn more.",
+
+ "Help.Controls.Interaction.Grabbing": "Grabbing",
+ "Help.Controls.Interaction.Grabbing.PalmGrabbing": "Palm Grabbing",
+ "Help.Controls.Interaction.Grabbing.PalmGrabbing.Content": "Palm Grabbing, or just Grabbing, {is_desktop, select, True {is done using} other {can be done in one of two ways, with your hand or with}} your laser.
{is_desktop, select, True {While} other {If}} you're holding the item{is_desktop, select, True {} other { with your laser}}, you can {is_desktop, select, True {press and hold E} other {roll your wrist left and right}} to rotate the object.",
+ "Help.Controls.Interaction.Grabbing.PrecisionGrab": "Precision Grab",
+ "Help.Controls.Interaction.Grabbing.PrecisionGrab.Content": "Precision Grab is a grab mode which lets you grab one object accurately. The object that is grabbed in this mode is the closest object between your thumb and index finger - think of it like you're pinching the object to pick it up.",
+ "Help.Controls.Interaction.Grabbing.LaserGrabbing": "Laser Grabbing",
+ "Help.Controls.Interaction.Grabbing.LaserGrabbing.Content": "Your Lasers can be used to grab things from a distance. If you want to grab an object{is_desktop, select, True {, look at it and } other { from a distance, first reveal your laser by pressing your {Primary_Input} to show your laser if it isn't already visible, then }}press and hold {Grip_Input}.",
+ "Help.Controls.Interaction.Grabbing.AutoGrabbing": "Auto Grabbing",
+ "Help.Controls.Interaction.Grabbing.AutoGrabbing.Content": "Auto Grab is a grab mode which will choose either Palm Grab or Precision Grab depending on your hand orientation.",
+ "Help.Controls.Interaction.Grabbing.StickyGrab": "Sticky Grab",
+ "Help.Controls.Interaction.Grabbing.StickyGrab.Content": "Sticky Grab is a mode where you can grab things once and they will stay grabbed, until you press {Grab_Input} again. In this mode you can freely let go of {Grab_Input} and the items you have grabbed will remain as such.",
+
+ "Help.Controls.Interaction.ScalingObjects": "Scaling Objects",
+ "Help.Controls.Interaction.ScalingObjects.PhysicalScaling": "Physical Scaling",
+ "Help.Controls.Interaction.ScalingObjects.PhysicalScaling.Content": "Objects in {appName}, unlike in the physical world, can have their Scale or overall size adjusted in real time. To change the scale of an object, while grabbing it{is_desktop, select, True {, press and hold Shift and scroll with your Scroll Wheel} other { with one hand, grip it with your other hand and move your hands closer or further apart}}.{is_desktop, select, True {} other {
While grabbing an object with your laser, you'll know if you can scale it if you aim your other laser at the object and your laser's color is Red.}}",
+ "Help.Controls.Interaction.ScalingObjects.ScalingMultipleObjects": "Scaling Multiple Objects",
+ "Help.Controls.Interaction.ScalingObjects.ScalingMultipleObjects.Content": "Scaling multiple objects is similar to scaling just one - when in Palm Grab mode, all objects close to your hand will be grabbed all at once.",
+ "Help.Controls.Interaction.ScalingObjects.ScalingWithLasers": "Scaling With Lasers",
+ "Help.Controls.Interaction.ScalingObjects.ScalingWithLasers.Content": "Scaling objects from a distance with your