public override void Update(GameTime gameTime) { if (MapManager.ActiveMap != null) { MapManager.ActiveMap.Update(gameTime); } var gameobjects = WorldObjects.AllObjects(); foreach (var gameobject in gameobjects) { gameobject.Update(gameTime); } }
/// <summary> /// Hakee lähimmät gameobjectit /// </summary> /// <param name="source">Kenestä katsottuna lähimmät.</param> /// <param name="radius">Säde kuinka laajalta alueelta etsitään.</param> /// <returns></returns> public List <GameObject> GetNearGameObjects(GameObject source, Padding radius) { List <GameObject> gobs = new List <GameObject>(); foreach (GameObjectManager gameobjectManager in MapManager.ActiveMap.ObjectManagers.AllManagers()) { gobs.AddRange(gameobjectManager.AllObjects()); } gobs.AddRange(WorldObjects.AllObjects()); Rectangle r = new Rectangle((int)(source.Position.X - radius.Left), (int)(source.Position.Y - radius.Top), source.Size.Width + radius.Right * 2, source.Size.Height + radius.Bottom * 2); //Rectangle r = new Rectangle((int)(source.Position.X - radius.Left), (int)(source.Position.Y - radius.Top), radius.Left + radius.Right, radius.Top + radius.Bottom * 2); var objects = gobs.Where( o => !ReferenceEquals(o, source) && r.Intersects(new Rectangle((int)o.Position.X, (int)o.Position.Y, o.Size.Width, o.Size.Height))).ToList(); return(objects); }