From 3e1b9c674e081b5f0ada0fbe9b1e11f23bb25ead Mon Sep 17 00:00:00 2001 From: Joshua Reason Date: Thu, 10 Oct 2019 10:40:32 +1100 Subject: [PATCH] Webgl works alongside android + included in project --- .gitattributes | 1 + .gitignore | 3 + .../Networking/Server/Realtime/Server.asset | 4 +- Assets/Plugins/GetURL.jslib | 20 ++++++ Assets/Plugins/GetURL.jslib.meta | 36 +++++++++++ .../IngameDebugConsole/Sprites/Unused.meta | 8 --- Assets/Plugins/wegGLKeyboard.jslib | 13 ++++ Assets/Plugins/wegGLKeyboard.jslib.meta | 36 +++++++++++ .../Map Sections/Width 3.meta} | 2 +- Assets/Scripts/Browser/BrowserServer.cs | 12 ++-- Assets/Scripts/Browser/WebGLKeyboard.cs | 51 +++++++++++++++ Assets/Scripts/Browser/WebGLKeyboard.cs.meta | 11 ++++ .../Android.meta => Scripts/Components.meta} | 2 +- Assets/Scripts/LogicBlocks.meta | 8 --- Assets/Scripts/Managers/GameManager.cs | 8 +-- .../Core/Utility/ExtensionMethods.cs | 5 ++ .../Scripts/Networking/Server/ClientList.cs | 21 ++++--- .../Networking/Server/NetworkedClient.cs | 2 +- .../Networking/Server/ServerManager.cs | 2 +- .../Scripts/Networking/Server/ServerObject.cs | 58 ++++++++++++++++-- Assets/Scripts/UI/Lobby/LobbyUIController.cs | 4 +- .../Prefabs.meta => StreamingAssets.meta} | 2 +- .../WebGLBuild.meta} | 2 +- Assets/StreamingAssets/WebGLBuild/Build.meta | 8 +++ .../WebGLBuild/Build/UnityLoader.js | 4 ++ .../WebGLBuild/Build/UnityLoader.js.meta | 7 +++ .../WebGLBuild/Build/WebGLBuild.data.unityweb | 3 + .../Build/WebGLBuild.data.unityweb.meta | 7 +++ .../WebGLBuild/Build/WebGLBuild.json | 13 ++++ .../WebGLBuild/Build/WebGLBuild.json.meta | 7 +++ .../Build/WebGLBuild.wasm.code.unityweb | 3 + .../Build/WebGLBuild.wasm.code.unityweb.meta | 7 +++ .../Build/WebGLBuild.wasm.framework.unityweb | 3 + .../WebGLBuild.wasm.framework.unityweb.meta | 7 +++ .../WebGLBuild/TemplateData.meta | 8 +++ .../WebGLBuild/TemplateData/UnityProgress.js | 24 ++++++++ .../TemplateData/UnityProgress.js.meta | 7 +++ .../WebGLBuild/TemplateData/favicon.ico | Bin 0 -> 13275 bytes .../WebGLBuild/TemplateData/favicon.ico.meta | 7 +++ .../WebGLBuild/TemplateData/fullscreen.png | 3 + .../TemplateData/fullscreen.png.meta | 7 +++ .../TemplateData/progressEmpty.Dark.png | 3 + .../TemplateData/progressEmpty.Dark.png.meta | 7 +++ .../TemplateData/progressEmpty.Light.png | 3 + .../TemplateData/progressEmpty.Light.png.meta | 7 +++ .../TemplateData/progressFull.Dark.png | 3 + .../TemplateData/progressFull.Dark.png.meta | 7 +++ .../TemplateData/progressFull.Light.png | 3 + .../TemplateData/progressFull.Light.png.meta | 7 +++ .../TemplateData/progressLogo.Dark.png | 3 + .../TemplateData/progressLogo.Dark.png.meta | 7 +++ .../TemplateData/progressLogo.Light.png | 3 + .../TemplateData/progressLogo.Light.png.meta | 7 +++ .../WebGLBuild/TemplateData/style.css | 18 ++++++ .../WebGLBuild/TemplateData/style.css.meta | 7 +++ .../WebGLBuild/TemplateData/webgl-logo.png | 3 + .../TemplateData/webgl-logo.png.meta | 7 +++ Assets/StreamingAssets/WebGLBuild/index.html | 25 ++++++++ .../WebGLBuild/index.html.meta | 7 +++ ProjectSettings/GraphicsSettings.asset | 4 +- 60 files changed, 517 insertions(+), 50 deletions(-) create mode 100644 Assets/Plugins/GetURL.jslib create mode 100644 Assets/Plugins/GetURL.jslib.meta delete mode 100644 Assets/Plugins/IngameDebugConsole/Sprites/Unused.meta create mode 100644 Assets/Plugins/wegGLKeyboard.jslib create mode 100644 Assets/Plugins/wegGLKeyboard.jslib.meta rename Assets/{Models.meta => Prefabs/Map Sections/Width 3.meta} (77%) create mode 100644 Assets/Scripts/Browser/WebGLKeyboard.cs create mode 100644 Assets/Scripts/Browser/WebGLKeyboard.cs.meta rename Assets/{Plugins/IngameDebugConsole/Android.meta => Scripts/Components.meta} (77%) delete mode 100644 Assets/Scripts/LogicBlocks.meta rename Assets/{Plugins/IngameDebugConsole/Prefabs.meta => StreamingAssets.meta} (77%) rename Assets/{Plugins/IngameDebugConsole/Scripts.meta => StreamingAssets/WebGLBuild.meta} (77%) create mode 100644 Assets/StreamingAssets/WebGLBuild/Build.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/UnityLoader.js create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/UnityLoader.js.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/WebGLBuild.data.unityweb create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/WebGLBuild.data.unityweb.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/WebGLBuild.json create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/WebGLBuild.json.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/WebGLBuild.wasm.code.unityweb create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/WebGLBuild.wasm.code.unityweb.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/WebGLBuild.wasm.framework.unityweb create mode 100644 Assets/StreamingAssets/WebGLBuild/Build/WebGLBuild.wasm.framework.unityweb.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/UnityProgress.js create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/UnityProgress.js.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/favicon.ico create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/favicon.ico.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/fullscreen.png create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/fullscreen.png.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Dark.png create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Dark.png.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Light.png create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Light.png.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Dark.png create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Dark.png.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Light.png create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Light.png.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Dark.png create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Dark.png.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Light.png create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Light.png.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/style.css create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/style.css.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/webgl-logo.png create mode 100644 Assets/StreamingAssets/WebGLBuild/TemplateData/webgl-logo.png.meta create mode 100644 Assets/StreamingAssets/WebGLBuild/index.html create mode 100644 Assets/StreamingAssets/WebGLBuild/index.html.meta diff --git a/.gitattributes b/.gitattributes index 3efd046..e54bd78 100644 --- a/.gitattributes +++ b/.gitattributes @@ -37,3 +37,4 @@ *.zip filter=lfs diff=lfs merge=lfs -text *.asset filter=lfs diff=lfs merge=lfs -text *.unity filter=lfs diff=lfs merge=lfs -text +*.unityweb filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore index 2d9613f..a90ace6 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,9 @@ [Bb]uilds/ Assets/AssetStoreTools* +#Include all of Streaming Assets +!Assets/StreamingAssets/** + #Large WIP or legacy files (Legacy)/ .WIP Textures/ diff --git a/Assets/Data/Networking/Server/Realtime/Server.asset b/Assets/Data/Networking/Server/Realtime/Server.asset index d8157f2..2600078 100644 --- a/Assets/Data/Networking/Server/Realtime/Server.asset +++ b/Assets/Data/Networking/Server/Realtime/Server.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d7b72510c56d1d1adc4dc2473034b884e8b831978ca1efc7ad50b536157b696 -size 508 +oid sha256:bb2f97ea3a07f0b8f8e7cb0dff6e4bfef283dc0c83b8ec9d9cc81d77319661cc +size 527 diff --git a/Assets/Plugins/GetURL.jslib b/Assets/Plugins/GetURL.jslib new file mode 100644 index 0000000..a4b6f60 --- /dev/null +++ b/Assets/Plugins/GetURL.jslib @@ -0,0 +1,20 @@ +mergeInto(LibraryManager.library, { + + GetURLFromPage: function () { + var returnStr = window.top.location.href; + var bufferSize = lengthBytesUTF8(returnStr) + 1 + var buffer = _malloc(bufferSize); + stringToUTF8(returnStr, buffer, bufferSize); + return buffer; + }, + + GetQueryParam: function(paramId) { + var urlParams = new URLSearchParams(location.search); + var param = urlParams.get(Pointer_stringify(paramId)); + console.log("JavaScript read param: " + param); + var bufferSize = lengthBytesUTF8(param) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(param, buffer, bufferSize); + return buffer; + } +}); \ No newline at end of file diff --git a/Assets/Plugins/GetURL.jslib.meta b/Assets/Plugins/GetURL.jslib.meta new file mode 100644 index 0000000..91fc98e --- /dev/null +++ b/Assets/Plugins/GetURL.jslib.meta @@ -0,0 +1,36 @@ +fileFormatVersion: 2 +guid: c24c76f5a4dd09e438c024cb8078f81a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Facebook: WebGL + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Sprites/Unused.meta b/Assets/Plugins/IngameDebugConsole/Sprites/Unused.meta deleted file mode 100644 index f3769b1..0000000 --- a/Assets/Plugins/IngameDebugConsole/Sprites/Unused.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f6caae32d463529478f2186f47c2e3fe -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/wegGLKeyboard.jslib b/Assets/Plugins/wegGLKeyboard.jslib new file mode 100644 index 0000000..cba85e0 --- /dev/null +++ b/Assets/Plugins/wegGLKeyboard.jslib @@ -0,0 +1,13 @@ +mergeInto(LibraryManager.library, { + focusHandleAction: function(_name, _str){ + if(UnityLoader.SystemInfo.mobile == true){ + var _inputTextData = prompt("", Pointer_stringify(_str)); + if (_inputTextData == null || _inputTextData == "") { + //canceled text + } else { + //send data to unity + SendMessage(Pointer_stringify(_name), 'ReceiveInputData', _inputTextData); + } + } + }, +}); \ No newline at end of file diff --git a/Assets/Plugins/wegGLKeyboard.jslib.meta b/Assets/Plugins/wegGLKeyboard.jslib.meta new file mode 100644 index 0000000..71e5ea5 --- /dev/null +++ b/Assets/Plugins/wegGLKeyboard.jslib.meta @@ -0,0 +1,36 @@ +fileFormatVersion: 2 +guid: 9a2f32da2f4130346bc1f7e0b221f5c3 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Facebook: WebGL + second: + enabled: 1 + settings: {} + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models.meta b/Assets/Prefabs/Map Sections/Width 3.meta similarity index 77% rename from Assets/Models.meta rename to Assets/Prefabs/Map Sections/Width 3.meta index 5346456..621f154 100644 --- a/Assets/Models.meta +++ b/Assets/Prefabs/Map Sections/Width 3.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 296bd90e667df1f4697823a0aa45acf0 +guid: be25a323ad5fce04d9ff37db05f30f0c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/Browser/BrowserServer.cs b/Assets/Scripts/Browser/BrowserServer.cs index 5608108..2e87a6a 100644 --- a/Assets/Scripts/Browser/BrowserServer.cs +++ b/Assets/Scripts/Browser/BrowserServer.cs @@ -10,17 +10,19 @@ public class BrowserServer : MonoBehaviour { [SerializeField] - private string HTMLPath; + [Tooltip("Local Path in Streaming Assets")] + private string LocalPath; [SerializeField] - private int port; + [Tooltip("Browsers by default use 80")] + private int port = 80; SimpleHTTPServer server; // Start is called before the first frame update void Start() { - server = new SimpleHTTPServer(HTMLPath, port); + server = new SimpleHTTPServer(Path.Combine(Application.streamingAssetsPath,LocalPath),port); } private void OnDisable() @@ -55,7 +57,7 @@ public class BrowserServer : MonoBehaviour HttpListenerResponse response = context.Response; - string page = HTMLPath + context.Request.Url.LocalPath; + string page = Path.Combine(Application.streamingAssetsPath, LocalPath, context.Request.Url.LocalPath); Debug.Log("Client asked for: " + context.Request.Url.LocalPath); if (page.EndsWith("/")) page += "index.html"; @@ -95,7 +97,7 @@ public class BrowserServer : MonoBehaviour string responseString = "

Error Connecting to server

