first commit
This commit is contained in:
74
Packages/com.arongranberg.aline/DrawingSettings.cs
Normal file
74
Packages/com.arongranberg.aline/DrawingSettings.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
#pragma warning disable CS0169, CS0414 // The field 'DrawingSettings.version' is never used
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Drawing {
|
||||
/// <summary>Stores ALINE project settings</summary>
|
||||
public class DrawingSettings : ScriptableObject {
|
||||
public const string SettingsPathCompatibility = "Assets/Settings/ALINE.asset";
|
||||
public const string SettingsName = "ALINE";
|
||||
public const string SettingsPath = "Assets/Settings/Resources/" + SettingsName + ".asset";
|
||||
|
||||
/// <summary>Stores ALINE project settings</summary>
|
||||
[System.Serializable]
|
||||
public class Settings {
|
||||
/// <summary>Opacity of lines when in front of objects</summary>
|
||||
public float lineOpacity = 1.0f;
|
||||
|
||||
/// <summary>Opacity of solid objects when in front of other objects</summary>
|
||||
|
||||
public float solidOpacity = 0.55f;
|
||||
|
||||
/// <summary>Opacity of text when in front of other objects</summary>
|
||||
|
||||
public float textOpacity = 1.0f;
|
||||
|
||||
/// <summary>Additional opacity multiplier of lines when behind or inside objects</summary>
|
||||
|
||||
public float lineOpacityBehindObjects = 0.12f;
|
||||
|
||||
/// <summary>Additional opacity multiplier of solid objects when behind or inside other objects</summary>
|
||||
|
||||
public float solidOpacityBehindObjects = 0.45f;
|
||||
|
||||
/// <summary>Additional opacity multiplier of text when behind or inside other objects</summary>
|
||||
|
||||
public float textOpacityBehindObjects = 0.9f;
|
||||
|
||||
/// <summary>
|
||||
/// Resolution of curves, as a fraction of the default.
|
||||
///
|
||||
/// The resolution of curves is dynamic based on the distance to the camera.
|
||||
/// This setting will make the curves higher or lower resolution by a factor from the default.
|
||||
/// </summary>
|
||||
public float curveResolution = 1.0f;
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private int version;
|
||||
public Settings settings;
|
||||
|
||||
public static Settings DefaultSettings => new Settings();
|
||||
|
||||
public static DrawingSettings GetSettingsAsset () {
|
||||
#if UNITY_EDITOR
|
||||
System.IO.Directory.CreateDirectory(Application.dataPath + "/../" + System.IO.Path.GetDirectoryName(SettingsPath));
|
||||
var settings = AssetDatabase.LoadAssetAtPath<DrawingSettings>(SettingsPath);
|
||||
if (settings == null && AssetDatabase.LoadAssetAtPath<DrawingSettings>(SettingsPathCompatibility) != null) {
|
||||
AssetDatabase.MoveAsset(SettingsPathCompatibility, SettingsPath);
|
||||
settings = AssetDatabase.LoadAssetAtPath<DrawingSettings>(SettingsPath);
|
||||
}
|
||||
if (settings == null) {
|
||||
settings = ScriptableObject.CreateInstance<DrawingSettings>();
|
||||
settings.settings = DefaultSettings;
|
||||
settings.version = 0;
|
||||
AssetDatabase.CreateAsset(settings, SettingsPath);
|
||||
AssetDatabase.SaveAssets();
|
||||
}
|
||||
#else
|
||||
var settings = Resources.Load<DrawingSettings>(SettingsName);
|
||||
#endif
|
||||
return settings;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user