Ejemplo n.º 1
0
        protected override void OnUpdate()
        {
            var ecb    = _endSimulationEcbSystem.CreateCommandBuffer();
            var ecb_pw = ecb.AsParallelWriter();

            EntityManager.AddChunkComponentData <ChunkWorldRenderBounds>(
                _query_noCWRB,
                default(ChunkWorldRenderBounds)
                );

            if (LineRendererWorld.IsCreated && this.World == LineRendererWorld.GetWorld())
            {
                var boundsJob = new BoundsJob {
                    rendererBounds         = GetComponentTypeHandle <RenderBounds>(true),
                    localToWorld           = GetComponentTypeHandle <LocalToWorld>(true),
                    worldRenderBounds      = GetComponentTypeHandle <WorldRenderBounds>(),
                    chunkWorldRenderBounds = GetComponentTypeHandle <ChunkWorldRenderBounds>(),
                };
                Dependency = boundsJob.ScheduleParallel(_query, Dependency);
            }

            Entities
            .WithName($"add_missing_{nameof(WorldRenderBounds)}_components_job")
            .WithAll <Segment>()
            .WithNone <WorldRenderBounds>()
            .ForEach((in int entityInQueryIndex, in Entity entity) =>
            {
                ecb_pw.AddComponent <WorldRenderBounds>(entityInQueryIndex, entity);
            })
Ejemplo n.º 2
0
    private void Update()
    {
        var boundsJob = new BoundsJob()
        {
            Positions     = _positions,
            Accelerations = _accelerations,
            AreaSize      = _areaSize
        };
        var accelerationJob = new AccelerationJob()
        {
            Positions            = _positions,
            Velocities           = _velocities,
            Accelerations        = _accelerations,
            DestinationThreshold = _destinationThreshold,
            Weights = _accelerationWeights
        };
        var moveJob = new MoveJob()
        {
            Positions     = _positions,
            Velocities    = _velocities,
            Accelerations = _accelerations,
            DeltaTime     = Time.deltaTime,
            VelocityLimit = _velocityLimit
        };
        var boundsHandle       = boundsJob.Schedule(_numberOfEntities, 0);
        var accelerationHandle = accelerationJob.Schedule(_numberOfEntities,
                                                          0, boundsHandle);
        var moveHandle = moveJob.Schedule(_transformAccessArray, accelerationHandle);

        moveHandle.Complete();
    }
Ejemplo n.º 3
0
        protected override JobHandle OnUpdate(JobHandle dependency)
        {
            var boundsJob = new BoundsJob {
            };

            dependency = boundsJob.Schedule(this, dependency);

            return(dependency);
        }
Ejemplo n.º 4
0
        protected override JobHandle OnUpdate(JobHandle dependency)
        {
            var boundsJob = new BoundsJob
            {
                RendererBounds         = GetArchetypeChunkComponentType <RenderBounds>(true),
                LocalToWorld           = GetArchetypeChunkComponentType <LocalToWorld>(true),
                WorldRenderBounds      = GetArchetypeChunkComponentType <WorldRenderBounds>(),
                ChunkWorldRenderBounds = GetArchetypeChunkComponentType <ChunkWorldRenderBounds>(),
            };

            return(boundsJob.ScheduleParallel(m_WorldRenderBounds, dependency));
        }
Ejemplo n.º 5
0
        protected override void OnUpdate()
        {
            EntityManager.AddComponent(m_MissingWorldRenderBounds, typeof(WorldRenderBounds));
            EntityManager.AddComponent(m_MissingWorldChunkRenderBounds, ComponentType.ChunkComponent <ChunkWorldRenderBounds>());

            Dependency = new BoundsJob {
                RendererBounds         = GetArchetypeChunkComponentType <RenderBounds>(true),
                LocalToWorld           = GetArchetypeChunkComponentType <LocalToWorld>(true),
                WorldRenderBounds      = GetArchetypeChunkComponentType <WorldRenderBounds>(),
                ChunkWorldRenderBounds = GetArchetypeChunkComponentType <ChunkWorldRenderBounds>(),
                LastSystemVersion      = LastSystemVersion
            }.Schedule(m_WorldRenderBounds, Dependency);
        }
        protected override JobHandle OnUpdate(JobHandle dependency)
        {
            EntityManager.AddComponent(m_MissingWorldRenderBounds, typeof(WorldRenderBounds));

            var boundsJob = new BoundsJob
            {
                Chunks            = m_WorldRenderBounds.CreateArchetypeChunkArray(Allocator.TempJob),
                RendererBounds    = GetArchetypeChunkComponentType <RenderBounds>(true),
                LocalToWorld      = GetArchetypeChunkComponentType <LocalToWorld>(true),
                WorldRenderBounds = GetArchetypeChunkComponentType <WorldRenderBounds>(),
            };

            return(boundsJob.Schedule(boundsJob.Chunks.Length, 1, dependency));
        }
        protected override JobHandle OnUpdate(JobHandle dependency)
        {
            EntityManager.AddComponent(m_MissingWorldRenderBounds, typeof(WorldRenderBounds));
            EntityManager.AddComponent(m_MissingWorldChunkRenderBounds, ComponentType.ChunkComponent <ChunkWorldRenderBounds>());

            var boundsJob = new BoundsJob {
                RendererBounds         = GetArchetypeChunkComponentType <RenderBounds>(true),
                LocalToWorld           = GetArchetypeChunkComponentType <LocalToWorld>(true),
                WorldRenderBounds      = GetArchetypeChunkComponentType <WorldRenderBounds>(),
                ChunkWorldRenderBounds = GetArchetypeChunkComponentType <ChunkWorldRenderBounds>(),
                LastSystemVersion      = LastSystemVersion
            };

            return(boundsJob.Schedule(m_WorldRenderBounds, dependency));
        }
Ejemplo n.º 8
0
    protected override JobHandle OnUpdate(JobHandle inputDeps)
    {
        var playAreas = playAreaQuery.ToComponentDataArray <PlayArea>(Allocator.TempJob);

        BoundsJob job = new BoundsJob
        {
            PlayAreas = playAreas,
            ECB       = ecbSystem.CreateCommandBuffer().ToConcurrent()
        };

        JobHandle jobHandle = job.Schedule(this, inputDeps);

        ecbSystem.AddJobHandleForProducer(jobHandle);

        return(jobHandle);
    }