@rbxts/types 1.0.570 → 1.0.573

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -370,6 +370,10 @@ interface DebuggerBreakpoint extends Instance {
370
370
  * The condition of the debugger breakpoint.
371
371
  */
372
372
  Condition: string;
373
+ /**
374
+ * This field controls whether debugger will stop on the breakpoint or not.
375
+ * It is used together with the [DebuggerBreakpoint.LogExpression](https://developer.roblox.com/en-us/api-reference/property/DebuggerBreakpoint/LogExpression) to log a message when breakpoint is hit, without pausing into the debugger to act as a 'logpoint' instead of a 'breakpoint'.
376
+ */
373
377
  ContinueExecution: boolean;
374
378
  /**
375
379
  * Whether or not the breakpoint is enabled.
@@ -380,7 +384,15 @@ interface DebuggerBreakpoint extends Instance {
380
384
  * Tags: ReadOnly, NotReplicated
381
385
  */
382
386
  readonly Line: number;
387
+ /**
388
+ * An expression which is evaluated when the breakpoint is hit with the result being logged into the Output window.
389
+ * Used together with [DebuggerBreakpoint.ContinueExecution](https://developer.roblox.com/en-us/api-reference/property/DebuggerBreakpoint/ContinueExecution) to implement a 'logpoint' instead of a 'breakpoint'.
390
+ */
383
391
  LogExpression: string;
392
+ /**
393
+ * Whether the breakpoint is unique for a single script instance or not.
394
+ * When set, the breakpoint will not be duplicated into all the clones of the current script.
395
+ */
384
396
  isContextDependentBreakpoint: boolean;
385
397
  }
386
398
 
@@ -410,11 +422,11 @@ interface DebuggerManager extends Instance {
410
422
  */
411
423
  EnableDebugging(this: DebuggerManager): void;
412
424
  /**
413
- * Returns a list of [ScriptDebugger](https://developer.roblox.com/en-us/api-reference/class/ScriptDebugger) present in the game.
425
+ * Returns a list of [ScriptDebugger](https://developer.roblox.com/en-us/api-reference/class/ScriptDebugger) present in the experience.
414
426
  */
415
427
  GetDebuggers(this: DebuggerManager): Array<Instance>;
416
428
  /**
417
- * Resumes the Lua Debugger if it paused.
429
+ * Resumes the Lua Debugger if it is paused.
418
430
  */
419
431
  Resume(this: DebuggerManager): void;
420
432
  /**
@@ -430,11 +442,11 @@ interface DebuggerManager extends Instance {
430
442
  */
431
443
  StepOver(this: DebuggerManager): void;
432
444
  /**
433
- * Fired when a new [ScriptDebugger](https://developer.roblox.com/api-reference/class/ScriptDebugger "ScriptDebugger") is created through the [AddDebugger](https://developer.roblox.com/api-reference/function/DebuggerManager/AddDebugger "AddDebugger") method.
445
+ * Fires when a new [ScriptDebugger](https://developer.roblox.com/en-us/api-reference/class/ScriptDebugger) is created through the [DebuggerManager:AddDebugger](https://developer.roblox.com/en-us/api-reference/function/DebuggerManager/AddDebugger) method.
434
446
  */
435
447
  readonly DebuggerAdded: RBXScriptSignal<(debug: Instance) => void>;
436
448
  /**
437
- * Fired when a registered [ScriptDebugger](https://developer.roblox.com/api-reference/class/ScriptDebugger "ScriptDebugger") has been discontinued.
449
+ * Fires when a registered [ScriptDebugger](https://developer.roblox.com/en-us/api-reference/class/ScriptDebugger) has been discontinued.
438
450
  */
439
451
  readonly DebuggerRemoved: RBXScriptSignal<(debug: Instance) => void>;
440
452
  }
@@ -737,7 +749,15 @@ interface File extends Instance {
737
749
  * Tags: Hidden, ReadOnly, NotReplicated
738
750
  */
739
751
  readonly Size: number;
752
+ /**
753
+ * This function is used to read the contents of the [File](https://developer.roblox.com/en-us/api-reference/class/File) as a raw binary string. This allows the file to be uploaded to web endpoints, or to be processed by plugins.
754
+ */
740
755
  GetBinaryContents(this: File): string;
756
+ /**
757
+ * This function is used to retrieve a temporary asset id associated with this [File](https://developer.roblox.com/en-us/api-reference/class/File). This id can be used like an _rbxassetid_ - for example, it can be assigned to the Image property of an [ImageLabel](https://developer.roblox.com/en-us/api-reference/class/ImageLabel).
758
+ *
759
+ * Throws an error if the file does not exist on disk.
760
+ */
741
761
  GetTemporaryId(this: File): string;
742
762
  }
743
763
 
