Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
GasParticle.cs
Go to the documentation of this file.
1using System;
5
7
9{
10 public float FadeInNormalizedTime = 0.25f;
11
12 public float FadeOutNormalizedTime = 0.75f;
13
14 public float TimeToLive = 80f;
15
17
18 public float Opacity;
19
20 public float AdditiveAmount = 1f;
21
22 public float FadeInEnd = 20f;
23
24 public float FadeOutStart = 30f;
25
26 public float FadeOutEnd = 45f;
27
28 public float SlowdownScalar = 0.95f;
29
30 private float _timeSinceSpawn;
31
33
35
36 public float InitialScale = 1f;
37
38 public override void FetchFromPool()
39 {
40 base.FetchFromPool();
42 _timeSinceSpawn = 0f;
43 Opacity = 0f;
46 TimeToLive = 80f;
47 _internalIndentifier = Main.rand.Next(255);
48 SlowdownScalar = 0.95f;
50 InitialScale = 1f;
51 }
52
53 public override void Update(ref ParticleRendererSettings settings)
54 {
55 base.Update(ref settings);
56 _timeSinceSpawn += 1f;
57 float fromValue = _timeSinceSpawn / TimeToLive;
58 Scale = Vector2.One * InitialScale * Utils.Remap(fromValue, 0f, 0.95f, 1f, 1.3f);
59 Opacity = MathHelper.Clamp(Utils.Remap(fromValue, 0f, FadeInNormalizedTime, 0f, 1f) * Utils.Remap(fromValue, FadeOutNormalizedTime, 1f, 1f, 0f), 0f, 1f) * 0.85f;
60 Rotation = (float)_internalIndentifier * 0.4002029f + _timeSinceSpawn * ((float)Math.PI * 2f) / 480f * 0.5f;
63 {
65 Lighting.AddLight(LocalPosition, (float)(int)color.R / 255f, (float)(int)color.G / 255f, (float)(int)color.B / 255f);
66 }
68 {
69 base.ShouldBeRemovedFromRenderer = true;
70 }
71 }
72
73 public override void Draw(ref ParticleRendererSettings settings, SpriteBatch spritebatch)
74 {
75 Main.instance.LoadProjectile(1007);
77 Vector2 origin = new Vector2(value.Width / 2, value.Height / 2);
78 Vector2 position = settings.AnchorPosition + LocalPosition;
79 Color color = Color.Lerp(Lighting.GetColor(LocalPosition.ToTileCoordinates()), ColorTint, 0.2f) * Opacity;
80 Vector2 scale = Scale;
81 spritebatch.Draw(value, position, value.Frame(), color, Rotation, origin, scale, SpriteEffects.None, 0f);
82 spritebatch.Draw(value, position, value.Frame(), color * 0.25f, Rotation, origin, scale * (1f + Opacity * 1.5f), SpriteEffects.None, 0f);
83 }
84}
void Draw(Texture2D texture, Vector2 position, Color color)
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
static Asset< Texture2D >[] Projectile
override void Draw(ref ParticleRendererSettings settings, SpriteBatch spritebatch)
override void Update(ref ParticleRendererSettings settings)
static Color GetColor(Point tileCoords)
Definition Lighting.cs:182
static void AddLight(Vector2 position, Vector3 rgb)
Definition Lighting.cs:137
static Main instance
Definition Main.cs:283
static UnifiedRandom rand
Definition Main.cs:1387
static float Remap(float fromValue, float fromMin, float fromMax, float toMin, float toMax, bool clamped=true)
Definition Utils.cs:233
static Color Transparent
Definition Color.cs:76
static Color Lerp(Color value1, Color value2, float amount)
Definition Color.cs:491