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

◆ DrawStarboardRainbowTrail()

static void Terraria.DataStructures.PlayerDrawLayers.DrawStarboardRainbowTrail ( ref PlayerDrawSet drawinfo,
Vector2 commonWingPosPreFloor,
Vector2 dirsVec )
inlinestatic

Definition at line 2252 of file PlayerDrawLayers.cs.

2253 {
2254 if (drawinfo.shadow != 0f)
2255 {
2256 return;
2257 }
2258 int num = Math.Min(drawinfo.drawPlayer.availableAdvancedShadowsCount - 1, 30);
2259 float num2 = 0f;
2260 for (int num3 = num; num3 > 0; num3--)
2261 {
2262 EntityShadowInfo advancedShadow = drawinfo.drawPlayer.GetAdvancedShadow(num3);
2263 EntityShadowInfo advancedShadow2 = drawinfo.drawPlayer.GetAdvancedShadow(num3 - 1);
2264 num2 += Vector2.Distance(advancedShadow.Position, advancedShadow2.Position);
2265 }
2266 float num4 = MathHelper.Clamp(num2 / 160f, 0f, 1f);
2267 Main.instance.LoadProjectile(250);
2269 float x = 1.7f;
2270 Vector2 origin = new Vector2(value.Width / 2, value.Height / 2);
2271 Vector2 vector = new Vector2(drawinfo.drawPlayer.width, drawinfo.drawPlayer.height) / 2f;
2273 white.A = 64;
2275 vector2 = drawinfo.drawPlayer.DefaultSize * new Vector2(0.5f, 1f) + new Vector2(0f, -4f);
2276 if (dirsVec.Y < 0f)
2277 {
2278 vector2 = drawinfo.drawPlayer.DefaultSize * new Vector2(0.5f, 0f) + new Vector2(0f, 4f);
2279 }
2280 for (int num5 = num; num5 > 0; num5--)
2281 {
2282 EntityShadowInfo advancedShadow3 = drawinfo.drawPlayer.GetAdvancedShadow(num5);
2283 EntityShadowInfo advancedShadow4 = drawinfo.drawPlayer.GetAdvancedShadow(num5 - 1);
2284 Vector2 pos = advancedShadow3.Position + vector2 + advancedShadow3.HeadgearOffset;
2285 Vector2 pos2 = advancedShadow4.Position + vector2 + advancedShadow4.HeadgearOffset;
2286 pos = drawinfo.drawPlayer.RotatedRelativePoint(pos, reverseRotation: true, addGfxOffY: false);
2287 pos2 = drawinfo.drawPlayer.RotatedRelativePoint(pos2, reverseRotation: true, addGfxOffY: false);
2288 float num6 = (pos2 - pos).ToRotation() - (float)Math.PI / 2f;
2289 num6 = (float)Math.PI / 2f * (float)drawinfo.drawPlayer.direction;
2290 float num7 = Math.Abs(pos2.X - pos.X);
2291 Vector2 scale = new Vector2(x, num7 / (float)value.Height);
2292 float num8 = 1f - (float)num5 / (float)num;
2293 num8 *= num8;
2294 num8 *= Utils.GetLerpValue(0f, 4f, num7, clamped: true);
2295 num8 *= 0.5f;
2296 num8 *= num8;
2297 Color color = white * num8 * num4;
2298 if (!(color == Color.Transparent))
2299 {
2300 DrawData item = new DrawData(value, pos - Main.screenPosition, null, color, num6, origin, scale, drawinfo.playerEffect);
2301 item.shader = drawinfo.cWings;
2302 drawinfo.DrawDataCache.Add(item);
2303 for (float num9 = 0.25f; num9 < 1f; num9 += 0.25f)
2304 {
2305 item = new DrawData(value, Vector2.Lerp(pos, pos2, num9) - Main.screenPosition, null, color, num6, origin, scale, drawinfo.playerEffect);
2306 item.shader = drawinfo.cWings;
2307 drawinfo.DrawDataCache.Add(item);
2308 }
2309 }
2310 }
2311 }
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
void Add(TKey key, TValue value)
static byte Min(byte val1, byte val2)
Definition Math.cs:912
static double Abs(double value)
const double PI
Definition Math.cs:16
static Asset< Texture2D >[] Projectile
static Color Transparent
Definition Color.cs:76
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91
static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount)
Definition Vector2.cs:227

References System.Math.Abs(), System.Collections.Generic.Dictionary< TKey, TValue >.Add(), Microsoft.Xna.Framework.MathHelper.Clamp(), Microsoft.Xna.Framework.Vector2.Distance(), Terraria.Utils.GetLerpValue(), Terraria.Main.instance, System.item, Microsoft.Xna.Framework.Vector2.Lerp(), System.Math.Min(), System.Math.PI, Terraria.GameContent.TextureAssets.Projectile, Terraria.Main.screenPosition, Microsoft.Xna.Framework.Color.Transparent, System.value, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Color.White, and Microsoft.Xna.Framework.Vector2.X.

Referenced by Terraria.DataStructures.PlayerDrawLayers.DrawPlayer_09_Wings().