@@ -36,7 +36,7 @@ public static class B2ConstraintGraphs
3636 public const int B2_DYNAMIC_COLOR_COUNT = ( B2_GRAPH_COLOR_COUNT - 4 ) ;
3737
3838
39- public static void b2CreateGraph ( ref B2ConstraintGraph graph , int bodyCapacity )
39+ public static void b2CreateGraph ( ref B2ConstraintGraph graph , in B2Capacity capacity )
4040 {
4141 B2_ASSERT ( B2_GRAPH_COLOR_COUNT >= 2 , "must have at least two constraint graph colors" ) ;
4242 B2_ASSERT ( B2_OVERFLOW_INDEX == B2_GRAPH_COLOR_COUNT - 1 , "bad over flow index" ) ;
@@ -45,7 +45,7 @@ public static void b2CreateGraph(ref B2ConstraintGraph graph, int bodyCapacity)
4545 graph = new B2ConstraintGraph ( ) ;
4646 graph . colors = new B2GraphColor [ B2_GRAPH_COLOR_COUNT ] ;
4747
48- bodyCapacity = b2MaxInt ( bodyCapacity , 8 ) ;
48+ int bodyCapacity = b2MaxInt ( capacity . staticBodyCount + capacity . dynamicBodyCount , 16 ) ;
4949
5050 // Initialize graph color bit set.
5151 // No bitset for overflow color.
@@ -54,6 +54,7 @@ public static void b2CreateGraph(ref B2ConstraintGraph graph, int bodyCapacity)
5454 ref B2GraphColor color = ref graph . colors [ i ] ;
5555 color . bodySet = b2CreateBitSet ( bodyCapacity ) ;
5656 color . contactSims = b2Array_Create < B2ContactSim > ( ) ;
57+ b2Array_Reserve ( ref color . contactSims , 16 ) ;
5758 color . jointSims = b2Array_Create < B2JointSim > ( ) ;
5859
5960 b2SetBitCountAndClear ( ref color . bodySet , bodyCapacity ) ;
@@ -69,6 +70,14 @@ public static void b2CreateGraph(ref B2ConstraintGraph graph, int bodyCapacity)
6970 }
7071 }
7172
73+ public static void b2CreateGraph ( ref B2ConstraintGraph graph , int bodyCapacity )
74+ {
75+ b2CreateGraph ( ref graph , new B2Capacity
76+ {
77+ staticBodyCount = bodyCapacity ,
78+ } ) ;
79+ }
80+
7281 public static void b2DestroyGraph ( ref B2ConstraintGraph graph )
7382 {
7483 for ( int i = 0 ; i < B2_GRAPH_COLOR_COUNT ; ++ i )
@@ -354,10 +363,17 @@ internal static void b2RemoveJointFromGraph(B2World world, int bodyIdA, int body
354363
355364 internal static readonly B2HexColor [ ] b2_graphColors = new B2HexColor [ ]
356365 {
357- B2HexColor . b2_colorRed , B2HexColor . b2_colorOrange , B2HexColor . b2_colorYellow , B2HexColor . b2_colorGreen , B2HexColor . b2_colorCyan , B2HexColor . b2_colorBlue ,
358- B2HexColor . b2_colorViolet , B2HexColor . b2_colorPink , B2HexColor . b2_colorChocolate , B2HexColor . b2_colorGoldenRod , B2HexColor . b2_colorCoral , B2HexColor . b2_colorRosyBrown ,
359- B2HexColor . b2_colorAqua , B2HexColor . b2_colorPeru , B2HexColor . b2_colorLime , B2HexColor . b2_colorGold , B2HexColor . b2_colorPlum , B2HexColor . b2_colorSnow ,
360- B2HexColor . b2_colorTeal , B2HexColor . b2_colorKhaki , B2HexColor . b2_colorSalmon , B2HexColor . b2_colorPeachPuff , B2HexColor . b2_colorHoneyDew , B2HexColor . b2_colorBlack ,
366+ B2HexColor . b2_colorRed , B2HexColor . b2_colorOrange , B2HexColor . b2_colorYellow , B2HexColor . b2_colorLimeGreen , B2HexColor . b2_colorSpringGreen ,
367+ B2HexColor . b2_colorAqua , B2HexColor . b2_colorDodgerBlue , B2HexColor . b2_colorBlueViolet , B2HexColor . b2_colorMagenta , B2HexColor . b2_colorDeepPink ,
368+ B2HexColor . b2_colorCrimson , B2HexColor . b2_colorCoral , B2HexColor . b2_colorGold , B2HexColor . b2_colorGreenYellow , B2HexColor . b2_colorMediumSeaGreen ,
369+ B2HexColor . b2_colorTurquoise , B2HexColor . b2_colorDeepSkyBlue , B2HexColor . b2_colorCornflowerBlue , B2HexColor . b2_colorMediumSlateBlue , B2HexColor . b2_colorMediumOrchid ,
370+ B2HexColor . b2_colorHotPink , B2HexColor . b2_colorTomato , B2HexColor . b2_colorKhaki , B2HexColor . b2_colorSilver ,
361371 } ;
372+
373+ public static B2HexColor b2GetGraphColor ( int index )
374+ {
375+ B2_ASSERT ( 0 <= index && index < B2_GRAPH_COLOR_COUNT ) ;
376+ return b2_graphColors [ index ] ;
377+ }
362378 }
363- }
379+ }
0 commit comments