0.438.0.407270

This commit is contained in:
CloneTrooper1019 2020-06-29 19:06:14 -05:00
parent f7e53785d1
commit 540958f7f8
11 changed files with 182 additions and 27 deletions

3
.gitignore vendored
View File

@ -330,4 +330,5 @@ ASALocalRun/
.mfractor/ .mfractor/
# Library Test # Library Test
RobloxFileFormat.exe RobloxFileFormat.exe
*.lock

View File

@ -1,5 +1,5 @@
// Auto-generated list of creatable Roblox classes. // Auto-generated list of creatable Roblox classes.
// Updated as of 0.437.0.406875 // Updated as of 0.438.0.407270
using System; using System;
@ -51,6 +51,7 @@ namespace RobloxFiles
IsService = true; IsService = true;
} }
[Obsolete]
public string ApiKey = ""; public string ApiKey = "";
} }
@ -1139,6 +1140,7 @@ namespace RobloxFiles
} }
public float LineHeight = 1; public float LineHeight = 1;
public bool RichText = false;
public string Text = "Button"; public string Text = "Button";
[Obsolete] [Obsolete]
@ -1208,6 +1210,7 @@ namespace RobloxFiles
} }
public float LineHeight = 1; public float LineHeight = 1;
public bool RichText = false;
public string Text = "Label"; public string Text = "Label";
[Obsolete] [Obsolete]
@ -1282,6 +1285,7 @@ namespace RobloxFiles
public bool MultiLine = false; public bool MultiLine = false;
public Color3 PlaceholderColor3 = Color3.FromRGB(178, 178, 178); public Color3 PlaceholderColor3 = Color3.FromRGB(178, 178, 178);
public string PlaceholderText = ""; public string PlaceholderText = "";
public bool RichText = false;
public bool ShowNativeInput = true; public bool ShowNativeInput = true;
public string Text = "TextBox"; public string Text = "TextBox";
@ -1840,22 +1844,22 @@ namespace RobloxFiles
IsService = true; IsService = true;
} }
public Color3 Ambient = new Color3(); public Color3 Ambient = Color3.FromRGB(127, 127, 127);
public float Brightness = 2; public float Brightness = 1;
public Color3 ColorShift_Bottom = new Color3(); public Color3 ColorShift_Bottom = new Color3();
public Color3 ColorShift_Top = new Color3(); public Color3 ColorShift_Top = new Color3();
public float EnvironmentDiffuseScale = 0; public float EnvironmentDiffuseScale = 0;
public float EnvironmentSpecularScale = 0; public float EnvironmentSpecularScale = 0;
public float ExposureCompensation = 0; public float ExposureCompensation = 0;
public Color3 FogColor = Color3.FromRGB(192, 192, 192); public Color3 FogColor = Color3.FromRGB(191, 191, 191);
public float FogEnd = 100000; public float FogEnd = 100000;
public float FogStart = 0; public float FogStart = 0;
public float GeographicLatitude = 41.7333f; public float GeographicLatitude = 41.7333f;
public bool GlobalShadows = true; public bool GlobalShadows = false;
public Color3 OutdoorAmbient = Color3.FromRGB(128, 128, 128); public Color3 OutdoorAmbient = Color3.FromRGB(127, 127, 127);
[Obsolete] [Obsolete]
public bool Outlines = false; public bool Outlines = true;
[Obsolete] [Obsolete]
public Color3 ShadowColor = Color3.FromRGB(178, 178, 183); public Color3 ShadowColor = Color3.FromRGB(178, 178, 183);
@ -2167,7 +2171,7 @@ namespace RobloxFiles
public byte[] MaterialColors = Convert.FromBase64String("AAAAAAAAan8/P39rf2Y/ilY+j35fi21PZmxvZbDqw8faiVpHOi4kHh4lZlw76JxKc3trhHtagcLgc4RKxr21zq2UlJSM"); public byte[] MaterialColors = Convert.FromBase64String("AAAAAAAAan8/P39rf2Y/ilY+j35fi21PZmxvZbDqw8faiVpHOi4kHh4lZlw76JxKc3trhHtagcLgc4RKxr21zq2UlJSM");
public byte[] PhysicsGrid = Convert.FromBase64String("AgMAAAAAAAAAAAAAAAA="); public byte[] PhysicsGrid = Convert.FromBase64String("AgMAAAAAAAAAAAAAAAA=");
public byte[] SmoothGrid = Convert.FromBase64String("AQU="); public byte[] SmoothGrid = Convert.FromBase64String("AQU=");
public Color3 WaterColor = Color3.FromRGB(12, 84, 92); public Color3 WaterColor = Color3.FromRGB(12, 84, 91);
public float WaterReflectance = 1; public float WaterReflectance = 1;
public float WaterTransparency = 0.3f; public float WaterTransparency = 0.3f;
public float WaterWaveSize = 0.15f; public float WaterWaveSize = 0.15f;
@ -2264,7 +2268,7 @@ namespace RobloxFiles
public double DistributedGameTime = 0; public double DistributedGameTime = 0;
public bool ExplicitAutoJoints = true; public bool ExplicitAutoJoints = true;
public float FallenPartsDestroyHeight = -500; public float FallenPartsDestroyHeight = -500;
public bool FilteringEnabled = true; public bool FilteringEnabled = false;
public float Gravity = 196.2f; public float Gravity = 196.2f;
public bool StreamingEnabled = false; public bool StreamingEnabled = false;
public int StreamingMinRadius = 64; public int StreamingMinRadius = 64;
@ -2833,7 +2837,7 @@ namespace RobloxFiles
public ReverbType AmbientReverb = ReverbType.NoReverb; public ReverbType AmbientReverb = ReverbType.NoReverb;
public float DistanceFactor = 3.33f; public float DistanceFactor = 3.33f;
public float DopplerScale = 1; public float DopplerScale = 1;
public bool RespectFilteringEnabled = true; public bool RespectFilteringEnabled = false;
public float RolloffScale = 1; public float RolloffScale = 1;
} }
@ -2849,6 +2853,14 @@ namespace RobloxFiles
public Color3 SparkleColor = Color3.FromRGB(144, 25, 255); public Color3 SparkleColor = Color3.FromRGB(144, 25, 255);
} }
public class SpawnerService : Instance
{
public SpawnerService()
{
IsService = true;
}
}
public class StandalonePluginScripts : Instance public class StandalonePluginScripts : Instance
{ {
} }
@ -2874,7 +2886,7 @@ namespace RobloxFiles
public bool AllowCustomAnimations = true; public bool AllowCustomAnimations = true;
public bool AutoJumpEnabled = true; public bool AutoJumpEnabled = true;
public float CameraMaxZoomDistance = 128; public float CameraMaxZoomDistance = 400;
public float CameraMinZoomDistance = 0.5f; public float CameraMinZoomDistance = 0.5f;
public CameraMode CameraMode = CameraMode.Classic; public CameraMode CameraMode = CameraMode.Classic;
public float CharacterJumpHeight = 7.2f; public float CharacterJumpHeight = 7.2f;

