Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
VertexStrip.cs
Go to the documentation of this file.
1using System;
5
6namespace Terraria.Graphics;
7
8public class VertexStrip
9{
11
13
15 {
17
18 public Color Color;
19
21
23
25
27 {
28 Position = position;
29 Color = color;
31 }
32 }
33
35
37
38 private short[] _indices = new short[1];
39
41
43
45
47 {
48 int num = positions.Length;
49 int num2 = (_vertexAmountCurrentlyMaintained = num * 2);
50 if (_vertices.Length < num2)
51 {
52 Array.Resize(ref _vertices, num2);
53 }
54 int num3 = num;
55 if (expectedVertexPairsAmount.HasValue)
56 {
58 }
59 for (int i = 0; i < num; i++)
60 {
61 if (positions[i] == Vector2.Zero)
62 {
63 num = i - 1;
65 break;
66 }
69 int indexOnVertexArray = i * 2;
70 float progressOnStrip = (float)i / (float)(num3 - 1);
72 }
74 }
75
77 {
78 int num = positions.Length;
81 for (int i = 0; i < num && !(positions[i] == Vector2.Zero); i++)
82 {
87 if (i + 1 >= num || !(positions[i + 1] != Vector2.Zero))
88 {
89 continue;
90 }
91 Vector2 vector2 = positions[i + 1];
92 float num3 = MathHelper.WrapAngle(rotations[i + 1]);
93 int num4 = (int)(Math.Abs(MathHelper.WrapAngle(num3 - num2)) / ((float)Math.PI / 12f));
94 if (num4 != 0)
95 {
96 float num5 = vector.Distance(vector2);
97 Vector2 value = vector + num2.ToRotationVector2() * num5;
98 Vector2 value2 = vector2 + num3.ToRotationVector2() * (0f - num5);
99 int num6 = num4 + 2;
100 float num7 = 1f / (float)num6;
101 Vector2 target = vector;
102 for (float num8 = num7; num8 < 1f; num8 += num7)
103 {
105 float item = MathHelper.WrapAngle(vector3.DirectionTo(target).ToRotation());
108 target = vector3;
109 }
110 }
111 }
114 for (int j = 0; j < count && (!tryStoppingOddBug || !(_temporaryPositionsCache[j] == zero)); j++)
115 {
118 int indexOnVertexArray = j * 2;
119 float progressOnStrip = (float)j / (float)(count - 1);
121 }
124 }
125
127 {
128 int num = vertexPaidsAdded - 1;
129 int num2 = 6 + includeBacksides.ToInt() * 6;
131 if (_indices.Length < num3)
132 {
133 Array.Resize(ref _indices, num3);
134 }
135 for (short num4 = 0; num4 < num; num4++)
136 {
137 short num5 = (short)(num4 * num2);
138 int num6 = num4 * 2;
140 _indices[num5 + 1] = (short)(num6 + 1);
141 _indices[num5 + 2] = (short)(num6 + 2);
142 _indices[num5 + 3] = (short)(num6 + 2);
143 _indices[num5 + 4] = (short)(num6 + 1);
144 _indices[num5 + 5] = (short)(num6 + 3);
146 {
147 _indices[num5 + 6] = (short)(num6 + 2);
148 _indices[num5 + 7] = (short)(num6 + 1);
149 _indices[num5 + 8] = (short)num6;
150 _indices[num5 + 9] = (short)(num6 + 2);
151 _indices[num5 + 10] = (short)(num6 + 3);
152 _indices[num5 + 11] = (short)(num6 + 1);
153 }
154 }
155 }
156
173
174 public void DrawTrail()
175 {
177 {
178 Main.instance.GraphicsDevice.DrawUserIndexedPrimitives(PrimitiveType.TriangleList, _vertices, 0, _vertexAmountCurrentlyMaintained, _indices, 0, _indicesAmountCurrentlyMaintained / 3);
179 }
180 }
181}
static float WrapAngle(float angle)
Definition MathHelper.cs:87
static double Abs(double value)
const double PI
Definition Math.cs:16
void PrepareStripWithProceduralPadding(Vector2[] positions, float[] rotations, StripColorFunction colorFunction, StripHalfWidthFunction widthFunction, Vector2 offsetForAllPositions=default(Vector2), bool includeBacksides=false, bool tryStoppingOddBug=true)
List< Vector2 > _temporaryPositionsCache
delegate float StripHalfWidthFunction(float progressOnStrip)
void AddVertex(StripColorFunction colorFunction, StripHalfWidthFunction widthFunction, Vector2 pos, float rot, int indexOnVertexArray, float progressOnStrip)
void PrepareStrip(Vector2[] positions, float[] rotations, StripColorFunction colorFunction, StripHalfWidthFunction widthFunction, Vector2 offsetForAllPositions=default(Vector2), int? expectedVertexPairsAmount=null, bool includeBacksides=false)
void PrepareIndices(int vertexPaidsAdded, bool includeBacksides)
delegate Color StripColorFunction(float progressOnStrip)
List< float > _temporaryRotationsCache
CustomVertexInfo[] _vertices
static Main instance
Definition Main.cs:283
static Vector2 CatmullRom(Vector2 value1, Vector2 value2, Vector2 value3, Vector2 value4, float amount)
Definition Vector2.cs:273
CustomVertexInfo(Vector2 position, Color color, Vector2 texCoord)