Singularity/Assets/Plugins/crosstales/FileBrowser/Extras/PlatformWrapper/Scripts/PlatformWrapper.cs
2024-05-06 11:45:45 -07:00

97 lines
3.4 KiB
C#

using UnityEngine;
using System;
namespace Crosstales.FB.Tool
{
/// <summary>Allows to configure wrappers per platform.</summary>
//[ExecuteInEditMode]
[HelpURL("https://www.crosstales.com/media/data/assets/FileBrowser/api/class_crosstales_1_1_f_b_1_1_tool_1_1_platform_wrapper.html")]
public class PlatformWrapper : MonoBehaviour
{
[Header("Configuration Settings"), Tooltip("Platform specific wrapper for the app (empty wrapper = default of the OS).")]
public PlatformWrapperTuple[] Configuration;
[Header("Default"), Tooltip("Default wrapper of the app (empty = default of the OS).")] public Crosstales.FB.Wrapper.BaseCustomFileBrowser DefaultWrapper;
[Header("Parenting"), Tooltip("Set the provider as child of the FileBrowser parent object (default: true).")]
public bool SetAsChild = true;
[Header("Editor"), Tooltip("Use the default wrapper inside the Editor (default: false).")] public bool UseDefault;
private void Start()
{
bool found = false;
if (!Crosstales.FB.Util.Helper.isEditor || !UseDefault)
{
Crosstales.Common.Model.Enum.Platform currentPlatform = Crosstales.FB.Util.Helper.CurrentPlatform;
foreach (PlatformWrapperTuple config in Configuration)
{
if (config.Platform == currentPlatform)
{
if (config.CustomWrapper == null)
{
FileBrowser.Instance.CustomMode = false;
}
else
{
FileBrowser.Instance.CustomWrapper = config.CustomWrapper;
FileBrowser.Instance.CustomMode = true;
if (SetAsChild)
{
for (int ii = FileBrowser.Instance.transform.childCount - 1; ii >= 0; ii--)
{
Transform child = FileBrowser.Instance.transform.GetChild(ii);
//child.SetParent(null);
if (child != config.CustomWrapper.transform)
Destroy(child.gameObject);
}
config.CustomWrapper.transform.SetParent(FileBrowser.Instance.transform);
}
}
found = true;
break;
}
}
}
if (!found)
{
if (DefaultWrapper == null)
{
FileBrowser.Instance.CustomMode = false;
}
else
{
FileBrowser.Instance.CustomWrapper = DefaultWrapper;
FileBrowser.Instance.CustomMode = true;
if (SetAsChild)
{
for (int ii = FileBrowser.Instance.transform.childCount - 1; ii >= 0; ii--)
{
Transform child = FileBrowser.Instance.transform.GetChild(ii);
//child.SetParent(null);
Destroy(child.gameObject);
}
DefaultWrapper.transform.SetParent(FileBrowser.Instance.transform);
}
}
}
}
}
[Serializable]
public class PlatformWrapperTuple
{
public Crosstales.Common.Model.Enum.Platform Platform;
public Crosstales.FB.Wrapper.BaseCustomFileBrowser CustomWrapper;
}
}
// © 2021-2023 crosstales LLC (https://www.crosstales.com)