Ejemplo n.º 1
0
    private void Update()
    {
        float startTime = Time.realtimeSinceStartup;

        //Objenin sürekli hareket halinde olmasını sağlamak için gerekli tanımları yaptık
        NativeArray <float>  moveYArray           = new NativeArray <float> (BodyList.Count, Allocator.TempJob);
        TransformAccessArray transformAccessArray = new TransformAccessArray(BodyList.Count);

        for (int i = 0; i < BodyList.Count; i++)
        {
            moveYArray[i] = BodyList[i].moveY;
            transformAccessArray.Add(BodyList[i].transform);
        }

        ReallyToughParallelJobTransforms reallyToughParallelJobTransforms = new ReallyToughParallelJobTransforms {
            deltaTime  = Time.deltaTime,
            moveYArray = moveYArray,
        };

        JobHandle jobHandle = reallyToughParallelJobTransforms.Schedule(transformAccessArray);

        jobHandle.Complete();

        for (int i = 0; i < BodyList.Count; i++)
        {
            BodyList[i].moveY = moveYArray[i];
        }

        moveYArray.Dispose();
        transformAccessArray.Dispose();

        txtTotal.text = "TOTAL\n" + GameObject.FindGameObjectWithTag("bodies").transform.childCount.ToString();   //Obje sayısını güncel tuttuk
    }
    private void Update()
    {
        float startTime = Time.realtimeSinceStartup;

        if (useJobs)
        {
            //Duplicate pieces of data. If we did this efficiently, only create these 1x.
            NativeArray <float>  moveYarray           = new NativeArray <float>(sunsList.Count, Allocator.TempJob);
            TransformAccessArray transformAccessArray = new TransformAccessArray(sunsList.Count);

            for (int i = 0; i < sunsList.Count; i++)
            {
                transformAccessArray.Add(sunsList[i].transform);
                moveYarray[i] = sunsList[i].moveY;
            }

            ReallyToughParallelJobTransforms reallyToughParallelJobTransforms = new ReallyToughParallelJobTransforms
            {
                deltaTime  = Time.deltaTime,
                moveYarray = moveYarray,
            };

            JobHandle jobHandle = reallyToughParallelJobTransforms.Schedule(transformAccessArray);
            jobHandle.Complete();

            for (int i = 0; i < sunsList.Count; i++)
            {
                sunsList[i].moveY = moveYarray[i];
            }

            transformAccessArray.Dispose();
            moveYarray.Dispose();
        }
        else
        {
            foreach (Sun sun in sunsList)
            {
                sun.transform.position += new Vector3(0, sun.moveY * Time.deltaTime);
                if (sun.transform.position.y > 5f)
                {
                    sun.moveY = -math.abs(sun.moveY);
                }
                else if (sun.transform.position.y < -5f)
                {
                    sun.moveY = math.abs(sun.moveY);
                }
                //Testing.ReallyToughTask(1000);
            }
        }

        //Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + "ms");
    }
