91 lines
2.4 KiB
C#
91 lines
2.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace VRC.SDKBase.Editor
|
|
{
|
|
public class VRCPackageSettings : ISaveable
|
|
{
|
|
private static string PackageSettingsPath = Path.Combine(new DirectoryInfo(Application.dataPath).Parent?.FullName, "ProjectSettings", "Packages");
|
|
private static VRC.SDKBase.Editor.VRCPackageSettings _instance;
|
|
public bool samplesImported = false;
|
|
public bool allowVRCPackageChanges = false;
|
|
public bool samplesHintCreated = false;
|
|
public bool debugVCCConnection = false;
|
|
public bool dpidMipmaps = false;
|
|
public bool dpidConservative = true;
|
|
|
|
public static VRC.SDKBase.Editor.VRCPackageSettings Instance
|
|
{
|
|
get
|
|
{
|
|
if (_instance == null)
|
|
{
|
|
_instance = Create();
|
|
}
|
|
|
|
return _instance;
|
|
}
|
|
}
|
|
|
|
private static VRCPackageSettings Create()
|
|
{
|
|
var result = new VRCPackageSettings();
|
|
result.Load();
|
|
return result;
|
|
}
|
|
|
|
private static string GetPathFromType(Type t)
|
|
{
|
|
// Get package info for this assembly
|
|
var packageInfo = UnityEditor.PackageManager.PackageInfo.FindForAssembly(t.Assembly);
|
|
|
|
// Exit early for non-VPM SDK
|
|
if (packageInfo == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return Path.Combine(PackageSettingsPath, packageInfo.name, "settings.json");
|
|
}
|
|
|
|
private string GetPath()
|
|
{
|
|
return GetPathFromType(GetType());
|
|
}
|
|
|
|
private void EnsurePathExists()
|
|
{
|
|
var dir = Path.GetDirectoryName(GetPath());
|
|
Directory.CreateDirectory(dir);
|
|
}
|
|
|
|
protected void Load()
|
|
{
|
|
EnsurePathExists();
|
|
var path = GetPath();
|
|
if (!File.Exists(path))
|
|
{
|
|
var settings = (ISaveable)Activator.CreateInstance(GetType());
|
|
settings.Save();
|
|
}
|
|
else
|
|
{
|
|
EditorJsonUtility.FromJsonOverwrite(File.ReadAllText(path), this);
|
|
}
|
|
}
|
|
|
|
public void Save()
|
|
{
|
|
var json = JsonUtility.ToJson(this, true);
|
|
File.WriteAllText(GetPath(), json);
|
|
}
|
|
}
|
|
|
|
public interface ISaveable
|
|
{
|
|
void Save();
|
|
}
|
|
}
|