summaryrefslogtreecommitdiff
path: root/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/DrawingSettings.cs
blob: 7af8883d69593266599adc8bf267340c314a525d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#pragma warning disable CS0169, CS0414 // The field 'DrawingSettings.version' is never used
using UnityEditor;
using UnityEngine;

namespace Pathfinding.Drawing {
	/// <summary>Stores ALINE project settings</summary>
	public class DrawingSettings : ScriptableObject {
		public const string SettingsPathCompatibility = "Assets/Settings/ALINE.asset";
		public const string SettingsName = "AstarGizmos";
		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;
		}
	}
}