103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.IO;
 | |
| using System.Xml.Serialization;
 | |
| using UnityEngine;
 | |
| 
 | |
| #if UNITY_EDITOR
 | |
| using UnityEditor.Compilation;
 | |
| using UnityEditor.Build.Reporting;
 | |
| using UnityEditor;
 | |
| using UnityEditor.Build;
 | |
| #endif
 | |
| 
 | |
| namespace FishNet.Configuring
 | |
| {
 | |
| 
 | |
| 
 | |
|     public class Configuration
 | |
|     {
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 
 | |
|         /// </summary>
 | |
|         private static ConfigurationData _configurations;
 | |
|         /// <summary>
 | |
|         /// ConfigurationData to use.
 | |
|         /// </summary>
 | |
|         public static ConfigurationData Configurations
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (_configurations == null)
 | |
|                     _configurations = LoadConfigurationData();
 | |
|                 if (_configurations == null)
 | |
|                     throw new System.Exception("Fish-Networking Configurations could not be loaded. Certain features such as code-stripping may not function.");
 | |
|                 return _configurations;
 | |
|             }
 | |
|             private set
 | |
|             {
 | |
|                 _configurations = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// File name for configuration disk data.
 | |
|         /// </summary>
 | |
|         public const string CONFIG_FILE_NAME = "FishNet.Config.XML";
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Returns the path for the configuration file.
 | |
|         /// </summary>
 | |
|         /// <returns></returns>
 | |
|         internal static string GetAssetsPath(string additional = "")
 | |
|         {
 | |
|             string a = Path.Combine(System.IO.Directory.GetCurrentDirectory(), "Assets");
 | |
|             if (additional != "")
 | |
|                 a = Path.Combine(a, additional);
 | |
|             return a;
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Returns FishNetworking ConfigurationData.
 | |
|         /// </summary>
 | |
|         /// <returns></returns>
 | |
|         internal static ConfigurationData LoadConfigurationData()
 | |
|         {
 | |
|             //return new ConfigurationData();
 | |
|             if (_configurations == null || !_configurations.Loaded)
 | |
|             {
 | |
|                 string configPath = GetAssetsPath(CONFIG_FILE_NAME);
 | |
|                 //string configPath = string.Empty;
 | |
|                 //File is on disk.
 | |
|                 if (File.Exists(configPath))
 | |
|                 {
 | |
|                     FileStream fs = null;
 | |
|                     try
 | |
|                     {
 | |
|                         XmlSerializer serializer = new XmlSerializer(typeof(ConfigurationData));
 | |
|                         fs = new FileStream(configPath, FileMode.Open, FileAccess.Read, FileShare.Read);
 | |
|                         _configurations = (ConfigurationData)serializer.Deserialize(fs);
 | |
|                     }
 | |
|                     finally
 | |
|                     {
 | |
|                         fs?.Close();
 | |
|                     }
 | |
|                     _configurations.Loaded = true;
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     //If null then make a new instance.
 | |
|                     if (_configurations == null)
 | |
|                         _configurations = new ConfigurationData();
 | |
|                     //Don't unset loaded, if its true then it should have proper info.
 | |
|                     //_configurationData.Loaded = false;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             return _configurations;
 | |
| 
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| }
 |