protected override void Draw(ref PlayerDrawSet drawInfo) { Player player = drawInfo.drawPlayer; ModItem item = player.HeldItem.ModItem; Texture2D texture = TextureAssets.Item[item.Type].Value; Vector2 compositeOffset_FrontArm = new Vector2(-5 * (!drawInfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally) ? 1 : -1), 0f); Vector2 vector = new Vector2((int)(drawInfo.Position.X - Main.screenPosition.X - drawInfo.drawPlayer.bodyFrame.Width * 0.5f + drawInfo.drawPlayer.width * 0.5f), (int)(drawInfo.Position.Y - Main.screenPosition.Y + drawInfo.drawPlayer.height - drawInfo.drawPlayer.bodyFrame.Height + 4f)) + drawInfo.drawPlayer.bodyPosition + new Vector2(drawInfo.drawPlayer.bodyFrame.Width * 0.5f, drawInfo.drawPlayer.bodyFrame.Height * 0.5f); Vector2 value = Main.OffsetsPlayerHeadgear[drawInfo.drawPlayer.bodyFrame.Y / drawInfo.drawPlayer.bodyFrame.Height]; value.Y -= 2f; vector += value * -drawInfo.playerEffect.HasFlag(SpriteEffects.FlipVertically).ToDirectionInt(); vector += compositeOffset_FrontArm; if (drawInfo.compFrontArmFrame.Width != 0 && drawInfo.compFrontArmFrame.X / drawInfo.compFrontArmFrame.Width >= 7) { vector += new Vector2(!drawInfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally) ? 1 : -1, !drawInfo.playerEffect.HasFlag(SpriteEffects.FlipVertically) ? 1 : -1); } float targetItemRotation = MathUtility.PiOver2 - MathUtility.AngleBetween(Main.MouseWorld - player.Center, -Vector2.UnitY); drawInfo.compositeFrontArmRotation = targetItemRotation; if (player.direction == 1) { drawInfo.compositeFrontArmRotation -= MathUtility.PI; } drawInfo.DrawDataCache.Add(new DrawData( texture, vector, null, Color.White, targetItemRotation, ((IRotatableItem)item).GetOrigin(player), 1f, player.direction == 1 ? SpriteEffects.FlipVertically | SpriteEffects.FlipHorizontally : SpriteEffects.FlipHorizontally, 0 )); }