From df7709a6b97993269dac0e6563ac5aed63b52f51 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 30 Jun 2022 16:18:00 -0500 Subject: [PATCH] 0.533.0.5330256 --- Generated/Classes.cs | 294 +++++++++++++++++++++++- Plugins/GenerateApiDump.rbxm | Bin 18270 -> 18973 bytes Plugins/GenerateApiDump/init.server.lua | 93 +++++++- 3 files changed, 377 insertions(+), 10 deletions(-) diff --git a/Generated/Classes.cs b/Generated/Classes.cs index b3439f6..299f03e 100644 --- a/Generated/Classes.cs +++ b/Generated/Classes.cs @@ -1,5 +1,5 @@ // Auto-generated list of creatable Roblox classes. -// Updated as of 0.532.0.5320475 +// Updated as of 0.533.0.5330256 using System; @@ -697,6 +697,11 @@ namespace RobloxFiles public class AlignPosition : Constraint { + public AlignPosition() : base() + { + Color = BrickColor.FromNumber(194); + } + public bool ApplyAtCenterOfMass; public float MaxForce = 10000; public float MaxVelocity = float.MaxValue; @@ -717,6 +722,11 @@ namespace RobloxFiles public class BallSocketConstraint : Constraint { + public BallSocketConstraint() : base() + { + Color = BrickColor.FromNumber(1009); + } + public bool LimitsEnabled; public float MaxFrictionTorqueXml = 0; public float Radius = 0.15f; @@ -729,6 +739,11 @@ namespace RobloxFiles public class HingeConstraint : Constraint { + public HingeConstraint() : base() + { + Color = BrickColor.FromNumber(1009); + } + public ActuatorType ActuatorType = ActuatorType.None; public float AngularResponsiveness = 45; public float AngularSpeed = 0; @@ -755,6 +770,11 @@ namespace RobloxFiles public class LinearVelocity : Constraint { + public LinearVelocity() : base() + { + Color = BrickColor.FromNumber(26); + } + public Vector3 LineDirection = new Vector3(1, 0, 0); public float LineVelocity = 0; public float MaxForce = 1000; @@ -768,21 +788,35 @@ namespace RobloxFiles public class PlaneConstraint : Constraint { + public PlaneConstraint() : base() + { + Color = BrickColor.FromNumber(194); + } } public class Plane : PlaneConstraint { + public Plane() : base() + { + Color = BrickColor.FromNumber(194); + } } public class RigidConstraint : Constraint { - public bool DestructionEnabled; - public float DestructionForce = float.MaxValue; - public float DestructionTorque = float.MaxValue; + public RigidConstraint() : base() + { + Color = BrickColor.FromNumber(194); + } } public class RodConstraint : Constraint { + public RodConstraint() : base() + { + Color = BrickColor.FromNumber(26); + } + public float Length = 5; public float LimitAngle0 = 90; public float LimitAngle1 = 90; @@ -792,6 +826,11 @@ namespace RobloxFiles public class RopeConstraint : Constraint { + public RopeConstraint() : base() + { + Color = BrickColor.FromNumber(25); + } + public float Length = 5; public float Restitution = 0; public float Thickness = 0.1f; @@ -804,6 +843,11 @@ namespace RobloxFiles public abstract class SlidingBallConstraint : Constraint { + public SlidingBallConstraint() : base() + { + Color = BrickColor.FromNumber(1009); + } + public ActuatorType ActuatorType = ActuatorType.None; public bool LimitsEnabled; public float LinearResponsiveness = 45; @@ -821,6 +865,11 @@ namespace RobloxFiles public class CylindricalConstraint : SlidingBallConstraint { + public CylindricalConstraint() : base() + { + Color = BrickColor.FromNumber(1009); + } + public ActuatorType AngularActuatorType = ActuatorType.None; public bool AngularLimitsEnabled; public float AngularResponsiveness = 45; @@ -839,10 +888,19 @@ namespace RobloxFiles public class PrismaticConstraint : SlidingBallConstraint { + public PrismaticConstraint() : base() + { + Color = BrickColor.FromNumber(1009); + } } public class SpringConstraint : Constraint { + public SpringConstraint() : base() + { + Color = BrickColor.FromNumber(200); + } + public float Coils = 3; public float Damping = 0; public float FreeLength = 1; @@ -863,6 +921,11 @@ namespace RobloxFiles public class TorsionSpringConstraint : Constraint { + public TorsionSpringConstraint() : base() + { + Color = BrickColor.FromNumber(200); + } + public float Coils = 8; public float Damping = 0.01f; @@ -879,6 +942,11 @@ namespace RobloxFiles public class UniversalConstraint : Constraint { + public UniversalConstraint() : base() + { + Color = BrickColor.FromNumber(1009); + } + public bool LimitsEnabled; public float MaxAngle = 45; public float Radius = 0.2f; @@ -1366,7 +1434,7 @@ namespace RobloxFiles public Color3 BorderColor3 = Color3.FromRGB(27, 42, 53); public BorderMode BorderMode = BorderMode.Outline; public int BorderSizePixel = 1; - public bool ClipsDescendants = false; + public bool ClipsDescendants = true; [Obsolete] public bool Draggable; @@ -1402,11 +1470,23 @@ namespace RobloxFiles public class Frame : GuiObject { + public Frame() : base() + { + ClipsDescendants = false; + } + public FrameStyle Style = FrameStyle.Custom; } public abstract class GuiButton : GuiObject { + public GuiButton() : base() + { + Active = true; + ClipsDescendants = false; + Selectable = true; + } + public bool AutoButtonColor = true; public bool Modal; public bool Selected; @@ -1415,6 +1495,13 @@ namespace RobloxFiles public class ImageButton : GuiButton { + public ImageButton() : base() + { + Active = true; + ClipsDescendants = false; + Selectable = true; + } + public Content HoverImage = ""; public Content Image = ""; public Color3 ImageColor3 = new Color3(1, 1, 1); @@ -1431,6 +1518,13 @@ namespace RobloxFiles public class TextButton : GuiButton { + public TextButton() : base() + { + Active = true; + ClipsDescendants = false; + Selectable = true; + } + public Font Font = Font.Legacy; public FontFace FontFace = new FontFace("rbxasset://fonts/families/LegacyArial.json"); @@ -1486,10 +1580,19 @@ namespace RobloxFiles public abstract class GuiLabel : GuiObject { + public GuiLabel() : base() + { + ClipsDescendants = false; + } } public class ImageLabel : GuiLabel { + public ImageLabel() : base() + { + ClipsDescendants = false; + } + public Content Image = ""; public Color3 ImageColor3 = new Color3(1, 1, 1); public Vector2 ImageRectOffset = new Vector2(); @@ -1504,6 +1607,11 @@ namespace RobloxFiles public class TextLabel : GuiLabel { + public TextLabel() : base() + { + ClipsDescendants = false; + } + public Font Font = Font.Legacy; public FontFace FontFace = new FontFace("rbxasset://fonts/families/LegacyArial.json"); @@ -1559,6 +1667,12 @@ namespace RobloxFiles public class ScrollingFrame : GuiObject { + public ScrollingFrame() : base() + { + Selectable = true; + SelectionGroup = true; + } + public AutomaticSize AutomaticCanvasSize = AutomaticSize.None; public Content BottomImage = "rbxasset://textures/ui/Scroll/scroll-bottom.png"; public Vector2 CanvasPosition = new Vector2(); @@ -1578,6 +1692,13 @@ namespace RobloxFiles public class TextBox : GuiObject { + public TextBox() : base() + { + Active = true; + ClipsDescendants = false; + Selectable = true; + } + public bool ClearTextOnFocus = true; public Font Font = Font.Legacy; public FontFace FontFace = new FontFace("rbxasset://fonts/families/LegacyArial.json"); @@ -1639,6 +1760,11 @@ namespace RobloxFiles public class VideoFrame : GuiObject { + public VideoFrame() : base() + { + ClipsDescendants = false; + } + public bool Looped; public bool Playing; public double TimePosition = 0; @@ -1648,6 +1774,11 @@ namespace RobloxFiles public class ViewportFrame : GuiObject { + public ViewportFrame() : base() + { + ClipsDescendants = false; + } + public Color3 Ambient = Color3.FromRGB(200, 200, 200); public CFrame CameraCFrame = new CFrame(); public float CameraFieldOfView = 70; @@ -1792,6 +1923,12 @@ namespace RobloxFiles public class ImageHandleAdornment : HandleAdornment { + public ImageHandleAdornment() : base() + { + Color = BrickColor.FromNumber(1); + Color3 = Color3.FromRGB(242, 243, 243); + } + public Content Image = "rbxasset://textures/SurfacesDefault.png"; public Vector2 Size = new Vector2(1, 1); } @@ -2626,6 +2763,14 @@ namespace RobloxFiles public abstract class FormFactorPart : BasePart { + public FormFactorPart() : base() + { + BottomSurface = SurfaceType.Inlet; + Size = new Vector3(4, 1.2f, 2); + TopSurface = SurfaceType.Studs; + size = new Vector3(4, 1.2f, 2); + } + [Obsolete] public FormFactor FormFactor { @@ -2645,6 +2790,14 @@ namespace RobloxFiles public class Part : FormFactorPart { + public Part() : base() + { + BottomSurface = SurfaceType.Inlet; + Size = new Vector3(4, 1.2f, 2); + TopSurface = SurfaceType.Studs; + size = new Vector3(4, 1.2f, 2); + } + public PartType Shape { get => shape; @@ -2656,16 +2809,40 @@ namespace RobloxFiles public class FlagStand : Part { + public FlagStand() : base() + { + BottomSurface = SurfaceType.Inlet; + Size = new Vector3(4, 1.2f, 2); + TopSurface = SurfaceType.Studs; + size = new Vector3(4, 1.2f, 2); + } + public BrickColor TeamColor = BrickColor.FromNumber(194); } public class Seat : Part { + public Seat() : base() + { + BottomSurface = SurfaceType.Inlet; + Size = new Vector3(4, 1.2f, 2); + TopSurface = SurfaceType.Studs; + size = new Vector3(4, 1.2f, 2); + } + public bool Disabled; } public class SkateboardPlatform : Part { + public SkateboardPlatform() : base() + { + BottomSurface = SurfaceType.Inlet; + Size = new Vector3(4, 1.2f, 2); + TopSurface = SurfaceType.Studs; + size = new Vector3(4, 1.2f, 2); + } + public int Steer = 0; public bool StickyWheels = true; public int Throttle = 0; @@ -2673,6 +2850,14 @@ namespace RobloxFiles public class SpawnLocation : Part { + public SpawnLocation() : base() + { + BottomSurface = SurfaceType.Inlet; + Size = new Vector3(4, 1.2f, 2); + TopSurface = SurfaceType.Studs; + size = new Vector3(4, 1.2f, 2); + } + public bool AllowTeamChangeOnTouch; public int Duration = 10; public bool Enabled = true; @@ -2682,10 +2867,26 @@ namespace RobloxFiles public class WedgePart : FormFactorPart { + public WedgePart() : base() + { + BottomSurface = SurfaceType.Inlet; + Size = new Vector3(4, 1.2f, 2); + size = new Vector3(4, 1.2f, 2); + } } public class Terrain : BasePart { + public Terrain() : base() + { + Anchored = true; + BottomSurface = SurfaceType.Inlet; + Locked = true; + Size = new Vector3(2044, 252, 2044); + TopSurface = SurfaceType.Studs; + size = new Vector3(2044, 252, 2044); + } + public TerrainAcquisitionMethod AcquisitionMethod = TerrainAcquisitionMethod.None; public byte[] ClusterGridV3; public bool Decoration; @@ -2701,6 +2902,12 @@ namespace RobloxFiles public abstract class TriangleMeshPart : BasePart { + public TriangleMeshPart() : base() + { + Size = new Vector3(4, 1.2f, 2); + size = new Vector3(4, 1.2f, 2); + } + public Vector3 InitialSize = new Vector3(1, 1, 1); public byte[] LODData; public SharedString PhysicalConfigData = SharedString.FromBase64("1B2M2Y8AsgTpgAmY7PhCfg=="); @@ -2709,6 +2916,12 @@ namespace RobloxFiles public class MeshPart : TriangleMeshPart { + public MeshPart() : base() + { + Size = new Vector3(4, 1.2f, 2); + size = new Vector3(4, 1.2f, 2); + } + public bool DoubleSided; public bool HasJointOffset; public bool HasSkinnedMesh; @@ -2729,6 +2942,15 @@ namespace RobloxFiles public class PartOperation : TriangleMeshPart { + public PartOperation() : base() + { + BrickColor = BrickColor.FromNumber(1001); + Color = new Color3(1, 1, 1); + Size = new Vector3(4, 1.2f, 2); + brickColor = BrickColor.FromNumber(1001); + size = new Vector3(4, 1.2f, 2); + } + public Content AssetId = ""; public byte[] ChildData; public SharedString ChildData2 = SharedString.FromBase64("yuZpQdnvvUBOTYh1jqZ2cA=="); @@ -2742,14 +2964,42 @@ namespace RobloxFiles public class NegateOperation : PartOperation { + public NegateOperation() : base() + { + Anchored = true; + BrickColor = BrickColor.FromNumber(1001); + CanCollide = false; + Color = new Color3(1, 1, 1); + Size = new Vector3(4, 1.2f, 2); + brickColor = BrickColor.FromNumber(1001); + size = new Vector3(4, 1.2f, 2); + } } public class UnionOperation : PartOperation { + public UnionOperation() : base() + { + BrickColor = BrickColor.FromNumber(1001); + Color = new Color3(1, 1, 1); + Size = new Vector3(4, 1.2f, 2); + brickColor = BrickColor.FromNumber(1001); + size = new Vector3(4, 1.2f, 2); + } } public class TrussPart : BasePart { + public TrussPart() : base() + { + BackSurface = SurfaceType.Universal; + BottomSurface = SurfaceType.Universal; + FrontSurface = SurfaceType.Universal; + LeftSurface = SurfaceType.Universal; + RightSurface = SurfaceType.Universal; + TopSurface = SurfaceType.Universal; + } + public Style Style { get => style; @@ -2761,6 +3011,14 @@ namespace RobloxFiles public class VehicleSeat : BasePart { + public VehicleSeat() : base() + { + BottomSurface = SurfaceType.Inlet; + Size = new Vector3(4, 1.2f, 2); + TopSurface = SurfaceType.Studs; + size = new Vector3(4, 1.2f, 2); + } + public bool Disabled; public bool HeadsUpDisplay = true; public float MaxSpeed = 25; @@ -3755,6 +4013,14 @@ namespace RobloxFiles public BrickColor TeamColor = BrickColor.FromNumber(1); } + public class TeamCreateService : Instance + { + public TeamCreateService() + { + IsService = true; + } + } + public class Teams : Instance { public Teams() @@ -3781,6 +4047,14 @@ namespace RobloxFiles public bool CustomizedTeleportUI; } + public class TemporaryCageMeshProvider : Instance + { + public TemporaryCageMeshProvider() + { + IsService = true; + } + } + public class TemporaryScriptService : Instance { public TemporaryScriptService() @@ -4036,6 +4310,11 @@ namespace RobloxFiles public class UIListLayout : UIGridStyleLayout { + public UIListLayout() : base() + { + FillDirection = FillDirection.Vertical; + } + public UDim Padding = new UDim(); } @@ -4054,6 +4333,11 @@ namespace RobloxFiles public class UITableLayout : UIGridStyleLayout { + public UITableLayout() : base() + { + FillDirection = FillDirection.Vertical; + } + public bool FillEmptySpaceColumns; public bool FillEmptySpaceRows; public TableMajorAxis MajorAxis = TableMajorAxis.RowMajor; diff --git a/Plugins/GenerateApiDump.rbxm b/Plugins/GenerateApiDump.rbxm index 45138ae7e38c7405690cbcda2479d6ef629ea96e..94b80c3c5dbe498e44dfcbb95f888c01e66e3c35 100644 GIT binary patch delta 8344 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 G^8W>Z3;p{5 delta 7609 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 diff --git a/Plugins/GenerateApiDump/init.server.lua b/Plugins/GenerateApiDump/init.server.lua index d2c8b7e..5038cfa 100644 --- a/Plugins/GenerateApiDump/init.server.lua +++ b/Plugins/GenerateApiDump/init.server.lua @@ -457,16 +457,99 @@ local function generateClasses() end local firstLine = true - table.sort(propNames) + class.PropertyMap = propMap - if classTags.Service then - writeLine("public %s()", className) + local ancestor = class + local diffProps = {} + + while object do + ancestor = classes[ancestor.Superclass] + + if not ancestor then + break + end + + local inheritProps = ancestor.PropertyMap + local inherited = ancestor.Inherited + + local baseObject = if inherited + then inherited.Object + else nil + + if inheritProps and baseObject then + for name, prop in pairs(inheritProps) do + local tags = getTags(prop) + + if tags.ReadOnly then + continue + end + + local gotPropValue, propValue = pcall(function () + return object[name] + end) + + local gotBaseValue, baseValue = pcall(function () + return baseObject[name] + end) + + if gotBaseValue and gotPropValue then + if propValue ~= baseValue then + diffProps[name] = propValue + end + end + end + end + end + + if classTags.Service or next(diffProps) then + local headerFormat = "public %s()" + + if next(diffProps) then + headerFormat ..= " : base()" + end + + writeLine(headerFormat, className) openStack() - writeLine("IsService = true;") + if classTags.Service then + writeLine("IsService = true;") + + if next(diffProps) then + writeLine() + end + end + + if next(diffProps) then + local diffNames = {} + + for name in pairs(diffProps) do + table.insert(diffNames, name) + end + + table.sort(diffNames) + + for i, name in ipairs(diffNames) do + local value = diffProps[name] + local valueType = typeof(value) + local formatFunc = getFormatFunction(valueType) + + if formatFunc ~= formatting.Null then + local result = formatFunc(value) + + if result == "" then + result = tostring(value) + end + + writeLine("%s = %s;", name, result) + end + end + end + closeStack() end + table.sort(propNames) + for j, propName in ipairs(propNames) do local prop = propMap[propName] local propTags = getTags(prop) @@ -481,7 +564,7 @@ local function generateClasses() local couldSave = (serial.CanSave or propTags.Deprecated or redirect) if serial.CanLoad and couldSave then - if firstLine and classTags.Service then + if firstLine and (classTags.Service or next(diffProps)) then writeLine() end