0.438.0.407270
This commit is contained in:
parent
f7e53785d1
commit
540958f7f8
3
.gitignore
vendored
3
.gitignore
vendored
@ -330,4 +330,5 @@ ASALocalRun/
|
|||||||
.mfractor/
|
.mfractor/
|
||||||
|
|
||||||
# Library Test
|
# Library Test
|
||||||
RobloxFileFormat.exe
|
RobloxFileFormat.exe
|
||||||
|
*.lock
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
10
Plugins/.vscode/tasks.json
vendored
10
Plugins/.vscode/tasks.json
vendored
@ -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",
|
||||||
|
7
Plugins/DeployToStudio.ps1
Normal file
7
Plugins/DeployToStudio.ps1
Normal 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.
@ -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
7
Plugins/Null.rbxlx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<roblox version="4">
|
||||||
|
<Item class="Folder">
|
||||||
|
<Properties>
|
||||||
|
<string name="Name">DumpFolder</string>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
@ -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.
Loading…
Reference in New Issue
Block a user