Example #1
0
        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();
        }
Example #2
0
 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();
     }
 }