From 0ca6738cb919a005be15b69c1e2b5034a0d2d52f Mon Sep 17 00:00:00 2001 From: CloneTrooper1019 Date: Fri, 14 Aug 2020 12:35:27 -0500 Subject: [PATCH] 0.443.0.409841 --- Generated/Classes.cs | 659 ++++---- Generated/Enums.cs | 1631 +------------------ Plugins/GenerateApiDump.rbxm | Bin 14315 -> 14683 bytes Plugins/GenerateApiDump/Formatting.lua | 90 +- Plugins/GenerateApiDump/PropertyPatches.lua | 8 +- Plugins/GenerateApiDump/init.server.lua | 101 +- RobloxFileFormat.csproj | 22 + RobloxFileFormat.dll | Bin 373248 -> 344576 bytes Utility/Formatting.cs | 71 +- Utility/ImplicitMember.cs | 4 +- XmlFormat/XmlPropertyTokens.cs | 26 +- packages.config | 5 + 12 files changed, 512 insertions(+), 2105 deletions(-) diff --git a/Generated/Classes.cs b/Generated/Classes.cs index 62dede6..7e2eb27 100644 --- a/Generated/Classes.cs +++ b/Generated/Classes.cs @@ -1,5 +1,5 @@ // Auto-generated list of creatable Roblox classes. -// Updated as of 0.442.0.409197 +// Updated as of 0.443.0.409841 using System; @@ -7,7 +7,11 @@ using RobloxFiles.DataTypes; using RobloxFiles.Enums; using RobloxFiles.Utility; -#pragma warning disable IDE1006 // Suppress warnings about camelCase. +#pragma warning disable CA1041 // Provide ObsoleteAttribute message +#pragma warning disable CA1051 // Do not declare visible instance fields +#pragma warning disable CA1707 // Identifiers should not contain underscores +#pragma warning disable CA1716 // Identifiers should not match keywords +#pragma warning disable IDE1006 // Naming Styles namespace RobloxFiles { @@ -89,15 +93,15 @@ namespace RobloxFiles public Color3 Color = Color3.FromRGB(199, 170, 107); public Color3 Decay = Color3.FromRGB(92, 60, 13); public float Density = 0.395f; - public float Glare = 0; - public float Haze = 0; - public float Offset = 0; + public float Glare; + public float Haze; + public float Offset; } public class Attachment : Instance { public CFrame CFrame = new CFrame(); - public bool Visible = false; + public bool Visible; } public class Bone : Attachment @@ -115,7 +119,7 @@ namespace RobloxFiles public class HopperBin : BackpackItem { - public bool Active = false; + public bool Active; public BinType BinType = BinType.Script; } @@ -124,7 +128,7 @@ namespace RobloxFiles public bool CanBeDropped = true; public bool Enabled = true; public CFrame Grip = new CFrame(); - public bool ManualActivationOnly = false; + public bool ManualActivationOnly; public bool RequiresHandle = true; public string ToolTip = ""; } @@ -153,7 +157,7 @@ namespace RobloxFiles IsService = true; } - public GuiObject SelectionImageObject = null; + public GuiObject SelectionImageObject; } public class StarterGui : BasePlayerGui @@ -172,15 +176,15 @@ namespace RobloxFiles public class Beam : Instance { - public Attachment Attachment0 = null; - public Attachment Attachment1 = null; + public Attachment Attachment0; + public Attachment Attachment1; public ColorSequence Color = new ColorSequence(1, 1, 1); - public float CurveSize0 = 0; - public float CurveSize1 = 0; + public float CurveSize0; + public float CurveSize1; public bool Enabled = true; - public bool FaceCamera = false; - public float LightEmission = 0; - public float LightInfluence = 0; + public bool FaceCamera; + public float LightEmission; + public float LightInfluence; public int Segments = 10; public Content Texture = ""; public float TextureLength = 1; @@ -189,7 +193,7 @@ namespace RobloxFiles public NumberSequence Transparency = new NumberSequence(0.5f); public float Width0 = 1; public float Width1 = 1; - public float ZOffset = 0; + public float ZOffset; } public class BindableEvent : Instance @@ -328,7 +332,7 @@ namespace RobloxFiles public float MaxSpeed = 30; public float MaxThrust = 4000; public Vector3 MaxTorque = new Vector3(400000, 400000, 0); - public BasePart Target = null; + public BasePart Target; public Vector3 TargetOffset = new Vector3(); public float TargetRadius = 4; public float ThrustD = 0.001f; @@ -380,7 +384,7 @@ namespace RobloxFiles public class Camera : Instance { public CFrame CFrame = new CFrame(0, 20, 20, 1, 0, 0, 0, 0.70711f, 0.70711f, 0, -0.70711f, 0.70711f); - public Instance CameraSubject = null; + public Instance CameraSubject; public CameraType CameraType = CameraType.Fixed; [Obsolete] @@ -420,7 +424,7 @@ namespace RobloxFiles public BrickColor HeadColor { get { return BrickColor.FromColor3(HeadColor3); } - set { HeadColor3 = value.Color; } + set { HeadColor3 = value?.Color; } } public Color3 HeadColor3 = Color3.FromRGB(253, 234, 141); @@ -428,7 +432,7 @@ namespace RobloxFiles public BrickColor LeftArmColor { get { return BrickColor.FromColor3(LeftArmColor3); } - set { LeftArmColor3 = value.Color; } + set { LeftArmColor3 = value?.Color; } } public Color3 LeftArmColor3 = Color3.FromRGB(253, 234, 141); @@ -436,7 +440,7 @@ namespace RobloxFiles public BrickColor LeftLegColor { get { return BrickColor.FromColor3(LeftLegColor3); } - set { LeftLegColor3 = value.Color; } + set { LeftLegColor3 = value?.Color; } } public Color3 LeftLegColor3 = Color3.FromRGB(13, 105, 172); @@ -444,7 +448,7 @@ namespace RobloxFiles public BrickColor RightArmColor { get { return BrickColor.FromColor3(RightArmColor3); } - set { RightArmColor3 = value.Color; } + set { RightArmColor3 = value?.Color; } } public Color3 RightArmColor3 = Color3.FromRGB(253, 234, 141); @@ -452,7 +456,7 @@ namespace RobloxFiles public BrickColor RightLegColor { get { return BrickColor.FromColor3(RightLegColor3); } - set { RightLegColor3 = value.Color; } + set { RightLegColor3 = value?.Color; } } public Color3 RightLegColor3 = Color3.FromRGB(13, 105, 172); @@ -460,7 +464,7 @@ namespace RobloxFiles public BrickColor TorsoColor { get { return BrickColor.FromColor3(TorsoColor3); } - set { TorsoColor3 = value.Color; } + set { TorsoColor3 = value?.Color; } } public Color3 TorsoColor3 = Color3.FromRGB(40, 127, 71); @@ -468,10 +472,10 @@ namespace RobloxFiles public class CharacterMesh : CharacterAppearance { - public long BaseTextureId = 0; + public long BaseTextureId; public BodyPart BodyPart = BodyPart.Head; - public long MeshId = 0; - public long OverlayTextureId = 0; + public long MeshId; + public long OverlayTextureId; } public abstract class Clothing : CharacterAppearance @@ -507,7 +511,7 @@ namespace RobloxFiles IsService = true; } - public bool BubbleChatEnabled = false; + public bool BubbleChatEnabled; public bool LoadDefaultChat = true; } @@ -531,11 +535,11 @@ namespace RobloxFiles public abstract class Constraint : Instance { - public Attachment Attachment0 = null; - public Attachment Attachment1 = null; + public Attachment Attachment0; + public Attachment Attachment1; public BrickColor Color = BrickColor.FromNumber(23); public bool Enabled = true; - public bool Visible = false; + public bool Visible; } public class AlignOrientation : Constraint @@ -543,37 +547,37 @@ namespace RobloxFiles public AlignType AlignType = AlignType.Parallel; public float MaxAngularVelocity = float.MaxValue; public float MaxTorque = 10000; - public bool PrimaryAxisOnly = false; - public bool ReactionTorqueEnabled = false; + public bool PrimaryAxisOnly; + public bool ReactionTorqueEnabled; public float Responsiveness = 10; - public bool RigidityEnabled = false; + public bool RigidityEnabled; } public class AlignPosition : Constraint { - public bool ApplyAtCenterOfMass = false; + public bool ApplyAtCenterOfMass; public float MaxForce = 10000; public float MaxVelocity = float.MaxValue; - public bool ReactionForceEnabled = false; + public bool ReactionForceEnabled; public float Responsiveness = 10; - public bool RigidityEnabled = false; + public bool RigidityEnabled; } public class AngularVelocity : Constraint { public Vector3 AngularVelocity_ = new Vector3(); - public float MaxTorque = 0; - public bool ReactionTorqueEnabled = false; + public float MaxTorque; + public bool ReactionTorqueEnabled; public ActuatorRelativeTo RelativeTo = ActuatorRelativeTo.World; } public class BallSocketConstraint : Constraint { - public bool LimitsEnabled = false; - public float MaxFrictionTorqueXml = 0; + public bool LimitsEnabled; + public float MaxFrictionTorqueXml; public float Radius = 0.15f; - public float Restitution = 0; - public bool TwistLimitsEnabled = false; + public float Restitution; + public bool TwistLimitsEnabled; public float TwistLowerAngle = -45; public float TwistUpperAngle = 45; public float UpperAngle = 45; @@ -582,26 +586,26 @@ namespace RobloxFiles public class HingeConstraint : Constraint { public ActuatorType ActuatorType = ActuatorType.None; - public float AngularSpeed = 0; - public float AngularVelocity = 0; - public bool LimitsEnabled = false; + public float AngularSpeed; + public float AngularVelocity; + public bool LimitsEnabled; public float LowerAngle = -45; public float MotorMaxAcceleration = float.MaxValue; - public float MotorMaxTorque = 0; + public float MotorMaxTorque; public float Radius = 0.15f; - public float Restitution = 0; - public float ServoMaxTorque = 0; - public float TargetAngle = 0; + public float Restitution; + public float ServoMaxTorque; + public float TargetAngle; public float UpperAngle = 45; } public class LineForce : Constraint { - public bool ApplyAtCenterOfMass = false; - public bool InverseSquareLaw = false; + public bool ApplyAtCenterOfMass; + public bool InverseSquareLaw; public float Magnitude = 1000; public float MaxForce = float.MaxValue; - public bool ReactionForceEnabled = false; + public bool ReactionForceEnabled; } public class RodConstraint : Constraint @@ -613,40 +617,40 @@ namespace RobloxFiles public class RopeConstraint : Constraint { public float Length = 5; - public float Restitution = 0; + public float Restitution; public float Thickness = 0.1f; } public abstract class SlidingBallConstraint : Constraint { public ActuatorType ActuatorType = ActuatorType.None; - public bool LimitsEnabled = false; - public float LowerLimit = 0; + public bool LimitsEnabled; + public float LowerLimit; public float MotorMaxAcceleration = float.MaxValue; - public float MotorMaxForce = 0; - public float Restitution = 0; - public float ServoMaxForce = 0; + public float MotorMaxForce; + public float Restitution; + public float ServoMaxForce; public float Size = 0.15f; - public float Speed = 0; - public float TargetPosition = 0; + public float Speed; + public float TargetPosition; public float UpperLimit = 5; - public float Velocity = 0; + public float Velocity; } public class CylindricalConstraint : SlidingBallConstraint { public ActuatorType AngularActuatorType = ActuatorType.None; - public bool AngularLimitsEnabled = false; - public float AngularRestitution = 0; - public float AngularSpeed = 0; - public float AngularVelocity = 0; - public float InclinationAngle = 0; + public bool AngularLimitsEnabled; + public float AngularRestitution; + public float AngularSpeed; + public float AngularVelocity; + public float InclinationAngle; public float LowerAngle = -45; public float MotorMaxAngularAcceleration = float.MaxValue; - public float MotorMaxTorque = 0; - public bool RotationAxisVisible = false; - public float ServoMaxTorque = 0; - public float TargetAngle = 0; + public float MotorMaxTorque; + public bool RotationAxisVisible; + public float ServoMaxTorque; + public float TargetAngle; public float UpperAngle = 45; } @@ -657,14 +661,14 @@ namespace RobloxFiles public class SpringConstraint : Constraint { public float Coils = 3; - public float Damping = 0; + public float Damping; public float FreeLength = 1; - public bool LimitsEnabled = false; + public bool LimitsEnabled; public float MaxForce = float.MaxValue; public float MaxLength = 5; - public float MinLength = 0; + public float MinLength; public float Radius = 0.4f; - public float Stiffness = 0; + public float Stiffness; public float Thickness = 0.1f; } @@ -676,7 +680,7 @@ namespace RobloxFiles public class VectorForce : Constraint { - public bool ApplyAtCenterOfMass = false; + public bool ApplyAtCenterOfMass; public Vector3 Force = new Vector3(1000, 0, 0); public ActuatorRelativeTo RelativeTo = ActuatorRelativeTo.Attachment0; } @@ -747,12 +751,12 @@ namespace RobloxFiles public class CustomEvent : Instance { - public float PersistedCurrentValue = 0; + public float PersistedCurrentValue; } public class CustomEventReceiver : Instance { - public Instance Source = null; + public Instance Source; } public abstract class DataModelMesh : Instance @@ -766,9 +770,9 @@ namespace RobloxFiles public abstract class BevelMesh : DataModelMesh { - public float Bevel = 0; - public float Bevel_Roundness = 0; - public float Bulge = 0; + public float Bevel; + public float Bevel_Roundness; + public float Bulge; } public class BlockMesh : BevelMesh @@ -800,7 +804,7 @@ namespace RobloxFiles public bool AutomaticRetry = true; [Obsolete] - public bool LegacyNamingScheme = false; + public bool LegacyNamingScheme; } public class Debris : Instance @@ -828,7 +832,7 @@ namespace RobloxFiles public string InitialPrompt = ""; public DialogPurpose Purpose = DialogPurpose.Help; public DialogTone Tone = DialogTone.Neutral; - public float TriggerDistance = 0; + public float TriggerDistance; public Vector3 TriggerOffset = new Vector3(); } @@ -883,16 +887,16 @@ namespace RobloxFiles public float Shiny = 20; [Obsolete] - public float Specular = 0; + public float Specular; public Content Texture = ""; - public float Transparency = 0; + public float Transparency; } public class Texture : Decal { - public float OffsetStudsU = 0; - public float OffsetStudsV = 0; + public float OffsetStudsU; + public float OffsetStudsV; public float StudsPerTileU = 2; public float StudsPerTileV = 2; } @@ -988,7 +992,7 @@ namespace RobloxFiles public class FunctionalTest : Instance { public string Description = "?"; - public bool HasMigratedSettingsToTestService = false; + public bool HasMigratedSettingsToTestService; } public class GamePassService : Instance @@ -1038,48 +1042,48 @@ namespace RobloxFiles set { AutoLocalize = value; } } - public LocalizationTable RootLocalizationTable = null; + public LocalizationTable RootLocalizationTable; } public abstract class GuiObject : GuiBase2d { - public bool Active = false; + public bool Active; public Vector2 AnchorPoint = new Vector2(); [Obsolete] public BrickColor BackgroundColor { get { return BrickColor.FromColor3(BackgroundColor3); } - set { BackgroundColor3 = value.Color; } + set { BackgroundColor3 = value?.Color; } } public Color3 BackgroundColor3 = Color3.FromRGB(163, 162, 165); - public float BackgroundTransparency = 0; + public float BackgroundTransparency; [Obsolete] public BrickColor BorderColor { get { return BrickColor.FromColor3(BorderColor3); } - set { BorderColor3 = value.Color; } + set { BorderColor3 = value?.Color; } } public Color3 BorderColor3 = Color3.FromRGB(27, 42, 53); public BorderMode BorderMode = BorderMode.Outline; public int BorderSizePixel = 1; - public bool ClipsDescendants = false; + public bool ClipsDescendants; [Obsolete] - public bool Draggable = false; + public bool Draggable; - public int LayoutOrder = 0; - public GuiObject NextSelectionDown = null; - public GuiObject NextSelectionLeft = null; - public GuiObject NextSelectionRight = null; - public GuiObject NextSelectionUp = null; + public int LayoutOrder; + public GuiObject NextSelectionDown; + public GuiObject NextSelectionLeft; + public GuiObject NextSelectionRight; + public GuiObject NextSelectionUp; public UDim2 Position = new UDim2(); - public float Rotation = 0; - public bool Selectable = false; - public GuiObject SelectionImageObject = null; + public float Rotation; + public bool Selectable; + public GuiObject SelectionImageObject; public UDim2 Size = new UDim2(); public SizeConstraint SizeConstraint = SizeConstraint.RelativeXY; @@ -1101,8 +1105,8 @@ namespace RobloxFiles public abstract class GuiButton : GuiObject { public bool AutoButtonColor = true; - public bool Modal = false; - public bool Selected = false; + public bool Modal; + public bool Selected; public ButtonStyle Style = ButtonStyle.Custom; } @@ -1113,7 +1117,7 @@ namespace RobloxFiles public Color3 ImageColor3 = new Color3(1, 1, 1); public Vector2 ImageRectOffset = new Vector2(); public Vector2 ImageRectSize = new Vector2(); - public float ImageTransparency = 0; + public float ImageTransparency; public Content PressedImage = ""; public ScaleType ScaleType = ScaleType.Stretch; public Rect SliceCenter = new Rect(new Vector2(), new Vector2()); @@ -1133,22 +1137,22 @@ namespace RobloxFiles } public float LineHeight = 1; - public bool RichText = false; + public bool RichText; public string Text = "Button"; [Obsolete] public BrickColor TextColor { get { return BrickColor.FromColor3(TextColor3); } - set { TextColor3 = value.Color; } + set { TextColor3 = value?.Color; } } public Color3 TextColor3 = Color3.FromRGB(27, 42, 53); - public bool TextScaled = false; + public bool TextScaled; public float TextSize = 8; public Color3 TextStrokeColor3 = new Color3(); public float TextStrokeTransparency = 1; - public float TextTransparency = 0; + public float TextTransparency; public TextTruncate TextTruncate = TextTruncate.None; [Obsolete] @@ -1158,7 +1162,7 @@ namespace RobloxFiles set { TextWrapped = value; } } - public bool TextWrapped = false; + public bool TextWrapped; public TextXAlignment TextXAlignment = TextXAlignment.Center; public TextYAlignment TextYAlignment = TextYAlignment.Center; @@ -1184,7 +1188,7 @@ namespace RobloxFiles public Color3 ImageColor3 = new Color3(1, 1, 1); public Vector2 ImageRectOffset = new Vector2(); public Vector2 ImageRectSize = new Vector2(); - public float ImageTransparency = 0; + public float ImageTransparency; public ScaleType ScaleType = ScaleType.Stretch; public Rect SliceCenter = new Rect(new Vector2(), new Vector2()); public float SliceScale = 1; @@ -1203,22 +1207,22 @@ namespace RobloxFiles } public float LineHeight = 1; - public bool RichText = false; + public bool RichText; public string Text = "Label"; [Obsolete] public BrickColor TextColor { get { return BrickColor.FromColor3(TextColor3); } - set { TextColor3 = value.Color; } + set { TextColor3 = value?.Color; } } public Color3 TextColor3 = Color3.FromRGB(27, 42, 53); - public bool TextScaled = false; + public bool TextScaled; public float TextSize = 8; public Color3 TextStrokeColor3 = new Color3(); public float TextStrokeTransparency = 1; - public float TextTransparency = 0; + public float TextTransparency; public TextTruncate TextTruncate = TextTruncate.None; [Obsolete] @@ -1228,7 +1232,7 @@ namespace RobloxFiles set { TextWrapped = value; } } - public bool TextWrapped = false; + public bool TextWrapped; public TextXAlignment TextXAlignment = TextXAlignment.Center; public TextYAlignment TextYAlignment = TextYAlignment.Center; @@ -1253,7 +1257,7 @@ namespace RobloxFiles public ScrollBarInset HorizontalScrollBarInset = ScrollBarInset.None; public Content MidImage = "rbxasset://textures/ui/Scroll/scroll-middle.png"; public Color3 ScrollBarImageColor3 = new Color3(1, 1, 1); - public float ScrollBarImageTransparency = 0; + public float ScrollBarImageTransparency; public int ScrollBarThickness = 12; public ScrollingDirection ScrollingDirection = ScrollingDirection.XY; public bool ScrollingEnabled = true; @@ -1275,10 +1279,10 @@ namespace RobloxFiles } public float LineHeight = 1; - public bool MultiLine = false; + public bool MultiLine; public Color3 PlaceholderColor3 = Color3.FromRGB(178, 178, 178); public string PlaceholderText = ""; - public bool RichText = false; + public bool RichText; public bool ShowNativeInput = true; public string Text = "TextBox"; @@ -1286,16 +1290,16 @@ namespace RobloxFiles public BrickColor TextColor { get { return BrickColor.FromColor3(TextColor3); } - set { TextColor3 = value.Color; } + set { TextColor3 = value?.Color; } } public Color3 TextColor3 = Color3.FromRGB(27, 42, 53); public bool TextEditable = true; - public bool TextScaled = false; + public bool TextScaled; public float TextSize = 8; public Color3 TextStrokeColor3 = new Color3(); public float TextStrokeTransparency = 1; - public float TextTransparency = 0; + public float TextTransparency; public TextTruncate TextTruncate = TextTruncate.None; [Obsolete] @@ -1305,7 +1309,7 @@ namespace RobloxFiles set { TextWrapped = value; } } - public bool TextWrapped = false; + public bool TextWrapped; public TextXAlignment TextXAlignment = TextXAlignment.Center; public TextYAlignment TextYAlignment = TextYAlignment.Center; @@ -1323,9 +1327,9 @@ namespace RobloxFiles public class VideoFrame : GuiObject { - public bool Looped = false; - public bool Playing = false; - public double TimePosition = 0; + public bool Looped; + public bool Playing; + public double TimePosition; public Content Video = ""; public float Volume = 1; } @@ -1336,7 +1340,7 @@ namespace RobloxFiles public CFrame CameraCFrame = new CFrame(); public float CameraFieldOfView = 70; public Color3 ImageColor3 = new Color3(1, 1, 1); - public float ImageTransparency = 0; + public float ImageTransparency; public Color3 LightColor = Color3.FromRGB(140, 140, 140); public Vector3 LightDirection = new Vector3(-1, -1, -1); } @@ -1350,18 +1354,18 @@ namespace RobloxFiles public class BillboardGui : LayerCollector { - public bool Active = false; - public Instance Adornee = null; - public bool AlwaysOnTop = false; - public bool ClipsDescendants = false; - public float DistanceLowerLimit = 0; - public float DistanceStep = 0; + public bool Active; + public Instance Adornee; + public bool AlwaysOnTop; + public bool ClipsDescendants; + public float DistanceLowerLimit; + public float DistanceStep; public float DistanceUpperLimit = -1; public Vector3 ExtentsOffset = new Vector3(); public Vector3 ExtentsOffsetWorldSpace = new Vector3(); - public float LightInfluence = 0; + public float LightInfluence; public float MaxDistance = float.MaxValue; - public Instance PlayerToHideFrom = null; + public Instance PlayerToHideFrom; public UDim2 Size = new UDim2(); public Vector2 SizeOffset = new Vector2(); public Vector3 StudsOffset = new Vector3(); @@ -1370,8 +1374,8 @@ namespace RobloxFiles public class ScreenGui : LayerCollector { - public int DisplayOrder = 0; - public bool IgnoreGuiInset = false; + public int DisplayOrder; + public bool IgnoreGuiInset; } public class GuiMain : ScreenGui @@ -1381,16 +1385,16 @@ namespace RobloxFiles public class SurfaceGui : LayerCollector { public bool Active = true; - public Instance Adornee = null; - public bool AlwaysOnTop = false; + public Instance Adornee; + public bool AlwaysOnTop; public Vector2 CanvasSize = new Vector2(800, 600); - public bool ClipsDescendants = false; + public bool ClipsDescendants; public NormalId Face = NormalId.Front; - public float LightInfluence = 0; + public float LightInfluence; public float PixelsPerStud = 50; public SurfaceGuiSizingMode SizingMode = SurfaceGuiSizingMode.FixedSize; - public float ToolPunchThroughDistance = 0; - public float ZOffset = 0; + public float ToolPunchThroughDistance; + public float ZOffset; } public abstract class GuiBase3d : GuiBase @@ -1399,29 +1403,29 @@ namespace RobloxFiles public BrickColor Color { get { return BrickColor.FromColor3(Color3); } - set { Color3 = value.Color; } + set { Color3 = value?.Color; } } public Color3 Color3 = Color3.FromRGB(13, 105, 172); - public float Transparency = 0; + public float Transparency; public bool Visible = true; } public class FloorWire : GuiBase3d { - public float CycleOffset = 0; - public BasePart From = null; + public float CycleOffset; + public BasePart From; public float StudsBetweenTextures = 4; public Content Texture = ""; public Vector2 TextureSize = new Vector2(1, 1); - public BasePart To = null; + public BasePart To; public float Velocity = 2; public float WireRadius = 0.0625f; } public abstract class InstanceAdornment : GuiBase3d { - public Instance Adornee = null; + public Instance Adornee; } public class SelectionBox : InstanceAdornment @@ -1432,7 +1436,7 @@ namespace RobloxFiles public BrickColor SurfaceColor { get { return BrickColor.FromColor3(SurfaceColor3); } - set { SurfaceColor3 = value.Color; } + set { SurfaceColor3 = value?.Color; } } public Color3 SurfaceColor3 = Color3.FromRGB(13, 105, 172); @@ -1441,12 +1445,12 @@ namespace RobloxFiles public abstract class PVAdornment : GuiBase3d { - public PVInstance Adornee = null; + public PVInstance Adornee; } public abstract class HandleAdornment : PVAdornment { - public bool AlwaysOnTop = false; + public bool AlwaysOnTop; public CFrame CFrame = new CFrame(); public Vector3 SizeRelativeOffset = new Vector3(); public int ZIndex = -1; @@ -1467,7 +1471,7 @@ namespace RobloxFiles { public float Angle = 360; public float Height = 1; - public float InnerRadius = 0; + public float InnerRadius; public float Radius = 1; } @@ -1498,7 +1502,7 @@ namespace RobloxFiles public BrickColor SurfaceColor { get { return BrickColor.FromColor3(SurfaceColor3); } - set { SurfaceColor3 = value.Color; } + set { SurfaceColor3 = value?.Color; } } public Color3 SurfaceColor3 = Color3.FromRGB(13, 105, 172); @@ -1507,7 +1511,7 @@ namespace RobloxFiles public abstract class PartAdornment : GuiBase3d { - public BasePart Adornee = null; + public BasePart Adornee; } public abstract class HandlesBase : PartAdornment @@ -1532,12 +1536,12 @@ namespace RobloxFiles public abstract class SelectionLasso : GuiBase3d { - public Humanoid Humanoid = null; + public Humanoid Humanoid; } public class SelectionPartLasso : SelectionLasso { - public BasePart Part = null; + public BasePart Part; } public class SelectionPointLasso : SelectionLasso @@ -1555,7 +1559,7 @@ namespace RobloxFiles public bool AutoSelectGuiEnabled = true; public bool CoreGuiNavigationEnabled = true; public bool GuiNavigationEnabled = true; - public GuiObject SelectedObject = null; + public GuiObject SelectedObject; } public class HapticService : Instance @@ -1581,7 +1585,7 @@ namespace RobloxFiles IsService = true; } - public bool HttpEnabled = false; + public bool HttpEnabled; } public class Humanoid : Instance @@ -1603,7 +1607,7 @@ namespace RobloxFiles public float HealthDisplayDistance = 100; public HumanoidHealthDisplayType HealthDisplayType = HumanoidHealthDisplayType.DisplayWhenDamaged; public float Health_XML = 100; - public float HipHeight = 0; + public float HipHeight; public Vector3 InternalBodyScale = new Vector3(1, 1, 1); public float InternalHeadScale = 1; public float JumpHeight = 7.2f; @@ -1629,42 +1633,42 @@ namespace RobloxFiles { public string BackAccessory = ""; public float BodyTypeScale = 0.3f; - public long ClimbAnimation = 0; + public long ClimbAnimation; public float DepthScale = 1; public string EmotesDataInternal = ""; public string EquippedEmotesDataInternal = ""; - public long Face = 0; + public long Face; public string FaceAccessory = ""; - public long FallAnimation = 0; + public long FallAnimation; public string FrontAccessory = ""; - public long GraphicTShirt = 0; + public long GraphicTShirt; public string HairAccessory = ""; public string HatAccessory = ""; - public long Head = 0; + public long Head; public Color3 HeadColor = new Color3(); public float HeadScale = 1; public float HeightScale = 1; - public long IdleAnimation = 0; - public long JumpAnimation = 0; - public long LeftArm = 0; + public long IdleAnimation; + public long JumpAnimation; + public long LeftArm; public Color3 LeftArmColor = new Color3(); - public long LeftLeg = 0; + public long LeftLeg; public Color3 LeftLegColor = new Color3(); public string NeckAccessory = ""; - public long Pants = 0; + public long Pants; public float ProportionScale = 1; - public long RightArm = 0; + public long RightArm; public Color3 RightArmColor = new Color3(); - public long RightLeg = 0; + public long RightLeg; public Color3 RightLegColor = new Color3(); - public long RunAnimation = 0; - public long Shirt = 0; + public long RunAnimation; + public long Shirt; public string ShouldersAccessory = ""; - public long SwimAnimation = 0; - public long Torso = 0; + public long SwimAnimation; + public long Torso; public Color3 TorsoColor = new Color3(); public string WaistAccessory = ""; - public long WalkAnimation = 0; + public long WalkAnimation; public float WidthScale = 1; } @@ -1675,10 +1679,10 @@ namespace RobloxFiles IsService = true; } - public bool AllowClientInsertModels = false; + public bool AllowClientInsertModels; [Obsolete] - public bool AllowInsertFreeModels = false; + public bool AllowInsertFreeModels; } public abstract class JointInstance : Instance @@ -1687,13 +1691,13 @@ namespace RobloxFiles public CFrame C1 = new CFrame(); public bool Enabled = true; public bool IsAutoJoint = true; - public BasePart Part0 = null; - public BasePart Part1 = null; + public BasePart Part0; + public BasePart Part1; } public abstract class DynamicRotate : JointInstance { - public float BaseAngle = 0; + public float BaseAngle; } public class RotateP : DynamicRotate @@ -1728,8 +1732,8 @@ namespace RobloxFiles public class Motor : JointInstance { - public float DesiredAngle = 0; - public float MaxVelocity = 0; + public float DesiredAngle; + public float MaxVelocity; } public class Motor6D : Motor @@ -1746,10 +1750,10 @@ namespace RobloxFiles public class VelocityMotor : JointInstance { - public float CurrentAngle = 0; - public float DesiredAngle = 0; - public Hole Hole = null; - public float MaxVelocity = 0; + public float CurrentAngle; + public float DesiredAngle; + public Hole Hole; + public float MaxVelocity; } public class Weld : JointInstance @@ -1774,7 +1778,7 @@ namespace RobloxFiles public class Keyframe : Instance { - public float Time = 0; + public float Time; } public class KeyframeMarker : Instance @@ -1810,7 +1814,7 @@ namespace RobloxFiles public float Brightness = 1; public Color3 Color = new Color3(1, 1, 1); public bool Enabled = true; - public bool Shadows = false; + public bool Shadows; } public class PointLight : Light @@ -1843,14 +1847,14 @@ namespace RobloxFiles public float Brightness = 1; public Color3 ColorShift_Bottom = new Color3(); public Color3 ColorShift_Top = new Color3(); - public float EnvironmentDiffuseScale = 0; - public float EnvironmentSpecularScale = 0; - public float ExposureCompensation = 0; + public float EnvironmentDiffuseScale; + public float EnvironmentSpecularScale; + public float ExposureCompensation; public Color3 FogColor = Color3.FromRGB(191, 191, 191); public float FogEnd = 100000; - public float FogStart = 0; + public float FogStart; public float GeographicLatitude = 41.7333f; - public bool GlobalShadows = false; + public bool GlobalShadows; public Color3 OutdoorAmbient = Color3.FromRGB(127, 127, 127); [Obsolete] @@ -1919,7 +1923,7 @@ namespace RobloxFiles public abstract class BaseScript : LuaSourceContainer { - public bool Disabled = false; + public bool Disabled; } public class Script : BaseScript @@ -1990,8 +1994,8 @@ namespace RobloxFiles public class NoCollisionConstraint : Instance { public bool Enabled = true; - public BasePart Part0 = null; - public BasePart Part1 = null; + public BasePart Part0; + public BasePart Part1; } public class NotificationService : Instance @@ -2008,7 +2012,7 @@ namespace RobloxFiles public abstract class BasePart : PVInstance { - public bool Anchored = false; + public bool Anchored; public float BackParamA = -0.5f; public float BackParamB = 0.5f; public SurfaceType BackSurface = SurfaceType.Smooth; @@ -2021,13 +2025,13 @@ namespace RobloxFiles public BrickColor BrickColor { get { return BrickColor.FromColor3(Color); } - set { Color = value.Color; } + set { Color = value?.Color; } } public CFrame CFrame = new CFrame(); public bool CanCollide = true; public bool CastShadow = true; - public int CollisionGroupId = 0; + public int CollisionGroupId; public Color3 Color { @@ -2036,7 +2040,7 @@ namespace RobloxFiles } public Color3uint8 Color3uint8 = Color3.FromRGB(163, 162, 165); - public PhysicalProperties CustomPhysicalProperties = null; + public PhysicalProperties CustomPhysicalProperties; [Obsolete] public float Elasticity = 0.5f; @@ -2052,8 +2056,8 @@ namespace RobloxFiles public float LeftParamB = 0.5f; public SurfaceType LeftSurface = SurfaceType.Smooth; public InputType LeftSurfaceInput = InputType.NoInput; - public bool Locked = false; - public bool Massless = false; + public bool Locked; + public bool Massless; public Material Material = Material.Plastic; public Vector3 Position @@ -2062,12 +2066,12 @@ namespace RobloxFiles set { CFrame.Position = value; } } - public float Reflectance = 0; + public float Reflectance; public float RightParamA = -0.5f; public float RightParamB = 0.5f; public SurfaceType RightSurface = SurfaceType.Smooth; public InputType RightSurfaceInput = InputType.NoInput; - public int RootPriority = 0; + public int RootPriority; public Vector3 RotVelocity = new Vector3(); public Vector3 Size @@ -2080,7 +2084,7 @@ namespace RobloxFiles public float TopParamB = 0.5f; public SurfaceType TopSurface = SurfaceType.Smooth; public InputType TopSurfaceInput = InputType.NoInput; - public float Transparency = 0; + public float Transparency; public Vector3 Velocity = new Vector3(); [Obsolete] @@ -2134,19 +2138,19 @@ namespace RobloxFiles public class Seat : Part { - public bool Disabled = false; + public bool Disabled; } public class SkateboardPlatform : Part { - public int Steer = 0; + public int Steer; public bool StickyWheels = true; - public int Throttle = 0; + public int Throttle; } public class SpawnLocation : Part { - public bool AllowTeamChangeOnTouch = false; + public bool AllowTeamChangeOnTouch; public int Duration = 10; public bool Enabled = true; public bool Neutral = true; @@ -2161,8 +2165,8 @@ namespace RobloxFiles { public string ClusterGrid = ""; public string ClusterGridV2 = ""; - public byte[] ClusterGridV3 = new byte[0]; - public bool Decoration = false; + public byte[] ClusterGridV3 = Array.Empty(); + public bool Decoration; public byte[] MaterialColors = Convert.FromBase64String("AAAAAAAAan8/P39rf2Y/ilY+j35fi21PZmxvZbDqw8faiVpHOi4kHh4lZlw76JxKc3trhHtagcLgc4RKxr21zq2UlJSM"); public byte[] PhysicsGrid = Convert.FromBase64String("AgMAAAAAAAAAAAAAAAA="); public byte[] SmoothGrid = Convert.FromBase64String("AQU="); @@ -2177,15 +2181,15 @@ namespace RobloxFiles { public CollisionFidelity CollisionFidelity = CollisionFidelity.Default; public Vector3 InitialSize = new Vector3(1, 1, 1); - public byte[] LODData = new byte[0]; + public byte[] LODData = Array.Empty(); public SharedString PhysicalConfigData = SharedString.FromBase64("1B2M2Y8AsgTpgAmY7PhCfg=="); - public byte[] PhysicsData = new byte[0]; + public byte[] PhysicsData = Array.Empty(); } public class MeshPart : TriangleMeshPart { - public bool HasJointOffset = false; - public bool HasSkinnedMesh = false; + public bool HasJointOffset; + public bool HasSkinnedMesh; public Vector3 JointOffset = new Vector3(); [Obsolete] @@ -2203,12 +2207,12 @@ namespace RobloxFiles public class PartOperation : TriangleMeshPart { public Content AssetId = ""; - public byte[] ChildData = new byte[0]; + public byte[] ChildData = Array.Empty(); public FormFactor FormFactor = FormFactor.Custom; - public byte[] MeshData = new byte[0]; + public byte[] MeshData = Array.Empty(); public RenderFidelity RenderFidelity = RenderFidelity.Precise; - public float SmoothingAngle = 0; - public bool UsePartColor = false; + public float SmoothingAngle; + public bool UsePartColor; } public class NegateOperation : PartOperation @@ -2232,13 +2236,13 @@ namespace RobloxFiles public class VehicleSeat : BasePart { - public bool Disabled = false; + public bool Disabled; public bool HeadsUpDisplay = true; public float MaxSpeed = 25; - public int Steer = 0; - public float SteerFloat = 0; - public int Throttle = 0; - public float ThrottleFloat = 0; + public int Steer; + public float SteerFloat; + public int Throttle; + public float ThrottleFloat; public float Torque = 10; public float TurnSpeed = 1; } @@ -2247,7 +2251,8 @@ namespace RobloxFiles { public ModelLevelOfDetail LevelOfDetail = ModelLevelOfDetail.Automatic; public CFrame ModelInPrimary = new CFrame(); - public BasePart PrimaryPart = null; + public byte[] ModelMeshData = Array.Empty(); + public BasePart PrimaryPart; } public abstract class WorldRoot : Model @@ -2261,19 +2266,19 @@ namespace RobloxFiles IsService = true; } - public bool AllowThirdPartySales = false; + public bool AllowThirdPartySales; public string CollisionGroups = "Default^0^1"; - public Camera CurrentCamera = null; - public double DistributedGameTime = 0; + public Camera CurrentCamera; + public double DistributedGameTime; public bool ExplicitAutoJoints = true; public float FallenPartsDestroyHeight = -500; - public bool FilteringEnabled = false; + public bool FilteringEnabled; public float Gravity = 196.2f; - public bool StreamingEnabled = false; + public bool StreamingEnabled; public int StreamingMinRadius = 64; public StreamingPauseMode StreamingPauseMode = StreamingPauseMode.Default; public int StreamingTargetRadius = 1024; - public bool TemporaryLegacyPhysicsSolverOverrideStreaming = false; + public bool TemporaryLegacyPhysicsSolverOverrideStreaming; public bool TerrainWeldsFixed = true; } @@ -2283,9 +2288,9 @@ namespace RobloxFiles public class PackageLink : Instance { - public bool AutoUpdate = false; + public bool AutoUpdate; public Content PackageIdSerialize = ""; - public long VersionIdSerialize = 0; + public long VersionIdSerialize; } public class PackageService : Instance @@ -2298,21 +2303,21 @@ namespace RobloxFiles public class PartOperationAsset : Instance { - public byte[] ChildData = new byte[0]; - public byte[] MeshData = new byte[0]; + public byte[] ChildData = Array.Empty(); + public byte[] MeshData = Array.Empty(); } public class ParticleEmitter : Instance { public Vector3 Acceleration = new Vector3(); public ColorSequence Color = new ColorSequence(1, 1, 1); - public float Drag = 0; + public float Drag; public NormalId EmissionDirection = NormalId.Top; public bool Enabled = true; public NumberRange Lifetime = new NumberRange(5, 10); - public float LightEmission = 0; - public float LightInfluence = 0; - public bool LockedToPart = false; + public float LightEmission; + public float LightInfluence; + public bool LockedToPart; public float Rate = 20; public NumberRange RotSpeed = new NumberRange(0); public NumberRange Rotation = new NumberRange(0); @@ -2321,7 +2326,7 @@ namespace RobloxFiles public Vector2 SpreadAngle = new Vector2(); public Content Texture = "rbxasset://textures/particles/sparkles_main.dds"; public NumberSequence Transparency = new NumberSequence(0); - public float VelocityInheritance = 0; + public float VelocityInheritance; [Obsolete] public float VelocitySpread @@ -2330,7 +2335,7 @@ namespace RobloxFiles set { SpreadAngle = new Vector2(value, value); } } - public float ZOffset = 0; + public float ZOffset; } public class PathfindingService : Instance @@ -2341,7 +2346,7 @@ namespace RobloxFiles } [Obsolete] - public float EmptyCutoff = 0; + public float EmptyCutoff; } public class PermissionsService : Instance @@ -2377,7 +2382,7 @@ namespace RobloxFiles public bool CharacterAutoLoads = true; public int MaxPlayersInternal = 16; - public int PreferredPlayersInternal = 0; + public int PreferredPlayersInternal; public float RespawnTime = 5; } @@ -2385,14 +2390,6 @@ namespace RobloxFiles { } - public class PluginDebugService : Instance - { - public PluginDebugService() - { - IsService = true; - } - } - public class PluginGuiService : Instance { public PluginGuiService() @@ -2424,7 +2421,7 @@ namespace RobloxFiles public PoseEasingStyle EasingStyle = PoseEasingStyle.Linear; [Obsolete] - public float MaskWeight = 0; + public float MaskWeight; public float Weight = 1; } @@ -2448,9 +2445,9 @@ namespace RobloxFiles public class ColorCorrectionEffect : PostEffect { - public float Brightness = 0; - public float Contrast = 0; - public float Saturation = 0; + public float Brightness; + public float Contrast; + public float Saturation; public Color3 TintColor = new Color3(1, 1, 1); } @@ -2504,22 +2501,22 @@ namespace RobloxFiles { public bool Browsable = true; public string ClassCategory = ""; - public bool ClientOnly = false; + public bool ClientOnly; public string Constraint = ""; - public bool Deprecated = false; - public bool EditingDisabled = false; - public bool IsBackend = false; + public bool Deprecated; + public bool EditingDisabled; + public bool IsBackend; public string ScriptContext = ""; - public bool ServerOnly = false; - public double UIMaximum = 0; - public double UIMinimum = 0; - public double UINumTicks = 0; + public bool ServerOnly; + public double UIMaximum; + public double UIMinimum; + public double UINumTicks; public string summary = ""; } public class ReflectionMetadataClass : ReflectionMetadataItem { - public int ExplorerImageIndex = 0; + public int ExplorerImageIndex; public int ExplorerOrder = int.MaxValue; public bool Insertable = true; public string PreferredParent = ""; @@ -2562,7 +2559,7 @@ namespace RobloxFiles public string Description = ""; public float FieldOfView = 70; public int QualityLevel = 21; - public bool ShouldSkip = false; + public bool ShouldSkip; public string Ticket = ""; } @@ -2645,7 +2642,7 @@ namespace RobloxFiles IsService = true; } - public bool LoadStringEnabled = false; + public bool LoadStringEnabled; } public class ServerStorage : Instance @@ -2719,7 +2716,7 @@ namespace RobloxFiles public class Sound : Instance { public float EmitterSize = 10; - public bool Looped = false; + public bool Looped; public float MaxDistance { @@ -2741,13 +2738,13 @@ namespace RobloxFiles set { PlaybackSpeed = value; } } - public bool PlayOnRemove = false; + public bool PlayOnRemove; public float PlaybackSpeed = 1; - public bool Playing = false; + public bool Playing; public RollOffMode RollOffMode = RollOffMode.Inverse; - public SoundGroup SoundGroup = null; + public SoundGroup SoundGroup; public Content SoundId = ""; - public double TimePosition = 0; + public double TimePosition; public float Volume = 0.5f; public float xmlRead_MaxDistance_3 = 10000; @@ -2761,7 +2758,7 @@ namespace RobloxFiles public abstract class SoundEffect : Instance { public bool Enabled = true; - public int Priority = 0; + public int Priority; } public class ChorusSoundEffect : SoundEffect @@ -2774,10 +2771,10 @@ namespace RobloxFiles public class CompressorSoundEffect : SoundEffect { public float Attack = 0.1f; - public float GainMakeup = 0; + public float GainMakeup; public float Ratio = 40; public float Release = 0.1f; - public Instance SideChain = null; + public Instance SideChain; public float Threshold = -40; } @@ -2789,14 +2786,14 @@ namespace RobloxFiles public class EchoSoundEffect : SoundEffect { public float Delay = 1; - public float DryLevel = 0; + public float DryLevel; public float Feedback = 0.5f; - public float WetLevel = 0; + public float WetLevel; } public class EqualizerSoundEffect : SoundEffect { - public float HighGain = 0; + public float HighGain; public float LowGain = -20; public float MidGain = -10; } @@ -2819,7 +2816,7 @@ namespace RobloxFiles public float Density = 1; public float Diffusion = 1; public float DryLevel = -6; - public float WetLevel = 0; + public float WetLevel; } public class TremoloSoundEffect : SoundEffect @@ -2844,7 +2841,7 @@ namespace RobloxFiles public ReverbType AmbientReverb = ReverbType.NoReverb; public float DistanceFactor = 3.33f; public float DopplerScale = 1; - public bool RespectFilteringEnabled = false; + public bool RespectFilteringEnabled; public float RolloffScale = 1; } @@ -2907,16 +2904,16 @@ namespace RobloxFiles public DevTouchCameraMovementMode DevTouchCameraMovementMode = DevTouchCameraMovementMode.UserChoice; public DevTouchMovementMode DevTouchMovementMode = DevTouchMovementMode.UserChoice; public bool EnableMouseLockOption = true; - public long GameSettingsAssetIDFace = 0; - public long GameSettingsAssetIDHead = 0; - public long GameSettingsAssetIDLeftArm = 0; - public long GameSettingsAssetIDLeftLeg = 0; - public long GameSettingsAssetIDPants = 0; - public long GameSettingsAssetIDRightArm = 0; - public long GameSettingsAssetIDRightLeg = 0; - public long GameSettingsAssetIDShirt = 0; - public long GameSettingsAssetIDTeeShirt = 0; - public long GameSettingsAssetIDTorso = 0; + public long GameSettingsAssetIDFace; + public long GameSettingsAssetIDHead; + public long GameSettingsAssetIDLeftArm; + public long GameSettingsAssetIDLeftLeg; + public long GameSettingsAssetIDPants; + public long GameSettingsAssetIDRightArm; + public long GameSettingsAssetIDRightLeg; + public long GameSettingsAssetIDShirt; + public long GameSettingsAssetIDTeeShirt; + public long GameSettingsAssetIDTorso; public GameAvatarType GameSettingsAvatar = GameAvatarType.R15; public R15CollisionType GameSettingsR15Collision = R15CollisionType.OuterBox; public NumberRange GameSettingsScaleRangeBodyType = new NumberRange(0, 1); @@ -2953,14 +2950,14 @@ namespace RobloxFiles IsService = true; } - public long CommitInflightAuthorId = 0; + public long CommitInflightAuthorId; public string CommitInflightGuid = ""; - public int CommitInflightPlaceVersion = 0; - public bool EnableScriptCollabByDefaultOnLoad = false; - public bool EnableScriptCollabOnLoad = false; - public bool EnableScriptCollabVersionHistoryOnLoad = false; - public long SrcPlaceId = 0; - public long SrcUniverseId = 0; + public int CommitInflightPlaceVersion; + public bool EnableScriptCollabByDefaultOnLoad; + public bool EnableScriptCollabOnLoad; + public bool EnableScriptCollabVersionHistoryOnLoad; + public long SrcPlaceId; + public long SrcUniverseId; } public class StudioService : Instance @@ -2989,7 +2986,7 @@ namespace RobloxFiles public bool AutoColorCharacters = true; [Obsolete] - public int Score = 0; + public int Score; public BrickColor TeamColor = BrickColor.FromNumber(1); } @@ -3010,14 +3007,14 @@ namespace RobloxFiles } [Obsolete] - public bool CustomizedTeleportUI = false; + public bool CustomizedTeleportUI; } public class TerrainRegion : Instance { public Vector3int16 ExtentsMax = new Vector3int16(); public Vector3int16 ExtentsMin = new Vector3int16(); - public byte[] GridV3 = new byte[0]; + public byte[] GridV3 = Array.Empty(); public byte[] SmoothGrid = Convert.FromBase64String("AQU="); } @@ -3030,12 +3027,12 @@ namespace RobloxFiles public bool AutoRuns = true; public string Description = ""; - public bool ExecuteWithStudioRun = false; + public bool ExecuteWithStudioRun; public bool Is30FpsThrottleEnabled = true; public bool IsPhysicsEnvironmentalThrottled = true; public bool IsSleepAllowed = true; - public int NumberOfPlayers = 0; - public double SimulateSecondsLag = 0; + public int NumberOfPlayers; + public double SimulateSecondsLag; public double Timeout = 10; } @@ -3065,15 +3062,15 @@ namespace RobloxFiles public class Trail : Instance { - public Attachment Attachment0 = null; - public Attachment Attachment1 = null; + public Attachment Attachment0; + public Attachment Attachment1; public ColorSequence Color = new ColorSequence(1, 1, 1); public bool Enabled = true; - public bool FaceCamera = false; + public bool FaceCamera; public float Lifetime = 2; - public float LightEmission = 0; - public float LightInfluence = 0; - public float MaxLength = 0; + public float LightEmission; + public float LightInfluence; + public float MaxLength; public float MinLength = 0.1f; public Content Texture = ""; public float TextureLength = 1; @@ -3147,7 +3144,7 @@ namespace RobloxFiles public ColorSequence Color = new ColorSequence(1, 1, 1); public bool Enabled = true; public Vector2 Offset = new Vector2(); - public float Rotation = 0; + public float Rotation; public NumberSequence Transparency = new NumberSequence(0); } @@ -3167,16 +3164,10 @@ namespace RobloxFiles { public UDim2 CellPadding = new UDim2(0, 5, 0, 5); public UDim2 CellSize = new UDim2(0, 100, 0, 100); - public int FillDirectionMaxCells = 0; + public int FillDirectionMaxCells; public StartCorner StartCorner = StartCorner.TopLeft; } - public class UIInlineLayout : UIGridStyleLayout - { - public InlineAlignment InlineAlignment = InlineAlignment.Center; - public UDim2 InlinePadding = new UDim2(); - } - public class UIListLayout : UIGridStyleLayout { public UDim Padding = new UDim(); @@ -3185,7 +3176,7 @@ namespace RobloxFiles public class UIPageLayout : UIGridStyleLayout { public bool Animated = true; - public bool Circular = false; + public bool Circular; public EasingDirection EasingDirection = EasingDirection.Out; public EasingStyle EasingStyle = EasingStyle.Back; public bool GamepadInputEnabled = true; @@ -3197,8 +3188,8 @@ namespace RobloxFiles public class UITableLayout : UIGridStyleLayout { - public bool FillEmptySpaceColumns = false; - public bool FillEmptySpaceRows = false; + public bool FillEmptySpaceColumns; + public bool FillEmptySpaceRows; public TableMajorAxis MajorAxis = TableMajorAxis.RowMajor; public UDim2 Padding = new UDim2(); } @@ -3250,12 +3241,12 @@ namespace RobloxFiles public class BinaryStringValue : ValueBase { - public byte[] Value = new byte[0]; + public byte[] Value = Array.Empty(); } public class BoolValue : ValueBase { - public bool Value = false; + public bool Value; } public class BrickColorValue : ValueBase @@ -3282,7 +3273,7 @@ namespace RobloxFiles } public double MaxValue = 1; - public double MinValue = 0; + public double MinValue; public double Value { @@ -3290,7 +3281,7 @@ namespace RobloxFiles set { this.value = value; } } - public double value = 0; + public double value; } public class IntConstrainedValue : ValueBase @@ -3302,7 +3293,7 @@ namespace RobloxFiles } public long MaxValue = 10; - public long MinValue = 0; + public long MinValue; public long Value { @@ -3310,22 +3301,22 @@ namespace RobloxFiles set { this.value = value; } } - public long value = 0; + public long value; } public class IntValue : ValueBase { - public long Value = 0; + public long Value; } public class NumberValue : ValueBase { - public double Value = 0; + public double Value; } public class ObjectValue : ValueBase { - public Instance Value = null; + public Instance Value; } public class RayValue : ValueBase @@ -3387,7 +3378,7 @@ namespace RobloxFiles set { Part0Internal = value; } } - public BasePart Part0Internal = null; + public BasePart Part0Internal; public BasePart Part1 { @@ -3395,6 +3386,6 @@ namespace RobloxFiles set { Part1Internal = value; } } - public BasePart Part1Internal = null; + public BasePart Part1Internal; } } diff --git a/Generated/Enums.cs b/Generated/Enums.cs index ecce892..d330a73 100644 --- a/Generated/Enums.cs +++ b/Generated/Enums.cs @@ -1,27 +1,8 @@ // Auto-generated list of Roblox enums. -// Updated as of 0.442.0.409197 +// Updated as of 0.443.0.409841 namespace RobloxFiles.Enums { - public enum ABTestLoadingStatus - { - None, - Pending, - Initialized, - Error, - TimedOut, - ShutOff - } - - public enum ActionType - { - Nothing, - Pause, - Lose, - Draw, - Win - } - public enum ActuatorRelativeTo { Attachment0, @@ -56,103 +37,12 @@ namespace RobloxFiles.Enums Core = 1000 } - public enum AppShellActionType - { - None, - OpenApp, - TapChatTab, - TapConversationEntry, - TapAvatarTab, - ReadConversation, - TapGamePageTab, - TapHomePageTab, - GamePageLoaded, - HomePageLoaded, - AvatarEditorPageLoaded - } - public enum AspectType { FitWithinMaxSize, ScaleWithParentSize } - public enum AssetFetchStatus - { - Success, - Failure - } - - public enum AssetType - { - Image = 1, - TeeShirt, - Audio, - Mesh, - Lua, - Hat = 8, - Place, - Model, - Shirt, - Pants, - Decal, - Head = 17, - Face, - Gear, - Badge = 21, - Animation = 24, - Torso = 27, - RightArm, - LeftArm, - LeftLeg, - RightLeg, - Package, - GamePass = 34, - Plugin = 38, - MeshPart = 40, - HairAccessory, - FaceAccessory, - NeckAccessory, - ShoulderAccessory, - FrontAccessory, - BackAccessory, - WaistAccessory, - ClimbAnimation, - DeathAnimation, - FallAnimation, - IdleAnimation, - JumpAnimation, - RunAnimation, - SwimAnimation, - WalkAnimation, - PoseAnimation, - EarAccessory, - EyeAccessory, - EmoteAnimation = 61, - Video - } - - public enum AutoIndentRule - { - Off, - Absolute, - Relative - } - - public enum AvatarContextMenuOption - { - Friend, - Chat, - Emote, - InspectMenu - } - - public enum AvatarJointPositionType - { - Fixed, - ArtistIntent - } - public enum Axis { X, @@ -179,27 +69,6 @@ namespace RobloxFiles.Enums RightLeg } - public enum BodyPartR15 - { - Head, - UpperTorso, - LowerTorso, - LeftFoot, - LeftLowerLeg, - LeftUpperLeg, - RightFoot, - RightLowerLeg, - RightUpperLeg, - LeftHand, - LeftLowerArm, - LeftUpperArm, - RightHand, - RightLowerArm, - RightUpperArm, - RootPart, - Unknown = 17 - } - public enum BorderMode { Outline, @@ -207,26 +76,6 @@ namespace RobloxFiles.Enums Inset } - public enum BreakReason - { - Other, - Error, - SpecialBreakpoint, - UserBreakpoint - } - - public enum BulkMoveMode - { - FireAllEvents, - FireCFrameChanged - } - - public enum Button - { - Dismount = 8, - Jump = 32 - } - public enum ButtonStyle { Custom, @@ -243,12 +92,6 @@ namespace RobloxFiles.Enums LockFirstPerson } - public enum CameraPanMode - { - Classic, - EdgeBump - } - public enum CameraType { Fixed, @@ -261,89 +104,6 @@ namespace RobloxFiles.Enums Orbital } - public enum CellBlock - { - Solid, - VerticalWedge, - CornerWedge, - InverseCornerWedge, - HorizontalWedge - } - - public enum CellMaterial - { - Empty, - Grass, - Sand, - Brick, - Granite, - Asphalt, - Iron, - Aluminum, - Gold, - WoodPlank, - WoodLog, - Gravel, - CinderBlock, - MossyStone, - Cement, - RedPlastic, - BluePlastic, - Water - } - - public enum CellOrientation - { - NegZ, - X, - Z, - NegX - } - - public enum CenterDialogType - { - UnsolicitedDialog = 1, - PlayerInitiatedDialog, - ModalDialog, - QuitDialog - } - - public enum ChatCallbackType - { - OnCreatingChatWindow = 1, - OnClientSendingMessage, - OnClientFormattingMessage, - OnServerReceivingMessage = 17 - } - - public enum ChatColor - { - Blue, - Green, - Red, - White - } - - public enum ChatMode - { - Menu, - TextAndMenu - } - - public enum ChatPrivacyMode - { - AllUsers, - NoOne, - Friends - } - - public enum ChatStyle - { - Classic, - Bubble, - ClassicAndBubble - } - public enum CollisionFidelity { Default, @@ -352,143 +112,6 @@ namespace RobloxFiles.Enums PreciseConvexDecomposition } - public enum ComputerCameraMovementMode - { - Default, - Classic, - Follow, - Orbital, - CameraToggle - } - - public enum ComputerMovementMode - { - Default, - KeyboardMouse, - ClickToMove - } - - public enum ConnectionError - { - OK, - DisconnectErrors = 256, - DisconnectBadhash, - DisconnectSecurityKeyMismatch, - DisconnectProtocolMismatch, - DisconnectReceivePacketError, - DisconnectReceivePacketStreamError, - DisconnectSendPacketError, - DisconnectIllegalTeleport, - DisconnectDuplicatePlayer, - DisconnectDuplicateTicket, - DisconnectTimeout, - DisconnectLuaKick, - DisconnectOnRemoteSysStats, - DisconnectHashTimeout, - DisconnectCloudEditKick, - DisconnectPlayerless, - DisconnectNewSecurityKeyMismatch, - DisconnectEvicted, - DisconnectDevMaintenance, - DisconnectRobloxMaintenance, - DisconnectRejoin, - DisconnectConnectionLost, - DisconnectIdle, - DisconnectRaknetErrors, - DisconnectWrongVersion, - DisconnectBySecurityPolicy, - DisconnectBlockedIP, - PlacelaunchErrors = 512, - PlacelaunchDisabled = 515, - PlacelaunchError, - PlacelaunchGameEnded, - PlacelaunchGameFull, - PlacelaunchUserLeft = 522, - PlacelaunchRestricted, - PlacelaunchUnauthorized, - PlacelaunchFlooded, - PlacelaunchHashExpired, - PlacelaunchHashException, - PlacelaunchPartyCannotFit, - PlacelaunchHttpError, - PlacelaunchCustomMessage = 610, - PlacelaunchOtherError, - TeleportErrors = 768, - TeleportFailure, - TeleportGameNotFound, - TeleportGameEnded, - TeleportGameFull, - TeleportUnauthorized, - TeleportFlooded, - TeleportIsTeleporting - } - - public enum ConnectionState - { - Connected, - Disconnected - } - - public enum ContextActionPriority - { - Low = 1000, - Default = 2000, - Medium = 2000, - High = 3000 - } - - public enum ContextActionResult - { - Sink, - Pass - } - - public enum ControlMode - { - Classic, - MouseLockSwitch - } - - public enum CoreGuiType - { - PlayerList, - Health, - Backpack, - Chat, - All, - EmotesMenu - } - - public enum CreatorType - { - User, - Group - } - - public enum CurrencyType - { - Default, - Robux, - Tix - } - - public enum CustomCameraMode - { - Default, - Classic, - Follow - } - - public enum DataStoreRequestType - { - GetAsync, - SetIncrementAsync, - UpdateAsync, - GetSortedAsync, - SetIncrementSortedAsync, - OnUpdate - } - public enum DevCameraOcclusionMode { Zoom, @@ -531,40 +154,6 @@ namespace RobloxFiles.Enums DynamicThumbstick } - public enum DeveloperMemoryTag - { - Internal, - HttpCache, - Instances, - Signals, - LuaHeap, - Script, - PhysicsCollision, - PhysicsParts, - GraphicsSolidModels, - GraphicsMeshParts, - GraphicsParticles, - GraphicsParts, - GraphicsSpatialHash, - GraphicsTerrain, - GraphicsTexture, - GraphicsTextureCharacter, - Sounds, - StreamingSounds, - TerrainVoxels, - Gui = 20, - Animation, - Navigation - } - - public enum DeviceType - { - Unknown, - Desktop, - Tablet, - Phone - } - public enum DialogBehaviorType { SinglePlayer, @@ -591,14 +180,6 @@ namespace RobloxFiles.Enums Height } - public enum DraftStatusCode - { - OK, - DraftOutdated, - ScriptRemoved, - DraftCommitted - } - public enum EasingDirection { In, @@ -628,17 +209,6 @@ namespace RobloxFiles.Enums Never } - public enum EnviromentalPhysicsThrottle - { - DefaultAuto, - Disabled, - Always, - Skip2, - Skip4, - Skip8, - Skip16 - } - public enum ExplosionType { NoCraters, @@ -651,12 +221,6 @@ namespace RobloxFiles.Enums Vertical } - public enum FilterResult - { - Accepted, - Rejected - } - public enum Font { Legacy, @@ -720,37 +284,6 @@ namespace RobloxFiles.Enums DropShadow } - public enum FramerateManagerMode - { - Automatic, - On, - Off - } - - public enum FriendRequestEvent - { - Issue, - Revoke, - Accept, - Deny - } - - public enum FriendStatus - { - Unknown, - NotFriend, - Friend, - FriendRequestSent, - FriendRequestReceived - } - - public enum FunctionalTestResult - { - Passed, - Warning, - Error - } - public enum GameAvatarType { R6, @@ -758,54 +291,6 @@ namespace RobloxFiles.Enums PlayerChoice } - public enum GearGenreSetting - { - AllGenres, - MatchingGenreOnly - } - - public enum GearType - { - MeleeWeapons, - RangedWeapons, - Explosives, - PowerUps, - NavigationEnhancers, - MusicalInstruments, - SocialItems, - BuildingTools, - Transport - } - - public enum Genre - { - All, - TownAndCity, - Fantasy, - SciFi, - Ninja, - Scary, - Pirate, - Adventure, - Sports, - Funny, - WildWest, - War, - SkatePark, - Tutorial - } - - public enum GraphicsMode - { - Automatic = 1, - Direct3D11, - Direct3D9, - OpenGL, - Metal, - Vulkan, - NoGraphics - } - public enum HandlesStyle { Resize, @@ -819,61 +304,6 @@ namespace RobloxFiles.Enums Right } - public enum HoverAnimateSpeed - { - VerySlow, - Slow, - Medium, - Fast, - VeryFast - } - - public enum HttpCachePolicy - { - None, - Full, - DataOnly, - Default, - InternalRedirectRefresh - } - - public enum HttpContentType - { - ApplicationJson, - ApplicationXml, - ApplicationUrlEncoded, - TextPlain, - TextXml - } - - public enum HttpError - { - OK, - InvalidUrl, - DnsResolve, - ConnectFail, - OutOfMemory, - TimedOut, - TooManyRedirects, - InvalidRedirect, - NetFail, - Aborted, - SslConnectFail, - SslVerificationFail, - Unknown - } - - public enum HttpRequestType - { - Default, - MarketplaceService = 2, - Players = 7, - Chat = 15, - Avatar, - Analytics = 22, - Localization = 24 - } - public enum HumanoidCollisionType { OuterBox, @@ -900,34 +330,6 @@ namespace RobloxFiles.Enums R15 } - public enum HumanoidStateType - { - FallingDown, - Ragdoll, - GettingUp, - Jumping, - Swimming, - Freefall, - Flying, - Landed, - Running, - RunningNoPhysics = 10, - StrafingNoPhysics, - Climbing, - Seated, - PlatformStanding, - Dead, - Physics, - None = 18 - } - - public enum IKCollisionsMode - { - NoCollisions, - OtherMechanismsAnchored, - IncludeContactedMechanisms - } - public enum InOut { Edge, @@ -935,31 +337,6 @@ namespace RobloxFiles.Enums Center } - public enum InfoType - { - Asset, - Product, - GamePass, - Subscription, - Bundle - } - - public enum InitialDockState - { - Top, - Bottom, - Left, - Right, - Float - } - - public enum InlineAlignment - { - Bottom, - Center, - Top - } - public enum InputType { NoInput, @@ -967,290 +344,6 @@ namespace RobloxFiles.Enums Sin } - public enum JointCreationMode - { - All, - Surface, - None - } - - public enum KeyCode - { - Unknown, - Backspace = 8, - Tab, - Clear = 12, - Return, - Pause = 19, - Escape = 27, - Space = 32, - QuotedDouble = 34, - Hash, - Dollar, - Percent, - Ampersand, - Quote, - LeftParenthesis, - RightParenthesis, - Asterisk, - Plus, - Comma, - Minus, - Period, - Slash, - Zero, - One, - Two, - Three, - Four, - Five, - Six, - Seven, - Eight, - Nine, - Colon, - Semicolon, - LessThan, - Equals, - GreaterThan, - Question, - At, - LeftBracket = 91, - BackSlash, - RightBracket, - Caret, - Underscore, - Backquote, - A, - B, - C, - D, - E, - F, - G, - H, - I, - J, - K, - L, - M, - N, - O, - P, - Q, - R, - S, - T, - U, - V, - W, - X, - Y, - Z, - LeftCurly, - Pipe, - RightCurly, - Tilde, - Delete, - World0 = 160, - World1, - World2, - World3, - World4, - World5, - World6, - World7, - World8, - World9, - World10, - World11, - World12, - World13, - World14, - World15, - World16, - World17, - World18, - World19, - World20, - World21, - World22, - World23, - World24, - World25, - World26, - World27, - World28, - World29, - World30, - World31, - World32, - World33, - World34, - World35, - World36, - World37, - World38, - World39, - World40, - World41, - World42, - World43, - World44, - World45, - World46, - World47, - World48, - World49, - World50, - World51, - World52, - World53, - World54, - World55, - World56, - World57, - World58, - World59, - World60, - World61, - World62, - World63, - World64, - World65, - World66, - World67, - World68, - World69, - World70, - World71, - World72, - World73, - World74, - World75, - World76, - World77, - World78, - World79, - World80, - World81, - World82, - World83, - World84, - World85, - World86, - World87, - World88, - World89, - World90, - World91, - World92, - World93, - World94, - World95, - KeypadZero, - KeypadOne, - KeypadTwo, - KeypadThree, - KeypadFour, - KeypadFive, - KeypadSix, - KeypadSeven, - KeypadEight, - KeypadNine, - KeypadPeriod, - KeypadDivide, - KeypadMultiply, - KeypadMinus, - KeypadPlus, - KeypadEnter, - KeypadEquals, - Up, - Down, - Right, - Left, - Insert, - Home, - End, - PageUp, - PageDown, - F1, - F2, - F3, - F4, - F5, - F6, - F7, - F8, - F9, - F10, - F11, - F12, - F13, - F14, - F15, - NumLock = 300, - CapsLock, - ScrollLock, - RightShift, - LeftShift, - RightControl, - LeftControl, - RightAlt, - LeftAlt, - RightMeta, - LeftMeta, - LeftSuper, - RightSuper, - Mode, - Compose, - Help, - Print, - SysReq, - Break, - Menu, - Power, - Euro, - Undo, - ButtonX = 1000, - ButtonY, - ButtonA, - ButtonB, - ButtonR1, - ButtonL1, - ButtonR2, - ButtonL2, - ButtonR3, - ButtonL3, - ButtonStart, - ButtonSelect, - DPadLeft, - DPadRight, - DPadUp, - DPadDown, - Thumbstick1, - Thumbstick2 - } - - public enum KeywordFilterType - { - Include, - Exclude - } - - public enum Language - { - Default - } - - public enum LanguagePreference - { - SystemDefault, - English, - SimplifiedChinese, - Korean - } - public enum LeftRight { Left, @@ -1265,31 +358,6 @@ namespace RobloxFiles.Enums High } - public enum Limb - { - Head, - Torso, - LeftArm, - RightArm, - LeftLeg, - RightLeg, - Unknown - } - - public enum ListDisplayMode - { - Horizontal, - Vertical - } - - public enum ListenerType - { - Camera, - CFrame, - ObjectPosition, - ObjectCFrame - } - public enum Material { Plastic = 256, @@ -1331,24 +399,6 @@ namespace RobloxFiles.Enums Water = 2048 } - public enum MembershipType - { - None, - BuildersClub, - TurboBuildersClub, - OutrageousBuildersClub, - Premium - } - - public enum MeshPartDetailLevel - { - DistanceBased, - Level01, - Level02, - Level03, - Level04 - } - public enum MeshType { Head, @@ -1365,14 +415,6 @@ namespace RobloxFiles.Enums CornerWedge } - public enum MessageType - { - MessageOutput, - MessageInfo, - MessageWarning, - MessageError - } - public enum ModelLevelOfDetail { Automatic, @@ -1380,14 +422,6 @@ namespace RobloxFiles.Enums Disabled } - public enum ModifierKey - { - Shift, - Ctrl, - Alt, - Meta - } - public enum MouseBehavior { Default, @@ -1395,15 +429,6 @@ namespace RobloxFiles.Enums LockCurrentPosition } - public enum MoveState - { - Stopped, - Coasting, - Pushing, - Stopping, - AirFree - } - public enum NameOcclusion { NoOcclusion, @@ -1411,13 +436,6 @@ namespace RobloxFiles.Enums OccludeAll } - public enum NetworkOwnership - { - Automatic, - Manual, - OnContact - } - public enum NormalId { Right, @@ -1428,27 +446,6 @@ namespace RobloxFiles.Enums Front } - public enum OutputLayoutMode - { - Horizontal, - Vertical - } - - public enum OverrideMouseIconBehavior - { - None, - ForceShow, - ForceHide - } - - public enum PacketPriority - { - IMMEDIATE_PRIORITY, - HIGH_PRIORITY, - MEDIUM_PRIORITY, - LOW_PRIORITY - } - public enum PartType { Ball, @@ -1456,88 +453,6 @@ namespace RobloxFiles.Enums Cylinder } - public enum PathStatus - { - Success, - ClosestNoPath, - ClosestOutOfRange, - FailStartNotEmpty, - FailFinishNotEmpty, - NoPath - } - - public enum PathWaypointAction - { - Walk, - Jump - } - - public enum PermissionLevelShown - { - Game, - RobloxGame, - RobloxScript, - Studio, - Roblox - } - - public enum PhysicsSimulationRate - { - Fixed240Hz, - Fixed120Hz, - Fixed60Hz - } - - public enum Platform - { - Windows, - OSX, - IOS, - Android, - XBoxOne, - PS4, - PS3, - XBox360, - WiiU, - NX, - Ouya, - AndroidTV, - Chromecast, - Linux, - SteamOS, - WebOS, - DOS, - BeOS, - UWP, - None - } - - public enum PlaybackState - { - Begin, - Delayed, - Playing, - Paused, - Completed, - Cancelled - } - - public enum PlayerActions - { - CharacterForward, - CharacterBackward, - CharacterLeft, - CharacterRight, - CharacterJump - } - - public enum PlayerChatType - { - All, - Team, - Whisper - } - public enum PoseEasingDirection { In, @@ -1554,59 +469,12 @@ namespace RobloxFiles.Enums Bounce } - public enum PrivilegeType - { - Banned, - Visitor = 10, - Member = 128, - Admin = 240, - Owner = 255 - } - - public enum ProductPurchaseDecision - { - NotProcessedYet, - PurchaseGranted - } - - public enum QualityLevel - { - Automatic, - Level01, - Level02, - Level03, - Level04, - Level05, - Level06, - Level07, - Level08, - Level09, - Level10, - Level11, - Level12, - Level13, - Level14, - Level15, - Level16, - Level17, - Level18, - Level19, - Level20, - Level21 - } - public enum R15CollisionType { OuterBox, InnerBox } - public enum RaycastFilterType - { - Blacklist, - Whitelist - } - public enum RenderFidelity { Automatic, @@ -1614,31 +482,12 @@ namespace RobloxFiles.Enums Performance } - public enum RenderPriority - { - First, - Input = 100, - Camera = 200, - Character = 300, - Last = 2000 - } - public enum RenderingTestComparisonMethod { psnr, diff } - public enum ReturnKeyType - { - Default, - Done, - Go, - Next, - Search, - Send - } - public enum ReverbType { NoReverb, @@ -1667,20 +516,6 @@ namespace RobloxFiles.Enums UnderWater } - public enum RibbonTool - { - Select, - Scale, - Rotate, - Move, - Transform, - ColorPicker, - MaterialPicker, - Group, - Ungroup, - None - } - public enum RollOffMode { Inverse, @@ -1689,41 +524,6 @@ namespace RobloxFiles.Enums InverseTapered } - public enum RotationType - { - MovementRelative, - CameraRelative - } - - public enum RuntimeUndoBehavior - { - Aggregate, - Snapshot, - Hybrid - } - - public enum SaveFilter - { - SaveWorld, - SaveGame, - SaveAll - } - - public enum SavedQualitySetting - { - Automatic, - QualityLevel1, - QualityLevel2, - QualityLevel3, - QualityLevel4, - QualityLevel5, - QualityLevel6, - QualityLevel7, - QualityLevel8, - QualityLevel9, - QualityLevel10 - } - public enum ScaleType { Stretch, @@ -1756,13 +556,6 @@ namespace RobloxFiles.Enums XY = 4 } - public enum ServerAudioBehavior - { - Enabled, - Muted, - OnlineGame - } - public enum SizeConstraint { RelativeXY, @@ -1777,35 +570,6 @@ namespace RobloxFiles.Enums LayoutOrder } - public enum SoundType - { - NoSound, - Boing, - Bomb, - Break, - Click, - Clock, - Slingshot, - Page, - Ping, - Snap, - Splat, - Step, - StepOn, - Swoosh, - Victory - } - - public enum SpecialKey - { - Insert, - Home, - End, - PageUp, - PageDown, - ChatHotkey - } - public enum StartCorner { TopLeft, @@ -1814,12 +578,6 @@ namespace RobloxFiles.Enums BottomRight } - public enum Status - { - Poison, - Confusion - } - public enum StreamingPauseMode { Default, @@ -1827,128 +585,6 @@ namespace RobloxFiles.Enums ClientPhysicsPause } - public enum StudioDataModelType - { - Edit, - PlayClient = 2, - PlayServer, - RobloxPlugin, - UserPlugin, - None - } - - public enum StudioStyleGuideColor - { - MainBackground, - Titlebar, - Dropdown, - Tooltip, - Notification, - ScrollBar, - ScrollBarBackground, - TabBar, - Tab, - RibbonTab, - RibbonTabTopBar, - Button, - MainButton, - RibbonButton, - ViewPortBackground, - InputFieldBackground, - Item, - TableItem, - CategoryItem, - GameSettingsTableItem, - GameSettingsTooltip, - EmulatorBar, - EmulatorDropDown, - ColorPickerFrame, - CurrentMarker, - Border, - Shadow, - Light, - Dark, - Mid, - MainText, - SubText, - TitlebarText, - BrightText, - DimmedText, - LinkText, - WarningText, - ErrorText, - InfoText, - SensitiveText, - ScriptSideWidget, - ScriptBackground, - ScriptText, - ScriptSelectionText, - ScriptSelectionBackground, - ScriptFindSelectionBackground, - ScriptMatchingWordSelectionBackground, - ScriptOperator, - ScriptNumber, - ScriptString, - ScriptComment, - ScriptPreprocessor, - ScriptKeyword, - ScriptBuiltInFunction, - ScriptWarning, - ScriptError, - ScriptWhitespace, - ScriptRuler, - DebuggerCurrentLine, - DebuggerErrorLine, - DiffFilePathText, - DiffTextHunkInfo, - DiffTextNoChange, - DiffTextAddition, - DiffTextDeletion, - DiffTextSeparatorBackground, - DiffTextNoChangeBackground, - DiffTextAdditionBackground, - DiffTextDeletionBackground, - DiffLineNum, - DiffLineNumSeparatorBackground, - DiffLineNumNoChangeBackground, - DiffLineNumAdditionBackground, - DiffLineNumDeletionBackground, - DiffFilePathBackground, - DiffFilePathBorder, - ChatIncomingBgColor, - ChatIncomingTextColor, - ChatOutgoingBgColor, - ChatOutgoingTextColor, - ChatModeratedMessageColor, - Separator, - ButtonBorder, - ButtonText, - InputFieldBorder, - CheckedFieldBackground, - CheckedFieldBorder, - CheckedFieldIndicator, - HeaderSection, - Midlight, - StatusBar, - DialogButton, - DialogButtonText, - DialogButtonBorder, - DialogMainButton, - DialogMainButtonText, - InfoBarWarningBackground, - InfoBarWarningText, - ScriptEditorCurrentLine - } - - public enum StudioStyleGuideModifier - { - Default, - Selected, - Pressed, - Disabled, - Hover - } - public enum Style { AlternatingSupports, @@ -1956,14 +592,6 @@ namespace RobloxFiles.Enums NoSupports } - public enum SurfaceConstraint - { - None, - Hinge, - SteppingMotor, - Motor - } - public enum SurfaceGuiSizingMode { FixedSize, @@ -1984,15 +612,6 @@ namespace RobloxFiles.Enums SmoothNoOutlines = 10 } - public enum SwipeDirection - { - Right, - Left, - Up, - Down, - None - } - public enum TableMajorAxis { RowMajor, @@ -2008,59 +627,6 @@ namespace RobloxFiles.Enums Future } - public enum TeleportMethod - { - TeleportToSpawnByName, - TeleportToPlaceInstance, - TeleportToPrivateServer, - TeleportPartyAsync, - TeleportUnknown - } - - public enum TeleportResult - { - Success, - Failure, - GameNotFound, - GameEnded, - GameFull, - Unauthorized, - Flooded, - IsTeleporting - } - - public enum TeleportState - { - RequestedFromServer, - Started, - WaitingForServer, - Failed, - InProgress - } - - public enum TeleportType - { - ToPlace, - ToInstance, - ToReservedServer - } - - public enum TextFilterContext - { - PublicChat = 1, - PrivateChat - } - - public enum TextInputType - { - Default, - NoSuggestions, - Number, - Email, - Phone, - Password - } - public enum TextTruncate { None, @@ -2088,61 +654,6 @@ namespace RobloxFiles.Enums Static } - public enum TextureQueryType - { - NonHumanoid, - NonHumanoidOrphaned, - Humanoid, - HumanoidOrphaned - } - - public enum ThreadPoolConfig - { - Auto, - Threads1, - Threads2, - Threads3, - Threads4, - Threads8 = 8, - Threads16 = 16, - PerCore1 = 101, - PerCore2, - PerCore3, - PerCore4 - } - - public enum ThrottlingPriority - { - Default, - ElevatedOnServer, - Extreme - } - - public enum ThumbnailSize - { - Size48x48, - Size180x180, - Size420x420, - Size60x60, - Size100x100, - Size150x150, - Size352x352 - } - - public enum ThumbnailType - { - HeadShot, - AvatarBust, - AvatarThumbnail - } - - public enum TickCountSampleMethod - { - Fast, - Benchmark, - Precise - } - public enum TopBottom { Top, @@ -2150,103 +661,6 @@ namespace RobloxFiles.Enums Bottom } - public enum TouchCameraMovementMode - { - Default, - Classic, - Follow, - Orbital - } - - public enum TouchMovementMode - { - Default, - Thumbstick, - DPad, - Thumbpad, - ClickToMove, - DynamicThumbstick - } - - public enum TweenStatus - { - Canceled, - Completed - } - - public enum UITheme - { - Light, - Dark - } - - public enum UiMessageType - { - UiMessageError, - UiMessageInfo - } - - public enum UploadSetting - { - Never, - Ask, - Always - } - - public enum UserCFrame - { - Head, - LeftHand, - RightHand - } - - public enum UserInputState - { - Begin, - Change, - End, - Cancel, - None - } - - public enum UserInputType - { - MouseButton1, - MouseButton2, - MouseButton3, - MouseWheel, - MouseMovement, - Touch = 7, - Keyboard, - Focus, - Accelerometer, - Gyro, - Gamepad1, - Gamepad2, - Gamepad3, - Gamepad4, - Gamepad5, - Gamepad6, - Gamepad7, - Gamepad8, - TextInput, - InputMethod, - None - } - - public enum VRTouchpad - { - Left, - Right - } - - public enum VRTouchpadMode - { - Touch, - VirtualThumbstick, - ABXY - } - public enum VerticalAlignment { Center, @@ -2260,49 +674,6 @@ namespace RobloxFiles.Enums Left } - public enum VibrationMotor - { - Large, - Small, - LeftTrigger, - RightTrigger, - LeftHand, - RightHand - } - - public enum VideoQualitySettings - { - LowResolution, - MediumResolution, - HighResolution - } - - public enum VirtualInputMode - { - None, - Recording, - Playing - } - - public enum WaterDirection - { - NegX, - X, - NegY, - Y, - NegZ, - Z - } - - public enum WaterForce - { - None, - Small, - Medium, - Strong, - Max - } - public enum ZIndexBehavior { Global, diff --git a/Plugins/GenerateApiDump.rbxm b/Plugins/GenerateApiDump.rbxm index 766b46db828dfcfc71871a599006fc2bf8316253..039f959750af7daa74b67a07d2bb4b314dab3a10 100644 GIT binary patch delta 9485 zcmY*1~qi9-m45X<)15s@WFk{yR6 zD1@y%N?8;LwCqr}wk#=YfwGjP?C@G1{D87PC@sq)K!Mj%`i^<;pPxU`WTY9*+`0Fh z@A-beM<1u($Xr-|(fSA}7g-?^1#eYN-U*;5of(Vga*5Qa$?y6y>2W)g+tU}%4ehYA zeH%CQU0e-BI{6s?eOWub)%ew)p2!T@6fXmk>7jVi`rqqV%dEZoJx-5vWFj?`OQcif z_?HJ(=`aXFO}S&Fjx)c;ummT}{CVH+a7Ya#CgbwHm>{_Kk=iadyo!G>MIu#K9gHPGsMQy<{Mur+Lt#3z!uKB!mX zm1WDUme{-n^A@(Y&0DaU_`(Mgsa#}zd}{MOM8C#D9$bD2N}89VX5muExrr2SbEhri z2Tx}Ta4&=VBa|gRg5PMR>0vCS^f41-gLdX9AVR`Qq(Y*=OSdC3l1!(Y06&RhqDr*H z2eTdc4puXtlWVe;TG2=}8v8lK=Yrz2h(Fv;bQMbS#%^A4J3Em)74FxtFfxDSb*Lc- z17FI;quGhUP_QAgB08r&7`B4JTOqF|F$<=fw88H5#9-2X7RFT&ZW7Be%UX7gG?$Pf zs%Ty+ooj{bWkHWirAo*;Sj(0z6XB8IJgN;2Ujp+uLHgo6YMPh8>DnapyQSy?&IdLs zbQXE*#Jrwl`dew1(xh+X5X=$^%Ed5?32Hy}EgngvhF6J(VABN@Fy@fDQ;b`Yh}AgK zxQ=K6`HY8z@^e*$VIEK3cjBYj&`2^q8n*1z#Mm!{NC9iVovWw*B>PR|cZ4W1M z_83o?H6Bl7vY{A0R~E0bb1V59g}+Cwyf_i3&sk=LTC9_;ASkV1AA};L25p|CR+!a7 zyRc)*&W7T=>4Y4SRxnfwt0`DV@=GZ`0Yb3C*00eX>6l8if|ih(5g3RM@s~z47+c`) z3BY>-Xg1`D@EvoLwj$X({I06w^gJ++d?649ASMa@w2^Zym(D3P6BNe6O?$=<>J$RL zCo9tU9JNLJ3|4nb*PW1u35Si?##NoY4qU5ZAIU38cL{wdt`1w7u*H!v=oR|u$8{&hLKDM@ zaV5&n>;jwufqV^2O^D4|#yY!!1RpsLR;0fY+CwBfqAxu%lC@vgWu<~5q6qvO zDxl4U`W(qm2 zsjMX>F)7V6IWrwp9KMNf{UM6OXTdy7y0zIpBImV)CNHHICtDbvMpKF0#IU{DsnT0g zSqv&LI%^2$rT7k|Q(r?|C3^VGEuTR&pk_}4PDmAEP&ZY!pfu%E0+w7 zF#ZjVM8=N;mBYIk;v(olDYrs+g<2zVj*vOi^CQ7`I81UDJm*gDUiQQ8<;1&}6HP+4 z`1F~omdz8L=EfdPJcah5^w{{1d{MsoX6HLy{3e~UQ@L!Y$=crtD8P@LXC!!>v2d&< z>GTU_HDq05f5}$Y}Twxvqr2WfibWXlsE#k=Y2vicdAdd>De7g@3FTlpyc( zf@02V`t4m4c4~;@>Lia`E!&5(YwbWhI>2UDyex?b1p1{Y3`J(RT8fiYS8~mT%qN!1#KOhZ`lD`S{HBD-Ynct=f z^9G>|_3wyh?BQEV8nd~qDsyn~)2XH?lq%vi~lK1M-el6NydsRBnA@s&}Pgd7M8+tYdiiV*QRynRqHY&I3&i zJtf5>foRa$zY81rmK*IqD)rW~$1&cMPUZR&ryla)55PJo|F3XT^^CmeHkGGQ94rGp zq?wB$#k-PTWfF7<*sD$F5`B(FYuOZ0AE=D0RIuq0aNUa@pNa2t&p0FJj9e)5S;wltoY;g{KzE1r%L!QfgHI8_{AI)_yp8QDPOouht`E_>89lvd<^V z5Mws`HRzEFWv#&VIM5kSCi~MvJJ%UF&*zW#mMMkBGs5M6*Dl?Z12aN%ih|!tQ3@IWy+X!LA)@kFqc5FJ+*OJ7m2`)zI8p?$0;R_C!fP|E)d&r3&F@pum8eOtgSU{#oAg_1m>S1l&>NG2D(YTxG-;K^X$J?`GTBw zH3BQ>;!b*O3{E!f1x03ThNR8xx~DVlen4ejj5QffeiQ(KxtZ zPakKLP)gyvL;UaIex96cdOKW?6;{=BI*vE73gU>ja8XUr_bNw4*F-j#9$PtSr)J5* zV>O5Smucq35HEF1@W=67VrZkC%Y+;_qf8#eQSgn1_8b#u1RL#VnQ{+xj>MB$3yw>K zpc(2Bt==BKf|Pww9w+)*2bagIstb2o+vnDZ7>Wty3y1K5E)_gs`lS@>wzF;* z?wO_j*5SH_23C%xS;sxCE9Jyj6T^j-b+Z&=`c+8QwKUh{p4DKU4-uF=-Gz_qR^(V4 z>C5o}IofpJn$L<7y-Wb(sV;|6ONAHfX3ZlP$y=3+HrYcvQp{gRdlY1}(#1TTobyc* z&%n$`!8A+xwWbB&i`-Y$YH4P!g`YB%Vhh zQNKytB?=GMTXU5dQJ%%bFt~CJunf-GL;tSRRIUCgQ7b*d!LdG`nusU+Co(VAQNi7? zE$?^(WMNltsxOlmi~rFj2mN9R2`*k+fUPQq;rOd5xZr*PsKCjzF+Dtyw0}YR1e970 z>&fg9HTU*$Sj0!|b&1r@O>loLeVf1VoRv=X4)@!cM5iI7DwsR0hARkTMBpiS$`xy` z_23ev@3`^dc&^SPu2NYt@RHDVjCVzNQqWrvKf}OYE4w2;-U4x^f(CT6MzAkZjVGwM zV9qMdcT2q+xF2*Hij9xWP5t8;JN_BTXN25e8VFV+(~%lwKCcEcdas7_3`!eaI}*v^w9spep9q)! zwi~w#I+e7gZc+7DhBtEGApLtYbHq`%^0lfhVg-`&iE9hb&kE)1i}aley;LHZ(z}eN zSldx&OTV4`q&n7_p1Oo+vCxkZb$hMDius@mj!L*UxYZM|x_^9!eT-?IgqF?>`vuz+ zE(zulpN5s5qPWz|Z(M2%ujd+wpL4p994gUn6y|4I#j5_X^v*9pn!-{DYqpl+ViT7N zaaKTFszlS{@ym+LDo}SOk+q+frUj5G+)oK}7gzpMH0MqPqmhKq90iFOv^ezN5^v39 z;o-(mAm`O@Bz|K31bH0$0Nshx3jf{M>$}&Z4neyIG=x^p)z=FfL#=a8EcXQmlrsl8 zH2TMFdyNw>2zr21lm@u0?o8V7D4!YHbD%#K?g-5_9`pBgOvZEZk-|rz_TaZBeNYF@ zN7uVB91u~988A(m?a|1h`G2bjMx%QR8=5N18a?QO`6I5e-B7NobaWD55Gx7?n#wBN z9zGzP-JliIxlSaySQw=pj=~*HWun?$c)F=()|W22Vmj<_EyTZEgB|1Jc0BW)SGfs1 zp}ROnJCfr&wimp!EBlYsV2?m0V(a3AFS^WXHdHz%a=AO^}ea?;H% zEF^iSbe@L7uV$ZH<0-k4PiiLSoaP2FT3OElig!YC0>w&?hmkmo_}MC-Z@-8U)DH)o1{LY^$l zAiUTtx>F;G(Ize~^)dnVX05#^F>G(YI6Tw!M`qE4nWbuNX`v|`7SGDU@!@vY$V{_J z)#$dF;_1S5;kLDNYMcWIELiWPt6AOHW~cdf6>0Sn$xQQy&XUNeaXz?|8o$(T5;#g=jwSx zz`^M28Suy`2BuxQt=lSb#xg7TgEd$IG2xLF@OK~d$Vy}e)9IugPmOSjr_+1c>3}$! zD<7uy@Kr9^26?sz)o?R``O**@p>k>5h$BCkAgvQj#}_g~_Cp>A*Ab5hBCqX+exFCZ z-(`*3qh=SAj-IhYI#Fo{I~F4A(eL^-$rrMW`knr?@bNcQ-9DKJkG5`t490c?S*cm zIzQi7or&+xR-!%3F6ttZ~~(eZ5vU^NygV2aNT=xSOL^w!q&x3}0x5;bWf{3s4&jn}uIE zEAvkv)|j=vb@$DkcIxJ%Bf_G20iv0~sW(f$kU4&e97~i5wmIkavasIX;{P1mH;jz5 zw@gLGQ=>tS)0I-a3Ih>-f}x$i^By>!edo;ydw0;^w>mLAZ2w0I-Zji?rQ@8A?4Hz6 zXd<)9&rafclnj59cN(L`%G&|ifRME;SB9}N43`B~c7i_g`wWh-AHs zwtK}tLCwHnD8KXhA|9Yl3JY4or?9eW)m&@%+2=9ooc!cUhWAn0g&0%ArLf}J#pv&B$Z}F#ui(ef!r%g7{H@FiPP`d7 z&+6a9Rd#I2i7+Ej*=FMhPx2)W`m3|crafp!7#n`Dz)$iv=D)1$>WD?>#Vm_Q!4!Ft zE1R`pFw0P!vpaHZVR4Sz)|j2m7SGhR3Ud>jf%%(I+nxTfg8T*B*B#}%RKl57_kM>1;4^k**nZQlHenmEVI}2L~=L*3>x?_KjZcZ2F^@&D4nsl zp>l4lZ5s^V*aI$fyI1T^XYNMXcyISgCQ)sJ6lHz5kJk6+_9QQZ_t%6|0(A3C`5%IM z1kE9*Q6&#*wTbYQ#Ad0Vt*OOO-zgSxjWJ2-R*Xj_?w2~FR6rHq>Tp8jpOp9|aHW*5 zslyq2lqcWRu&~JdXX$hUKzUa+50|0Z;7H!5;{u4F;#|Qv0ROTp{o2TrKe z77|T4uuY+7h5n|4ono0Ku=c4cYUl1z?$lbrPch&YaBwHU6=r?_wx%3qx@KwD1jo7e zlNhoZvXbF@jV3N9>_VmfpPF<*zu%yC>3UL1Nn!?zD#-5&Ykd{@q6#`)Vm2|D*F`om z>-+Qczy#OqZ_4PX(>%7qa4@D!vQUC=?>A1lmhsUEHlk(%Q;L3Kg?13#W9dnoTxLmy z6o;x+w$(q8bTYgr@j9VxeSEwR#;9ZZ8$U)M>#tx=B<7I(v+x$)^OfcYOmRx3_I3pg zkQf4O*M!&(-%!esJF5br0@Patb6`BdWv$z0S=U|V8~&-TaGJf!iqBhE z6bQ|_$;noLdK-6ggu;gEh#@x;9-Ce?d5i3v?q*)+$1R0(0(JR!>+7~Ru7nbk>Ujtz zMy_d~vlP7IpsO48U3#TK6(U=y90T#VSO1!De5IalG*@#~JFik%1NpJ0vX^<3V~*t0 z@Gag^-_7zNR8>GG>Dz=f6?Z7`1&)zKqg^CL_x* zTHRQ|E7@zzhg{%u=4*h1!JD4q*}qheMv?r17(C~h3R-Dh?{!^2Y9OkQ1g9ye_) zv(hXs9dF1kvGxbUZG~ZlTgniM-5tnS^N7El)-%k zRA%I#8_^`Y^gayA+Qp+8v+!0iH}(uS`gP?VSD^c!nn!gg^AQ_O=e9Un*v@~k2A88Y zm55hh7F6~E-jVFC8MjWmYqDJ8Ce?huM4{(Zx~W-=c)XXfB$cWvND69$dM?DL*qGy~ z>3*~xJ*3Sr6gJqoOL4zLE^Sa+P}~-&u2*JHPon!h;88_wM+bMIgQaDzLn=E;&B50f9-*~D?Gl$RIQl_qLtSxhk| z!`m5t$oYT+n>^-Eg|2Z&e3X5+=E5IKEyqiTUOKb zSiQK#Bi77<5BRqbyC`^6XwQIi0IPM_Lhpo=yG3ynUM?$X>~1g*LdbS#F?NE5`D2vo zKS#+jf2+D2)7)NgH{peu1$TKx{=){uNnHnLwJ@1&i*v}7{EwR_M>NNE{#L^xsd%UQ6oPF#nS&g`&CJ4C8fZr*SJC+DAfjLXJYa+3i?Yrshat^ELuc&`G7} z+fqripzYG|$d19ACL@Mh&&V>e+2=j!9L)kI|cZrT{ zX!nlo^UJbt$7E=R*slmJSQIHnU8w2cyi5c0RbItYXSm(-ohz!%muBd~IfL$i`S^@x zXO?S^&(mK;DJdGOorN-^I*7lQqLO%3kas{-)v5cc=vUAK#q=PQ+ui1WNu9Z%JW-#| zgU*q9nL}kma4Uo8w^Dsj;M3}0BK6M_hE&oFZG})K-B=27Z8?{AcCYC#!ui>>6QSJ- z+@s*D=?;|g6{r~Wk2-nSn9o{Ubz9A`Kjnq!K*v~oe0+X`2$!P*w963xEI~hLEw`(> zn~n{|S?^p5*;K|1dw)Yh}8~ATl znnaI6=N?!B#ATspI%G_@>Y>{t-tiL~w!dmpPZi2HN~|N9d_(ZEpq+f{wg>TxdT&u9 zH=XDt6o;Cj{cH}>Iwh7WzbF6T+9vV16*{z-?cLOLJFo}rF}0cUPY%5V<01Ze5&xj5 faOZ-V)j}#Ok70Y0|BN5Dz|y&y^k6bQwfuhopyd$Y delta 9164 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 diff --git a/Plugins/GenerateApiDump/Formatting.lua b/Plugins/GenerateApiDump/Formatting.lua index a0424e9..669f28e 100644 --- a/Plugins/GenerateApiDump/Formatting.lua +++ b/Plugins/GenerateApiDump/Formatting.lua @@ -1,7 +1,7 @@ local Format = {} function Format.Null(value) - return "null" + return nil end function Format.Bytes(value) @@ -9,7 +9,13 @@ function Format.Bytes(value) local fmt = "Convert.FromBase64String(%q)" return fmt:format(value) else - return "new byte[0]" + return "Array.Empty()" + end +end + +function Format.Bool(value) + if value then + return "true" end end @@ -17,21 +23,21 @@ function Format.String(value) return string.format("%q", value) end -function Format.Int(value) +function Format.Int(value, default) if value == 2147483647 then return "int.MaxValue" elseif value == -2147483648 then return "int.MinValue" - else + elseif value ~= 0 or default then return string.format("%i", value) end end -function Format.Number(value) +function Format.Number(value, default) local int = math.floor(value) if math.abs(value - int) < 0.001 then - return Format.Int(int) + return Format.Int(int, default) end local result = string.format("%.5f", value) @@ -40,10 +46,12 @@ function Format.Number(value) return result end -function Format.Double(value) - local result = Format.Number(value) +function Format.Double(value, default) + local result = Format.Number(value, default) - if result == "inf" then + if not result then + return nil + elseif result == "inf" then return "double.MaxValue" elseif result == "-inf" then return "double.MinValue" @@ -52,10 +60,12 @@ function Format.Double(value) end end -function Format.Float(value) - local result = Format.Number(value) +function Format.Float(value, default) + local result = Format.Number(value, default) - if result == "inf" then + if not result then + return nil + elseif result == "inf" then return "float.MaxValue" elseif result == "-inf" then return "float.MinValue" @@ -73,7 +83,7 @@ function Format.Flags(flag, enum) for _,item in pairs(enum:GetEnumItems()) do if flag[item.Name] then - value = value + (2 ^ item.Value) + value += (2 ^ item.Value) end end @@ -103,17 +113,17 @@ function Format.Color3(color) return "new Color3()" end - local r = Format.Float(color.r) - local g = Format.Float(color.g) - local b = Format.Float(color.b) + local r = Format.Float(color.R, true) + local g = Format.Float(color.G, true) + local b = Format.Float(color.B, true) local fmt = "%s(%s, %s, %s)"; local constructor = "new Color3"; if string.find(r .. g .. b, 'f') then - r = Format.Int(color.r * 255) - g = Format.Int(color.g * 255) - b = Format.Int(color.b * 255) + r = Format.Int(color.R * 255) + g = Format.Int(color.G * 255) + b = Format.Int(color.B * 255) constructor = "Color3.FromRGB" end @@ -126,8 +136,8 @@ function Format.UDim(udim) return "new UDim()" end - local scale = Format.Float(udim.Scale) - local offset = Format.Int(udim.Offset) + local scale = Format.Float(udim.Scale, true) + local offset = Format.Int(udim.Offset, true) local fmt = "new UDim(%s, %s)" return fmt:format(scale, offset) @@ -138,11 +148,11 @@ function Format.UDim2(udim2) return "new UDim2()" end - local xScale = Format.Float(udim2.X.Scale) - local yScale = Format.Float(udim2.Y.Scale) + local xScale = Format.Float(udim2.X.Scale, true) + local yScale = Format.Float(udim2.Y.Scale, true) - local xOffset = Format.Int(udim2.X.Offset) - local yOffset = Format.Int(udim2.Y.Offset) + local xOffset = Format.Int(udim2.X.Offset, true) + local yOffset = Format.Int(udim2.Y.Offset, true) local fmt = "new UDim2(%s, %s, %s, %s)" return fmt:format(xScale, xOffset, yScale, yOffset) @@ -153,8 +163,8 @@ function Format.Vector2(v2) return "new Vector2()" end - local x = Format.Float(v2.X) - local y = Format.Float(v2.Y) + local x = Format.Float(v2.X, true) + local y = Format.Float(v2.Y, true) local fmt = "new Vector2(%s, %s)" return fmt:format(x, y) @@ -165,9 +175,9 @@ function Format.Vector3(v3) return "new Vector3()" end - local x = Format.Float(v3.X) - local y = Format.Float(v3.Y) - local z = Format.Float(v3.Z) + local x = Format.Float(v3.X, true) + local y = Format.Float(v3.Y, true) + local z = Format.Float(v3.Z, true) local fmt = "new Vector3(%s, %s, %s)" return fmt:format(x, y, z) @@ -185,16 +195,16 @@ function Format.CFrame(cf) if rot == blankCF then local fmt = "new CFrame(%s, %s, %s)" - local x = Format.Float(cf.X) - local y = Format.Float(cf.Y) - local z = Format.Float(cf.Z) + local x = Format.Float(cf.X, true) + local y = Format.Float(cf.Y, true) + local z = Format.Float(cf.Z, true) return fmt:format(x, y, z) else local comp = { cf:GetComponents() } for i = 1,12 do - comp[i] = Format.Float(comp[i]) + comp[i] = Format.Float(comp[i], true) end local fmt = "new CFrame(%s)" @@ -209,10 +219,10 @@ function Format.NumberRange(nr) local max = nr.Max local fmt = "new NumberRange(%s)" - local value = Format.Float(min) + local value = Format.Float(min, true) if min ~= max then - value = value .. ", " .. Format.Float(max) + value = value .. ", " .. Format.Float(max, true) end return fmt:format(value) @@ -253,7 +263,7 @@ function Format.NumberSequence(ns) local nsKey = ns.Keypoints[1] local fmt = "new NumberSequence(%s)" - local value = Format.Float(nsKey.Value) + local value = Format.Float(nsKey.Value, true) return fmt:format(value) end @@ -263,9 +273,9 @@ function Format.Vector3int16(v3) return "new Vector3int16()" end - local x = Format.Int(v3.X) - local y = Format.Int(v3.Y) - local z = Format.Int(v3.Z) + local x = Format.Int(v3.X, true) + local y = Format.Int(v3.Y, true) + local z = Format.Int(v3.Z, true) local fmt = "new Vector3int16(%s, %s, %s)" return fmt:format(x, y, z) diff --git a/Plugins/GenerateApiDump/PropertyPatches.lua b/Plugins/GenerateApiDump/PropertyPatches.lua index 2b455ac..ad819da 100644 --- a/Plugins/GenerateApiDump/PropertyPatches.lua +++ b/Plugins/GenerateApiDump/PropertyPatches.lua @@ -2,7 +2,7 @@ local function UseColor3(propName) return { Get = string.format("BrickColor.FromColor3(%s)", propName); - Set = propName .. " = value.Color"; + Set = propName .. " = value?.Color"; } end @@ -349,7 +349,11 @@ return Model = { - Add = { ModelInPrimary = "CFrame" }; + Add = + { + ModelInPrimary = "CFrame"; + ModelMeshData = "BinaryString"; + }; }; ModuleScript = diff --git a/Plugins/GenerateApiDump/init.server.lua b/Plugins/GenerateApiDump/init.server.lua index 5d4ca45..40b0bcf 100644 --- a/Plugins/GenerateApiDump/init.server.lua +++ b/Plugins/GenerateApiDump/init.server.lua @@ -200,9 +200,10 @@ local formatLinks = ["nil"] = "Null"; ["long"] = "Int"; - ["float"] = "Float"; - ["byte[]"] = "Bytes"; - ["double"] = "Double"; + ["float"] = "Float"; + ["byte[]"] = "Bytes"; + ["double"] = "Double"; + ["boolean"] = "Bool"; ["string"] = "String"; ["Content"] = "String"; @@ -247,25 +248,18 @@ setmetatable(patches, patchIndex) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- local baseUrl = "https://raw.githubusercontent.com/CloneTrooper1019/Roblox-Client-Tracker/roblox/" -local toolbar, classButton, enumButton +local toolbar, button if plugin then toolbar = plugin:CreateToolbar("C# API Dump") - classButton = toolbar:CreateButton( - "Dump Classes", - "Generates a C# dump of Roblox's Class API.", + button = toolbar:CreateButton( + "Dump API", + "Generates a C# dump of Roblox's Class/Enum API.", "rbxasset://textures/Icon_Stream_Off@2x.png" ) - enumButton = toolbar:CreateButton( - "Dump Enums", - "Generates a C# dump of Roblox's Enum API.", - "rbxasset://textures/Icon_Stream_Off@2x.png" - ) - - classButton.ClickableWhenViewportHidden = true - enumButton.ClickableWhenViewportHidden = true + button.ClickableWhenViewportHidden = true end local function getAsync(url) @@ -294,6 +288,12 @@ local function generateClasses() local classNames = {} classes = {} + + local enumMap = + { + Axis = true; + FontSize = true; + } for _,class in ipairs(apiDump.Classes) do local className = class.Name @@ -309,9 +309,7 @@ local function generateClasses() if classTags.Service then pcall(function () - if not className:find("Network") then - class.Object = game:GetService(className) - end + class.Object = game:GetService(className) end) elseif not classTags.NotCreatable then pcall(function () @@ -345,7 +343,11 @@ local function generateClasses() writeLine("using RobloxFiles.Utility;") writeLine() - writeLine("#pragma warning disable IDE1006 // Suppress warnings about camelCase.") + writeLine("#pragma warning disable CA1041 // Provide ObsoleteAttribute message") + writeLine("#pragma warning disable CA1051 // Do not declare visible instance fields") + writeLine("#pragma warning disable CA1707 // Identifiers should not contain underscores") + writeLine("#pragma warning disable CA1716 // Identifiers should not match keywords") + writeLine("#pragma warning disable IDE1006 // Naming Styles") writeLine() writeLine("namespace RobloxFiles") @@ -589,7 +591,14 @@ local function generateClasses() result = formatFunc(value) end - default = " = " .. result + if result ~= nil then + default = " = " .. result + end + + if formatFunc == formatting.EnumItem then + local enumName = tostring(value.EnumType) + enumMap[enumName] = true + end end if propTags.Deprecated then @@ -600,10 +609,6 @@ local function generateClasses() writeLine("[Obsolete]") end - if category == "Class" then - default = " = null" - end - writeLine("public %s %s%s;", valueType, name, default) if propTags.Deprecated and i ~= #propNames then @@ -625,27 +630,36 @@ local function generateClasses() closeStack() exportStream("Classes") + + return enumMap end -local function generateEnums() +local function generateEnums(whiteList) local version = getfenv().version():gsub("%. ", ".") clearStream() writeLine("// Auto-generated list of Roblox enums.") writeLine("// Updated as of %s", version) writeLine() - + writeLine("namespace RobloxFiles.Enums") openStack() local enums = Enum:GetEnums() for i, enum in ipairs(enums) do - writeLine("public enum %s", tostring(enum)) + local enumName = tostring(enum) + + if whiteList and not whiteList[enumName] then + continue + end + + writeLine("public enum %s", enumName) openStack() local enumItems = enum:GetEnumItems() local lastValue = -1 + local mapped = {} table.sort(enumItems, function (a, b) return a.Value < b.Value @@ -658,16 +672,20 @@ local function generateEnums() local name = enumItem.Name local value = enumItem.Value - if (value - lastValue) ~= 1 then - text = " = " .. value; + if not mapped[value] then + if (value - lastValue) ~= 1 then + text = " = " .. value; + end + + if i == #enumItems then + comma = "" + end + + lastValue = value + mapped[value] = true + + writeLine("%s%s%s", name, text, comma) end - - if i == #enumItems then - comma = "" - end - - lastValue = value - writeLine("%s%s%s", name, text, comma) end closeStack() @@ -681,10 +699,13 @@ local function generateEnums() exportStream("Enums") end +local function generateAll() + local enumList = generateClasses() + generateEnums(enumList) +end + if plugin then - classButton.Click:Connect(generateClasses) - enumButton.Click:Connect(generateEnums) + button.Click:Connect(generateAll) else - generateClasses() - generateEnums() + generateAll() end \ No newline at end of file diff --git a/RobloxFileFormat.csproj b/RobloxFileFormat.csproj index 8d44611..b9a34c0 100644 --- a/RobloxFileFormat.csproj +++ b/RobloxFileFormat.csproj @@ -1,5 +1,10 @@  + + + + + @@ -47,6 +52,7 @@ TRACE prompt 1 + MinimumRecommendedRules.ruleset @@ -175,6 +181,17 @@ + + + + + + + + + + + copy /y $(TargetPath) $(ProjectDir)$(TargetFileName) @@ -185,6 +202,11 @@ + + + + + \ No newline at end of file diff --git a/RobloxFileFormat.dll b/RobloxFileFormat.dll index a9c50116ae8f81825fb29ce9eb69b9939487b767..15dfaa2a0ea0f353d628fb2c1ae2eb3dd463e6c9 100644 GIT binary patch delta 122063 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 z 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

