예제 #1
0
    protected override JobHandle OnUpdate(JobHandle inputDependencies)
    {
        quandrantMultiHashMap.Clear();
        EntityQuery query = GetEntityQuery(typeof(QuadrantEntity));
        int         quandrantEntityLength = query.CalculateEntityCount();

        if (quandrantEntityLength > quandrantMultiHashMap.Capacity)
        {
            Debug.Log("Setting Capacity " + quandrantEntityLength);
            quandrantMultiHashMap.Capacity = quandrantEntityLength;
        }
        var job = new QuadrantSystemJob()
        {
            entityCommandBuffer   = endSimulationEntityCommandBuffer.CreateCommandBuffer().ToConcurrent(),
            quandrantMultiHashMap = quandrantMultiHashMap.AsParallelWriter(),
        };
        var schedule = job.Schedule(this, inputDependencies);

        endSimulationEntityCommandBuffer.AddJobHandleForProducer(schedule);
        schedule.Complete();
        var currentMousePosition = Camera.main.ScreenToWorldPoint(
            new Vector3(Input.mousePosition.x,
                        Input.mousePosition.y,
                        Camera.main.nearClipPlane));

        DebugDrawQuadrant(currentMousePosition);
        //Debug.Log(quandrantMultiHashMap.CountValuesForKey(GetPositionHasMapKey(currentMousePosition)));
        /*   quandrantMultiHashMap.Dispose(); */
        return(schedule);
    }
예제 #2
0
    protected override JobHandle OnUpdate(JobHandle inputDependencies)
    {
        int zombQueryLength = quadrantEntityQuery.CalculateEntityCount();

        QuadrantEntityHashMap.Clear();

        if (zombQueryLength > QuadrantEntityHashMap.Capacity)
        {
            QuadrantEntityHashMap.Capacity = zombQueryLength;
        }

        var job = new QuadrantSystemJob
        {
            EntityHashMap = QuadrantEntityHashMap.AsParallelWriter()
        }.Schedule(this, inputDependencies);

        return(job);
    }