forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
#if UNITY_EDITOR
 | 
						|
using System.Collections.Generic;
 | 
						|
using UnityEditor;
 | 
						|
using UnityEngine;
 | 
						|
 | 
						|
namespace FishNet
 | 
						|
{
 | 
						|
    internal static class ScriptingDefines
 | 
						|
    {
 | 
						|
        [InitializeOnLoadMethod]
 | 
						|
        public static void AddDefineSymbols()
 | 
						|
        {
 | 
						|
            string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
 | 
						|
            /* Convert current defines into a hashset. This is so we can
 | 
						|
             * determine if any of our defines were added. Only save playersettings
 | 
						|
             * when a define is added. */
 | 
						|
            HashSet<string> definesHs = new HashSet<string>();
 | 
						|
            string[] currentArr = currentDefines.Split(';');
 | 
						|
            //Add current defines into hs.
 | 
						|
            foreach (string item in currentArr)
 | 
						|
                definesHs.Add(item);
 | 
						|
 | 
						|
            string proDefine = "FISHNET_PRO";
 | 
						|
            string versionPrefix = "FISHNET_V";
 | 
						|
            string thisVersion = $"{versionPrefix}3";
 | 
						|
            string[] fishNetDefines = new string[]
 | 
						|
            {
 | 
						|
                "FISHNET",
 | 
						|
                thisVersion,
 | 
						|
                
 | 
						|
            };
 | 
						|
            bool modified = false;
 | 
						|
            //Now add FN defines.
 | 
						|
            foreach (string item in fishNetDefines)
 | 
						|
                modified |= definesHs.Add(item);
 | 
						|
 | 
						|
            /* Remove pro define if not on pro. This might look a little
 | 
						|
             * funny because the code below varies depending on if pro or not. */
 | 
						|
            
 | 
						|
#pragma warning disable CS0162 // Unreachable code detected
 | 
						|
                modified |= definesHs.Remove(proDefine);
 | 
						|
#pragma warning restore CS0162 // Unreachable code detected
 | 
						|
 | 
						|
            List<string> definesToRemove = new List<string>();
 | 
						|
            int versionPrefixLength = versionPrefix.Length;
 | 
						|
            //Remove old versions.
 | 
						|
            foreach (string item in definesHs)
 | 
						|
            {
 | 
						|
                //Do not remove this version.
 | 
						|
                if (item == thisVersion)
 | 
						|
                    continue;
 | 
						|
 | 
						|
                //If length is possible to be a version prefix and is so then remove it.
 | 
						|
                if (item.Length >= versionPrefixLength && item.Substring(0, versionPrefixLength) == versionPrefix)
 | 
						|
                    definesToRemove.Add(item);
 | 
						|
            }
 | 
						|
 | 
						|
            modified |= (definesToRemove.Count > 0);
 | 
						|
            foreach (string item in definesToRemove)
 | 
						|
            {
 | 
						|
                definesHs.Remove(item);
 | 
						|
                Debug.Log($"Removed unused Fish-Networking define {item}.");
 | 
						|
            }
 | 
						|
 | 
						|
            if (modified)
 | 
						|
            {
 | 
						|
                Debug.Log("Added or removed Fish-Networking defines within player settings.");
 | 
						|
                string changedDefines = string.Join(";", definesHs);
 | 
						|
                PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, changedDefines);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
#endif |