public void Evaluate(int SpreadMax)
        {
            if (this.FWorld[0] != null)
            {
                List <RigidBody> allBodies = this.FWorld[0].RigidBodies;
                List <RigidBody> filteredBodyList;

                IRigidBodyFilter filter = this.FFilter[0];

                if (this.FFilter[0] != null)
                {
                    this.bodies.Clear();

                    for (int i = 0; i < allBodies.Count; i++)
                    {
                        if (filter.Filter(allBodies[i]))
                        {
                            this.bodies.Add(allBodies[i]);
                        }
                    }
                    filteredBodyList = this.bodies;
                }
                else
                {
                    filteredBodyList = allBodies;
                }

                this.FRigidBodies.SliceCount = filteredBodyList.Count;

                var outputBuffer = this.FRigidBodies.Stream.Buffer;
                for (int i = 0; i < filteredBodyList.Count; i++)
                {
                    outputBuffer[i] = filteredBodyList[i];
                }
                this.FRigidBodies.Flush(true);
            }
            else
            {
                this.FRigidBodies.SliceCount = 0;
            }
        }