public override void Render(Vector2D topLeft, Vector2D bottomRight) { if (!visible) { return; } if (Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.X < topLeft.X || Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.X > bottomRight.X || Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.Y < topLeft.Y || Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.Y > bottomRight.Y) { return; } base.Render(topLeft, bottomRight); if (_speechBubble != null) { _speechBubble.Draw(Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position, ClientWindowData.Singleton.ScreenOrigin, currentBaseSprite); } }
public virtual void Render(Vector2D topLeft, Vector2D bottomRight) { //Render slaves beneath IEnumerable <IRenderableComponent> renderablesBeneath = from IRenderableComponent c in slaves //FIXTHIS orderby c.DrawDepth ascending where c.DrawDepth < DrawDepth select c; foreach (IRenderableComponent component in renderablesBeneath.ToList()) { component.Render(topLeft, bottomRight); } //Render this sprite if (!visible) { return; } if (sprite == null) { return; } Vector2D renderPos = ClientWindowData.WorldToScreen( Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position); SetSpriteCenter(renderPos); if (Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.X + sprite.AABB.Right < topLeft.X || Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.X > bottomRight.X || Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.Y + sprite.AABB.Bottom < topLeft.Y || Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.Y > bottomRight.Y) { return; } sprite.HorizontalFlip = flip; sprite.Draw(); sprite.HorizontalFlip = false; //Render slaves above IEnumerable <IRenderableComponent> renderablesAbove = from IRenderableComponent c in slaves //FIXTHIS orderby c.DrawDepth ascending where c.DrawDepth >= DrawDepth select c; foreach (IRenderableComponent component in renderablesAbove.ToList()) { component.Render(topLeft, bottomRight); } //Draw AABB var aabb = AABB; //Gorgon.CurrentRenderTarget.Rectangle(renderPos.X - aabb.Width/2, renderPos.Y - aabb.Height / 2, aabb.Width, aabb.Height, Color.Lime); if (_speechBubble != null) { _speechBubble.Draw(Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position, ClientWindowData.Singleton.ScreenOrigin, aabb); } }