Ejemplo n.º 1
0
        public static void CgPtPCollide( CollGrid cg )
        {
            if ( cg == null )
                return;

            Particle p1, p2;
            int l = cg.PL.Count;

            for (int i = 0; i < l; i++)
            {
                p1 = (Particle)cg.PL[i];
                //Parallel.For(i, l, index =>
                for (int j = i; j < l; j++)
                {
                    p2 = (Particle)cg.PL[j];
                    PtoPCollide(p1, p2);
                }//);
            }

            if (cg.CL[0] != null){
                foreach (CollGrid clg in cg.CL)
                    CgPtPCollide(clg);
                //lock(cg.CL){
                //Parallel.ForEach(cg.CL, CgPtPCollide);
                //}
            }
        }
Ejemplo n.º 2
0
        public void TestCollGrid()
        {
            var collGrid = new CollGrid();

            collGrid.boundsMin.Set(1, 2, 3);
            collGrid.boundsMax.Set(4, 5, 6);
            collGrid.unknown1 = 7;
            collGrid.gridX    = 2;
            collGrid.gridY    = 3;
            for (var i = 0; i < 2 * 3; ++i)
            {
                collGrid.unknown2.Add(i);
            }

            var collGroup = new CollGroup();

            collGroup.unknown1 = new byte[] { 1, 2, 3, 4 };

            collGrid.groups.Add(collGroup);
            collGrid.groups.Add(collGroup);

            TestGcnSerializableExisting(collGrid);
        }
Ejemplo n.º 3
0
        public static void CgPtPCollide( CollGrid cg )
        {
            if ( cg == null )
                return;
             //  lock (cg.PL.SyncRoot)
             //  {

               Particle p1, p2;
                   int l = cg.PL.Count;

                  /* Parallel.For(0, l, i =>
                   {
                       //						lock(cg.PL)
                       //{
                       p1 = (Particle)cg.PL[i];

                     //  lock(cg.PL.SyncRoot)
                     //  {
                       Parallel.For(i, l, j =>
                       {

                           p2 = (Particle)cg.PL[j];

                           PtoPCollide(p1, p2);

                       });
                          /* for (int j = i; j < l; j++)
                           {
                               p2 = (Particle)cg.PL[j];

                               PtoPCollide(p1, p2);

                           }
                       //}
                   });*/
               //}*/
            for (int i = 0; i < l; i++)
            {
                p1 = (Particle)cg.PL[i];
                //p1.force.y += 0.2f*p1.mass;
                //p1.Upd();

                for (int j = i; j < l; j++)
                {
                    p2 = (Particle)cg.PL[j];

                    PtoPCollide(p1, p2);

                }

            }

            if (cg.CL[0] != null){
                foreach (CollGrid clg in cg.CL)
                    CgPtPCollide(clg);
                //lock(cg.CL){
                //Parallel.ForEach(cg.CL, CgPtPCollide);
                //}
            }

            //}
        }