NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/GameWrapper/Scene/SceneSurfaceData.cs

68 lines
1.7 KiB
C#
Raw Normal View History

2023-12-12 20:03:44 +08:00
using System;
using Cysharp.Threading.Tasks;
2024-02-26 15:27:38 +08:00
using PhxhSDK;
2023-12-12 20:03:44 +08:00
using UnityEditor;
using UnityEngine;
[Serializable]
public class SceneSurfaceData
{
2023-12-13 13:51:06 +08:00
public bool valid;
2023-12-12 20:03:44 +08:00
public const string SURFACE_MESH_PATH = "Assets/Art/Scene/SceneBrush/SurfaceMesh.mesh";
private static Mesh _surfaceMesh;
public static async UniTask<Mesh> GetSurfaceMesh()
{
if (_surfaceMesh == null)
{
2024-02-26 15:27:38 +08:00
_surfaceMesh = await AssetManager.Instance.LoadAssetAsync<Mesh>(SURFACE_MESH_PATH);
2023-12-12 20:03:44 +08:00
}
return _surfaceMesh;
}
public SceneObjectRenderInfo renderInfo;
public string materialPath;
//面片对应的旋转值,只有旋转相同的gameObject才可以开启面片模式
public Vector3 eulerAngleID;
//从三维坐标转换到正确的二维坐标的offset
public Vector3 cachedOffset;
2023-12-14 14:33:45 +08:00
public Vector3 cachedRotation;
2023-12-12 20:03:44 +08:00
public Vector3 cachedScale;
private Material _material;
public bool IsGameObjectValid(GameObject instance)
{
var transform = instance.transform;
var localScale = transform.localScale;
return transform.localEulerAngles == eulerAngleID && localScale.x.Equals(localScale.y) &&
localScale.x.Equals(localScale.z);
}
public async UniTask<Material> GetMaterial()
{
if (_material == null)
{
if (Application.isPlaying)
{
2024-02-26 15:27:38 +08:00
_material = await AssetManager.Instance.LoadAssetAsync<Material>(materialPath);
2023-12-12 20:03:44 +08:00
}
else
{
#if UNITY_EDITOR
_material = AssetDatabase.LoadAssetAtPath<Material>(materialPath);
#endif
}
}
return _material;
}
}