GZE{ 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 CultureInfo.InvariantCulture; + private static CultureInfo Invariant => CultureInfo.InvariantCulture; public static string ToInvariantString(this float value) { @@ -18,7 +18,7 @@ internal static class Formatting else if (float.IsNaN(value)) result = "NAN"; else - result = value.ToString(invariant); + result = value.ToString(Invariant); return result; } @@ -34,75 +34,52 @@ internal static class Formatting else if (double.IsNaN(value)) result = "NAN"; else - result = value.ToString(invariant); + result = value.ToString(Invariant); return result; } public static string ToInvariantString(this int value) { - return value.ToString(invariant); + return value.ToString(Invariant); } public static string ToInvariantString(this object value) { - if (value is float) + switch (value) { - float f = (float)value; - return f.ToInvariantString(); - } - else if (value is double) - { - double d = (double)value; - return d.ToInvariantString(); - } - else if (value is int) - { - int i = (int)value; - return i.ToInvariantString(); - } - else - { - // Unhandled - return value.ToString(); + case double d : return d.ToInvariantString(); + case float f : return f.ToInvariantString(); + case int i : return i.ToInvariantString(); + default : return value.ToString(); } } public static float ParseFloat(string value) { - float result; - - if (value == "INF") - result = float.PositiveInfinity; - else if (value == "-INF") - result = float.NegativeInfinity; - else if (value == "NAN") - result = float.NaN; - else - result = float.Parse(value, invariant); - - return result; + switch (value) + { + case "NAN" : return float.NaN; + case "INF" : return float.PositiveInfinity; + case "-INF" : return float.NegativeInfinity; + default : return float.Parse(value, Invariant); + } } public static double ParseDouble(string value) { - double result; - - if (value == "INF") - result = double.PositiveInfinity; - else if (value == "-INF") - result = double.NegativeInfinity; - else if (value == "NAN") - result = double.NaN; - else - result = double.Parse(value, invariant); - - return result; + switch (value) + { + case "NAN" : return double.NaN; + case "INF" : return double.PositiveInfinity; + case "-INF" : return double.NegativeInfinity; + default : return double.Parse(value, Invariant); + } } public static int ParseInt(string s) { - return int.Parse(s, invariant); + return int.Parse(s, Invariant); } public static bool FuzzyEquals(this float a, float b, float epsilon = 10e-5f) diff --git a/Utility/ImplicitMember.cs b/Utility/ImplicitMember.cs index 0c73cf9..9ceedf4 100644 --- a/Utility/ImplicitMember.cs +++ b/Utility/ImplicitMember.cs @@ -7,8 +7,8 @@ namespace RobloxFiles.Utility // This is a lazy helper class to disambiguate between FieldInfo and PropertyInfo internal class ImplicitMember { - private static BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase; - private object member; + private const BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase; + private readonly object member; private ImplicitMember(FieldInfo field) { member = field; } private ImplicitMember(PropertyInfo prop) { member = prop; } diff --git a/XmlFormat/XmlPropertyTokens.cs b/XmlFormat/XmlPropertyTokens.cs index 03caf9a..b53a694 100644 --- a/XmlFormat/XmlPropertyTokens.cs +++ b/XmlFormat/XmlPropertyTokens.cs @@ -9,7 +9,7 @@ namespace RobloxFiles.XmlFormat { public static class XmlPropertyTokens { - public static IReadOnlyDictionary Handlers; + private static readonly Dictionary Handlers = new Dictionary(); static XmlPropertyTokens() { @@ -25,22 +25,24 @@ namespace RobloxFiles.XmlFormat .Select(handlerType => Activator.CreateInstance(handlerType)) .Cast(); - var tokenHandlers = new Dictionary(); - foreach (IXmlPropertyToken propToken in propTokens) { var tokens = propToken.Token.Split(';') .Select(token => token.Trim()) .ToList(); - tokens.ForEach(token => tokenHandlers.Add(token, propToken)); + tokens.ForEach(token => Handlers.Add(token, propToken)); } - - Handlers = tokenHandlers; } public static bool ReadPropertyGeneric(XmlNode token, out T outValue) where T : struct { + if (token == null) + { + var name = nameof(token); + throw new ArgumentNullException(name); + } + try { string value = token.InnerText; @@ -65,18 +67,22 @@ namespace RobloxFiles.XmlFormat outValue = (T)result; return true; } - catch + catch (NotSupportedException) { - outValue = default(T); + outValue = default; return false; } } public static bool ReadPropertyGeneric(Property prop, PropertyType propType, XmlNode token) where T : struct { - T result; + if (prop == null) + { + var name = nameof(prop); + throw new ArgumentNullException(name); + } - if (ReadPropertyGeneric(token, out result)) + if (ReadPropertyGeneric(token, out T result)) { prop.Type = propType; prop.Value = result; diff --git a/packages.config b/packages.config index 146db44..f33cbab 100644 --- a/packages.config +++ b/packages.config @@ -4,5 +4,10 @@ + + + + + \ No newline at end of file