72 lines
2.0 KiB
C#
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();
|
|
}
|
|
}
|
|
} |