Esempio n. 1
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            NativeArray <Entity> na_newOctreeEntities = group.ToEntityArray(Allocator.TempJob);

            Debug.Log("Add New Octree System");

            for (int i = 0; i < na_newOctreeEntities.Length; i++)
            {
                Entity e = na_newOctreeEntities [i];

                Debug.Log("#" + i + "; e #" + e.Index);
            }

            na_newOctreeEntities.Dispose();


            int i_groupLength = group.CalculateEntityCount();

            var initialiseOctreeJobHandle = new InitialiseOctreeJob
            {
                // a_newOctreeEntities                 = group.GetEntityArray (),

                // a_addNewOctreeData                  = GetComponentDataFromEntity <AddNewOctreeData> (),
                a_rootNodeData = GetComponentDataFromEntity <RootNodeData> (),

                nodeSparesBufferElement          = GetBufferFromEntity <NodeSparesBufferElement> (),
                nodeBufferElement                = GetBufferFromEntity <NodeBufferElement> (),
                nodeInstancesIndexBufferElement  = GetBufferFromEntity <NodeInstancesIndexBufferElement> (),
                nodeChildrenBufferElement        = GetBufferFromEntity <NodeChildrenBufferElement> (),
                instanceBufferElement            = GetBufferFromEntity <InstanceBufferElement> (),
                instancesSpareIndexBufferElement = GetBufferFromEntity <InstancesSpareIndexBufferElement> ()
            }.Schedule(group, inputDeps);


            var finalizeInitialisationOctreeJobHandle = new FinalizeInitialisationOctreeJob
            {
                ecb = eiecb.CreateCommandBuffer().ToConcurrent(),
                // a_newOctreeEntities                 = group.GetEntityArray ()
            }.Schedule(group, initialiseOctreeJobHandle);

            eiecb.AddJobHandleForProducer(finalizeInitialisationOctreeJobHandle);

            return(finalizeInitialisationOctreeJobHandle);
        }
Esempio n. 2
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            EntityArray a_newOctreeEntities = group.GetEntityArray();

            for (int i = 0; i < a_newOctreeEntities.Length; i++)
            {
                Entity e = a_newOctreeEntities [i];

                Debug.Log("#" + i + "; e #" + e.Index);
            }


            int i_groupLength = group.CalculateLength();

            var initialiseOctreeJob = new InitialiseOctreeJob
            {
                a_newOctreeEntities = group.GetEntityArray(),

                a_addNewOctreeData = GetComponentDataFromEntity <AddNewOctreeData> (),
                a_rootNodeData     = GetComponentDataFromEntity <RootNodeData> (),

                nodeSparesBufferElement          = GetBufferFromEntity <NodeSparesBufferElement> (),
                nodeBufferElement                = GetBufferFromEntity <NodeBufferElement> (),
                nodeInstancesIndexBufferElement  = GetBufferFromEntity <NodeInstancesIndexBufferElement> (),
                nodeChildrenBufferElement        = GetBufferFromEntity <NodeChildrenBufferElement> (),
                instanceBufferElement            = GetBufferFromEntity <InstanceBufferElement> (),
                instancesSpareIndexBufferElement = GetBufferFromEntity <InstancesSpareIndexBufferElement> ()
            }.Schedule(i_groupLength, 8, inputDeps);

            var finalizeInitialisationOctreeJob = new FinalizeInitialisationOctreeJob
            {
                ecb = barrier.CreateCommandBuffer().ToConcurrent(),
                a_newOctreeEntities = group.GetEntityArray()
            }.Schedule(i_groupLength, 8, initialiseOctreeJob);


            return(finalizeInitialisationOctreeJob);
        }