protected virtual AEntity2D AddEntity(AEntity obj) { if (this.world2D.TryGetTarget(out World2D world2D)) { AEntity2D object2D = World2D.MappingObjectModelView[obj.GetType()].CreateObject2D(world2D, this, obj) as AEntity2D; this.object2DToObjects.Add(object2D, obj); this.objectToObject2Ds.Add(obj, object2D); return(object2D); } return(null); }
protected virtual void OnEntityRemoved(AEntity obj) { AEntity2D entity2DToRemove = this.objectToObject2Ds[obj]; if (this.FocusedGraphicEntity2D == entity2DToRemove) { this.FocusedGraphicEntity2D = null; } this.object2DToObjects.Remove(entity2DToRemove); this.objectToObject2Ds.Remove(obj); entity2DToRemove.Dispose(); }
protected virtual void UpdateFocusedEntity2Ds() { Vector2i mousePosition = this.MousePosition; AEntity2D newFocusedEntity2D = null; IEnumerable <AEntity2D> focusableEntities2D = this.GetEntities2DFocusable(); int bestPriority = int.MinValue; foreach (AEntity2D entity2D in focusableEntities2D) { IHitRect hitRect = entity2D as IHitRect; if (hitRect != null && hitRect.IsFocusable(this) && hitRect.IsPointHit(this, mousePosition)) { if (newFocusedEntity2D != null) { if (bestPriority < entity2D.Priority) { newFocusedEntity2D = entity2D; bestPriority = entity2D.Priority; } else if (bestPriority == entity2D.Priority && Math.Abs(mousePosition.X - entity2D.Position.X) + Math.Abs(mousePosition.Y - entity2D.Position.Y) < Math.Abs(mousePosition.X - newFocusedEntity2D.Position.X) + Math.Abs(mousePosition.Y - newFocusedEntity2D.Position.Y)) { newFocusedEntity2D = entity2D; } } else { newFocusedEntity2D = entity2D; bestPriority = entity2D.Priority; } } } this.FocusedGraphicEntity2D = newFocusedEntity2D as IHitRect; }
public AEntity GetEntityFromEntity2D(AEntity2D entity2D) { return(this.object2DToObjects[entity2D]); }