public void Draw(SpriteBatch spriteBatch, bool editing, float itemDepth = -1) { if (!IsActive || picker == null || !CanBeAttached(picker) || !picker.IsKeyDown(InputType.Aim) || picker != Character.Controlled) { Drawable = false; return; } Vector2 gridPos = picker.Position; Vector2 roundedGridPos = new Vector2( MathUtils.RoundTowardsClosest(picker.Position.X, Submarine.GridSize.X), MathUtils.RoundTowardsClosest(picker.Position.Y, Submarine.GridSize.Y)); Vector2 attachPos = GetAttachPosition(picker); if (item.Submarine == null) { Structure attachTarget = Structure.GetAttachTarget(item.WorldPosition); if (attachTarget != null) { if (attachTarget.Submarine != null) { //set to submarine-relative position gridPos += attachTarget.Submarine.Position; roundedGridPos += attachTarget.Submarine.Position; attachPos += attachTarget.Submarine.Position; } } } else { gridPos += item.Submarine.Position; roundedGridPos += item.Submarine.Position; attachPos += item.Submarine.Position; } Submarine.DrawGrid(spriteBatch, 14, gridPos, roundedGridPos, alpha: 0.7f); item.Sprite.Draw( spriteBatch, new Vector2(attachPos.X, -attachPos.Y), item.SpriteColor * 0.5f, 0.0f, item.Scale, SpriteEffects.None, 0.0f); GUI.DrawRectangle(spriteBatch, new Vector2(attachPos.X - 2, -attachPos.Y - 2), Vector2.One * 5, GUI.Style.Red, thickness: 3); }