Skip to content

Commit 9dd5d7c

Browse files
committed
refactor: B2Manifold usage to use 'in' parameters
- Updated `B2ContactData` constructor to accept `B2Manifold` as an `in` parameter. - Changed `DrawManifold` signature in collision samples to use `in B2Manifold` instead of `ref`. - Removed `ref` keyword from `DrawManifold` calls in `Manifold.cs` and `SmoothManifold.cs`. - This change improves performance by avoiding unnecessary struct copies and aligns with the read-only nature of the manifold data in these contexts.
1 parent feb985d commit 9dd5d7c

File tree

3 files changed

+25
-25
lines changed

3 files changed

+25
-25
lines changed

src/Box2D.NET.Samples/Samples/Collisions/Manifold.cs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public override void MouseMove(B2Vec2 p)
177177
}
178178
}
179179

180-
void DrawManifold(ref B2Manifold manifold, B2Vec2 origin1, B2Vec2 origin2)
180+
void DrawManifold(in B2Manifold manifold, B2Vec2 origin1, B2Vec2 origin2)
181181
{
182182
if (m_showCount)
183183
{
@@ -249,7 +249,7 @@ public override void Step()
249249
DrawSolidCircle(m_draw, new B2Transform(circle1.center, transform1.q), circle1.radius, color1);
250250
DrawSolidCircle(m_draw, new B2Transform(circle2.center, transform2.q), circle2.radius, color2);
251251

252-
DrawManifold(ref m, transform1.p, transform2.p);
252+
DrawManifold(m, transform1.p, transform2.p);
253253

254254
offset = b2Add(offset, increment);
255255
}
@@ -270,7 +270,7 @@ public override void Step()
270270

271271
DrawSolidCircle(m_draw, new B2Transform(circle.center, transform2.q), circle.radius, color2);
272272

273-
DrawManifold(ref m, transform1.p, transform2.p);
273+
DrawManifold(m, transform1.p, transform2.p);
274274

275275
offset = b2Add(offset, increment);
276276
}
@@ -291,7 +291,7 @@ public override void Step()
291291

292292
DrawSolidCircle(m_draw, new B2Transform(circle.center, transform2.q), circle.radius, color2);
293293

294-
DrawManifold(ref m, transform1.p, transform2.p);
294+
DrawManifold(m, transform1.p, transform2.p);
295295

296296
offset = b2Add(offset, increment);
297297
}
@@ -310,7 +310,7 @@ public override void Step()
310310
DrawSolidPolygon(m_draw, transform1, box.vertices.AsSpan(), box.count, m_round, color1);
311311
DrawSolidCircle(m_draw, new B2Transform(circle.center, transform2.q), circle.radius, color2);
312312

313-
DrawManifold(ref m, transform1.p, transform2.p);
313+
DrawManifold(m, transform1.p, transform2.p);
314314

315315
offset = b2Add(offset, increment);
316316
}
@@ -333,7 +333,7 @@ public override void Step()
333333
v2 = b2TransformPoint(transform2, capsule2.center2);
334334
DrawSolidCapsule(m_draw, v1, v2, capsule2.radius, color2);
335335

336-
DrawManifold(ref m, transform1.p, transform2.p);
336+
DrawManifold(m, transform1.p, transform2.p);
337337

338338
offset = b2Add(offset, increment);
339339
}
@@ -354,7 +354,7 @@ public override void Step()
354354
B2Vec2 v2 = b2TransformPoint(transform2, capsule.center2);
355355
DrawSolidCapsule(m_draw, v1, v2, capsule.radius, color2);
356356

357-
DrawManifold(ref m, transform1.p, transform2.p);
357+
DrawManifold(m, transform1.p, transform2.p);
358358

359359
offset = b2Add(offset, increment);
360360
}
@@ -377,7 +377,7 @@ public override void Step()
377377
p2 = b2TransformPoint(transform2, capsule.center2);
378378
DrawSolidCapsule(m_draw, p1, p2, capsule.radius, color2);
379379

