Release Notes for 542

Notes for Release 542


Client Difference Log

API Changes

Added Class IKControl : Instance [NotBrowsable]
	Added Property Instance IKControl.ChainRoot
	Added Property bool IKControl.Enabled
	Added Property Instance IKControl.EndEffector
	Added Property Instance IKControl.Pole
	Added Property int IKControl.Priority
	Added Property Instance IKControl.Target
	Added Property Enum.IKControlType IKControl.Type
	Added Property float IKControl.Weight

Added Class ImporterFacsSettings : ImporterBaseSettings [NotCreatable] [NotReplicated]

Added Property bool BaseScript.Enabled [NotReplicated]

Added Function Tuple ScriptEditorService:OpenScriptDocumentAsync(LuaSourceContainer script) {PluginSecurity} [Yields]

Added Enum IKControlType
	Added EnumItem IKControlType.Null : 0
	Added EnumItem IKControlType.Position : 1
	Added EnumItem IKControlType.Rotation : 2
	Added EnumItem IKControlType.Transform : 3
	Added EnumItem IKControlType.LookAt : 4
	Added EnumItem IKControlType.Length : 5

Added Tag [NotBrowsable] to Class ControllerManager
Added Tag [NotBrowsable] to Class AirController
Added Tag [NotBrowsable] to Class ClimbController
Added Tag [NotBrowsable] to Class GroundController
Added Tag [NotBrowsable] to Class SwimController

Changed the security and serialization of Property BasePart.CollisionGroup 
	from: {RobloxScriptSecurity} [<📁> LoadOnly]
	  to: {None} [<💾|📁> Saves|Loads]

Changed the serialization of Property AlignOrientation.PrimaryAxis 
	from: [<💾|📁> Saves|Loads]
	  to: [<🕒> RuntimeOnly]

Changed the serialization of Property AlignOrientation.SecondaryAxis 
	from: [<💾|📁> Saves|Loads]
	  to: [<🕒> RuntimeOnly]

Changed the security of Function AvatarEditorService:ConformToAvatarRules 
	from: {RobloxScriptSecurity}
	  to: {None}

Changed the value of EnumItem LSPMethodType.TextDocument_publishDiagnostics from 20 to 21
Changed the value of EnumItem LSPMethodType.Window_showMessage from 21 to 22
Changed the value of EnumItem LSPMethodType.Window_showMessageRequest from 22 to 23
Changed the value of EnumItem LSPMethodType.Roblox_registerSyntaxCategories from 23 to 24
Changed the value of EnumItem LSPMethodType.Roblox_signalQuiescence from 24 to 25
Changed the value of EnumItem LSPMethodType.Roblox_syntaxHighlight from 25 to 26
Changed the value of EnumItem LSPMethodType.Roblox_suggestExtraSelections from 26 to 27
Changed the value of EnumItem LSPMethodType.Roblox_findExecutablePosition from 27 to 28
Changed the value of EnumItem LSPMethodType.Roblox_findColor3 from 28 to 29
Changed the value of EnumItem LSPMethodType.Roblox_patchSnippetData from 29 to 30

Removed Tag [Hidden] from Property BasePart.CollisionGroup

(Click here for a syntax highlighted version!)


What advantage does this have over just using plugin:OpenScript?

lol rip Disabled, I assume this is going to migrate automatically and DIsabled becomes obsolete?


If Roblox follows their past standard, setting one property will reverse the other. ‘Disabled’ will be deprecated and hidden from the studio Properties UI but still work as intended.


OpenScript is a mistake of API which has a lot of buggy behavior in more complex cases (such as with script drafts and collaborative editing), and it being a synchronous call makes it difficult for us to improve it.

Introducing a new async variant with a status return value letus is improve things without introducing any backwards compatibility issues.

No migration or anything needed, there will continue to just be one status variable under the hood, the two properties will just act as different ways to query / update it.

This is an ergonomics change because it’s generally much harder to reason about a Disabled property than an Enabled one, and Enabled matches other parts of the Roblox API.


While I don’t want to speculate too much this intrigues me a lot because it looks a lot like a user-facing API :eyes:

If so, getting access to the built-in IK using Roblox’s solver sounds very cool, especially if we could make it work with slightly more complex systems, that aren’t so easy to solve, like the IK dragger does.


Added math functions to compute the (signed) angle between two vectors. Also, added a fast version that does more assumptions on the inputs being normalized.

What are these functions called? I cannot find them in the math documentation.


It’s on the new documentation site for vector3 Vector3 | Roblox Creator Documentation


Can someone give me a more mathmatical explanation of the Vector3:Angle function, the description is pretty vague and the numbers its returning seem arbitrary.


It most likely uses the dot product or similar, I don’t really know though. It should be returning the smallest angle between the two vectors. The axis I would think should be the axis of rotation. Similar to CFrame.fromAxisAngle. I bet this is meant to (or can) act as the inverse to this.

For example, if you specify CFrame.fromAxisAngle(Vector3.yAxis, math.rad(90)) I bet its .LookVector:Angle(Vector3.zAxis, Vector3.yAxis) (the angle between it and the z axis) it should return either -math.rad(90) or math.rad(90) depending on how the coordinate system is biased (I forgor which it should be).

Which, indeed, after enabling the FFlag for myself, and pasting this =math.deg(CFrame.fromAxisAngle(Vector3.yAxis, math.rad(90)).LookVector:Angle(Vector3.zAxis, Vector3.yAxis)) I see the following:

I’m a little bit confused around this because I don’t really have the visual intuition, but, I think the first argument and the second argument are actually flipped from what I am thinking in my head but I couldn’t really explain why I think that might be I am struggling to wrap my head around it (for now).

In any case, it definitely is returning the smallest angle between two vectors as best it can. I will need to really work out what’s going on though to explain it very well because I am very confused trying to think about it when I don’t really have any intuition about it yet.


The way that this function actually works is that the second argument is optional.

  • Vector3:Angle(Vector3 other): Returns the smallest angle between the two vectors.

  • Vector3:Angle(Vector3 other, Vector3 axis): returns the signed angle between the two vectors around axis.


It would be much appreciated if there was some documentation or atleast a statement notifying us that the Vector3:Angle method was disabled before we developers waste time on developing something only for it to flat out not work.

Even more ludicrous is that the method shows up in autocomplete…