View File

@ -1,5 +1,5 @@
// Auto-generated list of Roblox enums. // Auto-generated list of Roblox enums.
// Updated as of 0.437.0.406875 // Updated as of 0.438.0.407270
namespace RobloxFiles.Enums namespace RobloxFiles.Enums
{ {
@ -1912,7 +1912,9 @@ namespace RobloxFiles.Enums
DialogButtonText, DialogButtonText,
DialogButtonBorder, DialogButtonBorder,
DialogMainButton, DialogMainButton,
DialogMainButtonText DialogMainButtonText,
InfoBarWarningBackground,
InfoBarWarningText
} }
public enum StudioStyleGuideModifier public enum StudioStyleGuideModifier

View File

@ -1,18 +1,87 @@
using System; using System;
using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;
using RobloxFiles.DataTypes;
namespace RobloxFiles namespace RobloxFiles
{ {
// If the solution is built as an exe, this class is
// used to drive some basic testing of the library.
internal static class Program internal static class Program
{ {
const string pattern = "\\d+$";
static void CountAssets(string path)
{
Console.WriteLine("Opening file...");
RobloxFile target = RobloxFile.Open(path);
var workspace = target.FindFirstChildOfClass<Workspace>();
var assets = new HashSet<string>();
foreach (Instance inst in workspace.GetDescendants())
{
var instPath = inst.GetFullName();
var props = inst.Properties;
foreach (var prop in props)
{
var propName = prop.Key;
var content = prop.Value.CastValue<Content>();
if (content != null)
{
string url = content.Url.Trim();
var id = Regex
.Match(url, pattern)?
.Value;
if (id != null && id.Length > 5)
url = "rbxassetid://" + id;
if (url.Length > 0 && !assets.Contains(url))
{
Console.WriteLine($"[{url}] at {instPath}.{propName}");
assets.Add(url);
}
}
}
}
Console.WriteLine("Done! Press any key to continue...");
Console.Read();
}
[STAThread] [STAThread]
static void Main(string[] args) static void Main(string[] args)
{ {
RobloxFile bin = RobloxFile.Open(@"LibTest\Binary.rbxl"); if (args.Length > 0)
Debugger.Break(); {
string path = args[0];
CountAssets(path);
}
else
{
RobloxFile bin = RobloxFile.Open(@"LibTest\Binary.rbxl");
RobloxFile xml = RobloxFile.Open(@"LibTest\Xml.rbxlx");
RobloxFile xml = RobloxFile.Open(@"LibTest\Xml.rbxlx"); Console.WriteLine("Files opened! Pausing execution for debugger analysis...");
Debugger.Break(); Debugger.Break();
using (FileStream binStream = File.OpenWrite(@"LibTest\Binary_SaveTest.rbxl"))
bin.Save(binStream);
using (FileStream xmlStream = File.OpenWrite(@"LibTest\Xml_SaveTest.rbxlx"))
xml.Save(xmlStream);
Console.WriteLine("Files saved! Pausing execution for debugger analysis...");
Debugger.Break();
}
} }
} }
} }