Ejemplo n.º 3
0
    private void Update()
    {
        float startTime = Time.realtimeSinceStartup;

        if (useJobs)
        {
            //NativeArray<float3> positionArray = new NativeArray<float3>(zombieList.Count, Allocator.TempJob);
            NativeArray <float>  moveYArray           = new NativeArray <float>(zombieList.Count, Allocator.TempJob);
            TransformAccessArray transformAccessArray = new TransformAccessArray(zombieList.Count);

            for (int i = 0; i < zombieList.Count; i++)
            {
                //positionArray[i] = zombieList[i].transform.position;
                moveYArray[i] = zombieList[i].moveY;
                transformAccessArray.Add(zombieList[i].transform);
            }

            /*
             * ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob {
             *  deltaTime = Time.deltaTime,
             *  positionArray = positionArray,
             *  moveYArray = moveYArray,
             * };
             *
             * JobHandle jobHandle = reallyToughParallelJob.Schedule(zombieList.Count, 100);
             * jobHandle.Complete();
             */
            ReallyToughParallelJobTransforms reallyToughParallelJobTransforms = new ReallyToughParallelJobTransforms {
                deltaTime  = Time.deltaTime,
                moveYArray = moveYArray,
            };

            JobHandle jobHandle = reallyToughParallelJobTransforms.Schedule(transformAccessArray);
            jobHandle.Complete();

            for (int i = 0; i < zombieList.Count; i++)
            {
                //zombieList[i].transform.position = positionArray[i];
                zombieList[i].moveY = moveYArray[i];
            }

            //positionArray.Dispose();
            moveYArray.Dispose();
            transformAccessArray.Dispose();
        }
        else
        {
            foreach (Zombie zombie in zombieList)
            {
                zombie.transform.position += new Vector3(0, zombie.moveY * Time.deltaTime);
                if (zombie.transform.position.y > 5f)
                {
                    zombie.moveY = -math.abs(zombie.moveY);
                }
                if (zombie.transform.position.y < -5f)
                {
                    zombie.moveY = +math.abs(zombie.moveY);
                }
                float value = 0f;
                for (int i = 0; i < 1000; i++)
                {
                    value = math.exp10(math.sqrt(value));
                }
            }
        }

        /*
         * if (useJobs) {
         *  NativeList<JobHandle> jobHandleList = new NativeList<JobHandle>(Allocator.Temp);
         *  for (int i = 0; i < 10; i++) {
         *      JobHandle jobHandle = ReallyToughTaskJob();
         *      jobHandleList.Add(jobHandle);
         *  }
         *  JobHandle.CompleteAll(jobHandleList);
         *  jobHandleList.Dispose();
         * } else {
         *  for (int i = 0; i < 10; i++) {
         *      ReallyToughTask();
         *  }
         * }
         */

        //Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + "ms");
    }
