Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DrawLaser()

static void Terraria.Utils.DrawLaser ( SpriteBatch sb,
Texture2D tex,
Vector2 start,
Vector2 end,
Vector2 scale,
LaserLineFraming framing )
inlinestatic

Definition at line 2010 of file Utils.cs.

2011 {
2014 float num = (end - start).Length();
2015 float rotation = vector2.ToRotation() - (float)Math.PI / 2f;
2016 if (vector2.HasNaNs())
2017 {
2018 return;
2019 }
2020 framing(0, vector, num, default(Rectangle), out var distanceCovered, out var frame, out var origin, out var color);
2021 sb.Draw(tex, vector, frame, color, rotation, frame.Size() / 2f, scale, SpriteEffects.None, 0f);
2022 num -= distanceCovered * scale.Y;
2023 vector += vector2 * ((float)frame.Height - origin.Y) * scale.Y;
2024 if (num > 0f)
2025 {
2026 float num2 = 0f;
2027 while (num2 + 1f < num)
2028 {
2029 framing(1, vector, num - num2, frame, out distanceCovered, out frame, out origin, out color);
2030 if (num - num2 < (float)frame.Height)
2031 {
2032 distanceCovered *= (num - num2) / (float)frame.Height;
2033 frame.Height = (int)(num - num2);
2034 }
2035 sb.Draw(tex, vector, frame, color, rotation, origin, scale, SpriteEffects.None, 0f);
2036 num2 += distanceCovered * scale.Y;
2037 vector += vector2 * distanceCovered * scale.Y;
2038 }
2039 }
2040 framing(2, vector, num, default(Rectangle), out distanceCovered, out frame, out origin, out color);
2041 sb.Draw(tex, vector, frame, color, rotation, origin, scale, SpriteEffects.None, 0f);
2042 }
void Draw(Texture2D texture, Vector2 position, Color color)
const double PI
Definition Math.cs:16

References Microsoft.Xna.Framework.Graphics.SpriteBatch.Draw(), Microsoft.Xna.Framework.Vector2.Normalize(), System.Math.PI, System.start, and Microsoft.Xna.Framework.Vector2.Y.

Referenced by Terraria.Main.DrawProjDirect().