using System.Collections; using System.Collections.Generic; using System.Linq; using TGS; using UnityEditor; using UnityEngine; public class SceneBrushHelper { private const string SCENE_BRUSH_PATH = "Assets/Art/Scene/SceneBrush/Brush/Editor"; private static List _allBrushes; public static List AllBrushes { get { if (_allBrushes == null) { RefreshAllBrush(); } return _allBrushes; } } public static void RefreshAllBrush() { _allBrushes = _allBrushes ?? new(); _allBrushes.Clear(); var guids = AssetDatabase.FindAssets("t:SceneBrush", new[] { SCENE_BRUSH_PATH }); foreach (var guid in guids) { var path = AssetDatabase.GUIDToAssetPath(guid); var brush = AssetDatabase.LoadAssetAtPath(path); _allBrushes.Add(brush); } } public static SceneBrush GetSceneBrushByPrefab(GameObject prefab) { return AllBrushes.FirstOrDefault(brush => brush.prefab == prefab); } public static SceneBrush GetSceneBrushByRenderInfo(SceneObjectRenderInfo renderInfo) { return AllBrushes.FirstOrDefault(brush => brush.renderInfo == renderInfo); } public static ESceneObjectType BrushType2SceneObjectType(EBrushType brushType) { return (ESceneObjectType)(int)brushType; } //[MenuItem("Tools/CreateSurfaceMesh")] public static void CreateSurfaceMesh() { var savedMesh = AssetDatabase.LoadAssetAtPath(SceneSurfaceData.SURFACE_MESH_PATH); if (savedMesh != null) return; var tgs = Object.FindObjectOfType(); if (tgs != null) { var msf = tgs.GetComponent(); var quad = msf.sharedMesh; var mesh = Object.Instantiate(quad); EditorUtil.CreateAnUniqueAsset(mesh, SceneSurfaceData.SURFACE_MESH_PATH); AssetDatabase.Refresh(); } } }