public void AddEntity(T entity) { /* * if (entities.Count >= MAX_OBJECTS) * { * SplitToRects(); * } */ if (level >= MAX_LEVEL) { entities.Add(entity); return; } if (Contains(pNW, entity)) { pNW.AddEntity(entity); //return; } if (Contains(pNE, entity)) { pNE.AddEntity(entity); //return; } if (Contains(pSW, entity)) { pSW.AddEntity(entity); //return; } if (Contains(pSE, entity)) { pSE.AddEntity(entity); //return; } /* * if (Contains(this, entity)) //contains * { * //logger << "Entity added to tree" << ""; * entities.Add(entity); * //m_Text.setString( StringOf<uint>(m_Entities.size()) ); * } */ }
public void Update(float step_time) { spatialGrid.ClearAll(); // checkPickupsCollisionEachOther(step_time); this.checkBulletVsEntityCollisions(step_time); treeMonsters.Clear(); //treeBullets.Clear(); //update bullets int bulletCount = bullets.Count; for (int i = 0; i < bulletCount; i++) { if (bullets[i].isActive()) { bullets[i].Update(step_time); //treeBullets.AddEntity(bullets[i]); } else { bullets.RemoveAt(i); i--; bulletCount = bullets.Count; } } //update monsters int monsterCount = monsters.Count; for (int i = 0; i < monsterCount; i++) { if (monsters[i].isActive()) { monsters[i].Update(step_time); treeMonsters.AddEntity(monsters[i]); } else { monsters.RemoveAt(i); i--; monsterCount = monsters.Count; } } // update pickups List <int> keysToRemove = new List <int>(); foreach (var item in pickups) { cPickupAble pickup = item.Value; if (pickup.isActive()) { pickup.Update(step_time); } else { //pickups.Remove(item.Key); keysToRemove.Add(item.Key); } } foreach (int key in keysToRemove) { pickups.Remove(key); } this.checkPlayerCanUseOrPickupOrInteract(); /* * int pickupCount = pickups.Count; * for (int i = 0; i < pickupCount; i++) * { * if (pickups[i].isActive()) * { * pickups[i].Update(step_time); * } * else * { * pickups.RemoveAt(i); * i--; * pickupCount = pickups.Count; * } * } */ }