71 lines
1.8 KiB
C#
71 lines
1.8 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Cysharp.Threading.Tasks;
|
|
using PhxhSDK;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
[Serializable]
|
|
public class SceneSurfaceData
|
|
{
|
|
public bool valid;
|
|
|
|
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)
|
|
{
|
|
_surfaceMesh = await AssetManager.Instance.LoadAssetAsync<Mesh>(SURFACE_MESH_PATH);
|
|
}
|
|
|
|
return _surfaceMesh;
|
|
}
|
|
|
|
public SceneObjectRenderInfo renderInfo;
|
|
|
|
public string materialPath;
|
|
|
|
//面片对应的旋转值,只有旋转相同的gameObject才可以开启面片模式
|
|
public Vector3 eulerAngleID;
|
|
|
|
//从三维坐标转换到正确的二维坐标的offset
|
|
public Vector3 cachedOffset;
|
|
|
|
public Vector3 cachedRotation;
|
|
|
|
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)
|
|
{
|
|
_material = await AssetManager.Instance.LoadAssetAsync<Material>(materialPath);
|
|
}
|
|
else
|
|
{
|
|
#if UNITY_EDITOR
|
|
_material = AssetDatabase.LoadAssetAtPath<Material>(materialPath);
|
|
#endif
|
|
}
|
|
}
|
|
|
|
return _material;
|
|
}
|
|
} |