**Refactor meshes format to support custom vertex layouts and new flexible api to access mesh data**

#3044 #2667
This commit is contained in:
Wojtek Figat
2025-01-06 22:47:19 +01:00
parent 29bfef677f
commit db4d7d2a05
65 changed files with 4428 additions and 3106 deletions

View File

@@ -23,7 +23,7 @@ namespace FlaxEditor.SceneGraph.Actors
[HideInEditor]
public sealed class StaticModelNode : ActorNode
{
private Dictionary<IntPtr, Mesh.Vertex[]> _vertices;
private Dictionary<IntPtr, Float3[]> _vertices;
/// <inheritdoc />
public StaticModelNode(Actor actor)
@@ -53,14 +53,17 @@ namespace FlaxEditor.SceneGraph.Actors
var key = FlaxEngine.Object.GetUnmanagedPtr(mesh);
if (!_vertices.TryGetValue(key, out var verts))
{
verts = mesh.DownloadVertexBuffer();
var accessor = new MeshAccessor();
if (accessor.LoadMesh(mesh))
continue;
verts = accessor.Positions;
if (verts == null)
continue;
_vertices.Add(key, verts);
}
for (int i = 0; i < verts.Length; i++)
{
var v = verts[i].Position;
ref var v = ref verts[i];
var distance = Float3.DistanceSquared(ref pointLocal, ref v);
if (distance <= minDistance)
{