@@ -790,11 +810,11 @@ interface PluginGui extends LayerCollector {
790
810
  */
791
811
  Title: string;
792
812
  /**
793
- * This function binds a function to the `PluginGui|PluginGui's` close button, overriding the default behavior.
813
+ * This function binds a function to the [PluginGui's](https://developer.roblox.com/en-us/api-reference/class/PluginGui) close button, overriding the default behavior.
794
814
  *
795
815
  * By default, when the user clicks the 'x' button in the top right corner of the [PluginGui](https://developer.roblox.com/en-us/api-reference/class/PluginGui) the [Enabled](https://developer.roblox.com/en-us/api-reference/property/LayerCollector/Enabled) property is set to _false_, closing the window. When a custom function is bound using BindToClose this behavior is overwritten, allowing you to check if the user really wants to close the window or give them an opportunity to save their work.
796
816
  *
797
- * As the default closing behavior is overwritten by this function, you'll need to configure the [PluginGui](https://developer.roblox.com/en-us/api-reference/class/PluginGui) to close manually by setting `LayerCollector/Enabled|PluginGui.Enabled` to _false_. For example, in the below snippet users are required to click a confirm button to close the GUI:
817
+ * As the default closing behavior is overwritten by this function, you'll need to configure the [PluginGui](https://developer.roblox.com/en-us/api-reference/class/PluginGui) to close manually by setting [PluginGui.Enabled](https://developer.roblox.com/en-us/api-reference/property/LayerCollector/Enabled) to _false_. For example, in the below snippet users are required to click a confirm button to close the GUI:
798
818
  *
799
819
  * local closing = false
800
820
  * pluginGui:BindToClose(function()
@@ -861,7 +881,7 @@ interface PluginGui extends LayerCollector {
861
881
  * See Also
862
882
  * --------
863
883
  *
864
- * * `articles/Drag and Drop in Studio Widgets`
884
+ * * [Drag and Drop in Studio Widgets](https://developer.roblox.com/en-us/articles/drag-and-drop-in-studio-widgets)
865
885
  * * [PluginGui.PluginDragLeft](https://developer.roblox.com/en-us/api-reference/event/PluginGui/PluginDragLeft)
866
886
  * * [PluginGui.PluginDragMoved](https://developer.roblox.com/en-us/api-reference/event/PluginGui/PluginDragMoved)
867
887
  * * [PluginGui.PluginDragDropped](https://developer.roblox.com/en-us/api-reference/event/PluginGui/PluginDragDropped)
@@ -875,7 +895,7 @@ interface PluginGui extends LayerCollector {
875
895
  * See Also
876
896
  * --------
877
897
  *
878
- * * `articles/Drag and Drop in Studio Widgets`
898
+ * * [Drag and Drop in Studio Widgets](https://developer.roblox.com/en-us/articles/drag-and-drop-in-studio-widgets)
879
899
  * * [PluginGui.PluginDragEntered](https://developer.roblox.com/en-us/api-reference/event/PluginGui/PluginDragEntered)
880
900
  * * [PluginGui.PluginDragMoved](https://developer.roblox.com/en-us/api-reference/event/PluginGui/PluginDragMoved)
881
901
  * * [PluginGui.PluginDragDropped](https://developer.roblox.com/en-us/api-reference/event/PluginGui/PluginDragDropped)
@@ -908,9 +928,9 @@ interface PluginGui extends LayerCollector {
908
928
 
909
929
  /** **DockWidgetPluginGui** is a [PluginGui](https://developer.roblox.com/en-us/api-reference/class/PluginGui) that displays its contents inside a dockable Roblox Studio window. It is used to create widgets similar to the built-in **Animation Editor** and **Terrain Tools**.
910
930
  *
911
- * This GUI can be created using `Plugin/CreateDockWidgetPluginGui|Plugin:CreateDockWidgetPluginGui()`.
931
+ * This GUI can be created using [Plugin:CreateDockWidgetPluginGui()](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreateDockWidgetPluginGui).
912
932
  *
913
- * See the `Articles/building studio widgets|Building Studio Widgets` tutorial for details on working with custom Studio widgets.
933
+ * See the [Building Studio Widgets](https://developer.roblox.com/en-us/articles/building-studio-widgets) tutorial for details on working with custom Studio widgets.
914
934
  */
915
935
  interface DockWidgetPluginGui extends PluginGui {
916
936
  /**
@@ -1198,48 +1218,20 @@ interface NetworkSettings extends Instance {
1198
1218
  readonly FreeMemoryMBytes: number;
1199
1219
  readonly HttpProxyEnabled: boolean;
1200
1220
  readonly HttpProxyURL: string;
1221
+ /**
1222
+ * Instruct the engine to simulate additional lag by delaying all incoming messages. Units are seconds.
1223
+ */
1201
1224
  IncomingReplicationLag: number;
1225
+ /**
1226
+ * Print diagnostic information to the Output window after connecting. The data will indicate the largest individual Instances sent, as well as aggregate data about data sent by Instance type. The data sent for initial loading is compressed so the contributions are approximate.
1227
+ */
1202
1228
  PrintJoinSizeBreakdown: boolean;
1203
1229
  /**
1204
- * When set to true, debug messages will be printed into the output, pertaining to physics replication errors. There are several debug outputs that are made available when this property is set to true, as listed below.
1205
- *
1206
- * Note that this property is intended for Roblox engineers who are debugging network replication. This documentation may become outdated in the future, as Roblox's network code is always changing behind the scenes.
1207
- *
1208
- * * * *
1209
- *
1210
- * Outdated Physics Packet
1211
- * -----------------------
1212
- *
1213
- * This following debug message is printed if the PhysicsReceiver receives a mechanism update packet for a part that has been updated ahead of the packet's submission time:
1214
- * `Physics-in old packet`
1215
- *
1216
- * This happens if the packet is received late, and a newer packet has already been processed.
1217
- *
1218
- * * * *
1219
- *
1220
- * Unknown Part
1221
- * ------------
1222
- *
1223
- * This following debug message is printed if the PhysicsReceiver cannot find the part that is trying to be updated, because the provided Instance identifier was invalid:
1224
- *
1225
- * `Physics-in of unidentified {GUID}`
1226
- * (Where `{GUID}` is the unknown [Instance:GetDebugId](https://developer.roblox.com/en-us/api-reference/function/Instance/GetDebugId) identifier that is supposed to be targeting the part)
1227
- *
1228
- * This typically happens if a part is removed before the physics update packet is received.
1230
+ * When set to true, debug messages will be printed into the output, pertaining to physics replication errors. Note that this property is intended for Roblox engineers who are debugging network replication. The following are debug outputs that are made available when this property is set to true.
1229
1231
  *
1230
- * * * *
1231
- *
1232
- * Invalid Part
1233
- * ------------
1234
- *
1235
- * This following debug message is printed if the PhysicsReceiver receives a request to update the physics of a part that is not a descendant of the Workspace:
1236
- *
1237
- * `Physics-in of part not in workspace {GUID}`
1238
- * (Where `{GUID}` is the [Instance:GetDebugId](https://developer.roblox.com/en-us/api-reference/function/Instance/GetDebugId) identifier of the target part)
1239
- *
1240
- * This usually happens if the part was just moved out of the Workspace, and was previously being simulated.
1241
- *
1242
- * * * *
1232
+ * * `Physics-in old packet` prints if the PhysicsReceiver receives a mechanism update packet for a part that has been updated ahead of the packet's submission time. This happens if the packet is received late, and a newer packet has already been processed.
1233
+ * * `Physics-in of unidentified {GUID}` prints if the PhysicsReceiver cannot find the part that is trying to be updated because the provided Instance identifier was invalid, where `{GUID}` is the unknown [Instance:GetDebugId](https://developer.roblox.com/en-us/api-reference/function/Instance/GetDebugId) identifier that is supposed to be targeting the part. This typically happens if a part is removed before the physics update packet is received.
1234
+ * * `Physics-in of part not in workspace {GUID}` prints if the PhysicsReceiver receives a request to update the physics of a part that is not a descendant of the Workspace, where `{GUID}` is the [Instance:GetDebugId](https://developer.roblox.com/en-us/api-reference/function/Instance/GetDebugId) identifier of the target part. This happens if the part was just moved out of the Workspace, and was previously being simulated.
1243
1235
  */
1244
1236
  PrintPhysicsErrors: boolean;
1245
1237
  /**
@@ -1277,6 +1269,9 @@ interface NetworkSettings extends Instance {
1277
1269
  * * * *
1278
1270
  */
1279
1271
  PrintStreamInstanceQuota: boolean;
1272
+ /**
1273
+ * Emulate the behavior of a server that has been online a long time by randomizing the order that instances initially arrive on clients. It is recommended to keep this setting enabled to help discover potential bugs while testing in Studio.
1274
+ */
1280
1275
  RandomizeJoinInstanceOrder: boolean;
1281
1276
  /**
1282
1277
  * ![RenderStreamedRegions in action!](https://developer.roblox.com/assets/blte3c189bb8bdbf8e3/ShowStreamedRegions.png)
@@ -1289,14 +1284,6 @@ interface NetworkSettings extends Instance {
1289
1284
  * When set to true, a label will be shown above each [Player](https://developer.roblox.com/en-us/api-reference/class/Player)'s head, showing the current animation being played by the Player's [Humanoid](https://developer.roblox.com/en-us/api-reference/class/Humanoid), if any.
1290
1285
  */
1291
1286
  ShowActiveAnimationAsset: boolean;
1292
- /**
1293
- * TrackDataTypes is a diagnostics property that, when set to true, tells the replicator stats to sample data about packets that are being sent.
1294
- */
1295
- TrackDataTypes: boolean;
1296
- /**
1297
- * TrackPhysicsDetails is a diagnostics property that, when set to true, tells the replicator stats to sample replication physics details.
1298
- */
1299
- TrackPhysicsDetails: boolean;
1300
1287
  }
1301
1288
 
1302
1289
  interface Terrain extends BasePart {
@@ -1572,7 +1559,7 @@ interface PhysicsSettings extends Instance {
1572
1559
  /**
1573
1560
  * When set to true, a cylinder is drawn around each [Player](https://developer.roblox.com/en-us/api-reference/class/Player)'s character, representing their [Player.SimulationRadius](https://developer.roblox.com/en-us/api-reference/property/Player/SimulationRadius).
1574
1561
  *
1575
- * Each physically simulated object will check to see which player is closest to that object, and if they are within the player's simulation radius. If both conditions are met, that player will becomes the network owner of that object.When set to true, a cylinder is drawn around each \`Player\`'s character, representing their \`Player/SimulationRadius\`.
1562
+ * Each physically simulated object will check to see which player is closest to that object, and if they are within the player's simulation radius. If both conditions are met, that player will becomes the network owner of that object.
1576
1563
  */
1577
1564
  AreRegionsShown: boolean;
1578
1565
  AreTerrainReplicationRegionsShown: boolean;
@@ -1649,7 +1636,7 @@ interface PhysicsSettings extends Instance {
1649
1636
  /**
1650
1637
  * Controls the throttle rate of Roblox's physics engine.
1651
1638
  *
1652
- * By default, the physics engine will adjust the physics environment throttle depending on how much work the physics engine is doing, and the current framerate. See the enum page for [EnviromentalPhysicsThrottle](https://developer.roblox.com/api-reference/enum/EnviromentalPhysicsThrottle "EnviromentalPhysicsThrottle") for more information.Controls the throttle rate of Roblox's physics engine.
1639
+ * By default, the physics engine will adjust the physics environment throttle depending on how much work the physics engine is doing, and the current framerate. See the enum page for [EnviromentalPhysicsThrottle](https://developer.roblox.com/api-reference/enum/EnviromentalPhysicsThrottle "EnviromentalPhysicsThrottle") for more information.
1653
1640
  */
1654
1641
  PhysicsEnvironmentalThrottle: Enum.EnviromentalPhysicsThrottle;
1655
1642
  /**
@@ -1692,7 +1679,9 @@ interface Player extends Instance {
1692
1679
  *
1693
1680
  * ![Command prompt example enabling SuperSafeChat.](https://developer.roblox.com/assets/blte98afa1dbb206581/Screen_Shot_2018-07-28_at_9.46.09_PM.png)
1694
1681
  *
1695
- * ##Note
1682
+ * Note
1683
+ * ----
1684
+ *
1696
1685
  * Regardless of whether a player has SuperSafeChat enabled, all chat should be filtered by TextService when broadcasted to other players or on the player's own screen. [TextService:FilterStringAsync](https://developer.roblox.com/en-us/api-reference/function/TextService/FilterStringAsync) returns a [TextFilterResult](https://developer.roblox.com/en-us/api-reference/class/TextFilterResult) object that can be filtered differently according to the message's intended use.
1697
1686
  */
1698
1687
  SetSuperSafeChat(this: Player, value: boolean): void;
@@ -1715,7 +1704,7 @@ interface Players extends Instance {
1715
1704
  * See also
1716
1705
  * --------
1717
1706
  *
1718
- * * `articles/Lua-Chat-System|Lua Chat System`, a tutorial for creating a more advanced chat system
1707
+ * * [Lua Chat System](https://developer.roblox.com/en-us/articles/lua-chat-system), a tutorial for creating a more advanced chat system
1719
1708
  */
1720
1709
  Chat(this: Players, message: string): void;
1721
1710
  /**
@@ -1728,7 +1717,7 @@ interface Players extends Instance {
1728
1717
  * See also
1729
1718
  * --------
1730
1719
  *
1731
- * Developers who are interested interested in configuring their games' bubble chat system even further should take a look at the `articles/Bubble Chat|Bubble Chat` article.
1720
+ * Developers who are interested interested in configuring their games' bubble chat system even further should take a look at the [Bubble Chat](https://developer.roblox.com/en-us/articles/bubble-chat) article.
1732
1721
  */
1733
1722
  SetChatStyle(this: Players, style?: CastsToEnum<Enum.ChatStyle>): void;
1734
1723
  /**
@@ -1743,12 +1732,12 @@ interface Players extends Instance {
1743
1732
 
1744
1733
  /** Plugin is the main object responsible for creating basic studio widgets. It is a custom add-on to Studio which adds new behavior and features that are not normally included.
1745
1734
  *
1746
- * Both the `articles/using animation editor|Animation Editor` and `articles/Intro To Terrain|Terrain Tools` were originally developed as plugins. There are also many plugins made by the Roblox community that you can use to help make games and experiences.
1735
+ * Both the [Animation Editor](https://developer.roblox.com/en-us/articles/using-animation-editor) and [Terrain Tools](https://developer.roblox.com/en-us/articles/intro-to-terrain) were originally developed as plugins. There are also many plugins made by the Roblox community that you can use to help make games and experiences.
1747
1736
  *
1748
1737
  * See also
1749
1738
  * --------
1750
1739
  *
1751
- * `articles/Intro to Plugins`, an introductory article to plugin use and development
1740
+ * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
1752
1741
  */
1753
1742
  interface Plugin extends Instance {
1754
1743
  /**
@@ -1820,7 +1809,7 @@ interface Plugin extends Instance {
1820
1809
  * See also
1821
1810
  * --------
1822
1811
  *
1823
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
1812
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
1824
1813
  * * [PluginMenu](https://developer.roblox.com/en-us/api-reference/class/PluginMenu), a context menu that can be shown in Studio which displays a list of PluginActions and supports submenus
1825
1814
  * * [Plugin:CreatePluginMenu](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginMenu), creates a PluginMenu
1826
1815
  */
@@ -1840,7 +1829,7 @@ interface Plugin extends Instance {
1840
1829
  * See also
1841
1830
  * --------
1842
1831
  *
1843
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
1832
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
1844
1833
  * * [PluginAction](https://developer.roblox.com/en-us/api-reference/class/PluginAction), an object that represents a generic performable action in Roblox Studio, with no directly associated `Toolbar` or `Button`.
1845
1834
  * * [Plugin:CreatePluginAction](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginAction), creates a PluginAction
1846
1835
  * * [PluginMenu.Title](https://developer.roblox.com/en-us/api-reference/property/PluginMenu/Title), the text to be displayed when used as a sub menu
@@ -2028,7 +2017,7 @@ interface Plugin extends Instance {
2028
2017
  * See Also
2029
2018
  * --------
2030
2019
  *
2031
- * * `articles/Drag and Drop in Studio Widgets`
2020
+ * * [Drag and Drop in Studio Widgets](https://developer.roblox.com/en-us/articles/drag-and-drop-in-studio-widgets)
2032
2021
  * * [PluginGui.PluginDragEntered](https://developer.roblox.com/en-us/api-reference/event/PluginGui/PluginDragEntered)
2033
2022
  * * [PluginGui.PluginDragMoved](https://developer.roblox.com/en-us/api-reference/event/PluginGui/PluginDragMoved)
2034
2023
  * * [PluginGui.PluginDragDropped](https://developer.roblox.com/en-us/api-reference/event/PluginGui/PluginDragDropped)
@@ -2049,7 +2038,7 @@ interface Plugin extends Instance {
2049
2038
  * See also
2050
2039
  * --------
2051
2040
  *
2052
- * * `Articles/building studio widgets|Building Studio Widgets`, for more information on working with Studio widgets.
2041
+ * * [Building Studio Widgets](https://developer.roblox.com/en-us/articles/building-studio-widgets), for more information on working with Studio widgets.
2053
2042
  * Tags: Yields
2054
2043
  */
2055
2044
  CreateDockWidgetPluginGui(
@@ -2101,7 +2090,7 @@ interface Plugin extends Instance {
2101
2090
  * See also
2102
2091
  * --------
2103
2092
  *
2104
- * `articles/Intro to Plugins`, an introductory article to plugin use and development
2093
+ * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
2105
2094
  */
2106
2095
  readonly Unloading: RBXScriptSignal<() => void>;
2107
2096
  }
@@ -2237,7 +2226,7 @@ interface PluginManagerInterface extends Instance {
2237
2226
  * See also
2238
2227
  * --------
2239
2228
  *
2240
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
2229
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
2241
2230
  * * [PluginAction](https://developer.roblox.com/en-us/api-reference/class/PluginAction), an object that represents a generic performable action in Roblox Studio, with no directly associated `Toolbar` or `Button`.
2242
2231
  * * [Plugin:CreatePluginAction](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginAction), creates a PluginAction
2243
2232
  * * [PluginMenu.Title](https://developer.roblox.com/en-us/api-reference/property/PluginMenu/Title), the text to be displayed when used as a sub menu
@@ -2264,7 +2253,7 @@ interface PluginMenu extends Instance {
2264
2253
  * See also
2265
2254
  * --------
2266
2255
  *
2267
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
2256
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
2268
2257
  * * [PluginAction](https://developer.roblox.com/en-us/api-reference/class/PluginAction), an object that represents a generic performable action in Roblox Studio, with no directly associated `Toolbar` or `Button`.
2269
2258
  * * [Plugin:CreatePluginAction](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginAction), creates a PluginAction
2270
2259
  * * [PluginMenu.Title](https://developer.roblox.com/en-us/api-reference/property/PluginMenu/Title), the text to be displayed when used as a sub menu
@@ -2283,7 +2272,7 @@ interface PluginMenu extends Instance {
2283
2272
  * See also
2284
2273
  * --------
2285
2274
  *
2286
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
2275
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
2287
2276
  * * [PluginAction](https://developer.roblox.com/en-us/api-reference/class/PluginAction), an object that represents a generic performable action in Roblox Studio, with no directly associated `Toolbar` or `Button`.
2288
2277
  * * [Plugin:CreatePluginAction](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginAction), creates a PluginAction
2289
2278
  * * [PluginMenu.Icon](https://developer.roblox.com/en-us/api-reference/property/PluginMenu/Icon), the icon to be displayed when used as a sub menu
@@ -2302,7 +2291,7 @@ interface PluginMenu extends Instance {
2302
2291
  * See also
2303
2292
  * --------
2304
2293
  *
2305
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
2294
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
2306
2295
  * * [PluginAction](https://developer.roblox.com/en-us/api-reference/class/PluginAction), an object that represents a generic performable action in Roblox Studio, with no directly associated `Toolbar` or `Button`.
2307
2296
  * * [Plugin:CreatePluginAction](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginAction), creates a PluginAction
2308
2297
  * * [PluginMenu.Title](https://developer.roblox.com/en-us/api-reference/property/PluginMenu/Title), the text to be displayed when used as a sub menu
@@ -2320,7 +2309,7 @@ interface PluginMenu extends Instance {
2320
2309
  * See also
2321
2310
  * --------
2322
2311
  *
2323
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
2312
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
2324
2313
  * * [PluginAction](https://developer.roblox.com/en-us/api-reference/class/PluginAction), an object that represents a generic performable action in Roblox Studio, with no directly associated `Toolbar` or `Button`.
2325
2314
  * * [Plugin:CreatePluginAction](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginAction), creates a PluginAction
2326
2315
  * * [PluginMenu.Title](https://developer.roblox.com/en-us/api-reference/property/PluginMenu/Title), the text to be displayed when used as a sub menu
@@ -2339,7 +2328,7 @@ interface PluginMenu extends Instance {
2339
2328
  * See also
2340
2329
  * --------
2341
2330
  *
2342
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
2331
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
2343
2332
  * * [PluginAction](https://developer.roblox.com/en-us/api-reference/class/PluginAction), an object that represents a generic performable action in Roblox Studio, with no directly associated `Toolbar` or `Button`.
2344
2333
  * * [Plugin:CreatePluginAction](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginAction), creates a PluginAction
2345
2334
  * * [PluginMenu.Title](https://developer.roblox.com/en-us/api-reference/property/PluginMenu/Title), the text to be displayed when used as a sub menu
@@ -2357,7 +2346,7 @@ interface PluginMenu extends Instance {
2357
2346
  * See also
2358
2347
  * --------
2359
2348
  *
2360
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
2349
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
2361
2350
  * * [PluginAction](https://developer.roblox.com/en-us/api-reference/class/PluginAction), an object that represents a generic performable action in Roblox Studio, with no directly associated `Toolbar` or `Button`.
2362
2351
  * * [Plugin:CreatePluginAction](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginAction), creates a PluginAction
2363
2352
  * * [PluginMenu.Title](https://developer.roblox.com/en-us/api-reference/property/PluginMenu/Title), the text to be displayed when used as a sub menu
@@ -2375,7 +2364,7 @@ interface PluginMenu extends Instance {
2375
2364
  * See also
2376
2365
  * --------
2377
2366
  *
2378
- * * `articles/Intro to Plugins`, an introductory article to plugin use and development
2367
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory article to plugin use and development
2379
2368
  * * [PluginAction](https://developer.roblox.com/en-us/api-reference/class/PluginAction), an object that represents a generic performable action in Roblox Studio, with no directly associated `Toolbar` or `Button`.
2380
2369
  * * [Plugin:CreatePluginAction](https://developer.roblox.com/en-us/api-reference/function/Plugin/CreatePluginAction), creates a PluginAction
2381
2370
  * * [PluginMenu.Title](https://developer.roblox.com/en-us/api-reference/property/PluginMenu/Title), the text to be displayed when used as a sub menu
@@ -2419,7 +2408,7 @@ interface PluginToolbar extends Instance {
2419
2408
  * See also
2420
2409
  * --------
2421
2410
  *
2422
- * * `articles/Intro to Plugins`, an introductory level article for users looking to create custom plugins
2411
+ * * [Intro to Plugins](https://developer.roblox.com/en-us/articles/intro-to-plugins), an introductory level article for users looking to create custom plugins
2423
2412
  */
2424
2413
  CreateButton(
2425
2414
  this: PluginToolbar,
@@ -2509,7 +2498,7 @@ interface RenderSettings extends Instance {
2509
2498
  /**
2510
2499
  * When set to true, all scene updates will be given an unlimited budget, regardless of how computationally expensive it may be.
2511
2500
  *
2512
- * This ensures each frame will look as it should, at the cost of a more unstable frame rate.When set to true, all scene updates will be given an unlimited budget, regardless of how computationally expensive it may be.
2501
+ * This ensures each frame will look as it should, at the cost of a more unstable frame rate.
2513
2502
  *
2514
2503
  * Notes
2515
2504
  * -----
@@ -2544,6 +2533,11 @@ interface RenderSettings extends Instance {
2544
2533
  * Defaults to 32 MBs.
2545
2534
  */
2546
2535
  MeshCacheSize: number;
2536
+ /**
2537
+ * Determines the mode for the selection of detail levels for mesh parts. For a good balance between performance and fidelity this should be set to `MeshPartDetail.DistanceBased` (default), which is what the client uses.
2538
+ *
2539
+ * Note that the `MeshPart.RenderFidelity` needs to be set to `RenderFidelity.Automatic` for this to work. If you set it to `RenderFidelity.Precise` you will always see the higher resolution version and the `MeshPartDetailLevel` will be ignored for that [MeshPart](https://developer.roblox.com/en-us/api-reference/class/MeshPart).
2540
+ */
2547
2541
  MeshPartDetailLevel: Enum.MeshPartDetailLevel;
2548
2542
  /**
2549
2543
  * If [RenderSettings.EnableFRM](https://developer.roblox.com/en-us/api-reference/property/RenderSettings/EnableFRM) is set to true, this property controls the quality level in Roblox Studio.
@@ -2567,21 +2561,7 @@ interface RenderSettings extends Instance {
2567
2561
  GetMaxQualityLevel(this: RenderSettings): number;
2568
2562
  }
2569
2563
 
2570
- /** RenderingTest is an internal testing utility used by Roblox engineers to do performance/regression tests on the rendering pipeline. It is expected to be parented inside of the [TestService](https://developer.roblox.com/en-us/api-reference/class/TestService), and will run LocalScripts parented inside of it when the TestService is ran via [TestService:Run](https://developer.roblox.com/en-us/api-reference/function/TestService/Run).
2571
- *
2572
- * ![Selected RenderingTest](https://developer.roblox.com/assets/bltb4ce5031891ef0d3/RenderingTest.png)
2573
- *
2574
- * One of its more notable features is that, upon being selected in the Explorer, it draws an accurate wireframe of the Camera frustum, visualizing what a Camera would see in the RenderingTest's configuration.
2575
- *
2576
- * Recording Test Results
2577
- * ----------------------
2578
- *
2579
- * When a RenderingTest is executed by the TestService, the [CurrentCamera](https://developer.roblox.com/en-us/api-reference/property/Workspace/CurrentCamera) of the [Workspace](https://developer.roblox.com/en-us/api-reference/class/Workspace) has its properties updated so it mirrors the Camera configuration of the RenderingTest.
2580
- *
2581
- * The recorded data is then sent as JSON with an HTTP-POST request to: `localhost:8001/api/v1/submit_test`.
2582
- *
2583
- * For the RenderingTest to pass in Roblox Studio, the request expects the response to be the string `"passed"`. It will also acknowledge the strings `"failed"` or `"golden"` as a string response.
2584
- */
2564
+ /** **RenderingTest** is an internal testing utility for the rendering pipeline. It is not intended for external use. */
2585
2565
  interface RenderingTest extends Instance {
2586
2566
  /**
2587
2567
  * **DO NOT USE!**
@@ -2781,7 +2761,7 @@ interface ScriptDebugger extends Instance {
2781
2761
  */
2782
2762
  readonly Script: Instance | undefined;
2783
2763
  /**
2784
- * Adds a watch with the given expression.
2764
+ * Adds a [DebuggerWatch](https://developer.roblox.com/en-us/api-reference/class/DebuggerWatch) with the given expression.
2785
2765
  */
2786
2766
  AddWatch(this: ScriptDebugger, expression: string): Instance | undefined;
2787
2767
  /**
@@ -2789,19 +2769,20 @@ interface ScriptDebugger extends Instance {
2789
2769
  */
2790
2770
  GetBreakpoints(this: ScriptDebugger): Array<Instance>;
2791
2771
  /**
2792
- * Returns a dictionary of all variables that are visible to the script's global stack, where the keys are the names of the variables, and the values are the actual values of the variables.
2772
+ * Returns a dictionary of all variables that are present in the global environment of the stack frame, where the keys are the names of the variables, and the values are the actual values of the variables.
2773
+ * Each stack frame might see different global variables if function environments are different.
2793
2774
  */
2794
2775
  GetGlobals(this: ScriptDebugger): Map<string, unknown>;
2795
2776
  /**
2796
- * Returns a dictionary of all local variables in the specified stack, where the keys are the names of the variables, and the values are the actual values of the variables.
2777
+ * Returns a dictionary of all local variables in the specified stack frame, where the keys are the names of the variables, and the values are the actual values of the variables.
2797
2778
  */
2798
2779
  GetLocals(this: ScriptDebugger, stackFrame?: number): Map<string, unknown>;
2799
2780
  /**
2800
- * Returns an array of all active call stacks in the script.
2781
+ * Returns an array of all active call stack frames in the script.
2801
2782
  */
2802
2783
  GetStack(this: ScriptDebugger): unknown;
2803
2784
  /**
2804
- * Returns a dictionary of all upvalues present in the stack specified.
2785
+ * Returns a dictionary of all upvalues present in the specified stack frame, where the keys are the names of the upvalues, and the values are the actual values of the upvalues.
2805
2786
  */
2806
2787
  GetUpvalues(this: ScriptDebugger, stackFrame?: number): Map<string, unknown>;
2807
2788
  /**
@@ -2809,7 +2790,7 @@ interface ScriptDebugger extends Instance {
2809
2790
  */
2810
2791
  GetWatchValue(this: ScriptDebugger, watch: Instance): unknown;
2811
2792
  /**
2812
- * Returns a list with all the watches for this debugger
2793
+ * Returns a list with all the [DebuggerWatch](https://developer.roblox.com/en-us/api-reference/class/DebuggerWatch) instances for this debugger.
2813
2794
  */
2814
2795
  GetWatches(this: ScriptDebugger): Array<Instance>;
2815
2796
  /**
@@ -2817,39 +2798,39 @@ interface ScriptDebugger extends Instance {
2817
2798
  */
2818
2799
  SetBreakpoint(this: ScriptDebugger, line: number, isContextDependentBreakpoint: boolean): Instance | undefined;
2819
2800
  /**
2820
- * Sets the value of the variable _name_ as _value_ in the script's main stack.
2801
+ * Sets the value of the variable _name_ as _value_ in the global environment of the specified stack frame.
2821
2802
  */
2822
2803
  SetGlobal(this: ScriptDebugger, name: string, value: unknown, stackFrame: number): void;
2823
2804
  /**
2824
- * Sets the value of the variable _name_ as _value_ in the stack specified.
2805
+ * Sets the value of the variable _name_ as _value_ in the specified stack frame.
2825
2806
  */
2826
2807
  SetLocal(this: ScriptDebugger, name: string, value: unknown, stackFrame?: number): void;
2827
2808
  /**
2828
- * Sets the value of the upvalue _name_ as _value_ in the stack specified.
2809
+ * Sets the value of the upvalue _name_ as _value_ in the specified stack frame.
2829
2810
  */
2830
2811
  SetUpvalue(this: ScriptDebugger, name: string, value: unknown, stackFrame?: number): void;
2831
2812
  /**
2832
- * Fired when a breakpoint is added to the script.
2813
+ * Fires when a [DebuggerBreakpoint](https://developer.roblox.com/en-us/api-reference/class/DebuggerBreakpoint) is added to the script.
2833
2814
  */
2834
2815
  readonly BreakpointAdded: RBXScriptSignal<(breakpoint: Breakpoint) => void>;
2835
2816
  /**
2836
- * Fired when a breakpoint is removed from the script.
2817
+ * Fires when a [DebuggerBreakpoint](https://developer.roblox.com/en-us/api-reference/class/DebuggerBreakpoint) is removed from the script.
2837
2818
  */
2838
2819
  readonly BreakpointRemoved: RBXScriptSignal<(breakpoint: Breakpoint) => void>;
2839
2820
  /**
2840
- * Fired when a breakpoint is encountered by the script.
2821
+ * Fires when a [DebuggerBreakpoint](https://developer.roblox.com/en-us/api-reference/class/DebuggerBreakpoint) is encountered by the script.
2841
2822
  */
2842
2823
  readonly EncounteredBreak: RBXScriptSignal<(line: number, breakReason: Enum.BreakReason) => void>;
2843
2824
  /**
2844
- * Fired when the game is resumed after being paused by a breakpoint.
2825
+ * Fires when the game is resumed after being paused by a breakpoint.
2845
2826
  */
2846
2827
  readonly Resuming: RBXScriptSignal<() => void>;
2847
2828
  /**
2848
- * Fired when an expression watch is added to this script debugger.
2829
+ * Fires when a [DebuggerWatch](https://developer.roblox.com/en-us/api-reference/class/DebuggerWatch) is added to this script debugger.
2849
2830
  */
2850
2831
  readonly WatchAdded: RBXScriptSignal<(watch: Instance) => void>;
2851
2832
  /**
2852
- * Fired when an expression watch is removed from this script debugger.
2833
+ * Fires when a [DebuggerWatch](https://developer.roblox.com/en-us/api-reference/class/DebuggerWatch) is removed from this script debugger.
2853
2834
  */
2854
2835
  readonly WatchRemoved: RBXScriptSignal<(watch: Instance) => void>;
2855
2836
  }
@@ -2860,7 +2841,7 @@ interface ScriptDebugger extends Instance {
2860
2841
  *
2861
2842
  * Currently selected [Instance](https://developer.roblox.com/en-us/api-reference/class/Instance)s can be obtained and set using the [Selection:Get](https://developer.roblox.com/en-us/api-reference/function/Selection/Get) and [Selection:Set](https://developer.roblox.com/en-us/api-reference/function/Selection/Set) functions. The [Selection.SelectionChanged](https://developer.roblox.com/en-us/api-reference/event/Selection/SelectionChanged) event fires whenever the current selection changes.
2862
2843
  *
2863
- * For more information on using Selection and [Plugin](https://developer.roblox.com/en-us/api-reference/class/Plugin)s please see `Articles/Intro to Plugins|this tutorial`.
2844
+ * For more information on using Selection and [Plugin](https://developer.roblox.com/en-us/api-reference/class/Plugin)s please see [this tutorial](https://developer.roblox.com/en-us/articles/intro-to-plugins).
2864
2845
  *
2865
2846
  * Selection is also often used in the command bar, to set hidden properties or run functions for selected [Instance](https://developer.roblox.com/en-us/api-reference/class/Instance)s. For example:
2866
2847
  *
@@ -2933,7 +2914,7 @@ interface DataModel extends ServiceProvider<Services> {
2933
2914
  */
2934
2915
  readonly _nominal_DataModel: unique symbol;
2935
2916
  /**
2936
- * Returns a table containing basic information about the jobs performed by the task scheduler
2917
+ * Returns a table containing basic information about the jobs performed by the task scheduler.
2937
2918
  *
2938
2919
  * In computing, a task scheduler is a system responsible for executing key tasks at the appropriate intervals.
2939
2920
  *
@@ -2971,7 +2952,7 @@ interface DataModel extends ServiceProvider<Services> {
2971
2952
  */
2972
2953
  GetJobsInfo(this: DataModel): unknown;
2973
2954
  /**
2974
- * This function returns an array of [Instances](https://developer.roblox.com/en-us/api-reference/class/Instance) associated with the given `Articles/Content|content` URL.
2955
+ * This function returns an array of [Instances](https://developer.roblox.com/en-us/api-reference/class/Instance) associated with the given [content](https://developer.roblox.com/en-us/articles/content) URL.
2975
2956
  *
2976
2957
  * This function can be used to insert content from the Roblox [library](https://www.roblox.com/develop/library), such as:
2977
2958
  *
@@ -2981,7 +2962,7 @@ interface DataModel extends ServiceProvider<Services> {
2981
2962
  * * Plugins
2982
2963
  * * Animations
2983
2964
  *
2984
- * It is not possible to insert [Sounds](https://developer.roblox.com/en-us/api-reference/class/Sound) using this method as they do not have an [Instance](https://developer.roblox.com/en-us/api-reference/class/Instance) associated with them (rather just a `Articles/Content|content` URL).
2965
+ * It is not possible to insert [Sounds](https://developer.roblox.com/en-us/api-reference/class/Sound) using this method as they do not have an [Instance](https://developer.roblox.com/en-us/api-reference/class/Instance) associated with them and have only a [content](https://developer.roblox.com/en-us/articles/content) URL.
2985
2966
  *
2986
2967
  * Unlike [InsertService:LoadAsset](https://developer.roblox.com/en-us/api-reference/function/InsertService/LoadAsset), GetObjects does not require an asset to be 'trusted'. This means that an asset does not need to be owned by the logged in user, or created by Roblox, to be inserted. However, if the asset is not owned by the logged in user it must be freely available.
2987
2968
  *
@@ -2991,7 +2972,7 @@ interface DataModel extends ServiceProvider<Services> {
2991
2972
  /**
2992
2973
  * This function sets the [DataModel.PlaceId](https://developer.roblox.com/en-us/api-reference/property/DataModel/PlaceId) of the game instance to the given _placeId_.
2993
2974
  *
2994
- * Setting the [DataModel.PlaceId](https://developer.roblox.com/en-us/api-reference/property/DataModel/PlaceId) is required to access the [DataStoreService](https://developer.roblox.com/en-us/api-reference/class/DataStoreService) when the place is unpublished (for example a local .rbxl file). See below for an example. Note this will only work when the _'Enable Studio Access to API Services\`_ option is enabled under game settings.
2975
+ * Setting the [DataModel.PlaceId](https://developer.roblox.com/en-us/api-reference/property/DataModel/PlaceId) is required to access the [DataStoreService](https://developer.roblox.com/en-us/api-reference/class/DataStoreService) when the place is unpublished (for example a local .rbxl file). See below for an example. This will only work when the _'Enable Studio Access to API Services\`_ option is enabled under game settings.
2995
2976
  *
2996
2977
  * local DataStoreService = game:GetService("DataStoreService")
2997
2978
  *
@@ -3428,6 +3409,7 @@ interface Studio extends Instance {
3428
3409
  * @deprecated
3429
3410
  */
3430
3411
  readonly ["UI Theme"]: Enum.UITheme;
3412
+ readonly ["Use Bounding Box Move Handles"]: boolean;
3431
3413
  /**
3432
3414
  * Tags: NotReplicated
3433
3415
  */
@@ -3445,7 +3427,7 @@ interface Studio extends Instance {
3445
3427
  /**
3446
3428
  * The **ThemeChanged** event fires when Studio's [Theme](https://developer.roblox.com/en-us/api-reference/property/Studio/Theme) changes. The best use of this event is to get the colors from the theme that changed and update your plugin's UI accordingly.
3447
3429
  *
3448
- * See the `Articles/building studio widgets|Building Studio Widgets` tutorial for details on working with custom Studio widgets.
3430
+ * See the [Building Studio Widgets](https://developer.roblox.com/en-us/articles/building-studio-widgets) tutorial for details on working with custom Studio widgets.
3449
3431
  */
3450
3432
  readonly ThemeChanged: RBXScriptSignal<() => void>;
3451
3433
  }
@@ -3463,10 +3445,6 @@ interface StudioData extends Instance {
3463
3445
  * Tags: Hidden
3464
3446
  */
3465
3447
  readonly EnableScriptCollabByDefaultOnLoad: boolean;
3466
- /**
3467
- * Tags: Hidden
3468
- */
3469
- readonly EnableTeamCreateStreamingOnLoad: boolean;
3470
3448
  /**
3471
3449
  * Tags: Hidden, NotReplicated
3472
3450
  */
@@ -3614,9 +3592,8 @@ interface StudioService extends Instance {
3614
3592
  */
3615
3593
  UseLocalSpace: boolean;
3616
3594
  AnimationIdSelected(this: StudioService, id: number): void;
3617
- ConvertToPackageUpload(this: StudioService, uploadUrl: string): void;
3618
3595
  CopyToClipboard(this: StudioService, stringToCopy: string): void;
3619
- DEPRECATED_SetDocumentDisplayName(this: StudioService, newName: string): void;
3596
+ DEPRECATED_SetTurnOnTeamCreateOnPublish(this: StudioService, turnOn: boolean): void;
3620
3597
  EmitPlacePublishedSignal(this: StudioService): void;
3621
3598
  GetBadgeConfigureUrl(this: StudioService, badgeId: number): string;
3622
3599
  GetBadgeUploadUrl(this: StudioService): string;
@@ -3663,7 +3640,6 @@ interface StudioService extends Instance {
3663
3640
  RequestClose(this: StudioService, closeMode: CastsToEnum<Enum.StudioCloseMode>): void;
3664
3641
  SerializeInstances(this: StudioService, instances: Array<Instance>): string;
3665
3642
  SetPluginEnabled(this: StudioService, assetId: number, state: boolean): void;
3666
- SetTurnOnTeamCreateOnPublish(this: StudioService, turnOn: boolean): void;
3667
3643
  SetUniverseDisplayName(this: StudioService, newName: string): void;
3668
3644
  ShowPlaceVersionHistoryDialog(this: StudioService, placeId: number): void;
3669
3645
  ShowPublishToRoblox(this: StudioService): void;
@@ -3698,9 +3674,7 @@ interface StudioService extends Instance {
3698
3674
  TryInstallPlugin(this: StudioService, assetId: number, assetVersionId: number): void;
3699
3675
  readonly GameNameUpdated: RBXScriptSignal<(name: string) => void>;
3700
3676
  readonly GamePublishFinished: RBXScriptSignal<(success: boolean, gameId: number) => void>;
3701
- readonly OnConvertToPackageResult: RBXScriptSignal<(isSuccessful: boolean, errorMessage: string) => void>;
3702
3677
  readonly OnImportFromRoblox: RBXScriptSignal<() => void>;
3703
- readonly OnOpenConvertToPackagePlugin: RBXScriptSignal<(instances: Array<Instance>, name: string) => void>;
3704
3678
  readonly OnOpenGameSettings: RBXScriptSignal<(pageIdentifier: string) => void>;
3705
3679
  readonly OnOpenManagePackagePlugin: RBXScriptSignal<(userId: number, assetId: number) => void>;
3706
3680
  readonly OnPluginInstalledFromToolbox: RBXScriptSignal<() => void>;
@@ -3732,6 +3706,75 @@ interface StudioTheme extends Instance {
3732
3706
  GetColor(this: StudioTheme, styleguideitem: CastsToEnum<Enum.StudioStyleGuideColor>, modifier?: CastsToEnum<Enum.StudioStyleGuideModifier>): Color3;
3733
3707
  }
3734
3708
 
3709
+ interface SurfaceAppearance extends Instance {
3710
+ /**
3711
+ * **DO NOT USE!**
3712
+ *
3713
+ * This field exists to force TypeScript to recognize this as a nominal type
3714
+ * @hidden
3715
+ * @deprecated
3716
+ */
3717
+ readonly _nominal_SurfaceAppearance: unique symbol;
3718
+ /**
3719
+ * This property determines how the alpha channel of the [SurfaceAppearance.ColorMap](https://developer.roblox.com/en-us/api-reference/property/SurfaceAppearance/ColorMap) of a [SurfaceAppearance](https://developer.roblox.com/en-us/api-reference/class/SurfaceAppearance) is used.
3720
+ *
3721
+ * When AlphaMode is set to [Transparency](https://developer.roblox.com/en-us/api-reference/enum/AlphaMode) and the [MeshPart.Transparency](https://developer.roblox.com/en-us/api-reference/property/BasePart/Transparency) is set to 0, opaque pixels in the SurfaceAppearance's ColorMap will render as completely opaque in the 3D scene. This solves various problems for textures with different transparent and opaque areas, such as foliage. When parts of the surface are fully opaque, the Roblox engine can render them with proper depth-based occlusion. Opaque surfaces also generally work better with depth-based effects like DepthOfField, glass and water refraction, and water reflection.
3722
+ *
3723
+ * MeshPart.TextureId vs SurfaceAppearance:
3724
+ *
3725
+ * ![Foliage comparison](https://developer.roblox.com/assets/bltc11b6d62483163b0/leaves-comparison.gif)
3726
+ *
3727
+ * Here is an example of a fern color map. Only the pixels on the leaves have full alpha.
3728
+ *
3729
+ * ![Alpha fern](https://developer.roblox.com/assets/blt1a2e3175d2522842/fern-color.png)
3730
+ */
3731
+ AlphaMode: Enum.AlphaMode;
3732
+ /**
3733
+ * This property determines the color and opacity of the surface. This texture is sometimes called the albedo texture. The alpha channel of this texture controls its opacity, which behaves differently based on the [SurfaceAppearance.AlphaMode](https://developer.roblox.com/en-us/api-reference/property/SurfaceAppearance/AlphaMode) setting.
3734
+ */
3735
+ ColorMap: string;
3736
+ /**
3737
+ * This property determines which parts of the surface are metal and are non-metal. A metalness map is a grayscale image where black pixels correspond to non-metals and white pixels correspond to metals.
3738
+ *
3739
+ * Metals only reflect light the same color as the metal, and they reflect much more light than non-metals. Most materials in the real world can be categorized either metals or non-metals. For this reason, most pixels in a metalness map will be either pure black or pure white. Values in between are typically used to simulate dirt or grunge on top of an underlying metal area.
3740
+ *
3741
+ * Here's an example of a piece of metal with a layer of paint on top. Most paints are non-metallic, so the metalness map is black everywhere except on unpainted metal parts and spots where the paint has chipped away and the underlying metal is visible.
3742
+ *
3743
+ * ![Metalness jetpack](https://developer.roblox.com/assets/blt0a658c7367d5cdab/jetpack.gif)
3744
+ *
3745
+ * ![Map explanation](https://developer.roblox.com/assets/blt96558be20f7b7a1a/metalness-explained.png)
3746
+ *
3747
+ * Note
3748
+ * ----
3749
+ *
3750
+ * * When [Lighting.EnvironmentSpecularScale](https://developer.roblox.com/en-us/api-reference/property/Lighting/EnvironmentSpecularScale) is 0, metalness has no effect. For the most realistic reflections, setting EnvironmentSpecularScale and [Lighting.EnvironmentDiffuseScale](https://developer.roblox.com/en-us/api-reference/property/Lighting/EnvironmentDiffuseScale) to 1, and [Lighting.Ambient](https://developer.roblox.com/en-us/api-reference/property/Lighting/Ambient) and [Lighting.OutdoorAmbient](https://developer.roblox.com/en-us/api-reference/property/Lighting/OutdoorAmbient) to (0,0,0) is recommended.
3751
+ */
3752
+ MetalnessMap: string;
3753
+ /**
3754
+ * This property modifies the lighting of the surface by adding bumps, dents, cracks, and curves without adding more polygons.
3755
+ *
3756
+ * Normal maps are RGB images that modify the surface's normal vector used for lighting calculations. The R, G, and B channels of the NormalMap correspond to the X, Y, and Z components of the local surface vector respectively, and byte values of 0 and 255 for each channel correspond linearly to normal vector components of -1 and 1.016 respectively. This range is stretched slightly from -1 to 1 so that a byte value of 127 maps to exactly 0. The normal vector's Z axis is always defined as the direction of the underlying mesh's normal. A uniform (127,127,255) image translates to a completely flat normal map where the normal is everywhere perpendicular to the mesh surface. This format is called “tangent space” normal maps. Roblox does not support world space or object space normal maps.
3757
+ *
3758
+ * Incorrectly flipped normal components can make bumps appear like indents. If you import a normal map and notice the lighting looks off, you may need to invert the G channel of the image. The X and Y axes of the tangent space frame correspond to the X and Y directions in the image after it's transformed by the mesh UVs. If you view your normal map in an image editor as if it were displayed on a surface, normals pointing towards the right side of the screen should appear more red, and normals pointing towards the top side of your screen should appear more green.
3759
+ *
3760
+ * ![Bread normal map](https://developer.roblox.com/assets/blt013e67a5f211cd0d/bread-nmap.png)
3761
+ *
3762
+ * The terms “DirectX format” and “OpenGL format” are sometimes used to describe whether the G channel of the normal map is inverted or not. Roblox expects the OpenGL format.
3763
+ *
3764
+ * Note
3765
+ * ----
3766
+ *
3767
+ * Roblox expects imported meshes to include tangents. Modeling software may also refer to this as “tangent space” information. If you apply a normal map and it does not seem to make any visual difference, you may need to re-export your mesh along with its tangent information from modeling software.
3768
+ */
3769
+ NormalMap: string;
3770
+ /**
3771
+ * This property determines the apparent roughness across the surface. A roughness map is a grayscale image where black pixels correspond to a maximally smooth surface, and white pixels correspond to a maximally rough surface.
3772
+ *
3773
+ * Roughness refers to how much variation the surface has on a very small scale. Reflections on smooth surfaces are sharp and concentrated. Reflections on rough surfaces are more blurry and dispersed.
3774
+ */
3775
+ RoughnessMap: string;
3776
+ }
3777
+
3735
3778
  /** TaskScheduler is a read-only settings class responsible for the Task Scheduler feature.
3736
3779
  * Can be found in Roblox Studio's settings with the name _Task Scheduler_.
3737
3780
  */
@@ -3765,6 +3808,21 @@ interface TaskScheduler extends Instance {
3765
3808
  readonly ThreadPoolSize: number;
3766
3809
  }
3767
3810
 
3811
+ interface TerrainDetail extends Instance {
3812
+ /**
3813
+ * **DO NOT USE!**
3814
+ *
3815
+ * This field exists to force TypeScript to recognize this as a nominal type
3816
+ * @hidden
3817
+ * @deprecated
3818
+ */
3819
+ readonly _nominal_TerrainDetail: unique symbol;
3820
+ ColorMap: string;
3821
+ MetalnessMap: string;
3822
+ NormalMap: string;
3823
+ RoughnessMap: string;
3824
+ }
3825
+
3768
3826
  interface TerrainRegion extends Instance {
3769
3827
  /**
3770
3828
  * **DO NOT USE!**
@@ -4103,6 +4161,6 @@ interface VoiceChatService extends Instance {
4103
4161
  /**
4104
4162
  * Tags: NotBrowsable
4105
4163
  */
4106
- GenerateDefaultChannel: boolean;
4164
+ EnableDefaultVoice: boolean;
4107
4165
  }
4108
4166