E_ElecCompetition/Electrical_inspectionCompet.../Assets/Plugins/ZFBrowser/Demo/Scripts/VRBrowserPanel.cs

60 lines
2.0 KiB
C#

using System;
using System.Net;
using UnityEngine;
namespace ZenFulcrum.EmbeddedBrowser {
public class VRBrowserPanel : MonoBehaviour, INewWindowHandler {
public Browser contentBrowser, controlBrowser;
public Transform keyboardLocation;
public void Awake() {
//If the content browser is externally closed, make sure we go too.
var dd = contentBrowser.gameObject.AddComponent<DestroyDetector>();
dd.onDestroy += CloseBrowser;
contentBrowser.SetNewWindowHandler(Browser.NewWindowAction.NewBrowser, this);
contentBrowser.onLoad += data => controlBrowser.CallFunction("setURL", data["url"]);
controlBrowser.RegisterFunction("demoNavForward", args => contentBrowser.GoForward());
controlBrowser.RegisterFunction("demoNavBack", args => contentBrowser.GoBack());
controlBrowser.RegisterFunction("demoNavRefresh", args => contentBrowser.Reload());
controlBrowser.RegisterFunction("demoNavClose", args => CloseBrowser());
controlBrowser.RegisterFunction("goTo", args => contentBrowser.LoadURL(args[0], false));
VRMainControlPanel.instance.keyboard.onFocusChange += OnKeyboardOnOnFocusChange;
}
public void OnDestroy() {
VRMainControlPanel.instance.keyboard.onFocusChange -= OnKeyboardOnOnFocusChange;
}
private void OnKeyboardOnOnFocusChange(Browser browser, bool editable) {
if (!editable || !browser) VRMainControlPanel.instance.MoveKeyboardUnder(null);
else if (browser == contentBrowser || browser == controlBrowser) VRMainControlPanel.instance.MoveKeyboardUnder(this);
}
public void CloseBrowser() {
if (!this || !VRMainControlPanel.instance) return;
VRMainControlPanel.instance.DestroyPane(this);
}
public Browser CreateBrowser(Browser parent) {
var newPane = VRMainControlPanel.instance.OpenNewTab(this);
newPane.transform.position = transform.position;
newPane.transform.rotation = transform.rotation;
return newPane.contentBrowser;
}
}
internal class DestroyDetector : MonoBehaviour {
public event Action onDestroy = () => {};
public void OnDestroy() {
onDestroy();
}
}
}