Ejemplo n.º 4
0
    private void Update()
    {
        float startTime = Time.realtimeSinceStartup;

        if (useJobs1)
        {
            NativeArray <float3> positionArray = new NativeArray <float3>(cubeList.Count, Allocator.TempJob);
            NativeArray <float>  moveYArray    = new NativeArray <float>(cubeList.Count, Allocator.TempJob);

            for (int i = 0; i < cubeList.Count; i++)
            {
                positionArray[i] = cubeList[i].transform.position;
                moveYArray[i]    = cubeList[i].moveY;
            }

            ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob
            {
                deltaTime     = Time.deltaTime,
                positionArray = positionArray,
                moveYArray    = moveYArray
            };

            JobHandle jobHandle = reallyToughParallelJob.Schedule(cubeList.Count, 100);
            jobHandle.Complete();

            for (int i = 0; i < cubeList.Count; i++)
            {
                cubeList[i].transform.position = positionArray[i];
                cubeList[i].moveY = moveYArray[i];
            }
            positionArray.Dispose();
            moveYArray.Dispose();
        }
        else if (useJobs2)
        {
            TransformAccessArray transformAccessArray = new TransformAccessArray(cubeList.Count);
            NativeArray <float>  moveYArray           = new NativeArray <float>(cubeList.Count, Allocator.TempJob);

            for (int i = 0; i < cubeList.Count; i++)
            {
                transformAccessArray.Add(cubeList[i].transform);
                moveYArray[i] = cubeList[i].moveY;
            }

            ReallyToughParallelJobTransforms reallyToughParallelJobTransforms = new ReallyToughParallelJobTransforms
            {
                deltaTime  = Time.deltaTime,
                moveYArray = moveYArray
            };
            JobHandle jobHandle = reallyToughParallelJobTransforms.Schedule(transformAccessArray);
            jobHandle.Complete();

            for (int i = 0; i < cubeList.Count; i++)
            {
                cubeList[i].moveY = moveYArray[i];
            }
            transformAccessArray.Dispose();
            moveYArray.Dispose();
        }
        else
        {
            foreach (Cube cube in cubeList)
            {
                cube.transform.position += new Vector3(0, cube.moveY * Time.deltaTime);
                if (cube.transform.position.y > 5f)
                {
                    cube.moveY = -math.abs(cube.moveY);
                }
                if (cube.transform.position.y < -5f)
                {
                    cube.moveY = +math.abs(cube.moveY);
                }

                float value = 0f;
                for (int i = 0; i < 1000; i++)
                {
                    value = math.exp10(math.sqrt(value));
                }
            }
        }
        Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + "ms");
    }
    private void Update()
    {
        float startTime = Time.realtimeSinceStartup;

        if (useJobs)
        {
            // 1. 根据需要 计算的属性 的总量生成一个 线程保护的数组, 把属性填充进去
            //NativeArray<float3> positionArray = new NativeArray<float3>(zombieList.Count, Allocator.TempJob);
            NativeArray <float>  moveYArray           = new NativeArray <float>(zombieList.Count, Allocator.TempJob);
            TransformAccessArray transformAccessArray = new TransformAccessArray(zombieList.Count);

            for (int i = 0; i < zombieList.Count; i++)
            {
                //positionArray[i] = zombieList[i].transform.position;
                moveYArray[i] = zombieList[i].moveY;
                transformAccessArray.Add(zombieList[i].transform);
            }

            /*
             * ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob {
             *  deltaTime = Time.deltaTime,
             *  positionArray = positionArray,
             *  moveYArray = moveYArray,
             * };
             *
             * JobHandle jobHandle = reallyToughParallelJob.Schedule(zombieList.Count, 100);
             * jobHandle.Complete();
             */

            // 2. job system 并行计算数据复制进去,
            ReallyToughParallelJobTransforms reallyToughParallelJobTransforms = new ReallyToughParallelJobTransforms {
                deltaTime  = Time.deltaTime,
                moveYArray = moveYArray,
            };

            // 3. job system 并行计算执行, 这个应该就是会执行到 IJobParallelForTransform 接口中的 Execute 方法
            JobHandle jobHandle = reallyToughParallelJobTransforms.Schedule(transformAccessArray); // 传一个 transformAccess数组, 让并行计算的 job 中的 Execute 中可以访问但 transformAccess 属性
            jobHandle.Complete();
            // 4. 至此, 并行任务执行完

            for (int i = 0; i < zombieList.Count; i++)
            {
                //zombieList[i].transform.position = positionArray[i];
                zombieList[i].moveY = moveYArray[i];
            }

            //positionArray.Dispose();
            moveYArray.Dispose();
            transformAccessArray.Dispose();
        }
        else
        {
            foreach (Zombie zombie in zombieList)
            {
                zombie.transform.position += new Vector3(0, zombie.moveY * Time.deltaTime);
                if (zombie.transform.position.y > 5f)
                {
                    zombie.moveY = -math.abs(zombie.moveY);
                }
                if (zombie.transform.position.y < -5f)
                {
                    zombie.moveY = +math.abs(zombie.moveY);
                }
                float value = 0f;
                for (int i = 0; i < 1000; i++)
                {
                    value = math.exp10(math.sqrt(value));
                }
            }
        }

        /*
         * if (useJobs) {
         *  NativeList<JobHandle> jobHandleList = new NativeList<JobHandle>(Allocator.Temp);
         *  for (int i = 0; i < 10; i++) {
         *      JobHandle jobHandle = ReallyToughTaskJob();
         *      jobHandleList.Add(jobHandle);
         *  }
         *  JobHandle.CompleteAll(jobHandleList);
         *  jobHandleList.Dispose();
         * } else {
         *  for (int i = 0; i < 10; i++) {
         *      ReallyToughTask();
         *  }
         * }
         */

        //Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + "ms");
    }