380-
DrawManifold(ref m, transform1.p, transform2.p);
380+
DrawManifold(m, transform1.p, transform2.p);
381381

382382
offset = b2Add(offset, increment);
383383
}
@@ -399,7 +399,7 @@ public override void Step()
399399
DrawSolidPolygon(m_draw, transform1, box1.vertices.AsSpan(), box1.count, box1.radius, color1);
400400
DrawSolidPolygon(m_draw, transform2, box.vertices.AsSpan(), box.count, box.radius, color2);
401401

402-
DrawManifold(ref m, transform1.p, transform2.p);
402+
DrawManifold(m, transform1.p, transform2.p);
403403

404404
offset = b2Add(offset, increment);
405405
}
@@ -418,7 +418,7 @@ public override void Step()
418418
DrawSolidPolygon(m_draw, transform1, box1.vertices.AsSpan(), box1.count, box1.radius, color1);
419419
DrawSolidPolygon(m_draw, transform2, box.vertices.AsSpan(), box.count, box.radius, color2);
420420

421-
DrawManifold(ref m, transform1.p, transform2.p);
421+
DrawManifold(m, transform1.p, transform2.p);
422422

423423
offset = b2Add(offset, increment);
424424
}
@@ -438,7 +438,7 @@ public override void Step()
438438
DrawSolidPolygon(m_draw, transform1, box.vertices.AsSpan(), box.count, box.radius, color1);
439439
DrawSolidPolygon(m_draw, transform2, rox.vertices.AsSpan(), rox.count, rox.radius, color2);
440440

441-
DrawManifold(ref m, transform1.p, transform2.p);
441+
DrawManifold(m, transform1.p, transform2.p);
442442

443443
offset = b2Add(offset, increment);
444444
}
@@ -458,7 +458,7 @@ public override void Step()
458458
DrawSolidPolygon(m_draw, transform1, rox.vertices.AsSpan(), rox.count, rox.radius, color1);
459459
DrawSolidPolygon(m_draw, transform2, rox.vertices.AsSpan(), rox.count, rox.radius, color2);
460460

461-
DrawManifold(ref m, transform1.p, transform2.p);
461+
DrawManifold(m, transform1.p, transform2.p);
462462

463463
offset = b2Add(offset, increment);
464464
}
@@ -480,7 +480,7 @@ public override void Step()
480480
DrawLine(m_draw, p1, p2, color1);
481481
DrawSolidPolygon(m_draw, transform2, rox.vertices.AsSpan(), rox.count, rox.radius, color2);
482482

483-
DrawManifold(ref m, transform1.p, transform2.p);
483+
DrawManifold(m, transform1.p, transform2.p);
484484

485485
offset = b2Add(offset, increment);
486486
}
@@ -501,7 +501,7 @@ public override void Step()
501501
DrawSolidPolygon(m_draw, transform2, wox.vertices.AsSpan(), wox.count, wox.radius, color2);
502502
DrawSolidPolygon(m_draw, transform2, wox.vertices.AsSpan(), wox.count, 0.0f, color2);
503503

504-
DrawManifold(ref m, transform1.p, transform2.p);
504+
DrawManifold(m, transform1.p, transform2.p);
505505

506506
offset = b2Add(offset, increment);
507507
}
@@ -528,7 +528,7 @@ public override void Step()
528528
DrawSolidPolygon(m_draw, transform2, w2.vertices.AsSpan(), w2.count, w2.radius, color2);
529529
DrawSolidPolygon(m_draw, transform2, w2.vertices.AsSpan(), w2.count, 0.0f, color2);
530530

531-
DrawManifold(ref m, transform1.p, transform2.p);
531+
DrawManifold(m, transform1.p, transform2.p);
532532

533533
offset = b2Add(offset, increment);
534534
}
@@ -551,7 +551,7 @@ public override void Step()
551551
DrawSolidPolygon(m_draw, transform1, box.vertices.AsSpan(), box.count, 0.0f, color1);
552552
DrawSolidPolygon(m_draw, transform2, tri.vertices.AsSpan(), tri.count, 0.0f, color2);
553553

