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

◆ Draw()

override void Terraria.GameContent.Skies.NebulaSky.Draw ( SpriteBatch spriteBatch,
float minDepth,
float maxDepth )
inline

Definition at line 64 of file NebulaSky.cs.

65 {
66 if (maxDepth >= float.MaxValue && minDepth < float.MaxValue)
67 {
68 spriteBatch.Draw(TextureAssets.BlackTile.Value, new Rectangle(0, 0, Main.screenWidth, Main.screenHeight), Color.Black * _fadeOpacity);
69 spriteBatch.Draw(_bgTexture.Value, new Rectangle(0, Math.Max(0, (int)((Main.worldSurface * 16.0 - (double)Main.screenPosition.Y - 2400.0) * 0.10000000149011612)), Main.screenWidth, Main.screenHeight), Color.White * Math.Min(1f, (Main.screenPosition.Y - 800f) / 1000f * _fadeOpacity));
70 Vector2 vector = new Vector2(Main.screenWidth >> 1, Main.screenHeight >> 1);
71 Vector2 vector2 = 0.01f * (new Vector2((float)Main.maxTilesX * 8f, (float)Main.worldSurface / 2f) - Main.screenPosition);
72 spriteBatch.Draw(_planetTexture.Value, vector + new Vector2(-200f, -200f) + vector2, null, Color.White * 0.9f * _fadeOpacity, 0f, new Vector2(_planetTexture.Width() >> 1, _planetTexture.Height() >> 1), 1f, SpriteEffects.None, 1f);
73 }
74 int num = -1;
75 int num2 = 0;
76 for (int i = 0; i < _pillars.Length; i++)
77 {
78 float depth = _pillars[i].Depth;
79 if (num == -1 && depth < maxDepth)
80 {
81 num = i;
82 }
83 if (depth <= minDepth)
84 {
85 break;
86 }
87 num2 = i;
88 }
89 if (num == -1)
90 {
91 return;
92 }
93 Vector2 vector3 = Main.screenPosition + new Vector2(Main.screenWidth >> 1, Main.screenHeight >> 1);
94 Rectangle rectangle = new Rectangle(-1000, -1000, 4000, 4000);
95 float num3 = Math.Min(1f, (Main.screenPosition.Y - 1000f) / 1000f);
96 for (int j = num; j < num2; j++)
97 {
98 Vector2 vector4 = new Vector2(1f / _pillars[j].Depth, 0.9f / _pillars[j].Depth);
99 Vector2 position = _pillars[j].Position;
100 position = (position - vector3) * vector4 + vector3 - Main.screenPosition;
101 if (rectangle.Contains((int)position.X, (int)position.Y))
102 {
103 float num4 = vector4.X * 450f;
104 spriteBatch.Draw(_beamTexture.Value, position, null, Color.White * 0.2f * num3 * _fadeOpacity, 0f, Vector2.Zero, new Vector2(num4 / 70f, num4 / 45f), SpriteEffects.None, 0f);
105 int num5 = 0;
106 for (float num6 = 0f; num6 <= 1f; num6 += 0.03f)
107 {
108 float num7 = 1f - (num6 + Main.GlobalTimeWrappedHourly * 0.02f + (float)Math.Sin(j)) % 1f;
109 spriteBatch.Draw(_rockTextures[num5].Value, position + new Vector2((float)Math.Sin(num6 * 1582f) * (num4 * 0.5f) + num4 * 0.5f, num7 * 2000f), null, Color.White * num7 * num3 * _fadeOpacity, num7 * 20f, new Vector2(_rockTextures[num5].Width() >> 1, _rockTextures[num5].Height() >> 1), 0.9f, SpriteEffects.None, 0f);
110 num5 = (num5 + 1) % _rockTextures.Length;
111 }
112 }
113 }
114 }
void Draw(Texture2D texture, Vector2 position, Color color)
static byte Min(byte val1, byte val2)
Definition Math.cs:912
static double Sin(double a)
static byte Max(byte val1, byte val2)
Definition Math.cs:738
Asset< Texture2D >[] _rockTextures
Definition NebulaSky.cs:29
Asset< Texture2D > _planetTexture
Definition NebulaSky.cs:23
bool Contains(int x, int y)
Definition Rectangle.cs:92

References Terraria.GameContent.Skies.NebulaSky._beamTexture, Terraria.GameContent.Skies.NebulaSky._bgTexture, Terraria.GameContent.Skies.NebulaSky._fadeOpacity, Terraria.GameContent.Skies.NebulaSky._pillars, Terraria.GameContent.Skies.NebulaSky._planetTexture, Terraria.GameContent.Skies.NebulaSky._rockTextures, Microsoft.Xna.Framework.Color.Black, Terraria.GameContent.TextureAssets.BlackTile, Microsoft.Xna.Framework.Rectangle.Contains(), Microsoft.Xna.Framework.Graphics.Depth, Terraria.GameContent.Skies.NebulaSky.LightPillar.Depth, Microsoft.Xna.Framework.Graphics.SpriteBatch.Draw(), System.Math.Max(), Terraria.Main.maxTilesX, System.Math.Min(), Terraria.GameContent.Skies.NebulaSky.LightPillar.Position, Terraria.Main.screenHeight, Terraria.Main.screenPosition, Terraria.Main.screenWidth, System.Math.Sin(), ReLogic.Content.Asset< T >.Value, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Color.White, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Vector2.X, Microsoft.Xna.Framework.Vector2.Y, and Microsoft.Xna.Framework.Vector2.Zero.