protected override void Initialize() { // Create a new SpriteBatch, which can be used to draw textures. Type[] types = new Type[] {typeof(Enemy),typeof(Expires),typeof(Health),typeof(SpatialForm),typeof(Transform),typeof(Velocity),typeof(Weapon)}; pool = new GamePool(100,types); pool.Initialize(); spriteBatch = new SpriteBatch(GraphicsDevice); world = new EntityWorld(); world.GetEntityManager().RemovedComponentEvent += new RemovedComponentHandler(RemovedComponent); world.SetPool(pool); font = Content.Load<SpriteFont>("Arial"); SystemManager systemManager = world.GetSystemManager(); renderSystem = systemManager.SetSystem(new RenderSystem(GraphicsDevice,spriteBatch,Content),ExecutionType.Draw); hudRenderSystem = systemManager.SetSystem(new HudRenderSystem(spriteBatch, font), ExecutionType.Draw); controlSystem = systemManager.SetSystem(new MovementSystem(spriteBatch), ExecutionType.Update,1); movementSystem = systemManager.SetSystem(new PlayerShipControlSystem(spriteBatch),ExecutionType.Update); enemyShooterSystem = systemManager.SetSystem(new EnemyShipMovementSystem(spriteBatch), ExecutionType.Update,1); enemyShipMovementSystem = systemManager.SetSystem(new EnemyShooterSystem(), ExecutionType.Update); collisionSystem = systemManager.SetSystem(new CollisionSystem(), ExecutionType.Update,1); healthBarRenderSystem = systemManager.SetSystem(new HealthBarRenderSystem(spriteBatch, font), ExecutionType.Draw); enemySpawnSystem = systemManager.SetSystem(new EnemySpawnSystem(500, spriteBatch), ExecutionType.Update); expirationSystem = systemManager.SetSystem(new ExpirationSystem(), ExecutionType.Update); systemManager.InitializeAll(); InitPlayerShip(); InitEnemyShips(); base.Initialize(); }
public void Refresh(Entity e) { SystemManager systemManager = world.GetSystemManager(); Bag <EntitySystem> systems = systemManager.GetSystems(); for (int i = 0, s = systems.Size(); s > i; i++) { systems.Get(i).Change(e); } }
static void multsystem() { healthBag.Add(new Health()); healthBag.Add(new Health()); componentPool.Add(typeof(Health), healthBag); Bag<Component> tempBag; EntityWorld world = new EntityWorld(); SystemManager systemManager = world.GetSystemManager(); world.GetEntityManager().RemovedComponentEvent += new RemovedComponentHandler(RemovedComponent); world.GetEntityManager().RemovedEntityEvent += new RemovedEntityHandler(RemovedEntity); EntitySystem hs = systemManager.SetSystem(new SingleHealthBarRenderSystem(),ExecutionType.Update); hs = systemManager.SetSystem(new DummySystem(),ExecutionType.Update); hs = systemManager.SetSystem(new DummySystem2(),ExecutionType.Update); hs = systemManager.SetSystem(new DummySystem3(),ExecutionType.Update); systemManager.InitializeAll(); List<Entity> l = new List<Entity>(); for (int i = 0; i < 100000; i++) { Entity et = world.CreateEntity(); et.AddComponent(new Health()); et.GetComponent<Health>().AddHealth(100); et.Refresh(); l.Add(et); } for (int i = 0; i < 100; i++) { DateTime dt = DateTime.Now; world.LoopStart(); systemManager.UpdateAsynchronous(ExecutionType.Update); //systemManager.UpdateSynchronous(ExecutionType.Update); Console.WriteLine((DateTime.Now - dt).TotalMilliseconds); } //int df = 0; //foreach (var item in l) //{ // if (item.GetComponent<Health>().GetHealth() == 90) // { // df++; // } // else // { // Console.WriteLine("errro"); // } //} Console.ReadLine(); }