public static void printtree <T>(EntityManager2 em, ushort index, int depth) where T : struct { { Console.Write(new string('.', depth) + index); if (em.has <T>(index)) { Console.Write(" - " + em.get <T>(index).ToString()); } Console.WriteLine(); var next = em._entities[index].firstchild; while (next != 0) { printtree <T>(em, next, depth + 1); next = em._entities[next].next; } } }
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(); }