Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
 public AEntity GetEntityFromEntity2D(AEntity2D entity2D)
 {
     return(this.object2DToObjects[entity2D]);
 }