protected override void Draw(ref PlayerDrawSet drawInfo) { var drawDataInfo = GetData(drawInfo); var drawPlayer = drawInfo.drawPlayer; var effects = SpriteEffects.None; if (drawPlayer.direction == -1) { effects |= SpriteEffects.FlipHorizontally; } if (drawPlayer.gravDir == -1) { effects |= SpriteEffects.FlipVertically; } var data = new DrawData( drawDataInfo.Texture, drawDataInfo.Position, drawDataInfo.Frame, Color.White * Main.essScale, drawDataInfo.Rotation, drawDataInfo.Origin, 1f, effects, 0 ); drawInfo.DrawDataCache.Add(data); }
public override void HideDrawLayers(PlayerDrawSet drawInfo) { base.HideDrawLayers(drawInfo); if (WolfDashing) //dont draw player during dash { drawInfo.DrawDataCache.Clear(); } //HashSet<int> layersToRemove = new HashSet<int>(); //for (int i = 0; i < drawInfo.DrawDataCache.Count; i++) //{ // if (JojoTheGamer && drawInfo.DrawDataCache[i] == PlayerLayer.Skin) // { // layersToRemove.Add(i); // } //} //foreach (int i in layersToRemove) //{ // drawInfo.DrawDataCache.RemoveAt(i); //} //alternative for jojo changes? idk //Terraria.DataStructures.PlayerDrawLayers.Skin.Hide(); }
protected override DrawDataInfo GetData(PlayerDrawSet info) { glowTextureMale = glowTextureMale ?? ModContent.GetTexture(ModularTools.TexturePath + "Armor/ModularArmor_Glow_Male"); glowTextureFemale = glowTextureFemale ?? ModContent.GetTexture(ModularTools.TexturePath + "Armor/ModularArmor_Glow_Female"); return(GetBodyDrawDataInfo(info, info.drawPlayer.Male ? glowTextureMale.Value : glowTextureFemale.Value)); }
protected override void Draw(ref PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; ClickerPlayer modPlayer = drawPlayer.GetModPlayer <ClickerPlayer>(); float alpha = modPlayer.ClickerRadiusColorMultiplier; int drawX = (int)(drawPlayer.Center.X - Main.screenPosition.X); int drawY = (int)(drawPlayer.Center.Y + drawPlayer.gfxOffY - Main.screenPosition.Y); Vector2 center = new Vector2(drawX, drawY); Vector2 drawPos = center + modPlayer.CalculateMotherboardPosition(modPlayer.ClickerRadiusRealDraw).Floor(); Texture2D texture = backTexture.Value; DrawData drawData = new DrawData(texture, drawPos, null, Color.White * alpha, 0f, texture.Size() / 2, 1f, SpriteEffects.None, 0) { ignorePlayerRotation = true }; drawInfo.DrawDataCache.Add(drawData); texture = glowTexture.Value; Rectangle frame = texture.Frame(1, GlowFrameCount, frameY: modPlayer.setMotherboardFrame); drawData = new DrawData(texture, drawPos, frame, new Color(255, 255, 255, 100) * modPlayer.setMotherboardAlpha * alpha, 0f, new Vector2(texture.Width / 2, frame.Height / 2), 1f, SpriteEffects.None, 0) { ignorePlayerRotation = true }; drawInfo.DrawDataCache.Add(drawData); }
//public override void ModifyDrawHeadLayers(List<PlayerHeadLayer> layers) { // // TODO //} public override void HideDrawLayers(PlayerDrawSet drawInfo) { var layers = PlayerDrawLayerHooks.Layers; //var layers = PlayerDrawLayerHooks.GetDrawLayers(drawInfo); PlayerLayerTool.playerLayerUI.InformLayers(layers.ToList()); if (PlayerLayerTool.playerLayerUI.updateNeeded) { return; } foreach (PlayerDrawLayer layer in layers) { if (PlayerLayerTool.playerLayerUI.playerLayers.Contains(layer)) { var layerIndex = PlayerLayerTool.playerLayerUI.playerLayers.IndexOf(layer); var selected = PlayerLayerTool.playerLayerUI.playerLayersCheckboxes[layerIndex].Selected; if (!selected) { layer.Hide(); } } } }
protected override void Draw(ref PlayerDrawSet drawInfo) { //if (drawInfo.drawPlayer.mount.Active) return; //Main.NewText(Convert.ToString(drawInfo.drawPlayer.mount.PlayerHeadOffset),Color.Yellow); if (drawInfo.drawPlayer.GetModPlayer <MPlayer>().fireHead) { Player drawPlayer = drawInfo.drawPlayer; HeadArmorTexture = ModContent.Request <Texture2D>("KirillandRandom/Items/Armor/FiresoulRobeHood_Head_Glow"); //var position = drawInfo.headVect + drawInfo.Position + new Vector2(-10f, -10f) - Main.screenPosition+ drawPlayer.headPosition; var position = drawInfo.headVect + drawInfo.Position - Main.screenPosition + new Vector2(drawPlayer.width / 2 - drawPlayer.bodyFrame.Width / 2, drawPlayer.height - drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition; position = new Vector2((int)position.X, (int)position.Y); DrawData drdt = new DrawData( HeadArmorTexture.Value, //The texture to render. position, //Position to render at. drawInfo.drawPlayer.bodyFrame, //Source rectangle. //for some reason headFrame doesn't work correctly? Investigate. drawInfo.colorArmorHead == Color.Transparent ? Color.Transparent : new Color(100, 100, 100, 100), //Color. 0f, //Rotation. drawInfo.headVect, //exampleItemTexture.Size() * 0.5f, //Origin. Uses the texture's center. 1f, //Scale. drawInfo.playerEffect, //SpriteEffects. 0 //'Layer'. This is always 0 in Terraria. ); drdt.shader = drawInfo.cHead; drawInfo.DrawDataCache.Add(drdt); } }
protected override void Draw(ref PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; if (drawInfo.drawPlayer.GetModPlayer <MPlayer>().fireBody) { BodyArmorTexture = ModContent.Request <Texture2D>("KirillandRandom/Items/Armor/FiresoulRobe_Body_Glow"); var position = drawInfo.Position + new Vector2(drawPlayer.width / 2 - drawPlayer.bodyFrame.Width / 2, drawPlayer.height - drawPlayer.bodyFrame.Height + 4f) - Main.screenPosition + drawPlayer.bodyPosition; position = new Vector2((int)position.X, (int)position.Y); DrawData drdt = new DrawData( BodyArmorTexture.Value, //The texture to render. position, //Position to render at. drawInfo.drawPlayer.bodyFrame, //Source rectangle. drawInfo.colorArmorBody == Color.Transparent ? Color.Transparent : new Color(100, 100, 100, 100), //Color. 0f, //Rotation. Vector2.Zero, //exampleItemTexture.Size() * 0.5f, //Origin. Uses the texture's center. 1f, //Scale. drawInfo.playerEffect, //SpriteEffects. 0 //'Layer'. This is always 0 in Terraria. ); drdt.shader = drawInfo.cBody; drawInfo.DrawDataCache.Add(drdt); } }
public override void DrawEffects(PlayerDrawSet drawInfo, ref float r, ref float g, ref float b, ref float a, ref bool fullBright) { if (Player.name == "KIRILLAND-Modder" && !Player.dead) { if (Main.rand.NextBool(4) && drawInfo.shadow == 0f) { int TestDust = Dust.NewDust(drawInfo.Position - new Vector2(2f, 2f), Player.width + 4, Player.height + 4, 63, Player.velocity.X * 0.4f, Player.velocity.Y * 0.4f, 100, Color.White, 0.8f); Main.dust[TestDust].noGravity = true; Main.dust[TestDust].noLight = true; } } if (fireamplification == 0.24f && !Player.dead) { if (Main.rand.NextBool(10) && drawInfo.shadow == 0f) { int TestDust = Dust.NewDust(drawInfo.Position - new Vector2(2f, 2f), Player.width + 4, Player.height + 4, 6, Player.velocity.X * 0.4f, Player.velocity.Y * 0.4f, 100, Color.White, 0.5f); Main.dust[TestDust].shader = GameShaders.Armor.GetSecondaryShader(drawInfo.cBody, drawInfo.drawPlayer); Main.dust[TestDust].noGravity = true; Main.dust[TestDust].noLight = true; } } base.DrawEffects(drawInfo, ref r, ref g, ref b, ref a, ref fullBright); }
public override void DrawEffects(PlayerDrawSet drawInfo, ref float r, ref float g, ref float b, ref float a, ref bool fullBright) { if (LightingEssentials.Config.PlayerLight) { Lighting.AddLight(drawInfo.Position, new Vector3(0.2f, 0.2f, 0.2f)); } }
public override bool GetDefaultVisibility(PlayerDrawSet drawInfo) => drawInfo.drawPlayer.whoAmI == Main.myPlayer && drawInfo.drawPlayer.active && !drawInfo.drawPlayer.dead && !drawInfo.drawPlayer.ghost && drawInfo.shadow == 0 && drawInfo.drawPlayer.GetModPlayer <FargoSoulsPlayer>().SnowVisual;
protected override void Draw(ref PlayerDrawSet drawInfo) { if (drawInfo.shadow != 0f) { return; } Player drawPlayer = drawInfo.drawPlayer; Mod mod = ModLoader.GetMod("FargowiltasSouls"); FargoSoulsPlayer modPlayer = drawPlayer.GetModPlayer <FargoSoulsPlayer>(); if (modPlayer.SnowVisual) { if (modPlayer.frameCounter % 5 == 0) { if (++modPlayer.frameSnow > 20) { modPlayer.frameSnow = 1; } } Texture2D texture = FargowiltasSouls.Instance.Assets.Request <Texture2D>("Projectiles/Souls/SnowBlizzard", ReLogic.Content.AssetRequestMode.ImmediateLoad).Value; int frameSize = texture.Height / 20; int drawX = (int)(drawPlayer.MountedCenter.X - Main.screenPosition.X); int drawY = (int)(drawPlayer.MountedCenter.Y - Main.screenPosition.Y); DrawData data = new DrawData(texture, new Vector2(drawX, drawY), new Rectangle(0, frameSize * modPlayer.frameSnow, texture.Width, frameSize), Lighting.GetColor((int)((drawInfo.Position.X + drawPlayer.width / 2f) / 16f), (int)((drawInfo.Position.Y + drawPlayer.height / 2f) / 16f)), drawPlayer.gravDir < 0 ? MathHelper.Pi : 0f, new Vector2(texture.Width / 2f, frameSize / 2f), 1f, SpriteEffects.None, 0); drawInfo.DrawDataCache.Add(data); } //GameShaders.Armor.Apply(GameShaders.Armor.GetShaderIdFromItemId(drawPlayer.dye[1].type, drawPlayer, data); }
protected override void Draw(ref PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; if (!WingsLayerData.TryGetValue(drawPlayer.wings, out DrawLayerData data)) { return; } Color color = drawPlayer.GetImmuneAlphaPure(data.Color(drawInfo) * drawInfo.stealth * (1f - drawInfo.shadow), drawInfo.shadow); //Wing glowmasks need the additional stealth/shadow multiplier for some reason Texture2D texture = data.Texture.Value; Vector2 directions = drawPlayer.Directions; Vector2 offset = new Vector2(0f, 7f); Vector2 position = drawInfo.Position - Main.screenPosition + new Vector2(drawPlayer.width / 2, drawPlayer.height - drawPlayer.bodyFrame.Height / 2) + offset; int num11 = 0; int num12 = 0; int numFrames = 4; position += new Vector2(num12 - 9, num11 + 2) * directions; position = position.Floor(); Rectangle frame = new Rectangle(0, texture.Height / numFrames * drawPlayer.wingFrame, texture.Width, texture.Height / numFrames); DrawData drawData = new DrawData(texture, position.Floor(), frame, color, drawPlayer.bodyRotation, new Vector2(texture.Width / 2, texture.Height / numFrames / 2), 1f, drawInfo.playerEffect, 0) { shader = drawInfo.cWings }; drawInfo.DrawDataCache.Add(drawData); }
protected override void Draw(ref PlayerDrawSet drawInfo) { if (drawInfo.shadow != 0f) { return; } Player drawPlayer = drawInfo.drawPlayer; FargoSoulsPlayer modPlayer = drawPlayer.GetModPlayer <FargoSoulsPlayer>(); if (modPlayer.MutantSetBonusItem != null) { if (modPlayer.frameCounter % 4 == 0) { if (++modPlayer.frameMutantAura >= 19) { modPlayer.frameMutantAura = 0; } } Texture2D texture = FargowiltasSouls.Instance.Assets.Request <Texture2D>("NPCs/MutantBoss/MutantAura", ReLogic.Content.AssetRequestMode.ImmediateLoad).Value; int frameSize = texture.Height / 19; int drawX = (int)(drawPlayer.MountedCenter.X - Main.screenPosition.X); int drawY = (int)(drawPlayer.MountedCenter.Y - Main.screenPosition.Y - 16 * drawPlayer.gravDir); DrawData data = new DrawData(texture, new Vector2(drawX, drawY), new Rectangle(0, frameSize * modPlayer.frameMutantAura, texture.Width, frameSize), Color.White, drawPlayer.gravDir < 0 ? MathHelper.Pi : 0, new Vector2(texture.Width / 2f, frameSize / 2f), 1f, drawPlayer.direction < 0 ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0); drawInfo.DrawDataCache.Add(data); } }
// If you want to make a layer which isn't a child of another layer, use `new Between(Layer1, Layer2)` to specify the position. // If you want to make a 'mobile' layer which can render in different locations depending on the drawInfo, use a `Multiple` position. protected override void Draw(ref PlayerDrawSet drawInfo) { //The following code draws ExampleItem's texture behind the player's head. if (exampleItemTexture == null) { exampleItemTexture = ModContent.GetTexture("ExampleMod/Content/Items/ExampleItem"); } var position = drawInfo.Center + new Vector2(0f, -20f) - Main.screenPosition; position = new Vector2((int)position.X, (int)position.Y); //You'll sometimes want to do this, to avoid quivering. //Queues a drawing of a sprite. Do not use SpriteBatch in drawlayers! drawInfo.DrawDataCache.Add(new DrawData( exampleItemTexture.Value, //The texture to render. position, //Position to render at. null, //Source rectangle. Color.White, //Color. 0f, //Rotation. exampleItemTexture.Size() * 0.5f, //Origin. Uses the texture's center. 1f, //Scale. SpriteEffects.None, //SpriteEffects. 0 //'Layer'. This is always 0 in Terraria. )); }
public override bool GetDefaultVisibility(PlayerDrawSet drawInfo) => drawInfo.drawPlayer.whoAmI == Main.myPlayer && drawInfo.drawPlayer.active && !drawInfo.drawPlayer.dead && !drawInfo.drawPlayer.ghost && drawInfo.shadow == 0 && drawInfo.drawPlayer.GetModPlayer <FargoSoulsPlayer>().PrecisionSealNoDashNoJump && drawInfo.drawPlayer.GetModPlayer <FargoSoulsPlayer>().PrecisionSealHurtbox;
public override bool GetDefaultVisiblity(PlayerDrawSet drawInfo) { //The layer will be visible only if the player is holding an ExampleItem in their hands. Or if another modder forces this layer to be visible. return(drawInfo.drawPlayer.HeldItem?.type == ModContent.ItemType <ExampleItem>()); // If you'd like to reference another PlayerDrawLayer's visibility, // you can do so by getting its instance via ModContent.GetInstance<OtherDrawLayer>(), and calling GetDefaultVisiblity on it }
protected override void Draw(ref PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; if (drawInfo.drawPlayer.GetModPlayer <MPlayer>().Hexed) { LegArmorTexture = ModContent.Request <Texture2D>("KirillandRandom/Items/Armor/Pig_Legs"); var position = drawInfo.Position + new Vector2(drawPlayer.width / 2 - drawPlayer.bodyFrame.Width / 2, drawPlayer.height - drawPlayer.bodyFrame.Height + 4f) + drawPlayer.legPosition - Main.screenPosition; position = new Vector2((int)position.X, (int)position.Y); drawInfo.DrawDataCache.Add(new DrawData( LegArmorTexture.Value, //The texture to render. position, //Position to render at. drawInfo.drawPlayer.legFrame, //Source rectangle. Lighting.GetColor((int)drawInfo.Center.X / 16, (int)drawInfo.Center.Y / 16, Color.White), //Color. 0f, //Rotation. Vector2.Zero, //exampleItemTexture.Size() * 0.5f, //Origin. Uses the texture's center. 1f, //Scale. drawInfo.playerEffect, //SpriteEffects. 0 //'Layer'. This is always 0 in Terraria. )); return; } if (drawInfo.drawPlayer.GetModPlayer <MPlayer>().fireLeggings) { LegArmorTexture = ModContent.Request <Texture2D>("KirillandRandom/Items/Armor/FiresoulRobeLeggings_Legs_Glow"); var position = drawInfo.Position + new Vector2(drawPlayer.width / 2 - drawPlayer.bodyFrame.Width / 2, drawPlayer.height - drawPlayer.bodyFrame.Height + 4f) + drawPlayer.legPosition - Main.screenPosition; if (drawInfo.isSitting) { position += new Vector2(drawInfo.drawPlayer.direction == 1 ? 6 : -6, -7); if (drawPlayer.mount.Active) { position += new Vector2(0, 3); } } position = new Vector2((int)position.X, (int)position.Y); DrawData drdt = new DrawData( LegArmorTexture.Value, //The texture to render. position, //Position to render at. drawInfo.drawPlayer.legFrame, //Source rectangle. drawInfo.colorArmorLegs == Color.Transparent ? Color.Transparent : new Color(100, 100, 100, 100), //Color. 0f, //Rotation. Vector2.Zero, //exampleItemTexture.Size() * 0.5f, //Origin. Uses the texture's center. 1f, //Scale. drawInfo.playerEffect, //SpriteEffects. 0 //'Layer'. This is always 0 in Terraria. ); drdt.shader = drawInfo.cLegs; drawInfo.DrawDataCache.Add(drdt); } }
public override void ModifyDrawInfo(ref PlayerDrawSet drawInfo) { if (!BodyColor.TryGetValue(Player.body, out Func <Color> color)) { return; } drawInfo.bodyGlowColor = color(); drawInfo.armGlowColor = color(); }
public override bool GetDefaultVisibility(PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; if (drawPlayer.dead || drawPlayer.invis || drawPlayer.legs == -1) { return(false); } return(true); }
public override bool GetDefaultVisibility(PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; if (drawPlayer.dead) { return(false); } return(drawPlayer.GetModPlayer <ClickerPlayer>().DrawHotWings); }
/// <summary> /// Note, not threadsafe /// </summary> public static PlayerDrawLayer[] GetDrawLayers(PlayerDrawSet drawInfo) { foreach (var layer in _drawOrder) { layer.ResetVisiblity(drawInfo); } PlayerHooks.HideDrawLayers(drawInfo); return(_drawOrder); }
public override bool GetDefaultVisibility(PlayerDrawSet drawInfo) { //stop it from drawing multiple times per frame, e.g. with armor/dash afterimages that ruin opacity if (globalTimeTracker == Main.GlobalTimeWrappedHourly) { return(false); } globalTimeTracker = Main.GlobalTimeWrappedHourly; return(ModContent.GetInstance <FargoConfig>().DebuffOpacity > 0 && !Main.hideUI && drawInfo.drawPlayer.whoAmI == Main.myPlayer && drawInfo.drawPlayer.active && !drawInfo.drawPlayer.dead && !drawInfo.drawPlayer.ghost && drawInfo.drawPlayer.buffType.Count(d => Main.debuff[d] && !debuffsToIgnore.Contains(d)) > 0); }
public override bool GetDefaultVisibility(PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; if (drawPlayer.dead) { return(false); } ClickerPlayer modPlayer = drawPlayer.GetModPlayer <ClickerPlayer>(); return(modPlayer.HasAimbotModuleTarget); }
internal void ResetVisiblity(PlayerDrawSet drawInfo) { foreach (var child in ChildrenBefore) { child.ResetVisiblity(drawInfo); } Visible = GetDefaultVisiblity(drawInfo); foreach (var child in ChildrenAfter) { child.ResetVisiblity(drawInfo); } }
public override bool GetDefaultVisibility(PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; if (drawInfo.shadow != 0f) { //Gameplay only: no armor shadows return(false); } ClickerPlayer modPlayer = drawPlayer.GetModPlayer <ClickerPlayer>(); return(modPlayer.CanDrawRadius && modPlayer.SetMotherboardPlaced); }
protected override void Draw(ref PlayerDrawSet drawInfo) { //this is for drawing the tail on the menu if (Main.gameMenu && drawInfo.drawPlayer.TryGetModPlayer <TailPlayer>(out TailPlayer tailPlayer)) { if (tailPlayer.playerMenuTexture != null) { //if (drawInfo.drawPlayer.dead) return;//player is never dead on main menu Texture2D texture = ModContent.Request <Texture2D>(tailPlayer.playerMenuTexture).Value; int frameSize = texture.Height / 20;//what??? was left over from my orignal player layer base, breaks if removed DrawData data = new DrawData(texture, (drawInfo.Center - Main.screenPosition) + (tailPlayer.playerMenuTexOffset * 0.5f), null, Color.White, 0f, new Vector2(texture.Width, frameSize), 1f, SpriteEffects.FlipHorizontally, 0); drawInfo.DrawDataCache.Add(data); } } }
protected override void Draw(ref PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; Texture2D hurtbox = ModContent.Request <Texture2D>("FargowiltasSouls/PlayerDrawLayers/PrecisionHurtboxDrawLayer", ReLogic.Content.AssetRequestMode.ImmediateLoad).Value; Rectangle rectangle = hurtbox.Bounds; float opacity = Main.mouseTextColor / 255f; opacity *= opacity; DrawData data = new DrawData(hurtbox, drawPlayer.Center - Main.screenPosition, rectangle, Color.White * opacity, 0f, rectangle.Size() / 2, 1f, SpriteEffects.None, 0); drawInfo.DrawDataCache.Add(data); }
protected override void Draw(ref PlayerDrawSet drawInfo) { Player drawPlayer = drawInfo.drawPlayer; Texture2D texture = ModContent.Request <Texture2D>("FargowiltasSouls/PlayerDrawLayers/DizzyStars", ReLogic.Content.AssetRequestMode.ImmediateLoad).Value; int num156 = texture.Height / 6; //ypos of lower right corner of sprite to draw int y3 = num156 * (int)(Main.GlobalTimeWrappedHourly % 0.5 * 12); //ypos of upper left corner of sprite to draw Rectangle rectangle = new Rectangle(0, y3, texture.Width, num156); Vector2 drawPos = (drawPlayer.gravDir > 0 ? drawPlayer.Top : drawPlayer.Bottom) - Main.screenPosition; drawPos.Y -= 16 * drawPlayer.gravDir; DrawData data = new DrawData(texture, drawPos, rectangle, Color.White, drawPlayer.gravDir < 0 ? MathHelper.Pi : 0f, rectangle.Size() / 2, 1f, SpriteEffects.None, 0); drawInfo.DrawDataCache.Add(data); }
public static DrawDataInfo GetHeadDrawDataInfo(PlayerDrawSet drawInfo, Texture2D texture) { Player drawPlayer = drawInfo.drawPlayer; Vector2 pos = drawPlayer.headPosition + drawInfo.headVect + new Vector2( (int)(drawInfo.Position.X + drawPlayer.width / 2f - drawPlayer.bodyFrame.Width / 2f - Main.screenPosition.X), (int)(drawInfo.Position.Y + drawPlayer.height - drawPlayer.bodyFrame.Height + 4f - Main.screenPosition.Y) ); return(new DrawDataInfo { Position = pos, Frame = drawPlayer.bodyFrame, Origin = drawInfo.headVect, Rotation = drawPlayer.headRotation, Texture = texture }); }
public static DrawDataInfo GetLegDrawDataInfo(PlayerDrawSet drawInfo, Texture2D texture) { Player drawPlayer = drawInfo.drawPlayer; Vector2 pos = drawPlayer.legPosition + drawInfo.legVect + new Vector2( (int)(drawInfo.Position.X - Main.screenPosition.X - drawPlayer.legFrame.Width / 2f + drawPlayer.width / 2f), (int)(drawInfo.Position.Y - Main.screenPosition.Y + drawPlayer.height - drawPlayer.legFrame.Height + 4f) ); return(new DrawDataInfo { Position = pos, Frame = drawPlayer.legFrame, Origin = drawInfo.legVect, Rotation = drawPlayer.legRotation, Texture = texture }); }