From ca0aabd8147de7d52a25a3832a024d02759f3cc8 Mon Sep 17 00:00:00 2001 From: Lucien Greathouse Date: Mon, 11 Feb 2019 13:47:49 -0800 Subject: [PATCH] Preload plugin assets at start. Closes #121. --- plugin/src/Assets.lua | 4 +--- plugin/src/Components/App.lua | 3 +++ plugin/src/preloadAssets.lua | 28 ++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 plugin/src/preloadAssets.lua diff --git a/plugin/src/Assets.lua b/plugin/src/Assets.lua index 9b94d6e8..156dde61 100644 --- a/plugin/src/Assets.lua +++ b/plugin/src/Assets.lua @@ -1,9 +1,7 @@ -local sheetAsset = "rbxassetid://2738712459" - local Assets = { Sprites = { WhiteCross = { - asset = sheetAsset, + asset = "rbxassetid://2738712459", offset = Vector2.new(190, 318), size = Vector2.new(18, 18), }, diff --git a/plugin/src/Components/App.lua b/plugin/src/Components/App.lua index 893754ab..7d534759 100644 --- a/plugin/src/Components/App.lua +++ b/plugin/src/Components/App.lua @@ -8,6 +8,7 @@ local Config = require(Plugin.Config) local Version = require(Plugin.Version) local Logging = require(Plugin.Logging) local DevSettings = require(Plugin.DevSettings) +local preloadAssets = require(Plugin.preloadAssets) local ConnectPanel = require(Plugin.Components.ConnectPanel) local ConnectionActivePanel = require(Plugin.Components.ConnectionActivePanel) @@ -177,6 +178,8 @@ function App:didMount() }) end end) + + preloadAssets() end function App:didUpdate() diff --git a/plugin/src/preloadAssets.lua b/plugin/src/preloadAssets.lua new file mode 100644 index 00000000..6f40e001 --- /dev/null +++ b/plugin/src/preloadAssets.lua @@ -0,0 +1,28 @@ +local ContentProvider = game:GetService("ContentProvider") + +local Logging = require(script.Parent.Logging) +local Assets = require(script.Parent.Assets) + +local function preloadAssets() + local contentUrls = {} + + for _, sprite in pairs(Assets.Sprites) do + table.insert(contentUrls, sprite.asset) + end + + for _, slice in pairs(Assets.Slices) do + table.insert(contentUrls, slice.asset) + end + + for _, url in pairs(Assets.Images) do + table.insert(contentUrls, url) + end + + Logging.trace("Preloading assets: %s", table.concat(contentUrls, ", ")) + + coroutine.wrap(function() + ContentProvider:PreloadAsync(contentUrls) + end)() +end + +return preloadAssets \ No newline at end of file