Added Unity project files
This commit is contained in:
@ -0,0 +1,90 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user