//#if UNITY_EDITOR //using FishNet.Managing.Object; //using FishNet.Object; //using System.Collections.Generic; //using System.IO; //using UnityEditor; //using UnityEngine; //namespace FishNet.Editing //{ // [InitializeOnLoad] // internal static class DefaultPrefabsFinder // { // /// // /// True if initialized. // /// // [System.NonSerialized] // private static bool _initialized; // /// // /// Found default prefabs. // /// // private static DefaultPrefabObjects _defaultPrefabs; // static DefaultPrefabsFinder() // { // EditorApplication.update += InitializeOnce; // } // /// // /// Finds and sets the default prefabs reference. // /// // internal static DefaultPrefabObjects GetDefaultPrefabsFile(out bool justPopulated) // { // if (_defaultPrefabs == null) // { // List results = Finding.GetScriptableObjects(true, true); // if (results.Count > 0) // _defaultPrefabs = (DefaultPrefabObjects)results[0]; // } // justPopulated = false; // //If not found then try to create file. // if (_defaultPrefabs == null) // { // if (DefaultPrefabObjects.CanAutomate) // { // DefaultPrefabObjects dpo = ScriptableObject.CreateInstance(); // //Get save directory. // string savePath = Finding.GetFishNetRuntimePath(true); // AssetDatabase.CreateAsset(dpo, Path.Combine(savePath, $"{nameof(DefaultPrefabObjects)}.asset")); // } // else // { // Debug.LogError($"Cannot create DefaultPrefabs because auto create is blocked."); // } // } // //If still null. // if (_defaultPrefabs == null) // Debug.LogWarning($"DefaultPrefabObjects not found. Prefabs list will not be automatically populated."); // else // justPopulated = PopulateDefaultPrefabs(); // return _defaultPrefabs; // } // /// // /// Initializes the default prefab. // /// // private static void InitializeOnce() // { // if (_initialized) // return; // _initialized = true; // Finding.GetFishNetRuntimePath(false); // GetDefaultPrefabsFile(out _); // if (_defaultPrefabs != null) // { // //Populate any missing. // if (_defaultPrefabs.GetObjectCount() == 0) // PopulateDefaultPrefabs(); // } // } // /// // /// Finds all NetworkObjects in project and adds them to defaultPrefabs. // /// // /// True if was populated from assets. // internal static bool PopulateDefaultPrefabs(bool log = true, bool clear = false) // { // if (_defaultPrefabs == null) // return false; // if (!DefaultPrefabObjects.CanAutomate) // return false; // if (clear) // _defaultPrefabs.Clear(); // if (_defaultPrefabs.GetObjectCount() > 0) // return false; // List gameObjects = Finding.GetGameObjects(true, true, false); // foreach (GameObject go in gameObjects) // { // if (go.TryGetComponent(out NetworkObject nob)) // _defaultPrefabs.AddObject(nob); // } // _defaultPrefabs.Sort(); // int entriesAdded = _defaultPrefabs.GetObjectCount(); // //Only print if some were added. // if (log && entriesAdded > 0) // Debug.Log($"Default prefabs was populated with {entriesAdded} prefabs."); // EditorUtility.SetDirty(_defaultPrefabs); // return true; // } // } //} //#endif