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} [<š¾š> SavesLoads]
Changed the serialization of Property AlignOrientation.PrimaryAxis
from: [<š¾š> SavesLoads]
to: [<š> RuntimeOnly]
Changed the serialization of Property AlignOrientation.SecondaryAxis
from: [<š¾š> SavesLoads]
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 userfacing API
If so, getting access to the builtin 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.
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 aroundaxis
.
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ā¦