"; try { - responseString = System.IO.File.ReadAllText(HTMLPath); + responseString = System.IO.File.ReadAllText(Path.Combine(Application.streamingAssetsPath, LocalPath, context.Request.Url.LocalPath)); Debug.Log(responseString); } catch (System.IO.IOException e) diff --git a/Assets/Scripts/Browser/WebGLKeyboard.cs b/Assets/Scripts/Browser/WebGLKeyboard.cs new file mode 100644 index 0000000..d5dd27d --- /dev/null +++ b/Assets/Scripts/Browser/WebGLKeyboard.cs @@ -0,0 +1,51 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using System.Runtime.InteropServices; +using System; + +public class WebGLKeyboard : MonoBehaviour, ISelectHandler +{ + + [DllImport("__Internal")] + private static extern void focusHandleAction(string _name, string _str); + + private InputField UnityInput; + private TMPro.TMP_InputField TMPInput; + + private void Awake() + { + UnityInput = GetComponent(); + TMPInput = GetComponent(); + } + + public void ReceiveInputData(string value) + { + + if (TMPInput != null) + TMPInput.text = value; + + else if (UnityInput != null) + UnityInput.text = value; + + + } + + public void OnSelect(BaseEventData data) + { +#if UNITY_WEBGL + try + { + + if (TMPInput != null) + focusHandleAction(gameObject.name, TMPInput.text); + else if (UnityInput != null) + focusHandleAction(gameObject.name, UnityInput.text); + + } + catch (Exception error) { } +#endif + } +} diff --git a/Assets/Scripts/Browser/WebGLKeyboard.cs.meta b/Assets/Scripts/Browser/WebGLKeyboard.cs.meta new file mode 100644 index 0000000..a68adf9 --- /dev/null +++ b/Assets/Scripts/Browser/WebGLKeyboard.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 516583a80931657498c305160bf48997 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Android.meta b/Assets/Scripts/Components.meta similarity index 77% rename from Assets/Plugins/IngameDebugConsole/Android.meta rename to Assets/Scripts/Components.meta index 12049b6..5a95b09 100644 --- a/Assets/Plugins/IngameDebugConsole/Android.meta +++ b/Assets/Scripts/Components.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3d7d7a61a5341904eb3c65af025b1d86 +guid: 8d7394d70ec233849a60a26da5f23b75 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/LogicBlocks.meta b/Assets/Scripts/LogicBlocks.meta deleted file mode 100644 index 98af9d1..0000000 --- a/Assets/Scripts/LogicBlocks.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 8936b441d7647f74884c94f97bfb8931 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Managers/GameManager.cs b/Assets/Scripts/Managers/GameManager.cs index 2590793..597c734 100644 --- a/Assets/Scripts/Managers/GameManager.cs +++ b/Assets/Scripts/Managers/GameManager.cs @@ -321,7 +321,7 @@ public class GameManager : MonoBehaviour /// private void RegisterHandlers() { - server.server.RegisterHandler(LogicProtocols.SendLogicList, RecieveLogicList); + server.RegisterHandler(LogicProtocols.SendLogicList, RecieveLogicList); } /// @@ -329,7 +329,7 @@ public class GameManager : MonoBehaviour /// private void UnRegisterHandlers() { - server.server.UnregisterHandler(LogicProtocols.SendLogicList); + server.UnregisterHandler(LogicProtocols.SendLogicList); } /// @@ -348,8 +348,8 @@ public class GameManager : MonoBehaviour ////Debug.Log("Recieved function from " + ClientList[msg.conn.connectionId].Name); //Update player Data with recieved list - playerData[msg.conn.connectionId].blockReader.LogicChain = new List(logicMsg.elements); - playerData[msg.conn.connectionId].recievedList = true; + playerData[msg.conn.Hash()].blockReader.LogicChain = new List(logicMsg.elements); + playerData[msg.conn.Hash()].recievedList = true; } #endregion Networking Functions diff --git a/Assets/Scripts/Networking/Core/Utility/ExtensionMethods.cs b/Assets/Scripts/Networking/Core/Utility/ExtensionMethods.cs index 6a042eb..5390f7a 100644 --- a/Assets/Scripts/Networking/Core/Utility/ExtensionMethods.cs +++ b/Assets/Scripts/Networking/Core/Utility/ExtensionMethods.cs @@ -33,6 +33,11 @@ namespace Networking return null; } + public static int Hash(this NetworkConnection conn) + { + return (conn.address.GetHashCode() + conn.connectionId).GetHashCode(); + } + } } diff --git a/Assets/Scripts/Networking/Server/ClientList.cs b/Assets/Scripts/Networking/Server/ClientList.cs index 0bc4efa..bb63082 100644 --- a/Assets/Scripts/Networking/Server/ClientList.cs +++ b/Assets/Scripts/Networking/Server/ClientList.cs @@ -46,7 +46,7 @@ namespace Networking.Server #endregion Public Variables #region Private Variables - public NetworkServerSimple server; + public ServerObject server; #endregion Private Variables @@ -66,7 +66,7 @@ namespace Networking.Server /// Server to register handlers with public void SetUp(ServerObject serverObject) { - this.server = serverObject.server; + this.server = serverObject; Reset(); server.RegisterHandler(MsgType.Connect, OnClientConnect); server.RegisterHandler(MsgType.Disconnect, OnClientDisconnect); @@ -75,6 +75,9 @@ namespace Networking.Server public void OnClientConnect(NetworkMessage msg) { + + Debug.Log("newClient: " + msg.conn.address + ", " + msg.conn.Hash() + ", " + msg.conn.hostId); + if (ConnectedClients.Any(p => p.ID == msg.channelId)) { Debug.LogError("Client[" + msg.channelId + "] already connected"); @@ -93,13 +96,13 @@ namespace Networking.Server { PotentialClients.RemoveAll(p => p == msg.conn); - if (!ConnectedClients.Any(p => p.ID == msg.conn.connectionId)) + if (!ConnectedClients.Any(p => p.ID == msg.conn.Hash())) { - Debug.LogError("Unknown client disconnect [" + msg.conn.connectionId + "]"); + Debug.LogError("Unknown client disconnect [" + msg.conn.Hash() + "]"); return; } - ClientData client = ConnectedClients.FirstOrDefault(p => p.ID == msg.conn.connectionId); + ClientData client = ConnectedClients.FirstOrDefault(p => p.ID == msg.conn.Hash()); ConnectedClients.Remove(client); DisconnectedClients.Add(client); @@ -119,14 +122,16 @@ namespace Networking.Server return; } - if (ConnectedClients.Any(p => p.ID == msg.channelId)) + + + if (ConnectedClients.Any(p => p.ID == msg.conn.Hash())) { Debug.LogError("Client[" + msg.channelId + "] already connected"); msg.conn.Send(LoginProtocols.LoginFail, new LoginProtocols.EmptyMsg()); return; } - ClientData newClient = DisconnectedClients.FirstOrDefault(p => p.ID == msg.conn.connectionId); + ClientData newClient = DisconnectedClients.FirstOrDefault(p => p.ID == msg.conn.Hash()); if (newClient != default) { Debug.Log("Reconnection: " + loginMsg.Name + ((loginMsg.Name != newClient.Name) ? (" (Prev. " + newClient.Name +")") : "")); @@ -214,7 +219,7 @@ namespace Networking.Server /// /// Network connection ID /// - public int ID { get { return (conn != null) ? conn.connectionId : -1; }} + public int ID { get { return (conn != null) ? conn.Hash() : -1; }} /// /// Connection to Client diff --git a/Assets/Scripts/Networking/Server/NetworkedClient.cs b/Assets/Scripts/Networking/Server/NetworkedClient.cs index 4eb7f91..92de41b 100644 --- a/Assets/Scripts/Networking/Server/NetworkedClient.cs +++ b/Assets/Scripts/Networking/Server/NetworkedClient.cs @@ -17,7 +17,7 @@ public class NetworkedClient : MonoBehaviour void Start() { Debug.Log("Registering: " + LogicProtocols.SendLogicList); - server.server.RegisterHandler(LogicProtocols.SendLogicList, RecieveLogicList); + server.RegisterHandler(LogicProtocols.SendLogicList, RecieveLogicList); } public void RecieveLogicList(NetworkMessage msg) diff --git a/Assets/Scripts/Networking/Server/ServerManager.cs b/Assets/Scripts/Networking/Server/ServerManager.cs index a5f781f..2d5f553 100644 --- a/Assets/Scripts/Networking/Server/ServerManager.cs +++ b/Assets/Scripts/Networking/Server/ServerManager.cs @@ -28,7 +28,7 @@ namespace Networking.Server { if (StartServerOnAwake) { - Server.StartServer(Port); + Server.StartServer(); } } diff --git a/Assets/Scripts/Networking/Server/ServerObject.cs b/Assets/Scripts/Networking/Server/ServerObject.cs index 18f7d0e..61f69bd 100644 --- a/Assets/Scripts/Networking/Server/ServerObject.cs +++ b/Assets/Scripts/Networking/Server/ServerObject.cs @@ -16,44 +16,92 @@ namespace Networking.Server { [SerializeField] private int Port; + [SerializeField] + private bool useWebSockets; + + [SerializeField] + private int webPort; + [Header("References")] [SerializeField] private ClientList LoginHandler; - public bool useWebSockets; + #endregion Inspector Fields #region ReadOnly Variables public NetworkServerSimple server { get; private set;} + private NetworkServerSimple webServer; + #endregion ReadOnly Variables - public void StartServer(int port) + public void StartServer() { LoginHandler.ConnectedClients = new List(); LoginHandler.DisconnectedClients = new List(); //Debug.Log("Starting Server on " + port); server = new NetworkServerSimple(); - server.useWebSockets = useWebSockets; - server.Configure(TransportConfigure.CreateConfigure(),32); + if (useWebSockets) + { + webServer = new NetworkServerSimple(); + webServer.useWebSockets = true; + webServer.Configure(TransportConfigure.CreateConfigure(), 32); + } + LoginHandler.SetUp(this); - server.Listen(port); + server.Listen(Port); + webServer.Listen(webPort); } public void ServerClose() { if (server != null) server.Stop(); + + if (webServer != null) + webServer.Stop(); } public void ServerUpdate() { if (server != null) server.Update(); + + if (webServer != null) + webServer.Update(); + } + + public void RegisterHandler(short msgType,NetworkMessageDelegate handler) + { + if (server != null) + server.RegisterHandler(msgType, handler); + + if (webServer != null) + webServer.RegisterHandler(msgType, handler); + + } + + public void UnregisterHandler(short msgType) + { + if (server != null) + server.UnregisterHandler(msgType); + + if (webServer != null) + webServer.UnregisterHandler(msgType); + } + + public void DisconnectAllConnections() + { + if (server != null) + server.DisconnectAllConnections(); + + if (webServer != null) + webServer.DisconnectAllConnections(); } } } diff --git a/Assets/Scripts/UI/Lobby/LobbyUIController.cs b/Assets/Scripts/UI/Lobby/LobbyUIController.cs index 423de6c..102c13b 100644 --- a/Assets/Scripts/UI/Lobby/LobbyUIController.cs +++ b/Assets/Scripts/UI/Lobby/LobbyUIController.cs @@ -38,7 +38,7 @@ public class LobbyUIController : MonoBehaviour DisplayClients(Clients.ConnectedClients); if (Server.server != null) - Server.server.RegisterHandler(LoginProtocols.StartGame, RecieveStartMsg); + Server.RegisterHandler(LoginProtocols.StartGame, RecieveStartMsg); else Debug.LogWarning("Server not started yet"); } @@ -48,7 +48,7 @@ public class LobbyUIController : MonoBehaviour Clients.OnClientsChange -= DisplayClients; if (Server.server != null) - Server.server.UnregisterHandler(LoginProtocols.StartGame); + Server.UnregisterHandler(LoginProtocols.StartGame); } private void DisplayClients(List data) diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs.meta b/Assets/StreamingAssets.meta similarity index 77% rename from Assets/Plugins/IngameDebugConsole/Prefabs.meta rename to Assets/StreamingAssets.meta index 6aa8bf2..c0ea65e 100644 --- a/Assets/Plugins/IngameDebugConsole/Prefabs.meta +++ b/Assets/StreamingAssets.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7dbc36665bc0d684db9a4447e27a7a4b +guid: d14f9a69828e04f409637bb2e92a0185 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Plugins/IngameDebugConsole/Scripts.meta b/Assets/StreamingAssets/WebGLBuild.meta similarity index 77% rename from Assets/Plugins/IngameDebugConsole/Scripts.meta rename to Assets/StreamingAssets/WebGLBuild.meta index 72dcaac..cf6ee1b 100644 --- a/Assets/Plugins/IngameDebugConsole/Scripts.meta +++ b/Assets/StreamingAssets/WebGLBuild.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 860c08388401a6d4e858fe4910ea9337 +guid: d24495022ea62b74dbe9a344a7b25e9b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/StreamingAssets/WebGLBuild/Build.meta b/Assets/StreamingAssets/WebGLBuild/Build.meta new file mode 100644 index 0000000..e01c6f2 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/Build.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e554f8cda74fad42ad122eda682d0f5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/Build/UnityLoader.js b/Assets/StreamingAssets/WebGLBuild/Build/UnityLoader.js new file mode 100644 index 0000000..21cd28f --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/Build/UnityLoader.js @@ -0,0 +1,4 @@ +var UnityLoader=UnityLoader||{Compression:{identity:{require:function(){return{}},decompress:function(e){return e}},gzip:{require:function(e){var t={"inflate.js":function(e,t,r){"use strict";function n(e){if(!(this instanceof n))return new n(e);this.options=s.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0===(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new c,this.strm.avail_out=0;var r=i.inflateInit2(this.strm,t.windowBits);if(r!==l.Z_OK)throw new Error(u[r]);this.header=new f,i.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||u[r.err];return r.result}function a(e,t){return t=t||{},t.raw=!0,o(e,t)}var i=e("./zlib/inflate"),s=e("./utils/common"),d=e("./utils/strings"),l=e("./zlib/constants"),u=e("./zlib/messages"),c=e("./zlib/zstream"),f=e("./zlib/gzheader"),h=Object.prototype.toString;n.prototype.push=function(e,t){var r,n,o,a,u,c,f=this.strm,p=this.options.chunkSize,w=this.options.dictionary,m=!1;if(this.ended)return!1;n=t===~~t?t:t===!0?l.Z_FINISH:l.Z_NO_FLUSH,"string"==typeof e?f.input=d.binstring2buf(e):"[object ArrayBuffer]"===h.call(e)?f.input=new Uint8Array(e):f.input=e,f.next_in=0,f.avail_in=f.input.length;do{if(0===f.avail_out&&(f.output=new s.Buf8(p),f.next_out=0,f.avail_out=p),r=i.inflate(f,l.Z_NO_FLUSH),r===l.Z_NEED_DICT&&w&&(c="string"==typeof w?d.string2buf(w):"[object ArrayBuffer]"===h.call(w)?new Uint8Array(w):w,r=i.inflateSetDictionary(this.strm,c)),r===l.Z_BUF_ERROR&&m===!0&&(r=l.Z_OK,m=!1),r!==l.Z_STREAM_END&&r!==l.Z_OK)return this.onEnd(r),this.ended=!0,!1;f.next_out&&(0!==f.avail_out&&r!==l.Z_STREAM_END&&(0!==f.avail_in||n!==l.Z_FINISH&&n!==l.Z_SYNC_FLUSH)||("string"===this.options.to?(o=d.utf8border(f.output,f.next_out),a=f.next_out-o,u=d.buf2string(f.output,o),f.next_out=a,f.avail_out=p-a,a&&s.arraySet(f.output,f.output,o,a,0),this.onData(u)):this.onData(s.shrinkBuf(f.output,f.next_out)))),0===f.avail_in&&0===f.avail_out&&(m=!0)}while((f.avail_in>0||0===f.avail_out)&&r!==l.Z_STREAM_END);return r===l.Z_STREAM_END&&(n=l.Z_FINISH),n===l.Z_FINISH?(r=i.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l.Z_OK):n!==l.Z_SYNC_FLUSH||(this.onEnd(l.Z_OK),f.avail_out=0,!0)},n.prototype.onData=function(e){this.chunks.push(e)},n.prototype.onEnd=function(e){e===l.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=n,r.inflate=o,r.inflateRaw=a,r.ungzip=o},"utils/common.js":function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var o={arraySet:function(e,t,r,n,o){if(t.subarray&&e.subarray)return void e.set(t.subarray(r,r+n),o);for(var a=0;a=252?6:d>=248?5:d>=240?4:d>=224?3:d>=192?2:1;s[254]=s[254]=1,r.string2buf=function(e){var t,r,n,a,i,s=e.length,d=0;for(a=0;a>>6,t[i++]=128|63&r):r<65536?(t[i++]=224|r>>>12,t[i++]=128|r>>>6&63,t[i++]=128|63&r):(t[i++]=240|r>>>18,t[i++]=128|r>>>12&63,t[i++]=128|r>>>6&63,t[i++]=128|63&r);return t},r.buf2binstring=function(e){return n(e,e.length)},r.binstring2buf=function(e){for(var t=new o.Buf8(e.length),r=0,n=t.length;r4)l[o++]=65533,r+=i-1;else{for(a&=2===i?31:3===i?15:7;i>1&&r1?l[o++]=65533:a<65536?l[o++]=a:(a-=65536,l[o++]=55296|a>>10&1023,l[o++]=56320|1023&a)}return n(l,o)},r.utf8border=function(e,t){var r;for(t=t||e.length,t>e.length&&(t=e.length),r=t-1;r>=0&&128===(192&e[r]);)r--;return r<0?t:0===r?t:r+s[e[r]]>t?r:t}},"zlib/inflate.js":function(e,t,r){"use strict";function n(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new y.Buf16(320),this.work=new y.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new y.Buf32(we),t.distcode=t.distdyn=new y.Buf32(me),t.sane=1,t.back=-1,O):R}function i(e){var t;return e&&e.state?(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,a(e)):R}function s(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15)?R:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,i(e))):R}function d(e,t){var r,n;return e?(n=new o,e.state=n,n.window=null,r=s(e,t),r!==O&&(e.state=null),r):R}function l(e){return d(e,ye)}function u(e){if(ge){var t;for(m=new y.Buf32(512),b=new y.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(U(E,e.lens,0,288,m,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;U(k,e.lens,0,32,b,0,e.work,{bits:5}),ge=!1}e.lencode=m,e.lenbits=9,e.distcode=b,e.distbits=5}function c(e,t,r,n){var o,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(y.arraySet(a.window,t,r-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(o=a.wsize-a.wnext,o>n&&(o=n),y.arraySet(a.window,t,r-n,o,a.wnext),n-=o,n?(y.arraySet(a.window,t,r-n,n,0),a.wnext=n,a.whave=a.wsize):(a.wnext+=o,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,r.check=v(r.check,Le,2,0),f=0,h=0,r.mode=T;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&f)<<8)+(f>>8))%31){e.msg="incorrect header check",r.mode=fe;break}if((15&f)!==S){e.msg="unknown compression method",r.mode=fe;break}if(f>>>=4,h-=4,Ue=(15&f)+8,0===r.wbits)r.wbits=Ue;else if(Ue>r.wbits){e.msg="invalid window size",r.mode=fe;break}r.dmax=1<>8&1),512&r.flags&&(Le[0]=255&f,Le[1]=f>>>8&255,r.check=v(r.check,Le,2,0)),f=0,h=0,r.mode=D;case D:for(;h<32;){if(0===d)break e;d--,f+=o[i++]<>>8&255,Le[2]=f>>>16&255,Le[3]=f>>>24&255,r.check=v(r.check,Le,4,0)),f=0,h=0,r.mode=F;case F:for(;h<16;){if(0===d)break e;d--,f+=o[i++]<>8),512&r.flags&&(Le[0]=255&f,Le[1]=f>>>8&255,r.check=v(r.check,Le,2,0)),f=0,h=0,r.mode=q;case q:if(1024&r.flags){for(;h<16;){if(0===d)break e;d--,f+=o[i++]<>>8&255,r.check=v(r.check,Le,2,0)),f=0,h=0}else r.head&&(r.head.extra=null);r.mode=V;case V:if(1024&r.flags&&(m=r.length,m>d&&(m=d),m&&(r.head&&(Ue=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),y.arraySet(r.head.extra,o,i,m,Ue)),512&r.flags&&(r.check=v(r.check,o,m,i)),d-=m,i+=m,r.length-=m),r.length))break e;r.length=0,r.mode=z;case z:if(2048&r.flags){if(0===d)break e;m=0;do Ue=o[i+m++],r.head&&Ue&&r.length<65536&&(r.head.name+=String.fromCharCode(Ue));while(Ue&&m>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=j;break;case G:for(;h<32;){if(0===d)break e;d--,f+=o[i++]<>>=7&h,h-=7&h,r.mode=le;break}for(;h<3;){if(0===d)break e;d--,f+=o[i++]<>>=1,h-=1,3&f){case 0:r.mode=K;break;case 1:if(u(r),r.mode=re,t===W){f>>>=2,h-=2;break e}break;case 2:r.mode=$;break;case 3:e.msg="invalid block type",r.mode=fe}f>>>=2,h-=2;break;case K:for(f>>>=7&h,h-=7&h;h<32;){if(0===d)break e;d--,f+=o[i++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=fe;break}if(r.length=65535&f,f=0,h=0,r.mode=Q,t===W)break e;case Q:r.mode=_;case _:if(m=r.length){if(m>d&&(m=d),m>l&&(m=l),0===m)break e;y.arraySet(a,o,i,m,s),d-=m,i+=m,l-=m,s+=m,r.length-=m;break}r.mode=j;break;case $:for(;h<14;){if(0===d)break e;d--,f+=o[i++]<>>=5,h-=5,r.ndist=(31&f)+1,f>>>=5,h-=5,r.ncode=(15&f)+4,f>>>=4,h-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=fe;break}r.have=0,r.mode=ee;case ee:for(;r.have>>=3,h-=3}for(;r.have<19;)r.lens[We[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Ee={bits:r.lenbits},xe=U(x,r.lens,0,19,r.lencode,0,r.work,Ee),r.lenbits=Ee.bits,xe){e.msg="invalid code lengths set",r.mode=fe;break}r.have=0,r.mode=te;case te:for(;r.have>>24,be=Be>>>16&255,ye=65535&Be,!(me<=h);){if(0===d)break e;d--,f+=o[i++]<>>=me,h-=me,r.lens[r.have++]=ye;else{if(16===ye){for(ke=me+2;h>>=me,h-=me,0===r.have){e.msg="invalid bit length repeat",r.mode=fe;break}Ue=r.lens[r.have-1],m=3+(3&f),f>>>=2,h-=2}else if(17===ye){for(ke=me+3;h>>=me,h-=me,Ue=0,m=3+(7&f),f>>>=3,h-=3}else{for(ke=me+7;h>>=me,h-=me,Ue=0,m=11+(127&f),f>>>=7,h-=7}if(r.have+m>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=fe;break}for(;m--;)r.lens[r.have++]=Ue}}if(r.mode===fe)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=fe;break}if(r.lenbits=9,Ee={bits:r.lenbits},xe=U(E,r.lens,0,r.nlen,r.lencode,0,r.work,Ee),r.lenbits=Ee.bits,xe){e.msg="invalid literal/lengths set",r.mode=fe;break}if(r.distbits=6,r.distcode=r.distdyn,Ee={bits:r.distbits},xe=U(k,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Ee),r.distbits=Ee.bits,xe){e.msg="invalid distances set",r.mode=fe;break}if(r.mode=re,t===W)break e;case re:r.mode=ne;case ne:if(d>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=i,e.avail_in=d,r.hold=f,r.bits=h,A(e,w),s=e.next_out,a=e.output,l=e.avail_out,i=e.next_in,o=e.input,d=e.avail_in,f=r.hold,h=r.bits,r.mode===j&&(r.back=-1);break}for(r.back=0;Be=r.lencode[f&(1<>>24,be=Be>>>16&255,ye=65535&Be,!(me<=h);){if(0===d)break e;d--,f+=o[i++]<>ge)],me=Be>>>24,be=Be>>>16&255,ye=65535&Be,!(ge+me<=h);){if(0===d)break e;d--,f+=o[i++]<>>=ge,h-=ge,r.back+=ge}if(f>>>=me,h-=me,r.back+=me,r.length=ye,0===be){r.mode=de;break}if(32&be){r.back=-1,r.mode=j;break}if(64&be){e.msg="invalid literal/length code",r.mode=fe;break}r.extra=15&be,r.mode=oe;case oe:if(r.extra){for(ke=r.extra;h>>=r.extra,h-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=ae;case ae:for(;Be=r.distcode[f&(1<>>24,be=Be>>>16&255,ye=65535&Be,!(me<=h);){if(0===d)break e;d--,f+=o[i++]<>ge)],me=Be>>>24,be=Be>>>16&255,ye=65535&Be,!(ge+me<=h);){if(0===d)break e;d--,f+=o[i++]<>>=ge,h-=ge,r.back+=ge}if(f>>>=me,h-=me,r.back+=me,64&be){e.msg="invalid distance code",r.mode=fe;break}r.offset=ye,r.extra=15&be,r.mode=ie;case ie:if(r.extra){for(ke=r.extra;h>>=r.extra,h-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=fe;break}r.mode=se;case se:if(0===l)break e;if(m=w-l,r.offset>m){if(m=r.offset-m,m>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=fe;break}m>r.wnext?(m-=r.wnext,b=r.wsize-m):b=r.wnext-m,m>r.length&&(m=r.length),we=r.window}else we=a,b=s-r.offset,m=r.length;m>l&&(m=l),l-=m,r.length-=m;do a[s++]=we[b++];while(--m);0===r.length&&(r.mode=ne);break;case de:if(0===l)break e;a[s++]=r.length,l--,r.mode=ne;break;case le:if(r.wrap){for(;h<32;){if(0===d)break e;d--,f|=o[i++]<>>16&65535|0,i=0;0!==r;){i=r>2e3?2e3:r,r-=i;do o=o+t[n++]|0,a=a+o|0;while(--i);o%=65521,a%=65521}return o|a<<16|0}t.exports=n},"zlib/crc32.js":function(e,t,r){"use strict";function n(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}function o(e,t,r,n){var o=a,i=n+r;e^=-1;for(var s=n;s>>8^o[255&(e^t[s])];return e^-1}var a=n();t.exports=o},"zlib/inffast.js":function(e,t,r){"use strict";var n=30,o=12;t.exports=function(e,t){var r,a,i,s,d,l,u,c,f,h,p,w,m,b,y,g,v,A,U,x,E,k,B,L,W;r=e.state,a=e.next_in,L=e.input,i=a+(e.avail_in-5),s=e.next_out,W=e.output,d=s-(t-e.avail_out),l=s+(e.avail_out-257),u=r.dmax,c=r.wsize,f=r.whave,h=r.wnext,p=r.window,w=r.hold,m=r.bits,b=r.lencode,y=r.distcode,g=(1<>>24,w>>>=U,m-=U,U=A>>>16&255,0===U)W[s++]=65535&A;else{if(!(16&U)){if(0===(64&U)){A=b[(65535&A)+(w&(1<>>=U,m-=U),m<15&&(w+=L[a++]<>>24,w>>>=U,m-=U,U=A>>>16&255,!(16&U)){if(0===(64&U)){A=y[(65535&A)+(w&(1<u){e.msg="invalid distance too far back",r.mode=n;break e}if(w>>>=U,m-=U,U=s-d,E>U){if(U=E-U,U>f&&r.sane){e.msg="invalid distance too far back",r.mode=n;break e}if(k=0,B=p,0===h){if(k+=c-U,U2;)W[s++]=B[k++],W[s++]=B[k++],W[s++]=B[k++],x-=3;x&&(W[s++]=B[k++],x>1&&(W[s++]=B[k++]))}else{k=s-E;do W[s++]=W[k++],W[s++]=W[k++],W[s++]=W[k++],x-=3;while(x>2);x&&(W[s++]=W[k++],x>1&&(W[s++]=W[k++]))}break}}break}}while(a>3,a-=x,m-=x<<3,w&=(1<=1&&0===q[R];R--);if(C>R&&(C=R),0===R)return w[m++]=20971520,w[m++]=20971520,y.bits=1,0;for(N=1;N0&&(e===s||1!==R))return-1;for(V[1]=0,O=1;Oa||e===l&&P>i)return 1;for(;;){k=O-I,b[M]E?(B=z[Z+b[M]],L=D[F+b[M]]):(B=96,L=0),g=1<>I)+v]=k<<24|B<<16|L|0;while(0!==v);for(g=1<>=1;if(0!==g?(T&=g-1,T+=g):T=0,M++,0===--q[O]){if(O===R)break;O=t[r+b[M]]}if(O>C&&(T&U)!==A){for(0===I&&(I=C),x+=N,H=O-I,S=1<a||e===l&&P>i)return 1;A=T&U,w[A]=C<<24|H<<16|x-m|0}}return 0!==T&&(w[x+T]=O-I<<24|64<<16|0),y.bits=C,0}}};for(var r in t)t[r].folder=r.substring(0,r.lastIndexOf("/")+1);var n=function(e){var r=[];return e=e.split("/").every(function(e){return".."==e?r.pop():"."==e||""==e||r.push(e)})?r.join("/"):null,e?t[e]||t[e+".js"]||t[e+"/index.js"]:null},o=function(e,t){return e?n(e.folder+"node_modules/"+t)||o(e.parent,t):null},a=function(e,t){var r=t.match(/^\//)?null:e?t.match(/^\.\.?\//)?n(e.folder+t):o(e,t):n(t);if(!r)throw"module not found: "+t;return r.exports||(r.parent=e,r(a.bind(null,r),r,r.exports={})),r.exports};return a(null,e)},decompress:function(e){this.exports||(this.exports=this.require("inflate.js"));try{return this.exports.inflate(e)}catch(e){}},hasUnityMarker:function(e){var t=10,r="UnityWeb Compressed Content (gzip)";if(t>e.length||31!=e[0]||139!=e[1])return!1;var n=e[3];if(4&n){if(t+2>e.length)return!1;if(t+=2+e[t]+(e[t+1]<<8),t>e.length)return!1}if(8&n){for(;te.length)return!1;t++}return 16&n&&String.fromCharCode.apply(null,e.subarray(t,t+r.length+1))==r+"\0"}},brotli:{require:function(e){var t={"decompress.js":function(e,t,r){t.exports=e("./dec/decode").BrotliDecompressBuffer},"dec/bit_reader.js":function(e,t,r){function n(e){this.buf_=new Uint8Array(a),this.input_=e,this.reset()}const o=4096,a=8224,i=8191,s=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);n.READ_SIZE=o,n.IBUF_MASK=i,n.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var e=0;e<4;e++)this.val_|=this.buf_[this.pos_]<<8*e,++this.pos_;return this.bit_end_pos_>0},n.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var e=this.buf_ptr_,t=this.input_.read(this.buf_,e,o);if(t<0)throw new Error("Unexpected end of input");if(t=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&i]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},n.prototype.readBits=function(e){32-this.bit_pos_>>this.bit_pos_&s[e];return this.bit_pos_+=e,t},t.exports=n},"dec/context.js":function(e,t,r){r.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),r.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},"dec/decode.js":function(e,t,r){function n(e){var t;return 0===e.readBits(1)?16:(t=e.readBits(3),t>0?17+t:(t=e.readBits(3),t>0?8+t:17))}function o(e){if(e.readBits(1)){var t=e.readBits(3);return 0===t?1:e.readBits(t)+(1<1&&0===i)throw new Error("Invalid size byte");o.meta_block_length|=i<<8*n}}else for(n=0;n4&&0===s)throw new Error("Invalid size nibble");o.meta_block_length|=s<<4*n}return++o.meta_block_length,o.input_end||o.is_metadata||(o.is_uncompressed=e.readBits(1)),o}function s(e,t,r){var n;return r.fillBitWindow(),t+=r.val_>>>r.bit_pos_&D,n=e[t].bits-T,n>0&&(r.bit_pos_+=T,t+=e[t].value,t+=r.val_>>>r.bit_pos_&(1<0;){var c,f=0;if(n.readMoreInput(),n.fillBitWindow(),f+=n.val_>>>n.bit_pos_&31,n.bit_pos_+=l[f].bits,c=255&l[f].value,c>c);else{var h,p,w=c-14,m=0;if(c===R&&(m=a),s!==m&&(i=0,s=m),h=i,i>0&&(i-=2,i<<=w),i+=n.readBits(w)+3,p=i-h,o+p>t)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var b=0;b0;++s){var b,y=V[s],g=0;n.fillBitWindow(),g+=n.val_>>>n.bit_pos_&15, +n.bit_pos_+=m[g].bits,b=m[g].value,h[y]=b,0!==b&&(p-=32>>b,++w)}if(1!==w&&0!==p)throw new Error("[ReadHuffmanCode] invalid num_codes or space");d(h,e,i,n)}if(a=L(t,r,T,i,e),0===a)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return a}function u(e,t,r){var n,o;return n=s(e,t,r),o=O.kBlockLengthPrefixCode[n].nbits,O.kBlockLengthPrefixCode[n].offset+r.readBits(o)}function c(e,t,r){var n;return e>>5]),this.htrees=new Uint32Array(t)}function w(e,t){var r,n,a,i={num_htrees:null,context_map:null},d=0;t.readMoreInput();var u=i.num_htrees=o(t)+1,c=i.context_map=new Uint8Array(e);if(u<=1)return i;for(r=t.readBits(1),r&&(d=t.readBits(4)+1),n=[],a=0;a=e)throw new Error("[DecodeContextMap] i >= context_map_size");c[a]=0,++a}else c[a]=f-d,++a}return t.readBits(1)&&h(c,e),i}function m(e,t,r,n,o,a,i){var d,l=2*r,u=r,c=s(t,r*F,i);d=0===c?o[l+(1&a[u])]:1===c?o[l+(a[u]-1&1)]+1:c-2,d>=e&&(d-=e),n[r]=d,o[l+(1&a[u])]=d,++a[u]}function b(e,t,r,n,o,a){var i,s=o+1,d=r&o,l=a.pos_&E.IBUF_MASK;if(t<8||a.bit_pos_+(t<<3)0;)a.readMoreInput(),n[d++]=a.readBits(8),d===s&&(e.write(n,s),d=0);else{if(a.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;a.bit_pos_<32;)n[d]=a.val_>>>a.bit_pos_,a.bit_pos_+=8,++d,--t;if(i=a.bit_end_pos_-a.bit_pos_>>3,l+i>E.IBUF_MASK){for(var u=E.IBUF_MASK+1-l,c=0;c=s){e.write(n,s),d-=s;for(var c=0;c=s;){if(i=s-d,a.input_.read(n,d,i)t.buffer.length){var ve=new Uint8Array(x+re);ve.set(t.buffer),t.buffer=ve}if(L=ge.input_end,J=ge.is_uncompressed,ge.is_metadata)for(y(U);re>0;--re)U.readMoreInput(),U.readBits(8);else if(0!==re)if(J)U.bit_pos_=U.bit_pos_+7&-8,b(t,re,x,h,f,U),x+=re;else{for(r=0;r<3;++r)ae[r]=o(U)+1,ae[r]>=2&&(l(ae[r]+2,v,r*F,U),l(I,A,r*F,U),ne[r]=u(A,r*F,U),se[r]=1);for(U.readMoreInput(),j=U.readBits(2),X=z+(U.readBits(4)<0;){var xe,Ee,ke,Be,Le,We,Oe,Me,Ne,Re,Ce;for(U.readMoreInput(),0===ne[1]&&(m(ae[1],v,1,oe,ie,se,U),ne[1]=u(A,F,U),te=Z[1].htrees[oe[1]]),--ne[1],xe=s(Z[1].codes,te,U),Ee=xe>>6,Ee>=2?(Ee-=2,Oe=-1):Oe=0,ke=O.kInsertRangeLut[Ee]+(xe>>3&7),Be=O.kCopyRangeLut[Ee]+(7&xe),Le=O.kInsertLengthPrefixCode[ke].offset+U.readBits(O.kInsertLengthPrefixCode[ke].nbits),We=O.kCopyLengthPrefixCode[Be].offset+U.readBits(O.kCopyLengthPrefixCode[Be].nbits),q=h[x-1&f],V=h[x-2&f],Re=0;Re4?3:We-2),me=ue[we+Ne],Oe=s(Z[2].codes,Z[2].htrees[me],U),Oe>=X){var He,Ie,Se;Oe-=X,Ie=Oe&K,Oe>>=j,He=(Oe>>1)+1,Se=(2+(1&Oe)<R){if(!(We>=k.minDictionaryWordLength&&We<=k.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+x+" distance: "+Me+" len: "+We+" bytes left: "+re);var Se=k.offsetsByLength[We],Pe=Me-R-1,Te=k.sizeBitsByLength[We],De=(1<>Te;if(Se+=Fe*We,!(qe=g){t.write(h,d);for(var ze=0;ze0&&(T[3&D]=Me,++D),We>re)throw new Error("Invalid backward reference. pos: "+x+" distance: "+Me+" len: "+We+" bytes left: "+re);for(Re=0;Re>=1;return(e&r-1)+r}function a(e,t,r,o,a){do o-=r,e[t+o]=new n(a.bits,a.value);while(o>0)}function i(e,t,r){for(var n=1<0;--U[c])u=new n(255&c,65535&v[f++]),a(e,t+h,p,y,u),h=o(h,c);for(m=g-1,w=-1,c=r+1,p=2;c<=s;++c,p<<=1)for(;U[c]>0;--U[c])(h&m)!==w&&(t+=y,b=i(U,c,r),y=1<>r),p,y,u),h=o(h,c);return g}},"dec/prefix.js":function(e,t,r){function n(e,t){this.offset=e,this.nbits=t}r.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],r.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],r.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],r.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],r.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},"dec/streams.js":function(e,t,r){function n(e){this.buffer=e,this.pos=0}function o(e){this.buffer=e,this.pos=0}n.prototype.read=function(e,t,r){this.pos+r>this.buffer.length&&(r=this.buffer.length-this.pos);for(var n=0;nthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(e.subarray(0,t),this.pos),this.pos+=t,t},r.BrotliOutput=o},"dec/transform.js":function(e,t,r){function n(e,t,r){this.prefix=new Uint8Array(e.length),this.transform=t,this.suffix=new Uint8Array(r.length);for(var n=0;n=97&&e[t]<=122&&(e[t]^=32),1):e[t]<224?(e[t+1]^=32,2):(e[t+2]^=5,3)}var a=e("./dictionary");const i=0,s=1,d=2,l=3,u=4,c=5,f=6,h=7,p=8,w=9,m=10,b=11,y=12,g=13,v=14,A=15,U=16,x=17,E=18,k=20;var B=[new n("",i,""),new n("",i," "),new n(" ",i," "),new n("",y,""),new n("",m," "),new n("",i," the "),new n(" ",i,""),new n("s ",i," "),new n("",i," of "),new n("",m,""),new n("",i," and "),new n("",g,""),new n("",s,""),new n(", ",i," "),new n("",i,", "),new n(" ",m," "),new n("",i," in "),new n("",i," to "),new n("e ",i," "),new n("",i,'"'),new n("",i,"."),new n("",i,'">'),new n("",i,"\n"),new n("",l,""),new n("",i,"]"),new n("",i," for "),new n("",v,""),new n("",d,""),new n("",i," a "),new n("",i," that "),new n(" ",m,""),new n("",i,". "),new n(".",i,""),new n(" ",i,", "),new n("",A,""),new n("",i," with "),new n("",i,"'"),new n("",i," from "),new n("",i," by "),new n("",U,""),new n("",x,""),new n(" the ",i,""),new n("",u,""),new n("",i,". The "),new n("",b,""),new n("",i," on "),new n("",i," as "),new n("",i," is "),new n("",h,""),new n("",s,"ing "),new n("",i,"\n\t"),new n("",i,":"),new n(" ",i,". "),new n("",i,"ed "),new n("",k,""),new n("",E,""),new n("",f,""),new n("",i,"("),new n("",m,", "),new n("",p,""),new n("",i," at "),new n("",i,"ly "),new n(" the ",i," of "),new n("",c,""),new n("",w,""),new n(" ",m,", "),new n("",m,'"'),new n(".",i,"("),new n("",b," "),new n("",m,'">'),new n("",i,'="'),new n(" ",i,"."),new n(".com/",i,""),new n(" the ",i," of the "),new n("",m,"'"),new n("",i,". This "),new n("",i,","),new n(".",i," "),new n("",m,"("),new n("",m,"."),new n("",i," not "),new n(" ",i,'="'),new n("",i,"er "),new n(" ",b," "),new n("",i,"al "),new n(" ",b,""),new n("",i,"='"),new n("",b,'"'),new n("",m,". "),new n(" ",i,"("),new n("",i,"ful "),new n(" ",m,". "),new n("",i,"ive "),new n("",i,"less "),new n("",b,"'"),new n("",i,"est "),new n(" ",m,"."),new n("",b,'">'),new n(" ",i,"='"),new n("",m,","),new n("",i,"ize "),new n("",b,"."),new n("\xc2\xa0",i,""),new n(" ",i,","),new n("",m,'="'),new n("",b,'="'),new n("",i,"ous "),new n("",b,", "),new n("",m,"='"),new n(" ",m,","),new n(" ",b,'="'),new n(" ",b,", "),new n("",b,","),new n("",b,"("),new n("",b,". "),new n(" ",b,"."),new n("",b,"='"),new n(" ",b,". "),new n(" ",m,'="'),new n(" ",b,"='"),new n(" ",m,"='")];r.kTransforms=B,r.kNumTransforms=B.length,r.transformDictionaryWord=function(e,t,r,n,i){var s,d=B[i].prefix,l=B[i].suffix,u=B[i].transform,c=un&&(c=n);for(var p=0;p0;){var g=o(e,s);s+=g,n-=g}for(var v=0;v0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function o(e){return 3*e.length/4-n(e)}function a(e){var t,r,o,a,i,s,d=e.length;i=n(e),s=new c(3*d/4-i),o=i>0?d-4:d;var l=0;for(t=0,r=0;t>16&255,s[l++]=a>>8&255,s[l++]=255&a;return 2===i?(a=u[e.charCodeAt(t)]<<2|u[e.charCodeAt(t+1)]>>4,s[l++]=255&a):1===i&&(a=u[e.charCodeAt(t)]<<10|u[e.charCodeAt(t+1)]<<4|u[e.charCodeAt(t+2)]>>2,s[l++]=a>>8&255,s[l++]=255&a),s}function i(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function s(e,t,r){for(var n,o=[],a=t;au?u:d+i));return 1===n?(t=e[r-1],o+=l[t>>2],o+=l[t<<4&63],o+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],o+=l[t>>10],o+=l[t>>4&63],o+=l[t<<2&63],o+="="),a.push(o),a.join("")}r.byteLength=o,r.toByteArray=a,r.fromByteArray=d;for(var l=[],u=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,p=f.length;h>3);if(commentOffset=r+1+2+1+2+(o<<3)+7>>3,17==n||commentOffset>e.length)return!1;for(var a=n+(6+(o<<4)+(t.length-1<<6)<>>=8)if(e[i]!=(255&a))return!1;return String.fromCharCode.apply(null,e.subarray(commentOffset,commentOffset+t.length))==t}},decompress:function(e,t){var r=this.gzip.hasUnityMarker(e)?this.gzip:this.brotli.hasUnityMarker(e)?this.brotli:this.identity;if(this.serverSetupWarningEnabled&&r!=this.identity&&(console.log("You can reduce your startup time if you configure your web server to host .unityweb files using "+(r==this.gzip?"gzip":"brotli")+" compression."),this.serverSetupWarningEnabled=!1),"function"!=typeof t)return r.decompress(e);if(!r.worker){var n=URL.createObjectURL(new Blob(["this.require = ",r.require.toString(),"; this.decompress = ",r.decompress.toString(),"; this.onmessage = ",function(e){var t={id:e.data.id,decompressed:this.decompress(e.data.compressed)};postMessage(t,t.decompressed?[t.decompressed.buffer]:[])}.toString(),"; postMessage({ ready: true });"],{type:"text/javascript"}));r.worker=new Worker(n),r.worker.onmessage=function(e){return e.data.ready?void URL.revokeObjectURL(n):(this.callbacks[e.data.id](e.data.decompressed),void delete this.callbacks[e.data.id])},r.worker.callbacks={},r.worker.nextCallbackId=0}var o=r.worker.nextCallbackId++;r.worker.callbacks[o]=t,r.worker.postMessage({id:o,compressed:e},[e.buffer])},serverSetupWarningEnabled:!0},Cryptography:{crc32:function(e){var t=UnityLoader.Cryptography.crc32.module;if(!t){var r=new ArrayBuffer(16777216),n=function(e,t,r){"use asm";var n=new e.Uint8Array(r);var o=new e.Uint32Array(r);function a(e,t){e=e|0;t=t|0;var r=0;for(r=o[1024>>2]|0;t;e=e+1|0,t=t-1|0)r=o[(r&255^n[e])<<2>>2]^r>>>8^4278190080;o[1024>>2]=r}return{process:a}}({Uint8Array:Uint8Array,Uint32Array:Uint32Array},null,r);t=UnityLoader.Cryptography.crc32.module={buffer:r,HEAPU8:new Uint8Array(r),HEAPU32:new Uint32Array(r),process:n.process,crc32:1024,data:1028};for(var o=0;o<256;o++){for(var a=255^o,i=0;i<8;i++)a=a>>>1^(1&a?3988292384:0);t.HEAPU32[o]=a}}t.HEAPU32[t.crc32>>2]=0;for(var s=0;s>2];return new Uint8Array([l>>24,l>>16,l>>8,l])},md5:function(e){var t=UnityLoader.Cryptography.md5.module;if(!t){var r=new ArrayBuffer(16777216),n=function(e,t,r){"use asm";var n=new e.Uint32Array(r);function o(e,t){e=e|0;t=t|0;var r=0,o=0,a=0,i=0,s=0,d=0,l=0,u=0,c=0,f=0,h=0,p=0;r=n[128]|0,o=n[129]|0,a=n[130]|0,i=n[131]|0;for(;t;e=e+64|0,t=t-1|0){s=r;d=o;l=a;u=i;for(f=0;(f|0)<512;f=f+8|0){p=n[f>>2]|0;r=r+(n[f+4>>2]|0)+(n[e+(p>>>14)>>2]|0)+((f|0)<128?i^o&(a^i):(f|0)<256?a^i&(o^a):(f|0)<384?o^a^i:a^(o|~i))|0;h=(r<<(p&31)|r>>>32-(p&31))+o|0;r=i;i=a;a=o;o=h}r=r+s|0;o=o+d|0;a=a+l|0;i=i+u|0}n[128]=r;n[129]=o;n[130]=a;n[131]=i}return{process:o}}({Uint32Array:Uint32Array},null,r);t=UnityLoader.Cryptography.md5.module={buffer:r,HEAPU8:new Uint8Array(r),HEAPU32:new Uint32Array(r),process:n.process,md5:512,data:576},t.HEAPU32.set(new Uint32Array([7,3614090360,65548,3905402710,131089,606105819,196630,3250441966,262151,4118548399,327692,1200080426,393233,2821735955,458774,4249261313,524295,1770035416,589836,2336552879,655377,4294925233,720918,2304563134,786439,1804603682,851980,4254626195,917521,2792965006,983062,1236535329,65541,4129170786,393225,3225465664,720910,643717713,20,3921069994,327685,3593408605,655369,38016083,983054,3634488961,262164,3889429448,589829,568446438,917513,3275163606,196622,4107603335,524308,1163531501,851973,2850285829,131081,4243563512,458766,1735328473,786452,2368359562,327684,4294588738,524299,2272392833,720912,1839030562,917527,4259657740,65540,2763975236,262155,1272893353,458768,4139469664,655383,3200236656,851972,681279174,11,3936430074,196624,3572445317,393239,76029189,589828,3654602809,786443,3873151461,983056,530742520,131095,3299628645,6,4096336452,458762,1126891415,917519,2878612391,327701,4237533241,786438,1700485571,196618,2399980690,655375,4293915773,65557,2240044497,524294,1873313359,983050,4264355552,393231,2734768916,851989,1309151649,262150,4149444226,720906,3174756917,131087,718787259,589845,3951481745]))}t.HEAPU32.set(new Uint32Array([1732584193,4023233417,2562383102,271733878]),t.md5>>2);for(var o=0;o>6),e.length-o<64){if(a=e.length-o,t.HEAPU8.set(e.subarray(e.length-a,e.length),t.data),o+=a,t.HEAPU8[t.data+a++]=128,a>56){for(var i=a;i<64;i++)t.HEAPU8[t.data+i]=0;t.process(t.data,1),a=0}for(var i=a;i<64;i++)t.HEAPU8[t.data+i]=0;for(var s=e.length,d=0,i=56;i<64;i++,d=(224&s)>>5,s/=256)t.HEAPU8[t.data+i]=((31&s)<<3)+d;t.process(t.data,1)}}return new Uint8Array(t.HEAPU8.subarray(t.md5,t.md5+16))},sha1:function(e){var t=UnityLoader.Cryptography.sha1.module;if(!t){var r=new ArrayBuffer(16777216),n=function(e,t,r){"use asm";var n=new e.Uint32Array(r);function o(e,t){e=e|0;t=t|0;var r=0,o=0,a=0,i=0,s=0,d=0,l=0,u=0,c=0,f=0,h=0,p=0;r=n[80]|0,o=n[81]|0,a=n[82]|0,i=n[83]|0,s=n[84]|0;for(;t;e=e+64|0,t=t-1|0){d=r;l=o;u=a;c=i;f=s;for(p=0;(p|0)<320;p=p+4|0,s=i,i=a,a=o<<30|o>>>2,o=r,r=h){if((p|0)<64){h=n[e+p>>2]|0;h=h<<24&4278190080|h<<8&16711680|h>>>8&65280|h>>>24&255}else{h=n[p-12>>2]^n[p-32>>2]^n[p-56>>2]^n[p-64>>2];h=h<<1|h>>>31}n[p>>2]=h;h=h+((r<<5|r>>>27)+s)+((p|0)<80?(o&a|~o&i|0)+1518500249|0:(p|0)<160?(o^a^i)+1859775393|0:(p|0)<240?(o&a|o&i|a&i)+2400959708|0:(o^a^i)+3395469782|0)|0}r=r+d|0;o=o+l|0;a=a+u|0;i=i+c|0;s=s+f|0}n[80]=r;n[81]=o;n[82]=a;n[83]=i;n[84]=s}return{process:o}}({Uint32Array:Uint32Array},null,r);t=UnityLoader.Cryptography.sha1.module={buffer:r,HEAPU8:new Uint8Array(r),HEAPU32:new Uint32Array(r),process:n.process,sha1:320,data:384}}t.HEAPU32.set(new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),t.sha1>>2);for(var o=0;o>6),e.length-o<64){if(a=e.length-o,t.HEAPU8.set(e.subarray(e.length-a,e.length),t.data),o+=a,t.HEAPU8[t.data+a++]=128,a>56){for(var i=a;i<64;i++)t.HEAPU8[t.data+i]=0;t.process(t.data,1),a=0}for(var i=a;i<64;i++)t.HEAPU8[t.data+i]=0;for(var s=e.length,d=0,i=63;i>=56;i--,d=(224&s)>>5,s/=256)t.HEAPU8[t.data+i]=((31&s)<<3)+d;t.process(t.data,1)}}for(var l=new Uint8Array(20),i=0;i\\[(\\d+)\\]\\+\\d+\\))()":"((\\s*)wasm-function\\[(\\d+)\\])@(blob:.*)",blobParseRegExp:new RegExp("^(blob:.*)(:\\d+:\\d+)$"),getModule:function(e){var t=e.message.match(new RegExp(this.stackTraceFormat,"g"));for(var r in t){var n=t[r].match(new RegExp("^"+this.stackTraceFormat+"$")),o=n[7].match(this.blobParseRegExp);if(o&&UnityLoader.Blobs[o[1]]&&UnityLoader.Blobs[o[1]].Module)return UnityLoader.Blobs[o[1]].Module}},demangle:function(e,t){var r=e.message;return t?(r=r.replace(new RegExp(this.stackTraceFormat,"g"),function(e){var r=e.match(new RegExp("^"+this.stackTraceFormat+"$")),n=r[7].match(this.blobParseRegExp),o=t.demangleSymbol?t.demangleSymbol(r[4]):r[4],a=n&&UnityLoader.Blobs[n[1]]&&UnityLoader.Blobs[n[1]].url?UnityLoader.Blobs[n[1]].url:"blob";return r[1]+o+(r[2]!=o?" ["+r[2]+"]":"")+" ("+(n?a.substr(a.lastIndexOf("/")+1)+n[2]:r[7])+")"}.bind(this)),t.useWasm&&(r=r.replace(new RegExp(this.stackTraceFormatWasm,"g"),function(e){var r=e.match(new RegExp("^"+this.stackTraceFormatWasm+"$")),n=t.demangleSymbol?t.demangleSymbol(r[3]):r[3],o=r[4].match(this.blobParseRegExp),a=o&&UnityLoader.Blobs[o[1]]&&UnityLoader.Blobs[o[1]].url?UnityLoader.Blobs[o[1]].url:"blob";return(n==r[3]?r[1]:r[2]+n+" [wasm:"+r[3]+"]")+(r[4]?" ("+(o?a.substr(a.lastIndexOf("/")+1)+o[2]:r[4])+")":"")}.bind(this))),r):r},handler:function(e,t){var r=t?this.demangle(e,t):e.message;if(!(t&&t.errorhandler&&t.errorhandler(r,e.filename,e.lineno)||(console.log("Invoking error handler due to\n"+r),"function"==typeof dump&&dump("Invoking error handler due to\n"+r),r.indexOf("UnknownError")!=-1||r.indexOf("Program terminated with exit(0)")!=-1||this.didShowErrorMessage))){var r="An error occurred running the Unity content on this page. See your browser JavaScript console for more info. The error was:\n"+r;r.indexOf("DISABLE_EXCEPTION_CATCHING")!=-1?r="An exception has occurred, but exception handling has been disabled in this build. If you are the developer of this content, enable exceptions in your project WebGL player settings to be able to catch the exception or see the stack trace.":r.indexOf("Cannot enlarge memory arrays")!=-1?r="Out of memory. If you are the developer of this content, try allocating more memory to your WebGL build in the WebGL player settings.":r.indexOf("Invalid array buffer length")==-1&&r.indexOf("Invalid typed array length")==-1&&r.indexOf("out of memory")==-1&&r.indexOf("could not allocate memory")==-1||(r="The browser could not allocate enough memory for the WebGL content. If you are the developer of this content, try allocating less memory to your WebGL build in the WebGL player settings."),alert(r),this.didShowErrorMessage=!0}},popup:function(e,t,r){r=r||[{text:"OK"}];var n=document.createElement("div");n.style.cssText="position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); text-align: center; border: 1px solid black; padding: 5px; background: #E8E8E8";var o=document.createElement("span");o.textContent=t,n.appendChild(o),n.appendChild(document.createElement("br"));for(var a=0;a=10.1)?1:0}(),hasThreads:"undefined"!=typeof SharedArrayBuffer,hasWasm:"object"==typeof WebAssembly&&"function"==typeof WebAssembly.validate&&"function"==typeof WebAssembly.compile}}(),compatibilityCheck:function(e,t,r){UnityLoader.SystemInfo.hasWebGL?UnityLoader.SystemInfo.mobile?e.popup("Please note that Unity WebGL is not currently supported on mobiles. Press OK if you wish to continue anyway.",[{text:"OK",callback:t}]):["Edge","Firefox","Chrome","Safari"].indexOf(UnityLoader.SystemInfo.browser)==-1?e.popup("Please note that your browser is not currently supported for this Unity WebGL content. Press OK if you wish to continue anyway.",[{text:"OK",callback:t}]):t():e.popup("Your browser does not support WebGL",[{text:"OK",callback:r}])},Blobs:{},loadCode:function(e,t,r){var n=[].slice.call(UnityLoader.Cryptography.md5(e)).map(function(e){return("0"+e.toString(16)).substr(-2)}).join(""),o=document.createElement("script"),a=URL.createObjectURL(new Blob(['UnityLoader["'+n+'"]=',e],{type:"text/javascript"}));UnityLoader.Blobs[a]=r,o.src=a,o.onload=function(){URL.revokeObjectURL(a),t(n),delete o.onload},document.body.appendChild(o)},setupIndexedDBJob:function(e,t){function r(n){r.called||(r.called=!0,e.indexedDB=n,t.complete())}try{var n=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,o=n.open("/idbfs-test");o.onerror=function(e){e.preventDefault(),r()},o.onsuccess=function(){o.result.close(),r(n)},setTimeout(r,1e3)}catch(e){r()}},processWasmCodeJob:function(e,t){e.wasmBinary=UnityLoader.Job.result(e,"downloadWasmCode"),t.complete()},processWasmFrameworkJob:function(e,t){var r=UnityLoader.Job.result(e,"downloadWasmFramework");UnityLoader.loadCode(r,function(n){var o=new Blob([r],{type:"application/javascript"});e.mainScriptUrlOrBlob=o,UnityLoader[n](e),t.complete()},{Module:e,url:e.wasmFrameworkUrl})},processAsmCodeJob:function(e,t){var r=UnityLoader.Job.result(e,"downloadAsmCode");UnityLoader.loadCode(Math.fround?r:UnityLoader.Utils.optimizeMathFround(r),function(r){e.asm=UnityLoader[r],t.complete()},{Module:e,url:e.asmCodeUrl})},processAsmFrameworkJob:function(e,t){var r=UnityLoader.Job.result(e,"downloadAsmFramework");UnityLoader.loadCode(r,function(n){var o=new Blob([r],{type:"application/javascript"});e.mainScriptUrlOrBlob=o,UnityLoader[n](e),t.complete()},{Module:e,url:e.asmFrameworkUrl})},processMemoryInitializerJob:function(e,t){e.memoryInitializerRequest.status=200,e.memoryInitializerRequest.response=UnityLoader.Job.result(e,"downloadMemoryInitializer"),e.memoryInitializerRequest.callback&&e.memoryInitializerRequest.callback(),t.complete()},processDataJob:function(e,t){var r=UnityLoader.Job.result(e,"downloadData"),n=new DataView(r.buffer,r.byteOffset,r.byteLength),o=0,a="UnityWebData1.0\0";if(!String.fromCharCode.apply(null,r.subarray(o,o+a.length))==a)throw"unknown data format";o+=a.length;var i=n.getUint32(o,!0);for(o+=4;o0;c=f,f=u.indexOf("/",c)+1)e.FS_createPath(u.substring(0,c),u.substring(c,f-1),!0,!0);e.FS_createDataFile(u,null,r.subarray(s,s+d),!0,!0,!0)}e.removeRunDependency("processDataJob"),t.complete()},downloadJob:function(e,t){var r=t.parameters.objParameters?new UnityLoader.UnityCache.XMLHttpRequest(t.parameters.objParameters):new XMLHttpRequest;r.open("GET",t.parameters.url),r.responseType="arraybuffer",r.onload=function(){UnityLoader.Compression.decompress(new Uint8Array(r.response),function(e){t.complete(e)})},t.parameters.onprogress&&r.addEventListener("progress",t.parameters.onprogress),t.parameters.onload&&r.addEventListener("load",t.parameters.onload),r.send()},scheduleBuildDownloadJob:function(e,t,r){UnityLoader.Progress.update(e,t),UnityLoader.Job.schedule(e,t,[],UnityLoader.downloadJob,{url:e.resolveBuildUrl(e[r]),onprogress:function(r){UnityLoader.Progress.update(e,t,r)},onload:function(r){UnityLoader.Progress.update(e,t,r)},objParameters:e.companyName&&e.productName&&e.cacheControl&&(e.cacheControl[r]||e.cacheControl.default)?{companyName:e.companyName,productName:e.productName,cacheControl:e.cacheControl[r]||e.cacheControl.default}:null})},loadModule:function(e){if(e.useWasm=e.wasmCodeUrl&&UnityLoader.SystemInfo.hasWasm,e.useWasm)UnityLoader.scheduleBuildDownloadJob(e,"downloadWasmCode","wasmCodeUrl"),UnityLoader.Job.schedule(e,"processWasmCode",["downloadWasmCode"],UnityLoader.processWasmCodeJob),e.wasmMemoryUrl&&(UnityLoader.scheduleBuildDownloadJob(e,"downloadMemoryInitializer","wasmMemoryUrl"),UnityLoader.Job.schedule(e,"processMemoryInitializer",["downloadMemoryInitializer"],UnityLoader.processMemoryInitializerJob),e.memoryInitializerRequest={addEventListener:function(t,r){e.memoryInitializerRequest.callback=r}}),UnityLoader.scheduleBuildDownloadJob(e,"downloadWasmFramework","wasmFrameworkUrl"),UnityLoader.Job.schedule(e,"processWasmFramework",["downloadWasmFramework","processWasmCode","setupIndexedDB"],UnityLoader.processWasmFrameworkJob);else{if(!e.asmCodeUrl)throw"WebAssembly support is not detected in this browser.";UnityLoader.scheduleBuildDownloadJob(e,"downloadAsmCode","asmCodeUrl"),UnityLoader.Job.schedule(e,"processAsmCode",["downloadAsmCode"],UnityLoader.processAsmCodeJob),UnityLoader.scheduleBuildDownloadJob(e,"downloadMemoryInitializer","asmMemoryUrl"),UnityLoader.Job.schedule(e,"processMemoryInitializer",["downloadMemoryInitializer"],UnityLoader.processMemoryInitializerJob),e.memoryInitializerRequest={addEventListener:function(t,r){e.memoryInitializerRequest.callback=r}},e.asmLibraryUrl&&(e.dynamicLibraries=[e.asmLibraryUrl].map(e.resolveBuildUrl)),UnityLoader.scheduleBuildDownloadJob(e,"downloadAsmFramework","asmFrameworkUrl"),UnityLoader.Job.schedule(e,"processAsmFramework",["downloadAsmFramework","processAsmCode","setupIndexedDB"],UnityLoader.processAsmFrameworkJob)}UnityLoader.scheduleBuildDownloadJob(e,"downloadData","dataUrl"),UnityLoader.Job.schedule(e,"setupIndexedDB",[],UnityLoader.setupIndexedDBJob),e.preRun.push(function(){e.addRunDependency("processDataJob"),UnityLoader.Job.schedule(e,"processData",["downloadData"],UnityLoader.processDataJob)})},instantiate:function(e,t,r){function n(e,r){if("string"==typeof e&&!(e=document.getElementById(e)))return!1;e.innerHTML="",e.style.border=e.style.margin=e.style.padding=0,"static"==getComputedStyle(e).getPropertyValue("position")&&(e.style.position="relative"),e.style.width=r.width||e.style.width,e.style.height=r.height||e.style.height,r.container=e;var n=r.Module;return n.canvas=document.createElement("canvas"),n.canvas.style.width="100%",n.canvas.style.height="100%",n.canvas.addEventListener("contextmenu",function(e){e.preventDefault()}),n.canvas.id="#canvas",e.appendChild(n.canvas),r.compatibilityCheck(r,function(){var t=new XMLHttpRequest;t.open("GET",r.url,!0),t.responseType="text",t.onerror=function(){n.print("Could not download "+r.url),0==document.URL.indexOf("file:")&&alert("It seems your browser does not support running Unity WebGL content from file:// urls. Please upload it to an http server, or try a different browser.")},t.onload=function(){var o=JSON.parse(t.responseText);for(var a in o)"undefined"==typeof n[a]&&(n[a]=o[a]);for(var i=!1,s=0;s=1?i=!0:n.print("Warning: Unsupported graphics API "+d)}return i?(e.style.background=n.backgroundUrl?"center/cover url('"+n.resolveBuildUrl(n.backgroundUrl)+"')":n.backgroundColor?" "+n.backgroundColor:"",r.onProgress(r,0),void UnityLoader.loadModule(n)):void r.popup("Your browser does not support any of the required graphics API for this content: "+n.graphicsAPI,[{text:"OK"}])},t.send()},function(){n.printErr("Instantiation of the '"+t+"' terminated due to the failed compatibility check.")}),!0}function o(e){return o.link=o.link||document.createElement("a"),o.link.href=e,o.link.href}var a={url:t,onProgress:UnityLoader.Progress.handler,compatibilityCheck:UnityLoader.compatibilityCheck,Module:{graphicsAPI:["WebGL 2.0","WebGL 1.0"],onAbort:function(e){throw void 0!==e?(this.print(e),this.printErr(e),e=JSON.stringify(e)):e="","abort("+e+") at "+this.stackTrace()},preRun:[],postRun:[],print:function(e){console.log(e)},printErr:function(e){console.error(e)},Jobs:{},buildDownloadProgress:{},resolveBuildUrl:function(e){return e.match(/(http|https|ftp|file):\/\//)?e:t.substring(0,t.lastIndexOf("/")+1)+e},streamingAssetsUrl:function(){return o(this.resolveBuildUrl("../StreamingAssets"))},pthreadMainPrefixURL:"Build/"},SetFullscreen:function(){if(a.Module.SetFullscreen)return a.Module.SetFullscreen.apply(a.Module,arguments)},SendMessage:function(){if(a.Module.SendMessage)return a.Module.SendMessage.apply(a.Module,arguments)}};a.Module.gameInstance=a,a.popup=function(e,t){return UnityLoader.Error.popup(a,e,t)},a.Module.postRun.push(function(){a.onProgress(a,1)});for(var i in r)if("Module"==i)for(var s in r[i])a.Module[s]=r[i][s];else a[i]=r[i];return n(e,a)||document.addEventListener("DOMContentLoaded",function(){n(e,a)}),a},Utils:{assert:function(e,t){e||abort("Assertion failed: "+t)},optimizeMathFround:function(e,t){console.log("optimizing out Math.fround calls");for(var r={LOOKING_FOR_MODULE:0,SCANNING_MODULE_VARIABLES:1,SCANNING_MODULE_FUNCTIONS:2},n=["EMSCRIPTEN_START_ASM","EMSCRIPTEN_START_FUNCS","EMSCRIPTEN_END_FUNCS"],o="var",a="global.Math.fround;",i=0,s=t?r.LOOKING_FOR_MODULE:r.SCANNING_MODULE_VARIABLES,d=0,l=0;s<=r.SCANNING_MODULE_FUNCTIONS&&i+n% zhFhln+v`5B^PcBC=bUHwJ@5O+yFQNEj2P?CSqhL*~JSgSHWA*i3pI3p-Y}61hE-j zR8iEuo4P!HPeJ$F4&myVu;(1%1`ln__#=WiMoC3U!}11~6LLICo3DzxGDwb98oCT# z=<4{9XfYet>0aBx)kYq~bULHjB*-YSiA?$N7j`29bLLs!?o_EcUpap|(K)Hh-+#JP zV0;TxQ^(a6h^XSq$H*v^W|VOh!W#G>BC2Ef5a*F>h(pDM7P?Oqc_e@`@Cro9B}5D< z;i>)~8YJN&sStLON%9V#8e$xK7I>;?<*9S%{%5qUdP%$?x9-6{6&o zg50dKu-8k@j3S_QHU#LF5RDP!syv2 zLR*thc2l#xy)!qvjBLXhjO`;k6W66Y^89F_Ci|tOrOBxtf}2t7N@QNvd%jfzg9O{R zN4L@p?Ow9tL$Oa@*$Hg_+~HDTCki$SmUg#QuPCAnjy{qRju=*7ODk$}xu4!EjewJY z_2yYg(b2kd_nAyAEFQ#B*A!X^5<~Bs-o3+l_KfY5%^qdJ;JfZY^$Mc}De3q9FX*)9 zW;zCfd$plQ{3RtNfhn&9#Bl0_=EXiOiWOIuKCUg4w-!I3g{~>!DDZz9D`52TeVaLG zgRGKOqI103fL}k95_iCVJ#EZ^j{qM!`9d+6VAXcuGZ)c-8FATK0&JKL+#C2cjQ#3Wr94ovoLk!Uo z6Roy}oY8N5_s$5dXFk0+N-iuMI&-J-Yfq#C|3?2vyb}8!L|H)bq!#~t2Be*=h`W>h zEIWJ5q3yNn^{}y1d`HIdbg9mrJC`aO%jwBX->AOL}*g3>m<;Oy*T>P<)pb;x92<^Qkt->w7nUb`LY+Ub2kfFtXfr7nTpm& z#?oaS8$L+aWV55$r4oXw+@#poj-I@5QC-b)z&Tak|G+UFUR@r{GwyzSnePa$I4wkn zh*dS{g$hc1TF2K}2YW9|Q^)l_dh#^-!w11ssa;V&cpoED&&s5j?Q8 zdyUwOG|xmrLZVITS;$jyyCe($2M;P^H|esp%Y>(<8fJ%%AGmS1FV*kkWK>lh zd+i`DCR4?N=*46zJ4D@Um4SibxRf|e=;OFpKW-A<%g>rn-k4X0R;wAF7E;@RxsAc2 z9LJCABKC!SS0kS?k`$MvIeHNhs=MhS4X@K8{b<0`o8?Qw-Z$}b(Hhx< zHYcGDMVt(6_U^Ry7ax13c^@Ukg+G7dW^R=}Q`ay%cH?vPfav)-^5v2rkNaIJO=I~W z+P1DPI@uZz5u4G^)mE{Oo`lczxv`vk7PaT|U9Z>Xz{U0L#4cS9)7PlLP>)N83isdLn5TMq?UmltsDu7%BV{uerZ}C?&fEedRxaINOGrs9?uUdlbY_$3 zM7>o{bl!0zXJK6w!rcC3hiF702B*tpd@eo9E|)y6@3i3CsHQ$QZtfh8>9#8~GqaOZ zjcRdAulV1T#wCUFcrFf8sKv12LflR0*3OSPmv4KZmDqxmYK1nlRow_UO3nurJoVP-e@IrmiDr$;Cihz=_GopkA_x;O?~zI-eXfLvrlhE zeV3%}4?m*7Wv5>#^i#|C{OkwgpmJlMF4XBW>+)v)OAOVPtgmH7ZCBf33tWsvCG;*( zl2Q24;|Ji$?Yc1@3>S)GYSi@#-dh>_G$V6PpFY*Im_D9lOG_u)@YO;cMaMuDL>G&Q=D>t4q}+LnW@B z)#>b78fGskpdE$I6iG!bS}3(($NV8TA)L5a-}n}Pss6?bb0mgePAKlaAZFippIE-T zOEzM0&{1eP8>QG*pCGb#eLWS8Z=#cGm!jQSg>CluW~FI(nK56O zXj(nkGgQe8${ZHkb(J;wpkoDwJHlR=rFSUwtV6Aka|bEf{Y9}g+J2TvUH^4USBhlR z&YerP((4Cq(lr#TwDW=igC%ourgAMp7I*^6OnuHGn(+n=3DI{JBadu^KE zp;Z2n>g8Q+&|N3onCV1zkY`3XA##iA1*X+J+a`NOG8}t^8V^p>|)r zz2zgbYxmC2Pws7#HG_)+x!Fm)qP~ImnVZs3ZY9xvI&^_O?PBuGLI6K>uL$*G1!V^8#$Qx^yQ%;EBjN30`eSe6NvqaAJQBis(Ik=ew?`%#kjD+h*cBtU2 zMpnD#sJpDrF&HY&v7ww{zy8F5ID^dviR(2cCnoSD!VJ18~v=x8^eaAs3hC_ z1QD_bdz1c_n(2{>E2w7F9n&cXw}pw(`FE!ia!eaTj!C&ux~82J9qQ)jpr-Qo& z!J0qg+{FGa(c%b6;u-bIt!I5B_q;Q2=LP1s6uws~I9MXlVvYAeqVDT2CM4I>^u~4} zCBgt*Lbx%Mf@b#KJ z#>vo$nFyEP-rf5C0LjU1y3_M(G+|Lu(|uQdno;lwIjqd|h3W8i95;tFQbcgr>&|q& zV;?AFaB=Ovbam9w-oc^dNuxl0Vd{4 zZOZcEiOZy+QDmcUVpA&64L@Dyq}+8&m?iIU>^7ZzT+t=x-0@uMXrEFZlq6;DW=x$)=i=N2grFDGW=7V726AqXuzR$DV+9ak&ILv&`s*-sd z$Bh)#O|aiki@A1i9{+mv%2<+c z-ifed?9n}qgz8so2botm#p9P9#MGze=7Mh-)LFcA-rpfB+qCj_vkqVAcX;F~gNs0P zCX{BxKwUUX;=9KS-OzKH?OoJ46>&m&sNiN@QgzEGVJa5s{2H)BcOI=hzORuat+pM^ zu6+;EV3Aaf3zn~+Bo2CCbNuu(hnxKBy(`APpURGol1eeEMRUeB?)c_}OZ2JxH?Xqkloq_+j0?pTKFO50A@3 z)$b)beRq+2S~pZRwxZI^rfNBGMbyJ$Sl9EYkXN6O21|D8$%=lnSv8WGJ2+7Biag!r zv($2?;mOih2(IBb%wK7wq>@uYOWYT=*)fc$&h+4`+Zzl@EV%xFS#l_WL7%x_hTwUy zF&hFSf@369&=LpQuM%WkqI2JMEUaKG(PPzwl0{H+*Ly+nYpFPqOj1wC{gRUwef@8b zqr52|wllu)lauk`V%@XQ_JJZg0UA!+1vm&0``u0&9? zS>UCNp)WR;x%1F5MmefjyMgxckVi|l15I=3g->duMBLHGc3R~}M@GJ;xGxD%<;Q0s z=XZL+o8i~e{dqi@l|-y@Gs+u&Zb-Xt@BXk@ek(&cz*&~+7@^sNfevh2`iR;se{y~k zsB)pJ3ruizipLyV-C929gc<049AKsE>STXb9ev_%*tyiOo8;w_bJM3h1(clgu93hf zKbltmj)Yn|NFhTnLJoCsV_~ja7Q@0Ods>lydc)KsapG?9_C%=#^Zp zWfytJ{x|p@OCz^iq6JfI(Ks@80~_se1zWf>jF`IF&Z3@~^SM_CpI%ybJG^g2;(7VOjga*jW2+VB(unX>CJH)cevNlk&{zpNo#EkN+b z)GM+tu0^9m`BcN(7Q3!XuKutUxai=@Ec?t?xI4yDL#goQ zENiZ*(EQ7{T?URDs_U~|JoBnj_m4u87m0jIuRNt3s=Q4zHa^as@1Uh$Wc2OF>1KOT z*khU6a%42j?)b32f}Tj`5ePb=nHELHTzTQ@Ij@x%Cr{7#=M_??u9vaIu*sUe>?v|Q zQ@Za_Xk0Hh;#DDGV-O>Oo*&p`Pd#^)ddwx> zEt=2T4d*_8Baw2`k3}tyA~2Ih z@8iCk)UH`}{7<#kEsaq}n(cm*Ok_{BXr}UCBpMnW=JfjFA$G^`fQv5S^y0j*O7ojj z{(9X#RLY?jO8G^hs_L2yMc)b>xr_8?i!!T;*rA5UltX3igqRxgt*x`gRhYe|exd>aTVB!8XREAI%#Ciiu7KdUTMB*ABw)34nJ=+)cLmS#_PFj0h?9h4#?ViSj3c#(c%(^pP zGiI04h~WFRNt{u|-dZb)GW+2m9kt6tqobS`rn_~IR|Li1S5ZLlO6(L(i31^=q7;?J zWD377q!)Eoy(Z(eK{Um38egyIdQ)bK{Lh^oA&OQlz4o)@ItX?$HQ&bDt8zVqsX?6E z^vlPtaMHlET94^D5{6{kyJgO5xzVira8~SyXmrb4zv&Y$E+3s1RFnCj4q>wockN+G zn9|9nU#Wz1b!yf5gE&{>=}C!)mj*xDn^L=8So-Xbpj4$swW!wU@!hIHcbonrwVw7t z<>hYIWx{Zej0eW1uO2^SWR z<>7AB>soaI`_YZ4uQ{|SZBukpVXIV51&eLE%8oNj@^lw78G}wjk!w?7CEFOIgU|jp zd%nd#y)C-TeAZ_*1!D|54XvieZfJ~#J}5?+?X5qE;Nzpj&`sv@L6KtS+sBqBJRf=A zLbXt&)a&RG3ErZ5n3YASAr6jRV`Cc3Qa4aFWbc)RC*YXqhgKs-0Ip94n`W0-`O{)* z6s7$OU^6-dVXvdY9xa9$wb4{AH5$>ZdCoB;R-RR^R5U zyS{!DnKO*ClGpn7MpntyrvLr(lI?fzmL8W_nwyIZYU3j1y0`M?+*_=XQ%05EiP76W zvGZ1B(84poSGomOnW z=7XGDoDfX6PDAZ|?%e$tCd&=X;y|I@k0trb=bL*sVI5kClz@~i5cf*S*kWBzE-!so zdL!yJ?Fmh*71yzOQ&ozDUXi+8iZIzd%ne#7a)Mcgg)n=%YS6dVm>oGDq7Oikx%&g^Q|{ATHKrKs!I}e<;T>#J^$J$;=NLZ z-NK!;#>t)>%@<#8r|t8ii-#Kh)6e5HT!aIaDOp?P@h1FNPHCilkP}brQ;o9n7p&TO z+)U?({@P1T#?)suqNc%uf?<7Hhy}GiLD_UcsLp4b5Lfsf*RBG~N!G}4#jWq9p$}js+=+~bVB8&*kZi#05h&p|_v9(y9-VlNL z_Vyh{Wzq$*qnmJ4O68*z?*!}#`NCwEC*g6l6EUV{x|OswG?>t(sIxO!)GC=*C;vt% z!HG!LTMKg@9v(vTBla$61eX`07L75dq>jr77$AOgsCv^N+&}tG&n`g8H6jYixmFYP)Pi zE6*%^{LUA-W6bpjk@>0G2o}DaAG4GD< zLaJHsbhDKQjfyKORQsMeXt?jx%d=eR*)ty1L#l81E}ov}H;g_fh@MOHrhj-b|H38B z*0uCE&Ocq`=FkT-OG}Z@uU9<0)_to@+3(;Q-uIyvsLGo#tGM`4ehAYQh_5fv?s!k3 z>oM1~?AFU1!aQ{C`Hb7&b7`tPmYG7)2W93xhHr;4;;+SD@h@JNsKNN$8ekKo!w*pE zFEVDAw^;SxJbUUmNhrBx{(RrPh3w%coa zmGch$gr#3ZO!NB}v2ERF9y!1Xksl%24=pVOQmvnp=2}Jdki+Hk=T;oTQmi(N$!+aj z&5jg)qPC;c-$RoLe`q<2p2j&em&dWQ64P#!>BK6=$)c%xb#C@-zCBPwoI__%h zlemzA>{e&=*w1?3gMCS3&ZdSfIsa>#X(-6J=!?mKFaJ^e0OIYk^%gX{WXFG%il2i5 z-wUo&vLrk_^~b%wkc;Ixj%^sr-1oS5Z5v-fKnW*>d)bt~d3} zl8%{$=?5{Ad>3uRn6!CXoUZ37+p?a+OIe;I3`kO5b6eF9I-3rI=zy*Eaik*8bkK)NsWPI=$GTNY@< z9Pr3Qc5mcf`*_@qo>k*%ZHVZ7dp^}K1#*t->_l^xIhTtpzDKjk2i_^#ibp;K@OdBc z$dX3tj>Wkq@>@&3Z=M#Vydv4#_n~5;B?{IG9w}!vM?Xr(1yz4V;d#=(|2{$Y@tpN{ zqwl-qA|lak;~`wg_mZnjV%Cu3nalHKI7H;cDt3|#)dnI=WN;z!A@J(SIm@oe#c48> zR)5b%8A3QG95s z1JS`-)QD2iXO5-}Ws*5d%TY|1LFMFkQT1HhmyB*7Zj}^ z6)L2L-GF=;3S{!XkN5pjq4eHBLuOdi3n}O&l7slJPPar&Elxj}GU9xm_!8oGF1OXanaNf00MHwV%ckPbdpgBE~% zxc+_P=VXHaFLePfW?1kzD}0KF4F-SzPs{cTJr*oIL2g!F$Dq{k&inY7*?&|CBBS z5Saii7Mfqy)xM|@c8Hm zyuZKqTaxg>!2!IxyNf*EhgZ;OSn>=X%!}CK-}MJT6WI3j33ix^ks7|JB!i{#H$;(} zjrDbSdTJ8;7|;eCG&2J|tiFJ~{#6?Q+8hiN*!e)`$H)oc?ygSkx){tBJUlo6=fB8; z-R{`HQbPQ2bw$~)ydBa{j*o?z5q|`G;$NW;_+_Fz3g2^cgzIXn;i~ddxaoZZTv}WR z-*deKUqbW%{EwZE45lQ2U?csjSiZndWmyS4HTea5|M5cy%#GOWU(r9{m63u7_VIMZ zu5tJS{F#mf4`!t$g^we)0P-B_b!2D|EBo5&DlEjy0l%%T#7^7T*nkzz3d1}swEq+j zztZ+_!Oq{?+r?h*A~G|O;=`wT*s(N$Jf{&p!Ct?Q@O9WCLxW)w2!g@&usPb8!>lx< zzw-KLb~vQ%?e2`73j7$f0B=u3AB2BnLqH$I7~tQ_ON&_9$3};-GIB6b!dKN*;QhT{ z_Qs3MXaCR#4rzP2IbmsneFR$gg8=Ma7vkf@(g*qmT^PA%rXq%)XQX1sfgju3Mp)Yb zzXkk#nHa;qn;0KOVgNJNU;apTFdo?Zo~t8v{2szL@NXYa7nlSGg4qxs191$*InaUq zsflo44HY?fXJ-dHr?H_98+)hA*or!kkDf2I~R+fcWTaX9)vYz&j3X z9Q@lD0LB7a9qt|AYlnKrF8ojYfbp+ix94RTKlh*NAM3}6Z2-R@wtxnBSXx|!uU}EeJ{RFXj@@fu?*Tc0FM?Qn zXfrS;HSx)>asvH>eHkAc1zy1!DM^1Bg8>hG?8mUVw5$XvZXgZl6^&koHP6dqZ3+Ae zj5+Ke_5quAv^HbMV=x%_f`Sy1pQy3+2Qd%CYOv1iw{I}84VVjP{ktI$^du(F`zI%=hw03MmLarfCJxkarpHa zh+kmep5p!^AN*SkD!|2p)f0&CAdeijh41t5c^OHVfsEkSd=7L9FqfS88F+1N6{~Bo zCmG0y;G%+j>{Q@OnyLy|e*u2^M{@uE8NfKe765CMmlVN2eyqWpo0~9*uMU=`u$+Vt z%*{-Tl^x(OdQv<%COqVjRX8Nj2kz_b!QKOmBJgkEY`_DM4Rl%Y(@1_l2`eKu1+gCR z)6v!fgWPU`==&`4jtlXd&pq8(9c*uJ!`s^!Ed5u={{MF|;GvyC>;(FtNAlkt>)XG| zdHBZ)vQJPoRd6$c4-VVGf8ifj2kT$4;_vnR&)x$*4*Lm&m)z_O7{up4Y9NM!ya)Cj z(1Y?hajdNlW%*}m{?#~u@kNoCWO(f|92@x%ZfkCWS65d4j-B35-G3VQ{%ZYy^bYv( z;aLMv z3)ypuQX(+0*MCy?f5s=E0eAr&i~;-d&vO2st?{3H4)*W=hTQ)@JpaBP@V|Wz>J*?X z!GZL{I)wuAkM+NAeNl{`b%59*hAw6ktzql|}N1ldUDJBrS&c z&YzzbfZv0;0Ph*-UWT7NO@v2BhOs#U1c9(%e=Pp^qkRYF0_+0tp|#m9Y|H?;?e)vN zUt=0LyMTQE`+N<28}J$$U)gFPft`a70KD7K4Zh@L*#Rz>eS<;0xe2aP|rGxr?2T6%Z;<4S`9Rz#F!;d1v;N&N<*mD-Zn1%Vdh)$7n zA(FF;3tl3zSsRP30q;PM01v9G$YE;&HI-#BHNrO?2`)@U2*D;dbg(>JRX>lV4{`_A zhKS6ExEa_I_?8BO2LTTNX9%CY|RB=R?yUyWwE*i^bh?P;2&W3%NLa3 z#K$pk3W8bVqQYS<JOYp?lC{{NBUmni;?G>!Y%}j%we;}-m78kx_>46-) zjbKpFUgl)~CEfx)0ptR@26S`~xdDCwGJu+ii~T>Bv%xwi5nRB@K#BMV5f)>DIt0My b05ANO@4xyR$aLsufT!Qj{e3+6SMUEH(9pSK literal 0 HcmV?d00001 diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/favicon.ico.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/favicon.ico.meta new file mode 100644 index 0000000..27e91c6 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/favicon.ico.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: adfc8ef557fa74f4983b9b1c3cf214fb +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/fullscreen.png b/Assets/StreamingAssets/WebGLBuild/TemplateData/fullscreen.png new file mode 100644 index 0000000..8b25bd3 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/fullscreen.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:922b2a609219c96962e2e7af9d27c1f1935881de617c9d5cb08fdb0d034cafdc +size 345 diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/fullscreen.png.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/fullscreen.png.meta new file mode 100644 index 0000000..db956e3 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/fullscreen.png.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b4aea228be545f442a667212c8470978 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Dark.png b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Dark.png new file mode 100644 index 0000000..6b38a55 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Dark.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c901e72986f57b3dd474c5b8db981da26ec1d9ad92af9edc722172678c07d44 +size 155 diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Dark.png.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Dark.png.meta new file mode 100644 index 0000000..89afb6b --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Dark.png.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 097dca61fdf8a8c4980689e916f49ea0 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Light.png b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Light.png new file mode 100644 index 0000000..5b85d2e --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Light.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efbfdb9313bdc0489d96339cf4352c1a80bc953050cf9a6c06a7ced0c0f1a4e2 +size 159 diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Light.png.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Light.png.meta new file mode 100644 index 0000000..3416eeb --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressEmpty.Light.png.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8fca73a2805c57f48860bc10890d635a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Dark.png b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Dark.png new file mode 100644 index 0000000..58331bc --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Dark.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2832fafec86b420ee29e0e2126b95767a22bff85d30dc90ed8de36246b395fd8 +size 137 diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Dark.png.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Dark.png.meta new file mode 100644 index 0000000..e7da69c --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Dark.png.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9ed6abc2da6677e40af5767300029d5e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Light.png b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Light.png new file mode 100644 index 0000000..454520e --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Light.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:706765aced698c9790bb31eafd12b8161fadc46a62214926788a7a84cdc5fb51 +size 142 diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Light.png.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Light.png.meta new file mode 100644 index 0000000..d666e89 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressFull.Light.png.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea3a2642d139efb4a9c9819082691256 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Dark.png b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Dark.png new file mode 100644 index 0000000..6c52a5a --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Dark.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b95da4db2adc10af8bee6bfccb5246cc356b3164ce7caf6c7581c1002d64b71b +size 2343 diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Dark.png.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Dark.png.meta new file mode 100644 index 0000000..6145ec5 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Dark.png.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 96ce4826f21e7014aaf11a5cabe333cc +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Light.png b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Light.png new file mode 100644 index 0000000..7907b7a --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Light.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:270d4f3c53ec8acbef1657520116e9bbd5efe074e4fc12db05fdb9a745ae96bb +size 2259 diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Light.png.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Light.png.meta new file mode 100644 index 0000000..9ac3524 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/progressLogo.Light.png.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1e626ea48d428a543a10e9d1646df574 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/style.css b/Assets/StreamingAssets/WebGLBuild/TemplateData/style.css new file mode 100644 index 0000000..1283de4 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/style.css @@ -0,0 +1,18 @@ +.webgl-content * {border: 0; margin: 0; padding: 0} +.webgl-content {position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%);} + +.webgl-content .logo, .progress {position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%);} +.webgl-content .logo {background: url('progressLogo.Light.png') no-repeat center / contain; width: 154px; height: 130px;} +.webgl-content .progress {height: 18px; width: 141px; margin-top: 90px;} +.webgl-content .progress .empty {background: url('progressEmpty.Light.png') no-repeat right / cover; float: right; width: 100%; height: 100%; display: inline-block;} +.webgl-content .progress .full {background: url('progressFull.Light.png') no-repeat left / cover; float: left; width: 0%; height: 100%; display: inline-block;} + +.webgl-content .logo.Dark {background-image: url('progressLogo.Dark.png');} +.webgl-content .progress.Dark .empty {background-image: url('progressEmpty.Dark.png');} +.webgl-content .progress.Dark .full {background-image: url('progressFull.Dark.png');} + +.webgl-content .footer {margin-top: 5px; height: 38px; line-height: 38px; font-family: Helvetica, Verdana, Arial, sans-serif; font-size: 18px;} +.webgl-content .footer .webgl-logo, .title, .fullscreen {height: 100%; display: inline-block; background: transparent center no-repeat;} +.webgl-content .footer .webgl-logo {background-image: url('webgl-logo.png'); width: 204px; float: left;} +.webgl-content .footer .title {margin-right: 10px; float: right;} +.webgl-content .footer .fullscreen {background-image: url('fullscreen.png'); width: 38px; float: right;} diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/style.css.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/style.css.meta new file mode 100644 index 0000000..aa4a492 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/style.css.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 574359c93b40a584eb8e6c3b20288a82 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/webgl-logo.png b/Assets/StreamingAssets/WebGLBuild/TemplateData/webgl-logo.png new file mode 100644 index 0000000..96fdfd5 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/webgl-logo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f02bcd2abdd299a100ab8e2a339b3f414727816901ecda211d68cb7ba0705da0 +size 3587 diff --git a/Assets/StreamingAssets/WebGLBuild/TemplateData/webgl-logo.png.meta b/Assets/StreamingAssets/WebGLBuild/TemplateData/webgl-logo.png.meta new file mode 100644 index 0000000..e61b946 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/TemplateData/webgl-logo.png.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8b37961fac5d1b54cbada2dad0851247 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/WebGLBuild/index.html b/Assets/StreamingAssets/WebGLBuild/index.html new file mode 100644 index 0000000..4fb88d3 --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/index.html @@ -0,0 +1,25 @@ + + + + + + Unity WebGL Player | Pet.Move() + + + + + + + +
+
+ +
+ + diff --git a/Assets/StreamingAssets/WebGLBuild/index.html.meta b/Assets/StreamingAssets/WebGLBuild/index.html.meta new file mode 100644 index 0000000..9d23adb --- /dev/null +++ b/Assets/StreamingAssets/WebGLBuild/index.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1fc0652772fa71a4d914ad5d76a0d9d6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index dddc503..b70056e 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:758221ccdd8ed2b386a3367cc69cc6c5466fe975c0b4a77ac65f68abcdaa7ffd -size 2428 +oid sha256:06f2c9c42c3e01f1143d4c15cfe4f316cfab490aba17fde694e466c130d4e3a4 +size 2359