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;
            }
        }