public virtual void InitializeLayer(IObject2DFactory factory) { this.defaultViewSize = new Vector2f(-1, -1); this.mustUpdateMousePosition = false; //this.focusedEntity2Ds.Clear(); this.focusedGraphicEntity2D = null; this.selectedGraphicEntity2D = null; foreach (AEntity entity in this.parentLayer.Entities) { this.AddEntity(entity); } }
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; }
protected bool SetSelectedGraphicEntity2D(IHitRect selectedEntity, ControlEventType eventType, string details) { bool mustForwardEvent = true; if (this.selectedGraphicEntity2D != selectedEntity) { if (this.selectedGraphicEntity2D != null) { mustForwardEvent &= this.selectedGraphicEntity2D.OnMouseReleased(this, eventType); } this.selectedGraphicEntity2D = selectedEntity; if (this.selectedGraphicEntity2D != null) { mustForwardEvent &= this.selectedGraphicEntity2D.OnMousePressed(this, eventType); } } return(mustForwardEvent); }