View File

@ -8,6 +8,16 @@
"label": "Build Plugin", "label": "Build Plugin",
"command": "rojo build --output GenerateApiDump.rbxm", "command": "rojo build --output GenerateApiDump.rbxm",
"group": "build"
},
{
"type": "shell",
"label": "Build and Test Plugin",
"command": "powershell -ExecutionPolicy ByPass -File DeployToStudio.ps1",
"dependsOn": ["Build Plugin"],
"group": "group":
{ {
"kind": "build", "kind": "build",

View File

@ -0,0 +1,7 @@
$pluginName = "GenerateApiDump.rbxm"
$studioKey = "HKCU:\Software\Roblox\RobloxStudio"
$contentDir = Get-ItemPropertyValue -Path $studioKey -Name "ContentFolder"
$destPath = $contentDir + "/../BuiltInPlugins/" + $pluginName
Copy-Item -Path $pluginName -Destination $destPath

Binary file not shown.

View File

@ -14,6 +14,21 @@ local singletons =
StarterCharacterScripts = StarterPlayer:WaitForChild("StarterCharacterScripts"); StarterCharacterScripts = StarterPlayer:WaitForChild("StarterCharacterScripts");
} }
local numberTypes =
{
int = true;
long = true;
float = true;
double = true;
}
local stringTypes =
{
string = true;
Content = true;
ProtectedString = true;
}
local isCoreScript = pcall(function () local isCoreScript = pcall(function ()
local restricted = game:GetService("RobloxPluginGuiService") local restricted = game:GetService("RobloxPluginGuiService")
return tostring(restricted) return tostring(restricted)
@ -246,6 +261,9 @@ if plugin then
"Generates a C# dump of Roblox's Enum API.", "Generates a C# dump of Roblox's Enum API.",
"rbxasset://textures/Icon_Stream_Off@2x.png" "rbxasset://textures/Icon_Stream_Off@2x.png"
) )
classButton.ClickableWhenViewportHidden = true
enumButton.ClickableWhenViewportHidden = true
end end
local function getAsync(url) local function getAsync(url)
@ -266,6 +284,7 @@ local function getAsync(url)
end end
local function generateClasses() local function generateClasses()
local env = getfenv()
local version = getAsync(baseUrl .. "version.txt") local version = getAsync(baseUrl .. "version.txt")
local apiDump = getAsync(baseUrl .. "API-Dump.json") local apiDump = getAsync(baseUrl .. "API-Dump.json")
@ -296,9 +315,9 @@ local function generateClasses()
pcall(function () pcall(function ()
class.Object = Instance.new(className) class.Object = Instance.new(className)
if ServerStorage:FindFirstChild("DumpFolder") then if game:FindFirstChild("DumpFolder") then
class.Object.Name = className class.Object.Name = className
class.Object.Parent = ServerStorage.DumpFolder class.Object.Parent = game.DumpFolder
end end
end) end)
end end
@ -510,11 +529,41 @@ local function generateClasses()
end) end)
end end
local comment = " // Default missing!" local typeData = prop.ValueType
local category = prop.ValueType.Category local category = typeData.Category
if not gotValue and category ~= "Class" then
-- Fallback to implicit defaults
local typeName = typeData.Name
if numberTypes[typeName] then
value = 0
gotValue = true
elseif stringTypes[typeName] then
value = ""
gotValue = true
elseif category == "DataType" then
local DataType = env[typeName]
if DataType and typeof(DataType) == "table" and not rawget(env, typeName) then
pcall(function ()
value = DataType.new()
gotValue = true
end)
end
end
local id = string.format("%s.%s", className, propName)
local src = string.format("[%s]", script.Parent:GetFullName())
if gotValue then
warn(src, "Fell back to implicit value for property:", id)
else
warn(src, "!! Could not figure out default value for property:", id)
end
end
if gotValue then if gotValue then
local category = prop.ValueType.Category
local formatFunc = getFormatFunction(valueType) local formatFunc = getFormatFunction(valueType)
if not formatFunc then if not formatFunc then
@ -535,7 +584,6 @@ local function generateClasses()
end end
default = " = " .. result default = " = " .. result
comment = ""
end end
if propTags.Deprecated then if propTags.Deprecated then
@ -548,10 +596,9 @@ local function generateClasses()
if category == "Class" then if category == "Class" then
default = " = null" default = " = null"
comment = ""
end end
writeLine("public %s %s%s;%s", valueType, name, default, comment) writeLine("public %s %s%s;", valueType, name, default)
if propTags.Deprecated and i ~= #propNames then if propTags.Deprecated and i ~= #propNames then
writeLine() writeLine()

7
Plugins/Null.rbxlx Normal file
View File

@ -0,0 +1,7 @@
<roblox version="4">
<Item class="Folder">
<Properties>
<string name="Name">DumpFolder</string>
</Properties>
</Item>
</roblox>

View File

@ -6,7 +6,7 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{CF50C0E2-23A7-4DC1-B4B2-E60CDE716253}</ProjectGuid> <ProjectGuid>{CF50C0E2-23A7-4DC1-B4B2-E60CDE716253}</ProjectGuid>
<OutputType>Library</OutputType> <OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>RobloxFiles</RootNamespace> <RootNamespace>RobloxFiles</RootNamespace>
<AssemblyName>RobloxFileFormat</AssemblyName> <AssemblyName>RobloxFileFormat</AssemblyName>

Binary file not shown.