public void Init(int bodyCapacity, int contactCapacity, int jointCapacity, IContactListener listener)
{
// Console.WriteLine("Initializing Island");
BodyCapacity = bodyCapacity;
ContactCapacity = contactCapacity;
JointCapacity = jointCapacity;
BodyCount = 0;
ContactCount = 0;
JointCount = 0;
Listener = listener;
if (Bodies == null || BodyCapacity > Bodies.Length)
{
Bodies = new Body[BodyCapacity];
}
if (Joints == null || JointCapacity > Joints.Length)
{
Joints = new Joint[JointCapacity];
}
if (Contacts == null || ContactCapacity > Contacts.Length)
{
Contacts = new Contact[ContactCapacity];
}
// dynamic array
if (Velocities == null || BodyCapacity > Velocities.Length)
{
Velocity[] old = Velocities ?? new Velocity[0];
Velocities = new Velocity[BodyCapacity];
Array.Copy(old, 0, Velocities, 0, old.Length);
for (int i = old.Length; i < Velocities.Length; i++)
{
Velocities[i] = new Velocity();
}
}
// dynamic array
if (Positions == null || BodyCapacity > Positions.Length)
{
Position[] old = Positions ?? new Position[0];
Positions = new Position[BodyCapacity];
Array.Copy(old, 0, Positions, 0, old.Length);
for (int i = old.Length; i < Positions.Length; i++)
{
Positions[i] = new Position();
}
}
}