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

◆ Spawn_RainbowRodHit()

static void Terraria.GameContent.Drawing.ParticleOrchestrator.Spawn_RainbowRodHit ( ParticleOrchestraSettings settings)
inlinestaticprivate

Definition at line 1299 of file ParticleOrchestrator.cs.

1300 {
1301 float num = Main.rand.NextFloat() * ((float)Math.PI * 2f);
1302 float num2 = 6f;
1303 float num3 = Main.rand.NextFloat();
1304 for (float num4 = 0f; num4 < 1f; num4 += 1f / num2)
1305 {
1306 Vector2 vector = settings.MovementVector * Main.rand.NextFloatDirection() * 0.15f;
1307 Vector2 vector2 = new Vector2(Main.rand.NextFloat() * 0.4f + 0.4f);
1308 float f = num + Main.rand.NextFloat() * ((float)Math.PI * 2f);
1309 float rotation = (float)Math.PI / 2f;
1310 Vector2 vector3 = 1.5f * vector2;
1311 float num5 = 60f;
1312 Vector2 vector4 = Main.rand.NextVector2Circular(8f, 8f) * vector2;
1313 PrettySparkleParticle prettySparkleParticle = _poolPrettySparkle.RequestParticle();
1314 prettySparkleParticle.Velocity = f.ToRotationVector2() * vector3 + vector;
1315 prettySparkleParticle.AccelerationPerFrame = f.ToRotationVector2() * -(vector3 / num5) - vector * 1f / 60f;
1316 prettySparkleParticle.ColorTint = Main.hslToRgb((num3 + Main.rand.NextFloat() * 0.33f) % 1f, 1f, 0.4f + Main.rand.NextFloat() * 0.25f);
1317 prettySparkleParticle.ColorTint.A = 0;
1318 prettySparkleParticle.LocalPosition = settings.PositionInWorld + vector4;
1319 prettySparkleParticle.Rotation = rotation;
1320 prettySparkleParticle.Scale = vector2;
1321 Main.ParticleSystem_World_OverPlayers.Add(prettySparkleParticle);
1322 prettySparkleParticle = _poolPrettySparkle.RequestParticle();
1323 prettySparkleParticle.Velocity = f.ToRotationVector2() * vector3 + vector;
1324 prettySparkleParticle.AccelerationPerFrame = f.ToRotationVector2() * -(vector3 / num5) - vector * 1f / 60f;
1325 prettySparkleParticle.ColorTint = new Color(255, 255, 255, 0);
1326 prettySparkleParticle.LocalPosition = settings.PositionInWorld + vector4;
1327 prettySparkleParticle.Rotation = rotation;
1328 prettySparkleParticle.Scale = vector2 * 0.6f;
1329 Main.ParticleSystem_World_OverPlayers.Add(prettySparkleParticle);
1330 }
1331 for (int i = 0; i < 12; i++)
1332 {
1333 Color newColor = Main.hslToRgb((num3 + Main.rand.NextFloat() * 0.12f) % 1f, 1f, 0.4f + Main.rand.NextFloat() * 0.25f);
1334 int num6 = Dust.NewDust(settings.PositionInWorld, 0, 0, 267, 0f, 0f, 0, newColor);
1335 Main.dust[num6].velocity = Main.rand.NextVector2Circular(1f, 1f);
1336 Main.dust[num6].velocity += settings.MovementVector * Main.rand.NextFloatDirection() * 0.5f;
1337 Main.dust[num6].noGravity = true;
1338 Main.dust[num6].scale = 0.6f + Main.rand.NextFloat() * 0.9f;
1339 Main.dust[num6].fadeIn = 0.7f + Main.rand.NextFloat() * 0.8f;
1340 if (num6 != 6000)
1341 {
1342 Dust dust = Dust.CloneDust(num6);
1343 dust.scale /= 2f;
1344 dust.fadeIn *= 0.75f;
1345 dust.color = new Color(255, 255, 255, 255);
1346 }
1347 }
1348 }
const double PI
Definition Math.cs:16
static ParticlePool< PrettySparkleParticle > _poolPrettySparkle
static Vector2 Add(Vector2 value1, Vector2 value2)
Definition Vector2.cs:587

References Terraria.GameContent.Drawing.ParticleOrchestrator._poolPrettySparkle, Terraria.Dust.CloneDust(), Terraria.Main.dust, Terraria.Main.hslToRgb(), Terraria.Dust.NewDust(), Terraria.Main.ParticleSystem_World_OverPlayers, System.Math.PI, Terraria.GameContent.Drawing.ParticleOrchestraSettings.PositionInWorld, and Terraria.Main.rand.

Referenced by Terraria.GameContent.Drawing.ParticleOrchestrator.SpawnParticlesDirect().