public unsafe void DecomposeHead(UIGraphData graph, int threadIndex) { var graphInfo = graph.GetGraphInfo(schema, out NativeArray <NodeInfo> configLayout, Allocator.Temp); int currentSubmesh = 0; var dedicatedNodeInfo = new NativeArray <DedicatedNodeInfo>(graphInfo.subMeshCount, Allocator.Temp); Decompose(graph, threadIndex, 0, configLayout, ref currentSubmesh, dedicatedNodeInfo, graphInfo.subMeshCount + 1); nodes.BeginForEachIndex(threadIndex); this.submeshCount[threadIndex] = graphInfo.subMeshCount; for (int i = 0; i < graphInfo.subMeshCount; i++) { nodes.Write(dedicatedNodeInfo[i]); } nodes.EndForEachIndex(); }
public void Execute(UIGraphData graph, MeshData meshData, int index) { if (graph.GetNodeCount() > 0) { var states = new NativeArray <UIPassState>(graph.GetNodeCount(), Allocator.Temp); var initial = UIPassState.Null; UnsafeUtility.MemCpyReplicate(states.GetUnsafePtr(), UnsafeUtility.AddressOf(ref initial), UnsafeUtility.SizeOf <UIPassState>(), states.Length); var graphInfo = graph.GetGraphInfo(schema, out NativeArray <NodeInfo> layout, Allocator.Temp); InitMeshData(ref meshData, graphInfo); NativeArray <UIVertexData> vertices = meshData.GetVertexData <UIVertexData>(); var contextPtr = (UIContextData *)((IntPtr)contexts.GetUnsafePtr() + (UnsafeUtility.SizeOf <UIContextData>() * index)).ToPointer(); Layout(0, graph, layout, states, contextPtr); Render(vertices, contextPtr, ref meshData, graph, layout, graphInfo, states); states.Dispose(); layout.Dispose(); } }