NLDClient-yudde/ProjectNLD/Assets/Editor/Scene/SceneBrushHelper.cs

72 lines
2.0 KiB
C#

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<SceneBrush> _allBrushes;
public static List<SceneBrush> 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<SceneBrush>(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<Mesh>(SceneSurfaceData.SURFACE_MESH_PATH);
if (savedMesh != null)
return;
var tgs = Object.FindObjectOfType<TerrainGridSystem>();
if (tgs != null)
{
var msf = tgs.GetComponent<MeshFilter>();
var quad = msf.sharedMesh;
var mesh = Object.Instantiate(quad);
EditorUtil.CreateAnUniqueAsset(mesh, SceneSurfaceData.SURFACE_MESH_PATH);
AssetDatabase.Refresh();
}
}
}