5 using System.Collections.Generic;
37 TryDetach(e.OldValue);
38 TryAttach(e.NewValue);
43 if (spatialMappingSource != null)
51 inputMeshList.Clear();
56 if (spatialMappingSource != null)
63 Debug.Assert(inputMeshList.Count == 0);
67 inputMeshList.Add(CreateMeshData(surface, meshUpdateID: 0));
75 Debug.Assert(FindMeshIndexInInputMeshList(e.Data.ID) < 0);
77 inputMeshList.Add(CreateMeshData(e.Data, meshUpdateID: 0));
83 Debug.Assert(e.Data.Old.ID == e.Data.New.ID);
85 int iMesh = FindMeshIndexInInputMeshList(e.Data.New.ID);
86 Debug.Assert(iMesh >= 0);
88 inputMeshList[iMesh] = CreateMeshData(e.Data.New, (inputMeshList[iMesh].LastUpdateID + 1));
95 var iMesh = FindMeshIndexInInputMeshList(e.Data.ID);
96 Debug.Assert(iMesh >= 0);
98 inputMeshList.RemoveAt(iMesh);
101 private void HandleRemovingAllSurfaces(
object sender, EventArgs e)
105 inputMeshList.Clear();
108 private int FindMeshIndexInInputMeshList(
int meshID)
110 for (
int i = 0; i < inputMeshList.Count; ++i)
112 if (inputMeshList[i].MeshID == meshID)
122 MeshFilter meshFilter = surface.Filter;
125 if ((meshFilter != null) &&
126 (meshFilter.mesh != null) &&
127 (meshFilter.mesh.triangles.Length > 0))
130 meshFilter.mesh.RecalculateNormals();
133 meshData.
CopyFrom(meshFilter, surface.ID, meshUpdateID);
138 meshData.CopyFrom(null, surface.ID, meshUpdateID);
153 if (inputMeshList.Count == 0)
156 meshList = IntPtr.Zero;
162 meshCount = inputMeshList.Count;