554-
DrawManifold(ref m, transform1.p, transform2.p);
554+
DrawManifold(m, transform1.p, transform2.p);
555555

556556
offset = b2Add(offset, increment);
557557
}
@@ -580,7 +580,7 @@ public override void Step()
580580
DrawLine(m_draw, p2, g2, B2HexColor.b2_colorLightGray);
581581
DrawSolidCircle(m_draw, new B2Transform(circle.center, transform2.q), circle.radius, color2);
582582

583-
DrawManifold(ref m, transform1.p, transform2.p);
583+
DrawManifold(m, transform1.p, transform2.p);
584584

585585
offset.X += 2.0f * increment.X;
586586
}
@@ -637,8 +637,8 @@ public override void Step()
637637
DrawSolidPolygon(m_draw, transform2, rox.vertices.AsSpan(), rox.count, rox.radius, color2);
638638
DrawPoint(m_draw, b2TransformPoint(transform2, rox.centroid), 5.0f, B2HexColor.b2_colorGainsboro);
639639

640-
DrawManifold(ref m1, transform1.p, transform2.p);
641-
DrawManifold(ref m2, transform1.p, transform2.p);
640+
DrawManifold(m1, transform1.p, transform2.p);
641+
DrawManifold(m2, transform1.p, transform2.p);
642642

643643
offset.X += 2.0f * increment.X;
644644
}
@@ -699,8 +699,8 @@ public override void Step()
699699
DrawPoint(m_draw, b2Lerp(p1, p2, 0.5f), 5.0f, B2HexColor.b2_colorGainsboro);
700700
}
701701

702-
DrawManifold(ref m1, transform1.p, transform2.p);
703-
DrawManifold(ref m2, transform1.p, transform2.p);
702+
DrawManifold(m1, transform1.p, transform2.p);
703+
DrawManifold(m2, transform1.p, transform2.p);
704704

705705
offset.X += 2.0f * increment.X;
706706
}

src/Box2D.NET.Samples/Samples/Collisions/SmoothManifold.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ public override void MouseMove(B2Vec2 p)
223223
}
224224
}
225225

226-
void DrawManifold(ref B2Manifold manifold)
226+
void DrawManifold(in B2Manifold manifold)
227227
{
228228
for (int i = 0; i < manifold.pointCount; ++i)
229229
{
@@ -287,7 +287,7 @@ public override void Draw()
287287
{
288288
ref B2ChainSegment segment = ref m_segments[i];
289289
B2Manifold m = b2CollideChainSegmentAndCircle(ref segment, transform1, ref circle, transform2);
290-
DrawManifold(ref m);
290+
DrawManifold(m);
291291
}
292292
}
293293
else if (m_shapeType == ShapeType.e_boxShape)
@@ -301,7 +301,7 @@ public override void Draw()
301301
ref B2ChainSegment segment = ref m_segments[i];
302302
B2SimplexCache cache = new B2SimplexCache();
303303
B2Manifold m = b2CollideChainSegmentAndPolygon(ref segment, transform1, ref rox, transform2, ref cache);
304-
DrawManifold(ref m);
304+
DrawManifold(m);
305305
}
306306
}
307307
}

src/Box2D.NET/B2ContactData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public struct B2ContactData
1414
public B2ShapeId shapeIdB;
1515
public B2Manifold manifold;
1616

17-
public B2ContactData(in B2ContactId contactId, in B2ShapeId shapeIdA, in B2ShapeId shapeIdB, B2Manifold manifold)
17+
public B2ContactData(in B2ContactId contactId, in B2ShapeId shapeIdA, in B2ShapeId shapeIdB, in B2Manifold manifold)
1818
{
1919
this.contactId = contactId;
2020
this.shapeIdA = shapeIdA;

0 commit comments

Comments
 (0)