Ejemplo n.º 6
0
    private void Update()
    {
        float startTime = Time.realtimeSinceStartup;

        if (useJobs)
        {
            //NativeArray<float3> positionArray = new NativeArray<float3>(soldierList.Count, Allocator.TempJob);
            NativeArray <float>  moveYArray           = new NativeArray <float>(soldierList.Count, Allocator.TempJob);
            TransformAccessArray transformAccessArray = new TransformAccessArray(soldierList.Count);

            for (int i = 0; i < soldierList.Count; i++)
            {
                //positionArray[i] = soldierList[i].transform.position;
                moveYArray[i] = soldierList[i].moveY;
                transformAccessArray.Add(soldierList[i].transform);
            }

            /*
             * ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob {
             *  deltaTime = Time.deltaTime,
             *  positionArray = positionArray,
             *  moveYArray = moveYArray
             * };
             *
             * JobHandle jobHandle = reallyToughParallelJob.Schedule(soldierList.Count, soldierNumber / 10);
             * jobHandle.Complete();
             */
            ReallyToughParallelJobTransforms reallyToughParallelJobTransforms = new ReallyToughParallelJobTransforms {
                deltaTime = Time.deltaTime,
                //positionArray = positionArray,
                moveYArray = moveYArray
            };

            JobHandle jobHandle = reallyToughParallelJobTransforms.Schedule(transformAccessArray);
            jobHandle.Complete();

            for (int i = 0; i < soldierList.Count; i++)
            {
                //soldierList[i].transform.position = positionArray[i];
                soldierList[i].moveY = moveYArray[i];
            }

            //positionArray.Dispose();
            moveYArray.Dispose();
            transformAccessArray.Dispose();
        }
        else
        {
            foreach (Soldier soldier in soldierList)
            {
                soldier.transform.position += new Vector3(0, soldier.moveY * Time.deltaTime);
                if (soldier.transform.position.y > 5.0f)
                {
                    soldier.moveY = -math.abs(soldier.moveY);
                }
                if (soldier.transform.position.y < -5.0f)
                {
                    soldier.moveY = +math.abs(soldier.moveY);
                }
                ReallyToughTask();
            }
        }

        /*
         * if (useJobs) {
         *
         *  NativeList<JobHandle> jobHandlesList = new NativeList<JobHandle>(Allocator.Temp);
         *  // with Job
         *  for (int i = 0; i < 10; i++) {
         *      JobHandle jobHandle = ReallyToughTaskJob();
         *      jobHandlesList.Add(jobHandle);
         *  }
         *  JobHandle.CompleteAll(jobHandlesList);
         *  jobHandlesList.Dispose(); // desaloue la NativeList
         *
         * } else {
         *  // without Job
         *  // Simulate 10 pathfinding
         *  for (int i = 0; i < 10; i++) {
         *      ReallyToughTask();
         *  }
         * }
         */
        Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000.0f) + "ms");
    }
Ejemplo n.º 7
0
    private void Update()
    {
        //float startTime = Time.realtimeSinceStartup;

        if (useJobs)
        {
            //var positionArray = new NativeArray<float3>(unitList.Count, Allocator.TempJob);
            var moveYArray           = new NativeArray <float>(unitList.Count, Allocator.TempJob);
            var transformAccessArray = new TransformAccessArray(unitList.Count);

            for (int i = 0; i < unitList.Count; i++)
            {
                //positionArray[i] = unitList[i].transform.position;
                moveYArray[i] = unitList[i].moveY;
                transformAccessArray.Add(unitList[i].transform);
            }


            /*
             * ReallyToughParallelJob rtpj = new ReallyToughParallelJob()
             * {
             *  deltaTime = Time.deltaTime,
             *  positionArray = positionArray,
             *  moveYArray = moveYArray
             * };
             *
             *
             * var parallelJobHandle = rtpj.Schedule(unitList.Count, 100);
             * parallelJobHandle.Complete();
             */

            ReallyToughParallelJobTransforms reallyToughPJT = new ReallyToughParallelJobTransforms()
            {
                deltaTime  = Time.deltaTime,
                moveYArray = moveYArray
            };

            var transformParallelJobHandle = reallyToughPJT.Schedule(transformAccessArray);
            transformParallelJobHandle.Complete();

            for (int i = 0; i < unitList.Count; i++)
            {
                //unitList[i].transform.position = positionArray[i];
                unitList[i].moveY = moveYArray[i];
            }

            //positionArray.Dispose();
            moveYArray.Dispose();
            transformAccessArray.Dispose();

            Debug.Log(useJobs);
        }
        else
        {
            foreach (var unit in unitList)
            {
                unit.transform.position += new Vector3(0, unit.moveY * Time.smoothDeltaTime);
                if (unit.transform.position.y > 5f)
                {
                    unit.moveY = -math.abs(unit.moveY);
                }

                if (this.unit.transform.position.y < -5f)
                {
                    unit.moveY = +math.abs(unit.moveY);
                }
            }

            Debug.Log(useJobs);
        }

        /*
         * if (useJobs)
         * {
         *  NativeList<JobHandle> jobHandleList = new NativeList<JobHandle>(Allocator.Temp);
         *  for (int i = 0; i < 10; i++)
         *  {
         *      JobHandle reallyToughTaskJobHandle = ReallyToughTaskJob();
         *      jobHandleList.Add(reallyToughTaskJobHandle);
         *  }
         *
         *  JobHandle.CompleteAll(jobHandleList); //pauses the main thread unitl job has been completed
         *  jobHandleList.Dispose();
         * }
         * else
         * {
         *  for (int i = 0; i < 10; i++)
         *  {
         *      ReallyToughTask();
         *  }
         * }
         */

        //Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + "ms");
    }