Catch up, several fixes and QoL.

This commit is contained in:
Max 2022-12-16 14:22:34 -06:00
parent 619b89d2a9
commit 1a86e670ca
18 changed files with 1137 additions and 1007 deletions

View File

@ -1,7 +1,10 @@
using System; using System;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.IO.Compression;
using LZ4; using LZ4;
using ZstdSharp;
namespace RobloxFiles.BinaryFormat namespace RobloxFiles.BinaryFormat
{ {
@ -44,7 +47,34 @@ namespace RobloxFiles.BinaryFormat
if (HasCompressedData) if (HasCompressedData)
{ {
CompressedData = reader.ReadBytes(CompressedSize); CompressedData = reader.ReadBytes(CompressedSize);
Data = LZ4Codec.Decode(CompressedData, 0, CompressedSize, Size); Data = new byte[Size];
using (var compStream = new MemoryStream(CompressedData))
{
Stream decompStream = null;
if (CompressedData[0] >= 0xF0)
{
// Probably LZ4
decompStream = new LZ4Stream(compStream, CompressionMode.Decompress);
}
else if (CompressedData[0] == 0x78 || CompressedData[0] == 0x58)
{
// Probably zlib
decompStream = new DeflateStream(compStream, CompressionMode.Decompress);
}
else if (BitConverter.ToString(CompressedData, 1, 3) == "B5-2F-FD")
{
// Probably zstd
decompStream = new DecompressionStream(compStream);
}
if (decompStream == null)
throw new Exception("Unsupported compression scheme!");
decompStream.Read(Data, 0, Size);
decompStream.Dispose();
}
} }
else else
{ {

View File

@ -32,7 +32,7 @@ namespace RobloxFiles.DataTypes
public Vector3 ColumnY => new Vector3(m21, m22, m23); public Vector3 ColumnY => new Vector3(m21, m22, m23);
public Vector3 ColumnZ => new Vector3(m31, m32, m33); public Vector3 ColumnZ => new Vector3(m31, m32, m33);
public static readonly CFrame Identity = new CFrame(); public static readonly CFrame identity = new CFrame();
public override int GetHashCode() public override int GetHashCode()
{ {

View File

@ -1,4 +1,5 @@
using RobloxFiles.Enums; using RobloxFiles.Enums;
using RobloxFiles.Utility;
namespace RobloxFiles.DataTypes namespace RobloxFiles.DataTypes
{ {
@ -27,6 +28,23 @@ namespace RobloxFiles.DataTypes
Style = style; Style = style;
} }
public static FontFace FromEnum(Font font)
{
return FontUtility.FontFaces[font];
}
public static FontFace FromName(string name, FontWeight weight = FontWeight.Regular, FontStyle style = FontStyle.Normal)
{
Content url = $"rbxasset://fonts/families/{name}.json";
return new FontFace(url, weight, style);
}
public static FontFace FromId(ulong id, FontWeight weight = FontWeight.Regular, FontStyle style = FontStyle.Normal)
{
Content url = $"rbxassetid://{id}";
return new FontFace(url, weight, style);
}
public override string ToString() public override string ToString()
{ {
return $"Font {{ Family = {Family}, Weight = {Weight}, Style = {Style}}}"; return $"Font {{ Family = {Family}, Weight = {Weight}, Style = {Style}}}";

View File

@ -64,8 +64,8 @@ namespace RobloxFiles.DataTypes
public static Vector2 zero => new Vector2(0, 0); public static Vector2 zero => new Vector2(0, 0);
public static Vector2 one => new Vector2(1, 1); public static Vector2 one => new Vector2(1, 1);
public static Vector2 x => new Vector2(1, 0); public static Vector2 xAxis => new Vector2(1, 0);
public static Vector2 y => new Vector2(0, 1); public static Vector2 yAxis => new Vector2(0, 1);
public float Dot(Vector2 other) => (X * other.X) + (Y * other.Y); public float Dot(Vector2 other) => (X * other.X) + (Y * other.Y);
public Vector2 Cross(Vector2 other) => new Vector2(X * other.Y, Y * other.X); public Vector2 Cross(Vector2 other) => new Vector2(X * other.Y, Y * other.X);

View File

@ -1,5 +1,5 @@
// Auto-generated list of creatable Roblox classes. // Auto-generated list of creatable Roblox classes.
// Updated as of 0.548.0.5480523 // Updated as of 0.554.1.5540506
using System; using System;
@ -13,7 +13,7 @@ namespace RobloxFiles
{ {
public class Accoutrement : Instance public class Accoutrement : Instance
{ {
public CFrame AttachmentPoint = new CFrame(); public CFrame AttachmentPoint = CFrame.identity;
} }
public class Accessory : Accoutrement public class Accessory : Accoutrement
@ -103,12 +103,17 @@ namespace RobloxFiles
public class AnimationRigData : Instance public class AnimationRigData : Instance
{ {
public byte[] articulatedJoint = Convert.FromBase64String("AQAAAAAAAAA=");
public byte[] endEffectorRotationConstraint = Convert.FromBase64String("AQAAAAAAAAA=");
public byte[] endEffectorTranslationConstraint = Convert.FromBase64String("AQAAAAAAAAA=");
public byte[] facsControl = Convert.FromBase64String("AQAAAAAAAAA=");
public byte[] label = Convert.FromBase64String("AQAAAAEAAAAAAAAA"); public byte[] label = Convert.FromBase64String("AQAAAAEAAAAAAAAA");
public byte[] name = Convert.FromBase64String("AQAAAAEAAAAAAAAA"); public byte[] name = Convert.FromBase64String("AQAAAAEAAAAAAAAA");
public byte[] parent = Convert.FromBase64String("AQAAAAEAAAAAAA=="); public byte[] parent = Convert.FromBase64String("AQAAAAEAAAAAAA==");
public byte[] postTransform = Convert.FromBase64String("AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA="); public byte[] postTransform = Convert.FromBase64String("AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA=");
public byte[] preTransform = Convert.FromBase64String("AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA="); public byte[] preTransform = Convert.FromBase64String("AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA=");
public byte[] transform = Convert.FromBase64String("AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA="); public byte[] transform = Convert.FromBase64String("AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA=");
public byte[] weight = Convert.FromBase64String("AQAAAAAAAAA=");
} }
public class Animator : Instance public class Animator : Instance
@ -138,6 +143,10 @@ namespace RobloxFiles
{ {
IsService = true; IsService = true;
} }
public string Interface = "";
public int Port = 0;
public bool StartServer;
} }
public class AssetImportService : Instance public class AssetImportService : Instance
@ -176,7 +185,7 @@ namespace RobloxFiles
public class Attachment : Instance public class Attachment : Instance
{ {
public CFrame CFrame = new CFrame(); public CFrame CFrame = CFrame.identity;
public bool Visible; public bool Visible;
} }
@ -219,7 +228,7 @@ namespace RobloxFiles
{ {
public bool CanBeDropped = true; public bool CanBeDropped = true;
public bool Enabled = true; public bool Enabled = true;
public CFrame Grip = new CFrame(); public CFrame Grip = CFrame.identity;
public bool ManualActivationOnly; public bool ManualActivationOnly;
public bool RequiresHandle = true; public bool RequiresHandle = true;
public string ToolTip = ""; public string ToolTip = "";
@ -270,20 +279,20 @@ namespace RobloxFiles
public abstract class BaseWrap : Instance public abstract class BaseWrap : Instance
{ {
public Content CageMeshId = ""; public Content CageMeshId = "";
public CFrame CageOrigin = new CFrame(); public CFrame CageOrigin = CFrame.identity;
public Content HSRAssetId = ""; public Content HSRAssetId = "";
public CFrame ImportOrigin = new CFrame(); public CFrame ImportOrigin = CFrame.identity;
} }
public class WrapLayer : BaseWrap public class WrapLayer : BaseWrap
{ {
public WrapLayerAutoSkin AutoSkin = WrapLayerAutoSkin.Disabled; public WrapLayerAutoSkin AutoSkin = WrapLayerAutoSkin.Disabled;
public CFrame BindOffset = new CFrame(); public CFrame BindOffset = CFrame.identity;
public bool Enabled = true; public bool Enabled = true;
public int Order = 1; public int Order = 1;
public float Puffiness = 1; public float Puffiness = 1;
public Content ReferenceMeshId = ""; public Content ReferenceMeshId = "";
public CFrame ReferenceOrigin = new CFrame(); public CFrame ReferenceOrigin = CFrame.identity;
public float ShrinkFactor = 0; public float ShrinkFactor = 0;
} }
@ -350,7 +359,7 @@ namespace RobloxFiles
public class BodyForce : BodyMover public class BodyForce : BodyMover
{ {
public Vector3 Force = new Vector3(0, 1, 0); public Vector3 Force = Vector3.yAxis;
[Obsolete] [Obsolete]
public Vector3 force public Vector3 force
@ -362,7 +371,7 @@ namespace RobloxFiles
public class BodyGyro : BodyMover public class BodyGyro : BodyMover
{ {
public CFrame CFrame = new CFrame(); public CFrame CFrame = CFrame.identity;
public float D = 500; public float D = 500;
public Vector3 MaxTorque = new Vector3(400000, 0, 400000); public Vector3 MaxTorque = new Vector3(400000, 0, 400000);
public float P = 3000; public float P = 3000;
@ -406,8 +415,8 @@ namespace RobloxFiles
public class BodyThrust : BodyMover public class BodyThrust : BodyMover
{ {
public Vector3 Force = new Vector3(0, 1, 0); public Vector3 Force = Vector3.yAxis;
public Vector3 Location = new Vector3(); public Vector3 Location = Vector3.zero;
[Obsolete] [Obsolete]
public Vector3 force public Vector3 force
@ -452,7 +461,7 @@ namespace RobloxFiles
public float MaxThrust = 4000; public float MaxThrust = 4000;
public Vector3 MaxTorque = new Vector3(400000, 400000, 0); public Vector3 MaxTorque = new Vector3(400000, 400000, 0);
public BasePart Target; public BasePart Target;
public Vector3 TargetOffset = new Vector3(); public Vector3 TargetOffset = Vector3.zero;
public float TargetRadius = 4; public float TargetRadius = 4;
public float ThrustD = 0.001f; public float ThrustD = 0.001f;
public float ThrustP = 5; public float ThrustP = 5;
@ -689,7 +698,7 @@ namespace RobloxFiles
public class AlignOrientation : Constraint public class AlignOrientation : Constraint
{ {
public AlignType AlignType = AlignType.Parallel; public AlignType AlignType = AlignType.Parallel;
public CFrame CFrame = new CFrame(); public CFrame CFrame = CFrame.identity;
public float MaxAngularVelocity = float.MaxValue; public float MaxAngularVelocity = float.MaxValue;
public float MaxTorque = 10000; public float MaxTorque = 10000;
public OrientationAlignmentMode Mode = OrientationAlignmentMode.TwoAttachment; public OrientationAlignmentMode Mode = OrientationAlignmentMode.TwoAttachment;
@ -710,7 +719,7 @@ namespace RobloxFiles
public float MaxForce = 10000; public float MaxForce = 10000;
public float MaxVelocity = float.MaxValue; public float MaxVelocity = float.MaxValue;
public PositionAlignmentMode Mode = PositionAlignmentMode.TwoAttachment; public PositionAlignmentMode Mode = PositionAlignmentMode.TwoAttachment;
public Vector3 Position = new Vector3(); public Vector3 Position = Vector3.zero;
public bool ReactionForceEnabled; public bool ReactionForceEnabled;
public float Responsiveness = 10; public float Responsiveness = 10;
public bool RigidityEnabled; public bool RigidityEnabled;
@ -718,12 +727,19 @@ namespace RobloxFiles
public class AngularVelocity : Constraint public class AngularVelocity : Constraint
{ {
public Vector3 AngularVelocity_ = new Vector3(); public Vector3 AngularVelocity_ = Vector3.zero;
public float MaxTorque = 0; public float MaxTorque = 0;
public bool ReactionTorqueEnabled; public bool ReactionTorqueEnabled;
public ActuatorRelativeTo RelativeTo = ActuatorRelativeTo.World; public ActuatorRelativeTo RelativeTo = ActuatorRelativeTo.World;
} }
public class AnimationConstraint : Constraint
{
public float MaxForce = 10000;
public float MaxTorque = 10000;
public CFrame Transform = CFrame.identity;
}
public class BallSocketConstraint : Constraint public class BallSocketConstraint : Constraint
{ {
public BallSocketConstraint() : base() public BallSocketConstraint() : base()
@ -732,6 +748,13 @@ namespace RobloxFiles
} }
public bool LimitsEnabled; public bool LimitsEnabled;
public float MaxFrictionTorque
{
get => MaxFrictionTorqueXml;
set => MaxFrictionTorqueXml = value;
}
public float MaxFrictionTorqueXml = 0; public float MaxFrictionTorqueXml = 0;
public float Radius = 0.15f; public float Radius = 0.15f;
public float Restitution = 0; public float Restitution = 0;
@ -779,14 +802,14 @@ namespace RobloxFiles
Color = BrickColor.FromNumber(26); Color = BrickColor.FromNumber(26);
} }
public Vector3 LineDirection = new Vector3(1, 0, 0); public Vector3 LineDirection = Vector3.xAxis;
public float LineVelocity = 0; public float LineVelocity = 0;
public float MaxForce = 1000; public float MaxForce = 1000;
public Vector2 PlaneVelocity = new Vector2(); public Vector2 PlaneVelocity = Vector2.zero;
public Vector3 PrimaryTangentAxis = new Vector3(1, 0, 0); public Vector3 PrimaryTangentAxis = Vector3.xAxis;
public ActuatorRelativeTo RelativeTo = ActuatorRelativeTo.World; public ActuatorRelativeTo RelativeTo = ActuatorRelativeTo.World;
public Vector3 SecondaryTangentAxis = new Vector3(0, 1, 0); public Vector3 SecondaryTangentAxis = Vector3.yAxis;
public Vector3 VectorVelocity = new Vector3(); public Vector3 VectorVelocity = Vector3.zero;
public VelocityConstraintMode VelocityConstraintMode = VelocityConstraintMode.Vector; public VelocityConstraintMode VelocityConstraintMode = VelocityConstraintMode.Vector;
} }
@ -920,7 +943,7 @@ namespace RobloxFiles
public class Torque : Constraint public class Torque : Constraint
{ {
public ActuatorRelativeTo RelativeTo = ActuatorRelativeTo.Attachment0; public ActuatorRelativeTo RelativeTo = ActuatorRelativeTo.Attachment0;
public Vector3 Torque_ = new Vector3(); public Vector3 Torque_ = Vector3.zero;
} }
public class TorsionSpringConstraint : Constraint public class TorsionSpringConstraint : Constraint
@ -1005,10 +1028,12 @@ namespace RobloxFiles
public class AirController : ControllerBase public class AirController : ControllerBase
{ {
public bool CancelAirMomentum = true; public bool CancelAirMomentum = true;
public float MoveMaxForce = 10000; public bool MaintainAngularMomentum = true;
public bool MaintainLinearMomentum = true;
public float MoveMaxForce = 1000;
public float OrientationMaxTorque = 10000; public float OrientationMaxTorque = 10000;
public float OrientationSpeedFactor = 1; public float OrientationSpeedFactor = 1;
public Vector3 VectorForce = new Vector3(); public Vector3 VectorForce = Vector3.zero;
} }
public class ClimbController : ControllerBase public class ClimbController : ControllerBase
@ -1047,8 +1072,8 @@ namespace RobloxFiles
{ {
public float BaseMoveSpeed = 16; public float BaseMoveSpeed = 16;
public float BaseTurnSpeed = 8; public float BaseTurnSpeed = 8;
public Vector3 FacingDirection = new Vector3(0, 0, 1); public Vector3 FacingDirection = Vector3.zAxis;
public Vector3 MovingDirection = new Vector3(); public Vector3 MovingDirection = Vector3.zero;
} }
public class ControllerService : Instance public class ControllerService : Instance
@ -1097,9 +1122,9 @@ namespace RobloxFiles
{ {
public LevelOfDetailSetting LODX = LevelOfDetailSetting.High; public LevelOfDetailSetting LODX = LevelOfDetailSetting.High;
public LevelOfDetailSetting LODY = LevelOfDetailSetting.High; public LevelOfDetailSetting LODY = LevelOfDetailSetting.High;
public Vector3 Offset = new Vector3(); public Vector3 Offset = Vector3.zero;
public Vector3 Scale = new Vector3(1, 1, 1); public Vector3 Scale = Vector3.one;
public Vector3 VertexColor = new Vector3(1, 1, 1); public Vector3 VertexColor = Vector3.one;
} }
public abstract class BevelMesh : DataModelMesh public abstract class BevelMesh : DataModelMesh
@ -1199,7 +1224,7 @@ namespace RobloxFiles
public DialogPurpose Purpose = DialogPurpose.Help; public DialogPurpose Purpose = DialogPurpose.Help;
public DialogTone Tone = DialogTone.Neutral; public DialogTone Tone = DialogTone.Neutral;
public float TriggerDistance = 0; public float TriggerDistance = 0;
public Vector3 TriggerOffset = new Vector3(); public Vector3 TriggerOffset = Vector3.zero;
} }
public class DialogChoice : Instance public class DialogChoice : Instance
@ -1243,13 +1268,29 @@ namespace RobloxFiles
} }
} }
public class ExperienceAuthService : Instance
{
public ExperienceAuthService()
{
IsService = true;
}
}
public class ExperienceInviteOptions : Instance
{
public string InviteMessageId = "";
public long InviteUser = 0;
public string LaunchData = "";
public string PromptMessage = "";
}
public class Explosion : Instance public class Explosion : Instance
{ {
public float BlastPressure = 500000; public float BlastPressure = 500000;
public float BlastRadius = 4; public float BlastRadius = 4;
public float DestroyJointRadiusPercent = 1; public float DestroyJointRadiusPercent = 1;
public ExplosionType ExplosionType = ExplosionType.Craters; public ExplosionType ExplosionType = ExplosionType.Craters;
public Vector3 Position = new Vector3(); public Vector3 Position = Vector3.zero;
public float TimeScale = 1; public float TimeScale = 1;
public bool Visible = true; public bool Visible = true;
} }
@ -1310,6 +1351,16 @@ namespace RobloxFiles
} }
} }
public class FacialAnimationStreamingServiceV2 : Instance
{
public FacialAnimationStreamingServiceV2()
{
IsService = true;
}
public int ServiceState = 0;
}
public abstract class Feature : Instance public abstract class Feature : Instance
{ {
public NormalId FaceId = NormalId.Right; public NormalId FaceId = NormalId.Right;
@ -1438,7 +1489,7 @@ namespace RobloxFiles
public class GetTextBoundsParams : Instance public class GetTextBoundsParams : Instance
{ {
public FontFace Font = new FontFace("rbxasset://fonts/families/SourceSansPro.json"); public FontFace Font = FontFace.FromEnum(Enums.Font.SourceSans);
public float Size = 20; public float Size = 20;
public string Text = ""; public string Text = "";
public float Width = 0; public float Width = 0;
@ -1478,7 +1529,7 @@ namespace RobloxFiles
public abstract class GuiObject : GuiBase2d public abstract class GuiObject : GuiBase2d
{ {
public bool Active; public bool Active;
public Vector2 AnchorPoint = new Vector2(); public Vector2 AnchorPoint = Vector2.zero;
public AutomaticSize AutomaticSize = AutomaticSize.None; public AutomaticSize AutomaticSize = AutomaticSize.None;
[Obsolete] [Obsolete]
@ -1572,8 +1623,8 @@ namespace RobloxFiles
public Content HoverImage = ""; public Content HoverImage = "";
public Content Image = ""; public Content Image = "";
public Color3 ImageColor3 = new Color3(1, 1, 1); public Color3 ImageColor3 = new Color3(1, 1, 1);
public Vector2 ImageRectOffset = new Vector2(); public Vector2 ImageRectOffset = Vector2.zero;
public Vector2 ImageRectSize = new Vector2(); public Vector2 ImageRectSize = Vector2.zero;
public float ImageTransparency = 0; public float ImageTransparency = 0;
public Content PressedImage = ""; public Content PressedImage = "";
public ResamplerMode ResampleMode = ResamplerMode.Default; public ResamplerMode ResampleMode = ResamplerMode.Default;
@ -1592,8 +1643,13 @@ namespace RobloxFiles
Selectable = true; Selectable = true;
} }
public Font Font = Font.Legacy; public Font Font
public FontFace FontFace = new FontFace("rbxasset://fonts/families/LegacyArial.json"); {
get => FontUtility.GetLegacyFont(FontFace);
set => FontUtility.TryGetFontFace(value, out FontFace);
}
public FontFace FontFace = FontFace.FromEnum(Enums.Font.Legacy);
[Obsolete] [Obsolete]
public FontSize FontSize public FontSize FontSize
@ -1662,8 +1718,8 @@ namespace RobloxFiles
public Content Image = ""; public Content Image = "";
public Color3 ImageColor3 = new Color3(1, 1, 1); public Color3 ImageColor3 = new Color3(1, 1, 1);
public Vector2 ImageRectOffset = new Vector2(); public Vector2 ImageRectOffset = Vector2.zero;
public Vector2 ImageRectSize = new Vector2(); public Vector2 ImageRectSize = Vector2.zero;
public float ImageTransparency = 0; public float ImageTransparency = 0;
public ResamplerMode ResampleMode = ResamplerMode.Default; public ResamplerMode ResampleMode = ResamplerMode.Default;
public ScaleType ScaleType = ScaleType.Stretch; public ScaleType ScaleType = ScaleType.Stretch;
@ -1679,8 +1735,13 @@ namespace RobloxFiles
ClipsDescendants = false; ClipsDescendants = false;
} }
public Font Font = Font.Legacy; public Font Font
public FontFace FontFace = new FontFace("rbxasset://fonts/families/LegacyArial.json"); {
get => FontUtility.GetLegacyFont(FontFace);
set => FontUtility.TryGetFontFace(value, out FontFace);
}
public FontFace FontFace = FontFace.FromEnum(Enums.Font.Legacy);
[Obsolete] [Obsolete]
public FontSize FontSize public FontSize FontSize
@ -1742,7 +1803,7 @@ namespace RobloxFiles
public AutomaticSize AutomaticCanvasSize = AutomaticSize.None; public AutomaticSize AutomaticCanvasSize = AutomaticSize.None;
public Content BottomImage = "rbxasset://textures/ui/Scroll/scroll-bottom.png"; public Content BottomImage = "rbxasset://textures/ui/Scroll/scroll-bottom.png";
public Vector2 CanvasPosition = new Vector2(); public Vector2 CanvasPosition = Vector2.zero;
public UDim2 CanvasSize = new UDim2(0, 0, 2, 0); public UDim2 CanvasSize = new UDim2(0, 0, 2, 0);
public ElasticBehavior ElasticBehavior = ElasticBehavior.WhenScrollable; public ElasticBehavior ElasticBehavior = ElasticBehavior.WhenScrollable;
public ScrollBarInset HorizontalScrollBarInset = ScrollBarInset.None; public ScrollBarInset HorizontalScrollBarInset = ScrollBarInset.None;
@ -1767,8 +1828,14 @@ namespace RobloxFiles
} }
public bool ClearTextOnFocus = true; public bool ClearTextOnFocus = true;
public Font Font = Font.Legacy;
public FontFace FontFace = new FontFace("rbxasset://fonts/families/LegacyArial.json"); public Font Font
{
get => FontUtility.GetLegacyFont(FontFace);
set => FontUtility.TryGetFontFace(value, out FontFace);
}
public FontFace FontFace = FontFace.FromEnum(Enums.Font.Legacy);
[Obsolete] [Obsolete]
public FontSize FontSize public FontSize FontSize
@ -1847,7 +1914,7 @@ namespace RobloxFiles
} }
public Color3 Ambient = Color3.FromRGB(200, 200, 200); public Color3 Ambient = Color3.FromRGB(200, 200, 200);
public CFrame CameraCFrame = new CFrame(); public CFrame CameraCFrame = CFrame.identity;
public float CameraFieldOfView = 70; public float CameraFieldOfView = 70;
public Color3 ImageColor3 = new Color3(1, 1, 1); public Color3 ImageColor3 = new Color3(1, 1, 1);
public float ImageTransparency = 0; public float ImageTransparency = 0;
@ -1872,21 +1939,23 @@ namespace RobloxFiles
public float DistanceLowerLimit = 0; public float DistanceLowerLimit = 0;
public float DistanceStep = 0; public float DistanceStep = 0;
public float DistanceUpperLimit = -1; public float DistanceUpperLimit = -1;
public Vector3 ExtentsOffset = new Vector3(); public Vector3 ExtentsOffset = Vector3.zero;
public Vector3 ExtentsOffsetWorldSpace = new Vector3(); public Vector3 ExtentsOffsetWorldSpace = Vector3.zero;
public float LightInfluence = 0; public float LightInfluence = 0;
public float MaxDistance = float.MaxValue; public float MaxDistance = float.MaxValue;
public Instance PlayerToHideFrom; public Instance PlayerToHideFrom;
public UDim2 Size = new UDim2(); public UDim2 Size = new UDim2();
public Vector2 SizeOffset = new Vector2(); public Vector2 SizeOffset = Vector2.zero;
public Vector3 StudsOffset = new Vector3(); public Vector3 StudsOffset = Vector3.zero;
public Vector3 StudsOffsetWorldSpace = new Vector3(); public Vector3 StudsOffsetWorldSpace = Vector3.zero;
} }
public class ScreenGui : LayerCollector public class ScreenGui : LayerCollector
{ {
public bool ClipToDeviceSafeArea = true;
public int DisplayOrder = 0; public int DisplayOrder = 0;
public bool IgnoreGuiInset; public SafeAreaCompatibility SafeAreaCompatibility = SafeAreaCompatibility.FullscreenExtension;
public ScreenInsets ScreenInsets = ScreenInsets.CoreUISafeInsets;
} }
public class GuiMain : ScreenGui public class GuiMain : ScreenGui
@ -1897,7 +1966,7 @@ namespace RobloxFiles
{ {
public bool Active = true; public bool Active = true;
public Instance Adornee; public Instance Adornee;
public NormalId Face = NormalId.Back; public NormalId Face = NormalId.Front;
} }
public class AdGui : SurfaceGuiBase public class AdGui : SurfaceGuiBase
@ -1907,11 +1976,6 @@ namespace RobloxFiles
public class SurfaceGui : SurfaceGuiBase public class SurfaceGui : SurfaceGuiBase
{ {
public SurfaceGui() : base()
{
Face = NormalId.Front;
}
public bool AlwaysOnTop; public bool AlwaysOnTop;
public float Brightness = 1; public float Brightness = 1;
public Vector2 CanvasSize = new Vector2(800, 600); public Vector2 CanvasSize = new Vector2(800, 600);
@ -1943,7 +2007,7 @@ namespace RobloxFiles
public BasePart From; public BasePart From;
public float StudsBetweenTextures = 4; public float StudsBetweenTextures = 4;
public Content Texture = ""; public Content Texture = "";
public Vector2 TextureSize = new Vector2(1, 1); public Vector2 TextureSize = Vector2.one;
public BasePart To; public BasePart To;
public float Velocity = 2; public float Velocity = 2;
public float WireRadius = 0.0625f; public float WireRadius = 0.0625f;
@ -1978,14 +2042,14 @@ namespace RobloxFiles
{ {
public AdornCullingMode AdornCullingMode = AdornCullingMode.Automatic; public AdornCullingMode AdornCullingMode = AdornCullingMode.Automatic;
public bool AlwaysOnTop; public bool AlwaysOnTop;
public CFrame CFrame = new CFrame(); public CFrame CFrame = CFrame.identity;
public Vector3 SizeRelativeOffset = new Vector3(); public Vector3 SizeRelativeOffset = Vector3.zero;
public int ZIndex = -1; public int ZIndex = -1;
} }
public class BoxHandleAdornment : HandleAdornment public class BoxHandleAdornment : HandleAdornment
{ {
public Vector3 Size = new Vector3(1, 1, 1); public Vector3 Size = Vector3.one;
} }
public class ConeHandleAdornment : HandleAdornment public class ConeHandleAdornment : HandleAdornment
@ -2011,7 +2075,7 @@ namespace RobloxFiles
} }
public Content Image = "rbxasset://textures/SurfacesDefault.png"; public Content Image = "rbxasset://textures/SurfacesDefault.png";
public Vector2 Size = new Vector2(1, 1); public Vector2 Size = Vector2.one;
} }
public class LineHandleAdornment : HandleAdornment public class LineHandleAdornment : HandleAdornment
@ -2083,7 +2147,7 @@ namespace RobloxFiles
public class SelectionPointLasso : SelectionLasso public class SelectionPointLasso : SelectionLasso
{ {
public Vector3 Point = new Vector3(); public Vector3 Point = Vector3.zero;
} }
public class GuiService : Instance public class GuiService : Instance
@ -2173,7 +2237,7 @@ namespace RobloxFiles
public HumanoidHealthDisplayType HealthDisplayType = HumanoidHealthDisplayType.DisplayWhenDamaged; public HumanoidHealthDisplayType HealthDisplayType = HumanoidHealthDisplayType.DisplayWhenDamaged;
public float Health_XML = 100; public float Health_XML = 100;
public float HipHeight = 0; public float HipHeight = 0;
public Vector3 InternalBodyScale = new Vector3(1, 1, 1); public Vector3 InternalBodyScale = Vector3.one;
public float InternalHeadScale = 1; public float InternalHeadScale = 1;
public float JumpHeight = 7.2f; public float JumpHeight = 7.2f;
public float JumpPower = 50; public float JumpPower = 50;
@ -2241,11 +2305,11 @@ namespace RobloxFiles
public class IKControl : Instance public class IKControl : Instance
{ {
public CFrame AlignmentOffset = new CFrame();
public Instance ChainRoot; public Instance ChainRoot;
public bool Enabled = true; public bool Enabled = true;
public Instance EndEffector; public Instance EndEffector;
public CFrame Offset = new CFrame(); public CFrame EndEffectorOffset = CFrame.identity;
public CFrame Offset = CFrame.identity;
public Instance Pole; public Instance Pole;
public int Priority = 0; public int Priority = 0;
public Instance Target; public Instance Target;
@ -2303,8 +2367,8 @@ namespace RobloxFiles
public abstract class JointInstance : Instance public abstract class JointInstance : Instance
{ {
public CFrame C0 = new CFrame(); public CFrame C0 = CFrame.identity;
public CFrame C1 = new CFrame(); public CFrame C1 = CFrame.identity;
public bool Enabled = true; public bool Enabled = true;
public BasePart Part0; public BasePart Part0;
public BasePart Part1; public BasePart Part1;
@ -2325,10 +2389,10 @@ namespace RobloxFiles
public class Glue : JointInstance public class Glue : JointInstance
{ {
public Vector3 F0 = new Vector3(); public Vector3 F0 = Vector3.zero;
public Vector3 F1 = new Vector3(); public Vector3 F1 = Vector3.zero;
public Vector3 F2 = new Vector3(); public Vector3 F2 = Vector3.zero;
public Vector3 F3 = new Vector3(); public Vector3 F3 = Vector3.zero;
} }
public abstract class ManualSurfaceJointInstance : JointInstance public abstract class ManualSurfaceJointInstance : JointInstance
@ -2757,7 +2821,7 @@ namespace RobloxFiles
set => Color = value?.Color; set => Color = value?.Color;
} }
public CFrame CFrame = new CFrame(); public CFrame CFrame = CFrame.identity;
public bool CanCollide = true; public bool CanCollide = true;
public bool CanQuery = true; public bool CanQuery = true;
public bool CanTouch = true; public bool CanTouch = true;
@ -2813,7 +2877,7 @@ namespace RobloxFiles
} }
public string MaterialVariantSerialized = ""; public string MaterialVariantSerialized = "";
public CFrame PivotOffset = new CFrame(); public CFrame PivotOffset = CFrame.identity;
public Vector3 Position public Vector3 Position
{ {
@ -2837,7 +2901,7 @@ namespace RobloxFiles
public int RootPriority = 0; public int RootPriority = 0;
[Obsolete] [Obsolete]
public Vector3 RotVelocity = new Vector3(); public Vector3 RotVelocity = Vector3.zero;
public Vector3 Size public Vector3 Size
{ {
@ -2859,7 +2923,7 @@ namespace RobloxFiles
public float Transparency = 0; public float Transparency = 0;
[Obsolete] [Obsolete]
public Vector3 Velocity = new Vector3(); public Vector3 Velocity = Vector3.zero;
[Obsolete] [Obsolete]
public BrickColor brickColor public BrickColor brickColor
@ -3006,6 +3070,7 @@ namespace RobloxFiles
public bool Decoration; public bool Decoration;
public byte[] MaterialColors = Convert.FromBase64String("AAAAAAAAan8/P39rf2Y/ilY+j35fi21PZmxvZbDqw8faiVpHOi4kHh4lZlw76JxKc3trhHtagcLgc4RKxr21zq2UlJSM"); public byte[] MaterialColors = Convert.FromBase64String("AAAAAAAAan8/P39rf2Y/ilY+j35fi21PZmxvZbDqw8faiVpHOi4kHh4lZlw76JxKc3trhHtagcLgc4RKxr21zq2UlJSM");
public byte[] PhysicsGrid = Convert.FromBase64String("AgMAAAAAAAAAAAAAAAA="); public byte[] PhysicsGrid = Convert.FromBase64String("AgMAAAAAAAAAAAAAAAA=");
public bool ShorelinesUpgraded;
public byte[] SmoothGrid = Convert.FromBase64String("AQU="); public byte[] SmoothGrid = Convert.FromBase64String("AQU=");
public Color3 WaterColor = Color3.FromRGB(12, 84, 91); public Color3 WaterColor = Color3.FromRGB(12, 84, 91);
public float WaterReflectance = 1; public float WaterReflectance = 1;
@ -3022,7 +3087,7 @@ namespace RobloxFiles
size = new Vector3(4, 1.2f, 2); size = new Vector3(4, 1.2f, 2);
} }
public Vector3 InitialSize = new Vector3(1, 1, 1); public Vector3 InitialSize = Vector3.one;
public byte[] LODData; public byte[] LODData;
public SharedString PhysicalConfigData = SharedString.FromBase64("1B2M2Y8AsgTpgAmY7PhCfg=="); public SharedString PhysicalConfigData = SharedString.FromBase64("1B2M2Y8AsgTpgAmY7PhCfg==");
public byte[] PhysicsData; public byte[] PhysicsData;
@ -3039,7 +3104,7 @@ namespace RobloxFiles
public bool DoubleSided; public bool DoubleSided;
public bool HasJointOffset; public bool HasJointOffset;
public bool HasSkinnedMesh; public bool HasSkinnedMesh;
public Vector3 JointOffset = new Vector3(); public Vector3 JointOffset = Vector3.zero;
public Content MeshId = ""; public Content MeshId = "";
public RenderFidelity RenderFidelity = RenderFidelity.Precise; public RenderFidelity RenderFidelity = RenderFidelity.Precise;
public Content TextureID = ""; public Content TextureID = "";
@ -3139,9 +3204,9 @@ namespace RobloxFiles
public class Model : PVInstance public class Model : PVInstance
{ {
public ModelLevelOfDetail LevelOfDetail = ModelLevelOfDetail.Automatic; public ModelLevelOfDetail LevelOfDetail = ModelLevelOfDetail.Automatic;
public CFrame ModelMeshCFrame = new CFrame(); public CFrame ModelMeshCFrame = CFrame.identity;
public SharedString ModelMeshData = SharedString.FromBase64("yuZpQdnvvUBOTYh1jqZ2cA=="); public SharedString ModelMeshData = SharedString.FromBase64("yuZpQdnvvUBOTYh1jqZ2cA==");
public Vector3 ModelMeshSize = new Vector3(); public Vector3 ModelMeshSize = Vector3.zero;
public ModelStreamingMode ModelStreamingMode = ModelStreamingMode.Default; public ModelStreamingMode ModelStreamingMode = ModelStreamingMode.Default;
public bool NeedsPivotMigration; public bool NeedsPivotMigration;
public BasePart PrimaryPart; public BasePart PrimaryPart;
@ -3171,7 +3236,7 @@ namespace RobloxFiles
public double DistributedGameTime = 0; public double DistributedGameTime = 0;
public bool ExplicitAutoJoints = true; public bool ExplicitAutoJoints = true;
public float FallenPartsDestroyHeight = -500; public float FallenPartsDestroyHeight = -500;
public Vector3 GlobalWind = new Vector3(); public Vector3 GlobalWind = Vector3.zero;
public float Gravity = 196.2f; public float Gravity = 196.2f;
public HumanoidOnlySetCollisionsOnStateChange HumanoidOnlySetCollisionsOnStateChange = HumanoidOnlySetCollisionsOnStateChange.Default; public HumanoidOnlySetCollisionsOnStateChange HumanoidOnlySetCollisionsOnStateChange = HumanoidOnlySetCollisionsOnStateChange.Default;
public InterpolationThrottlingMode InterpolationThrottling = InterpolationThrottlingMode.Default; public InterpolationThrottlingMode InterpolationThrottling = InterpolationThrottlingMode.Default;
@ -3226,7 +3291,7 @@ namespace RobloxFiles
public class ParticleEmitter : Instance public class ParticleEmitter : Instance
{ {
public Vector3 Acceleration = new Vector3(); public Vector3 Acceleration = Vector3.zero;
public float Brightness = 1; public float Brightness = 1;
public ColorSequence Color = new ColorSequence(1, 1, 1); public ColorSequence Color = new ColorSequence(1, 1, 1);
public float Drag = 0; public float Drag = 0;
@ -3251,7 +3316,7 @@ namespace RobloxFiles
public ParticleEmitterShapeStyle ShapeStyle = ParticleEmitterShapeStyle.Volume; public ParticleEmitterShapeStyle ShapeStyle = ParticleEmitterShapeStyle.Volume;
public NumberSequence Size = new NumberSequence(1); public NumberSequence Size = new NumberSequence(1);
public NumberRange Speed = new NumberRange(5); public NumberRange Speed = new NumberRange(5);
public Vector2 SpreadAngle = new Vector2(); public Vector2 SpreadAngle = Vector2.zero;
public NumberSequence Squash = new NumberSequence(0); public NumberSequence Squash = new NumberSequence(0);
public Content Texture = "rbxasset://textures/particles/sparkles_main.dds"; public Content Texture = "rbxasset://textures/particles/sparkles_main.dds";
public float TimeScale = 1; public float TimeScale = 1;
@ -3334,6 +3399,7 @@ namespace RobloxFiles
public int MaxPlayersInternal = 16; public int MaxPlayersInternal = 16;
public int PreferredPlayersInternal = 0; public int PreferredPlayersInternal = 0;
public float RespawnTime = 5; public float RespawnTime = 5;
public bool UseStrafingAnimations;
} }
public class PluginAction : Instance public class PluginAction : Instance
@ -3405,7 +3471,7 @@ namespace RobloxFiles
public class Pose : PoseBase public class Pose : PoseBase
{ {
public CFrame CFrame = new CFrame(); public CFrame CFrame = CFrame.identity;
[Obsolete] [Obsolete]
public float MaskWeight = 0; public float MaskWeight = 0;
@ -3473,7 +3539,7 @@ namespace RobloxFiles
public bool RequiresLineOfSight = true; public bool RequiresLineOfSight = true;
public LocalizationTable RootLocalizationTable; public LocalizationTable RootLocalizationTable;
public ProximityPromptStyle Style = ProximityPromptStyle.Default; public ProximityPromptStyle Style = ProximityPromptStyle.Default;
public Vector2 UIOffset = new Vector2(); public Vector2 UIOffset = Vector2.zero;
} }
public class ProximityPromptService : Instance public class ProximityPromptService : Instance
@ -3593,7 +3659,7 @@ namespace RobloxFiles
public class RenderingTest : Instance public class RenderingTest : Instance
{ {
public CFrame CFrame = new CFrame(); public CFrame CFrame = CFrame.identity;
public int ComparisonDiffThreshold = 10; public int ComparisonDiffThreshold = 10;
public RenderingTestComparisonMethod ComparisonMethod = RenderingTestComparisonMethod.psnr; public RenderingTestComparisonMethod ComparisonMethod = RenderingTestComparisonMethod.psnr;
public float ComparisonPsnrThreshold = 50; public float ComparisonPsnrThreshold = 50;
@ -3745,6 +3811,14 @@ namespace RobloxFiles
} }
} }
public class ShorelineUpgraderService : Instance
{
public ShorelineUpgraderService()
{
IsService = true;
}
}
public class Sky : Instance public class Sky : Instance
{ {
public bool CelestialBodiesShown = true; public bool CelestialBodiesShown = true;
@ -3809,6 +3883,7 @@ namespace RobloxFiles
public class Sound : Instance public class Sound : Instance
{ {
public float EmitterSize = 10; public float EmitterSize = 10;
public NumberRange LoopRegion = new NumberRange(0, 60000);
public bool Looped; public bool Looped;
[Obsolete] [Obsolete]
@ -3833,6 +3908,8 @@ namespace RobloxFiles
} }
public bool PlayOnRemove; public bool PlayOnRemove;
public NumberRange PlaybackRegion = new NumberRange(0, 60000);
public bool PlaybackRegionsEnabled;
public float PlaybackSpeed = 1; public float PlaybackSpeed = 1;
public bool Playing; public bool Playing;
public RollOffMode RollOffMode = RollOffMode.Inverse; public RollOffMode RollOffMode = RollOffMode.Inverse;
@ -4031,6 +4108,7 @@ namespace RobloxFiles
public NumberRange GameSettingsScaleRangeProportion = new NumberRange(0, 1); public NumberRange GameSettingsScaleRangeProportion = new NumberRange(0, 1);
public NumberRange GameSettingsScaleRangeWidth = new NumberRange(0.7f, 1); public NumberRange GameSettingsScaleRangeWidth = new NumberRange(0.7f, 1);
public float HealthDisplayDistance = 100; public float HealthDisplayDistance = 100;
public HumanoidStateMachineMode HumanoidStateMachineMode = HumanoidStateMachineMode.Default;
public bool LoadCharacterAppearance = true; public bool LoadCharacterAppearance = true;
public LoadCharacterLayeredClothing LoadCharacterLayeredClothing = LoadCharacterLayeredClothing.Default; public LoadCharacterLayeredClothing LoadCharacterLayeredClothing = LoadCharacterLayeredClothing.Default;
public float NameDisplayDistance = 100; public float NameDisplayDistance = 100;
@ -4072,8 +4150,6 @@ namespace RobloxFiles
public string CommitInflightGuid = ""; public string CommitInflightGuid = "";
public int CommitInflightPlaceVersion = 0; public int CommitInflightPlaceVersion = 0;
public bool EnableScriptCollabByDefaultOnLoad; public bool EnableScriptCollabByDefaultOnLoad;
public long SrcPlaceId = 0;
public long SrcUniverseId = 0;
} }
public class StudioDeviceEmulatorService : Instance public class StudioDeviceEmulatorService : Instance
@ -4190,7 +4266,7 @@ namespace RobloxFiles
public Content NormalMap = ""; public Content NormalMap = "";
public Content RoughnessMap = ""; public Content RoughnessMap = "";
public float StudsPerTile = 10; public float StudsPerTile = 10;
public Content TexturePack1 = ""; public Content TexturePack = "";
} }
public class TerrainRegion : Instance public class TerrainRegion : Instance
@ -4244,13 +4320,32 @@ namespace RobloxFiles
public class ChatInputBarConfiguration : TextChatConfigurations public class ChatInputBarConfiguration : TextChatConfigurations
{ {
public Color3 BackgroundColor3 = Color3.FromRGB(25, 27, 29);
public double BackgroundTransparency = 0.2;
public bool Enabled = true; public bool Enabled = true;
public FontFace FontFace = FontFace.FromEnum(Enums.Font.GothamMedium);
public Color3 PlaceholderColor3 = Color3.FromRGB(178, 178, 178);
public TextChannel TargetTextChannel; public TextChannel TargetTextChannel;
public Color3 TextColor3 = new Color3(1, 1, 1);
public long TextSize = 14;
public Color3 TextStrokeColor3 = new Color3();
public double TextStrokeTransparency = 0.5;
} }
public class ChatWindowConfiguration : TextChatConfigurations public class ChatWindowConfiguration : TextChatConfigurations
{ {
public Color3 BackgroundColor3 = Color3.FromRGB(25, 27, 29);
public double BackgroundTransparency = 0.3;
public bool Enabled = true; public bool Enabled = true;
public FontFace FontFace = FontFace.FromEnum(Enums.Font.GothamMedium);
public float HeightScale = 1;
public HorizontalAlignment HorizontalAlignment = HorizontalAlignment.Left;
public Color3 TextColor3 = new Color3(1, 1, 1);
public long TextSize = 14;
public Color3 TextStrokeColor3 = new Color3();
public double TextStrokeTransparency = 0.5;
public VerticalAlignment VerticalAlignment = VerticalAlignment.Top;
public float WidthScale = 1;
} }
public class TextChatMessageProperties : Instance public class TextChatMessageProperties : Instance
@ -4375,7 +4470,7 @@ namespace RobloxFiles
public class UISizeConstraint : UIConstraint public class UISizeConstraint : UIConstraint
{ {
public Vector2 MaxSize = new Vector2(float.MaxValue, float.MaxValue); public Vector2 MaxSize = new Vector2(float.MaxValue, float.MaxValue);
public Vector2 MinSize = new Vector2(); public Vector2 MinSize = Vector2.zero;
} }
public class UITextSizeConstraint : UIConstraint public class UITextSizeConstraint : UIConstraint
@ -4393,7 +4488,7 @@ namespace RobloxFiles
{ {
public ColorSequence Color = new ColorSequence(1, 1, 1); public ColorSequence Color = new ColorSequence(1, 1, 1);
public bool Enabled = true; public bool Enabled = true;
public Vector2 Offset = new Vector2(); public Vector2 Offset = Vector2.zero;
public float Rotation = 0; public float Rotation = 0;
public NumberSequence Transparency = new NumberSequence(0); public NumberSequence Transparency = new NumberSequence(0);
} }
@ -4536,7 +4631,7 @@ namespace RobloxFiles
public class CFrameValue : ValueBase public class CFrameValue : ValueBase
{ {
public CFrame Value = new CFrame(); public CFrame Value = CFrame.identity;
} }
public class Color3Value : ValueBase public class Color3Value : ValueBase
@ -4611,7 +4706,7 @@ namespace RobloxFiles
public class Vector3Value : ValueBase public class Vector3Value : ValueBase
{ {
public Vector3 Value = new Vector3(); public Vector3 Value = Vector3.zero;
} }
public class Vector3Curve : Instance public class Vector3Curve : Instance
@ -4650,6 +4745,14 @@ namespace RobloxFiles
} }
} }
public class VisibilityCheckDispatcher : Instance
{
public VisibilityCheckDispatcher()
{
IsService = true;
}
}
public class Visit : Instance public class Visit : Instance
{ {
public Visit() public Visit()
@ -4678,8 +4781,8 @@ namespace RobloxFiles
public class WeldConstraint : Instance public class WeldConstraint : Instance
{ {
public CFrame CFrame0 = new CFrame(); public CFrame CFrame0 = CFrame.identity;
public CFrame CFrame1 = new CFrame(); public CFrame CFrame1 = CFrame.identity;
public bool Enabled public bool Enabled
{ {

View File

@ -1,5 +1,5 @@
// Auto-generated list of Roblox enums. // Auto-generated list of Roblox enums.
// Updated as of 0.548.0.5480523 // Updated as of 0.554.1.5540506
namespace RobloxFiles.Enums namespace RobloxFiles.Enums
{ {
@ -465,6 +465,14 @@ namespace RobloxFiles.Enums
R15 R15
} }
public enum HumanoidStateMachineMode
{
Default,
Legacy,
NoStateMachine,
LuaStateMachine
}
public enum IKControlType public enum IKControlType
{ {
Transform, Transform,
@ -867,7 +875,8 @@ namespace RobloxFiles.Enums
public enum ModelStreamingMode public enum ModelStreamingMode
{ {
Default, Default,
Atomic Atomic,
Persistent
} }
public enum MouseBehavior public enum MouseBehavior
@ -938,9 +947,9 @@ namespace RobloxFiles.Enums
public enum ParticleFlipbookLayout public enum ParticleFlipbookLayout
{ {
None, None,
TwoByTwo, Grid2x2,
FourByFour, Grid4x4,
EightByEight Grid8x8
} }
public enum ParticleFlipbookMode public enum ParticleFlipbookMode
@ -1087,6 +1096,12 @@ namespace RobloxFiles.Enums
Plugin Plugin
} }
public enum SafeAreaCompatibility
{
None,
FullscreenExtension
}
public enum ScaleType public enum ScaleType
{ {
Stretch, Stretch,
@ -1096,6 +1111,13 @@ namespace RobloxFiles.Enums
Crop Crop
} }
public enum ScreenInsets
{
None,
DeviceSafeInsets,
CoreUISafeInsets
}
public enum ScreenOrientation public enum ScreenOrientation
{ {
LandscapeLeft, LandscapeLeft,

View File

@ -1,5 +1,6 @@
{ {
"Lua.diagnostics.ignore": [ "[lua]": {
"CopyToClipboard" "editor.defaultFormatter": "JohnnyMorganz.stylua",
] "editor.formatOnSave": true
}
} }

Binary file not shown.

View File

@ -1,5 +1,21 @@
--!strict --!strict
local Format: Format = {} local Format: Format = {}
local LegacyFonts = require(script.Parent.LegacyFonts)
local Vector2_consts = table.freeze({
[Vector2.one] = "Vector2.one",
[Vector2.zero] = "Vector2.zero",
[Vector2.xAxis] = "Vector2.xAxis",
[Vector2.yAxis] = "Vector2.yAxis",
})
local Vector3_consts = table.freeze({
[Vector3.one] = "Vector3.one",
[Vector3.zero] = "Vector3.zero",
[Vector3.xAxis] = "Vector3.xAxis",
[Vector3.yAxis] = "Vector3.yAxis",
[Vector3.zAxis] = "Vector3.zAxis",
})
export type FormatFunc = (any) -> string export type FormatFunc = (any) -> string
export type Format = { [string]: FormatFunc } export type Format = { [string]: FormatFunc }
@ -9,7 +25,7 @@ local function flags(flagType: any, enum: Enum): string
local value = 0 local value = 0
for i, item: EnumItem in enum:GetEnumItems() do for i, item: EnumItem in enum:GetEnumItems() do
if (flags :: any)[item.Name] then if flagType[item.Name] then
value += (2 ^ item.Value) value += (2 ^ item.Value)
end end
end end
@ -81,7 +97,7 @@ function Format.Float(value: number): string
return "float.MinValue" return "float.MinValue"
else else
if result:find("%.") then if result:find("%.") then
result = result .. 'f' result = result .. "f"
end end
return result return result
@ -98,7 +114,7 @@ end
function Format.EnumItem(item: EnumItem): string function Format.EnumItem(item: EnumItem): string
local enum = tostring(item.EnumType) local enum = tostring(item.EnumType)
return enum .. '.' .. item.Name return enum .. "." .. item.Name
end end
function Format.BrickColor(brickColor: BrickColor): string function Format.BrickColor(brickColor: BrickColor): string
@ -115,10 +131,10 @@ function Format.Color3(color: Color3): string
local g = Format.Float(color.G) local g = Format.Float(color.G)
local b = Format.Float(color.B) local b = Format.Float(color.B)
local fmt = "%s(%s, %s, %s)"; local fmt = "%s(%s, %s, %s)"
local constructor = "new Color3"; local constructor = "new Color3"
if string.find(r .. g .. b, 'f') then if string.find(r .. g .. b, "f") then
r = Format.Int(color.R * 255) r = Format.Int(color.R * 255)
g = Format.Int(color.G * 255) g = Format.Int(color.G * 255)
b = Format.Int(color.B * 255) b = Format.Int(color.B * 255)
@ -157,8 +173,10 @@ function Format.UDim2(udim2: UDim2): string
end end
function Format.Vector2(v2: Vector2): string function Format.Vector2(v2: Vector2): string
if v2 == Vector2.zero then for const, str in Vector2_consts do
return "new Vector2()" if v2 == const then
return str
end
end end
local x = Format.Float(v2.X) local x = Format.Float(v2.X)
@ -169,8 +187,10 @@ function Format.Vector2(v2: Vector2): string
end end
function Format.Vector3(v3: Vector3): string function Format.Vector3(v3: Vector3): string
if v3 == Vector3.zero then for const, str in Vector3_consts do
return "new Vector3()" if v3 == const then
return str
end
end end
local x = Format.Float(v3.X) local x = Format.Float(v3.X)
@ -183,7 +203,7 @@ end
function Format.CFrame(cf: CFrame): string function Format.CFrame(cf: CFrame): string
if cf == CFrame.identity then if cf == CFrame.identity then
return "new CFrame()" return "CFrame.identity"
end end
if cf.Rotation == CFrame.identity then if cf.Rotation == CFrame.identity then
@ -283,6 +303,13 @@ function Format.SharedString(str: string): string
end end
function Format.FontFace(font: Font): string function Format.FontFace(font: Font): string
local legacyFont = LegacyFonts[tostring(font)]
if legacyFont then
local fmt = "FontFace.FromEnum(Enums.Font.%s)"
return fmt:format(legacyFont.Name)
end
local family = string.format("%q", font.Family) local family = string.format("%q", font.Family)
local args = { family } local args = { family }

View File

@ -0,0 +1,14 @@
--!strict
local LegacyFonts = {} :: {
[string]: Enum.Font,
}
for i, font: Enum.Font in Enum.Font:GetEnumItems() do
if font ~= Enum.Font.Unknown then
local fontFace = Font.fromEnum(font)
LegacyFonts[tostring(fontFace)] = font
end
end
return table.freeze(LegacyFonts)

File diff suppressed because it is too large Load Diff

View File

@ -182,8 +182,7 @@ local function createProperty(propName, propType)
name = data[2] name = data[2]
end end
return return {
{
Name = propName, Name = propName,
Serialization = { Serialization = {
@ -302,6 +301,7 @@ local function generateClasses()
local enumMap = { local enumMap = {
Axis = true, Axis = true,
Font = true,
FontSize = true, FontSize = true,
FontStyle = true, FontStyle = true,
FontWeight = true, FontWeight = true,
@ -389,6 +389,8 @@ local function generateClasses()
if not classTags.Service then if not classTags.Service then
return tostring(object) return tostring(object)
end end
return nil
end) end)
if not noSecurityCheck then if not noSecurityCheck then
@ -519,6 +521,10 @@ local function generateClasses()
table.sort(diffNames) table.sort(diffNames)
for i, name in ipairs(diffNames) do for i, name in ipairs(diffNames) do
if redirectProps[name] then
continue
end
local value = diffProps[name] local value = diffProps[name]
local valueType = typeof(value) local valueType = typeof(value)
local formatFunc = getFormatFunction(valueType) local formatFunc = getFormatFunction(valueType)
@ -671,7 +677,7 @@ local function generateClasses()
end) end)
end end
elseif category == "Enum" then elseif category == "Enum" then
local enum = Enum[valueType] local enum = (Enum :: any)[valueType]
local lowestId = math.huge local lowestId = math.huge
local lowest local lowest

View File

@ -1 +1 @@
{"name":"GenerateApiDump","className":"Script","filePaths":["GenerateApiDump\\init.server.lua","default.project.json"],"children":[{"name":"Formatting","className":"ModuleScript","filePaths":["GenerateApiDump\\Formatting.lua"]},{"name":"PropertyPatches","className":"ModuleScript","filePaths":["GenerateApiDump\\PropertyPatches.lua"]}]} {"name":"GenerateApiDump","className":"Script","filePaths":["GenerateApiDump\\init.server.lua","default.project.json"],"children":[{"name":"Formatting","className":"ModuleScript","filePaths":["GenerateApiDump\\Formatting.lua"]},{"name":"LegacyFonts","className":"ModuleScript","filePaths":["GenerateApiDump\\LegacyFonts.lua"]},{"name":"PropertyPatches","className":"ModuleScript","filePaths":["GenerateApiDump\\PropertyPatches.lua"]}]}

View File

@ -43,18 +43,37 @@
<Reference Include="LZ4, Version=1.0.15.93, Culture=neutral, PublicKeyToken=62e1b5ec1eec9bdd, processorArchitecture=MSIL"> <Reference Include="LZ4, Version=1.0.15.93, Culture=neutral, PublicKeyToken=62e1b5ec1eec9bdd, processorArchitecture=MSIL">
<HintPath>packages\lz4net.1.0.15.93\lib\net4-client\LZ4.dll</HintPath> <HintPath>packages\lz4net.1.0.15.93\lib\net4-client\LZ4.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" /> <Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath> <HintPath>packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="ZstdSharp, Version=0.6.5.0, Culture=neutral, PublicKeyToken=8d151af33a4ad5cf, processorArchitecture=MSIL">
<HintPath>packages\ZstdSharp.Port.0.6.5\lib\net461\ZstdSharp.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="BinaryFormat\BinaryFileChunk.cs" /> <Compile Include="BinaryFormat\BinaryFileChunk.cs" />

Binary file not shown.

View File

@ -24,7 +24,10 @@ namespace RobloxFiles.Tokens
var styleNode = node["Style"]; var styleNode = node["Style"];
Enum.TryParse(styleNode.InnerText, out FontStyle style); Enum.TryParse(styleNode.InnerText, out FontStyle style);
prop.Value = new FontFace(family, weight, style); var cachedFaceNode = node["CachedFaceId"];
var cachedFaceId = cachedFaceNode?.InnerText;
prop.Value = new FontFace(family, weight, style, cachedFaceId);
return true; return true;
} }
catch catch
@ -77,13 +80,14 @@ namespace RobloxFiles.Tokens
var style = (byte)value.Style; var style = (byte)value.Style;
var family = value.Family; var family = value.Family;
var writer = attribute.Writer; var cachedFaceId = value.CachedFaceId;
var writer = attribute.Writer;
writer.Write(weight); writer.Write(weight);
writer.Write(style); writer.Write(style);
attribute.WriteString(family); attribute.WriteString(family);
attribute.WriteInt(0); // Reserved attribute.WriteString(cachedFaceId);
} }
} }
} }

View File

@ -109,7 +109,7 @@ namespace RobloxFiles.Utility
return value; return value;
} }
public static Font GetFont(FontFace face) public static Font GetLegacyFont(FontFace face)
{ {
var result = Font.Unknown; var result = Font.Unknown;
@ -122,5 +122,10 @@ namespace RobloxFiles.Utility
return result; return result;
} }
public static bool TryGetFontFace(Font font, out FontFace face)
{
return FontFaces.TryGetValue(font, out face);
}
} }
} }

View File

@ -4,5 +4,11 @@
<package id="Fody" version="6.0.0" targetFramework="net472" developmentDependency="true" /> <package id="Fody" version="6.0.0" targetFramework="net472" developmentDependency="true" />
<package id="Konscious.Security.Cryptography.Blake2" version="1.0.9" targetFramework="net472" /> <package id="Konscious.Security.Cryptography.Blake2" version="1.0.9" targetFramework="net472" />
<package id="lz4net" version="1.0.15.93" targetFramework="net472" /> <package id="lz4net" version="1.0.15.93" targetFramework="net472" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" /> <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
<package id="ZstdSharp.Port" version="0.6.5" targetFramework="net472" />
</packages> </packages>