コード例 #1
0
        public static void Main()
        {
            speedtest();
            speedtest();
            speedtest();
            speedtest();
            speedtest();

            var em = new EntityManager2();

            em.init();

            var jp = new PrefabFactory();

            jp.process(em, JsonReader.ParseObject("{\"position\": { \"translation\" : {\"x\": 2, \"y\":3}}}"));
            jp.process(em, JsonReader.ParseObject("{\"position\": { \"translation\" : {\"x\": 4, \"y\":1}}}"));
            jp.process(em, JsonReader.ParseObject("{\"position\": { \"translation\" : {\"x\": 1, \"y\":4}}}"));
            jp.process(em, JsonReader.ParseObject("{\"position\": { \"translation\" : {\"x\": 8, \"y\":9}}}"));

            printtree <Position>(em, 0, 0);
            Console.Read();
            return;

            var id     = em.create();
            var child1 = em.create(id);
            var child2 = em.create(id);

            em.destroy(id);

            //em.destroy(id);
            id = em.create();
            //            em.destroy(1);
            id = em.create();
            id = em.create(id);
            id = em.create(2);
            id = em.create(2);
            id = em.create(2);
            id = em.create();
            printtree(em, 0);
            em.destroy(1);
            id = em.create();

            em.set(id, new Position()
            {
                translation = new Vector2(16f, 16f)
            });
            em.set(id, new Position()
            {
                translation = new Vector2(16f, 16f)
            });
            Console.WriteLine("hasData: {0}", em.has <Position>(id));
            Console.WriteLine("getData: {0}", em.get <Position>(id));
            //Console.WriteLine("clearData: {0}", em.deleteData(id));
            Console.WriteLine("hasData: {0}", em.has <Position>(id));
            Console.WriteLine("getData: {0}", em.get <Position>(id));
            //Console.WriteLine("clearData: {0}", em.deleteData(id));

            id = em.create(id);
            em.set(id, new Position()
            {
                translation = new Vector2(16f, 16f)
            });
            Console.WriteLine("hasData: {0}", em.has <Position>(id));
            Console.WriteLine("getData: {0}", em.get <Position>(id));
            //Console.WriteLine("clearData: {0}", em.deleteData(id));
            Console.WriteLine("hasData: {0}", em.has <Position>(id));
            Console.WriteLine("getData: {0}", em.get <Position>(id));
            //Console.WriteLine("clearData: {0}", em.deleteData(id));
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            em.destroy(1);
            //run(em, 0, Vector2.Zero, 0);
            id = em.create();
            em.set(id, new Position()
            {
                translation = new Vector2(16f, 16f)
            });
            id = em.create();
            em.set(id, new Position()
            {
                translation = new Vector2(16f, 16f)
            });
            em.destroy(1);
            id = em.create();
            em.set(id, new Position()
            {
                translation = new Vector2(16f, 16f)
            });
            em.destroy(1);
            em.destroy(2);

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();

            var r = new Random();

            //            var testing = new List<ushort>(new ushort[4]);
            for (var k = 0; k < 16; k++)
            {
                for (var i = 0; i < 256; i++)
                {
                    var add    = r.Next(0, em.totalEntities - 1) + 1;
                    var parent = r.Next(0, 5) == 0 ? 0 : get(em, (ushort)0, ref add);

                    var _id = (ushort)0;
                    //if (parent == 0)
                    //    _id = em.create();
                    //else
                    _id = em.create((ushort)parent);


                    if (r.Next(2) == 0)
                    {
                        em.set(_id, new Position()
                        {
                            translation = new Vector2(r.NextDouble() * 16f, r.NextDouble() * 16f)
                        });
                    }
                }

                var loops = r.Next(4, 16);
                for (var d = 0; d < loops; d++)
                {
                    var delete  = r.Next(1, em.totalEntities / 2);
                    var _delete = delete;
                    var index   = get(em, (ushort)0, ref _delete);

                    if (index != 0)
                    {
                        em.destroy(index);
                    }
                    else
                    {
                        // continue;
                    }
                    //testing.RemoveAt(delete);
                }
            }
            var total = 0;
            var sw    = new Stopwatch();

            sw.Start();
            total = run(ref em._entities);
            sw.Stop();
            Console.WriteLine("{0} - {1} - {2}", em.totalEntities, sw.Elapsed, total);
            sw.Reset();
            sw.Start();
            total = run(ref em._entities);
            sw.Stop();
            Console.WriteLine("{0} - {1} - {2}", em.totalEntities, sw.Elapsed, total);
            sw.Reset();
            sw.Start();
            total = run(ref em._entities);
            sw.Stop();
            Console.WriteLine("{0} - {1} - {2}", em.totalEntities, sw.Elapsed, total);
            sw.Reset();
            sw.Start();
            total = run(ref em._entities);
            sw.Stop();
            Console.WriteLine("{0} - {1} - {2}", em.totalEntities, sw.Elapsed, total);
            sw.Reset();

            //printtree(em, 0);
            Console.Read();
        }