public void Evaluate(int SpreadMax) { if (this.FWorld.PluginIO.IsConnected) { int contcnt = this.FWorld[0].World.Dispatcher.NumManifolds; this.FBody1.SliceCount = contcnt; this.FBody2.SliceCount = contcnt; this.FContactPoints.SliceCount = contcnt; for (int i = 0; i < contcnt; i++) { PersistentManifold pm = this.FWorld[0].World.Dispatcher.GetManifoldByIndexInternal(i); RigidBody b1 = RigidBody.Upcast(pm.Body1()); RigidBody b2 = RigidBody.Upcast(pm.Body2()); this.FBody1[i] = b1; this.FBody2[i] = b2; this.FContactPoints[i].SliceCount = pm.GetNumContacts(); for (int j = 0; j < pm.GetNumContacts(); j++) { this.FContactPoints[i][j] = pm.GetContactPoint(j); } } } else { FBody1.SliceCount = 0; FBody2.SliceCount = 0; } }