terraria-cpp2il-methodrecon v1.4.4.9
Terraria mobile dump, with reconstructed method body. Dump with CallAnalysis: https://infinitynichto.github.io/terraria-cpp2il
Loading...
Searching...
No Matches
BallCollision.cs
Go to the documentation of this file.
1using System;
6
8{
9 // Token: 0x0200053C RID: 1340
10 public static class BallCollision
11 {
12 // Token: 0x06003256 RID: 12886 RVA: 0x001F98F4 File Offset: 0x001F7AF4
14 {
15 if (!true)
16 {
17 }
18 long num = 0L;
19 Vector2 vector;
20 float num2 = vector.Length();
21 if (17530 == 0)
22 {
23 }
24 if (17530 == 0)
25 {
26 }
27 int num3 = 32768;
28 int num4 = Math.Max(1, (int)num);
29 if (num3 == 0)
30 {
31 }
32 if (num3 == 0)
33 {
34 }
35 if (num3 == 0)
36 {
37 }
38 if (num3 == 0)
39 {
40 return;
41 }
42 if (num3 == 0)
43 {
44 }
45 if (num3 != 0)
46 {
47 return;
48 }
49 }
50
51 // Token: 0x06003257 RID: 12887 RVA: 0x001F9988 File Offset: 0x001F7B88
52 private static bool CheckForPassThrough(Vector2 center, [Out] BallPassThroughType type, [Out] Tile contactTile)
53 {
54 if (!true)
55 {
56 }
57 Tile tile;
58 center.X = tile;
59 bool flag = tile.nactive();
60 bool flag2;
61 return flag2;
62 }
63
64 // Token: 0x06003258 RID: 12888 RVA: 0x001F99B0 File Offset: 0x001F7BB0
65 private static bool IsPositionInsideTile(Vector2 position, Point tileCoordinates, Tile tile)
66 {
67 }
68
69 // Token: 0x06003259 RID: 12889 RVA: 0x001F99C8 File Offset: 0x001F7BC8
70 private static bool IsBallInWorld(Vector2 position, Vector2 size)
71 {
72 if (16896 == 0)
73 {
74 }
75 if (49664 == 0)
76 {
77 return;
78 }
79 }
80
81 // Token: 0x0600325A RID: 12890 RVA: 0x001F99E4 File Offset: 0x001F7BE4
82 private static bool GetClosestEdgeToCircle(Vector2 position, Vector2 size, Vector2 velocity, [Out] Vector2 collisionPoint, [Out] Tile collisionTile)
83 {
84 /*
85An exception occurred when decompiling this method (0600325A)
86
87ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Boolean Terraria.Physics.BallCollision::GetClosestEdgeToCircle(Microsoft.Xna.Framework.Vector2,Microsoft.Xna.Framework.Vector2,Microsoft.Xna.Framework.Vector2,Microsoft.Xna.Framework.Vector2,Terraria.Tile)
88
89 ---> System.Exception: Basic block has to end with unconditional control flow.
90{
91 IL_000D:
92 stfld:float32(Vector2::X, ldloc:Vector2[exp:valuetype Microsoft.Xna.Framework.Vector2&](position), ldloc:Tile[exp:float32](var_12))
93}
94
95 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
96 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
97 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
98 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
99 --- End of inner exception stack trace ---
100 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
101 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
102*/;
103 }
104
105 // Token: 0x0600325B RID: 12891 RVA: 0x001F9A0C File Offset: 0x001F7C0C
107 {
108 int num = 1;
109 if (num == 0)
110 {
111 }
112 Tile tile;
113 bool flag = tile.nactive();
114 if (num == 0)
115 {
116 }
117 if (num == 0)
118 {
119 if (num == 0)
120 {
121 }
122 if (num == 0)
123 {
124 return;
125 }
126 }
127 if (num == 0)
128 {
129 }
130 int num2;
131 if (num != 0)
132 {
133 if (num == 0)
134 {
135 }
136 if (num != 0)
137 {
138 num2 = 193;
139 }
140 if (num2 == 0)
141 {
142 }
143 long num3 = 0L;
144 if (num2 == 0)
145 {
146 }
147 if (num3 != 0L)
148 {
149 }
150 int num4 = 1;
151 if (num2 == 0)
152 {
153 }
154 if (num4 != 0)
155 {
156 }
157 }
158 if (num2 == 0)
159 {
160 }
161 while (num2 == 0)
162 {
163 }
164 }
165
166 // Token: 0x0600325C RID: 12892 RVA: 0x001F9A74 File Offset: 0x001F7C74
167 private static bool GetSlopeEdge(BallCollision.TileEdges edgesToTest, Tile tile, Vector2 tilePosition, LineSegment edge)
168 {
169 }
170
171 // Token: 0x0600325D RID: 12893 RVA: 0x001F9A84 File Offset: 0x001F7C84
172 private static bool GetTopOrBottomEdge(BallCollision.TileEdges edgesToTest, int x, int y, Vector2 tilePosition, LineSegment edge)
173 {
174 if (!true)
175 {
176 }
177 Tile tile;
178 bool flag = BallCollision.IsNeighborSolid(tile);
179 bool flag2;
180 return flag2;
181 }
182
183 // Token: 0x0600325E RID: 12894 RVA: 0x001F9ABC File Offset: 0x001F7CBC
184 private static bool GetLeftOrRightEdge(BallCollision.TileEdges edgesToTest, int x, int y, Vector2 tilePosition, LineSegment edge)
185 {
186 if (!true)
187 {
188 }
189 Tile tile;
190 bool flag = BallCollision.IsNeighborSolid(tile);
191 Tile tile2;
193 bool flag3;
194 return flag3;
195 }
196
197 // Token: 0x0600325F RID: 12895 RVA: 0x001F9AE8 File Offset: 0x001F7CE8
198 private static Rectangle GetTileBounds(Vector2 position, Vector2 size)
199 {
200 /*
201An exception occurred when decompiling this method (0600325F)
202
203ICSharpCode.Decompiler.DecompilerException: Error decompiling Microsoft.Xna.Framework.Rectangle Terraria.Physics.BallCollision::GetTileBounds(Microsoft.Xna.Framework.Vector2,Microsoft.Xna.Framework.Vector2)
204
205 ---> System.Exception: Basic block has to end with unconditional control flow.
206{
207 IL_0000:
208 brtrue(IL_0000, ldc.i4:bool(1))
209}
210
211 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
212 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
213 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
214 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
215 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
216 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
217 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
218 --- End of inner exception stack trace ---
219 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
220 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
221*/;
222 }
223
224 // Token: 0x06003260 RID: 12896 RVA: 0x001F9AF8 File Offset: 0x001F7CF8
225 private static bool IsNeighborSolid(Tile tile)
226 {
227 int num = 1;
228 if (num == 0)
229 {
230 }
231 if (num == 0 || num == 0)
232 {
233 return;
234 }
235 }
236
237 // Token: 0x06003261 RID: 12897 RVA: 0x001F9B14 File Offset: 0x001F7D14
239 {
240 if (!true)
241 {
242 }
243 Vector2 vector;
244 float num = vector.LengthSquared();
245 if (!true)
246 {
247 }
248 return 1;
249 }
250
251 // Token: 0x06003262 RID: 12898 RVA: 0x001F9B40 File Offset: 0x001F7D40
252 [Conditional("UNITY_EDITOR")]
253 [Conditional("ENABLE_DEBUG")]
254 private static void DrawEdge(LineSegment edge)
255 {
256 }
257
258 // Token: 0x0200053D RID: 1341
259 [Flags]
260 private enum TileEdges : uint
261 {
262 // Token: 0x04003B85 RID: 15237
263 None = 0U,
264 // Token: 0x04003B86 RID: 15238
265 Top = 1U,
266 // Token: 0x04003B87 RID: 15239
267 Bottom = 2U,
268 // Token: 0x04003B88 RID: 15240
269 Left = 4U,
270 // Token: 0x04003B89 RID: 15241
271 Right = 8U,
272 // Token: 0x04003B8A RID: 15242
273 TopLeftSlope = 16U,
274 // Token: 0x04003B8B RID: 15243
275 TopRightSlope = 32U,
276 // Token: 0x04003B8C RID: 15244
277 BottomLeftSlope = 64U,
278 // Token: 0x04003B8D RID: 15245
280 }
281 }
282}
class f__AnonymousType0<< Count > j__TPar
static byte Max(byte val1, byte val2)
Definition Math.cs:111
static bool GetTopOrBottomEdge(BallCollision.TileEdges edgesToTest, int x, int y, Vector2 tilePosition, LineSegment edge)
static Rectangle GetTileBounds(Vector2 position, Vector2 size)
static bool GetClosestEdgeToCircle(Vector2 position, Vector2 size, Vector2 velocity, [Out] Vector2 collisionPoint, [Out] Tile collisionTile)
static BallStepResult Step(PhysicsProperties physicsProperties, Entity entity, float entityAngularVelocity, IBallContactListener listener)
static Vector2 ClosestPointOnLineSegment(Vector2 point, LineSegment lineSegment)
static bool IsBallInWorld(Vector2 position, Vector2 size)
static bool CheckForPassThrough(Vector2 center, [Out] BallPassThroughType type, [Out] Tile contactTile)
static bool IsNeighborSolid(Tile tile)
static void DrawEdge(LineSegment edge)
static bool GetCollisionPointForTile(BallCollision.TileEdges edgesToTest, int x, int y, Vector2 center, Vector2 closestPointOut, float distanceSquaredOut)
static bool IsPositionInsideTile(Vector2 position, Point tileCoordinates, Tile tile)
static bool GetLeftOrRightEdge(BallCollision.TileEdges edgesToTest, int x, int y, Vector2 tilePosition, LineSegment edge)
static bool GetSlopeEdge(BallCollision.TileEdges edgesToTest, Tile tile, Vector2 tilePosition, LineSegment edge)
bool nactive()
Definition Tile.cs:1187