public override void Update(TimeSpan deltaTime)
        {
            float second = (float)deltaTime.TotalSeconds;

            world.StepSimulation(second);

            // on collision events
            int numManifolds = world.Dispatcher.NumManifolds;

            for (int i = 0; i < numManifolds; i++)
            {
                PersistentManifold manifold = world.Dispatcher.GetManifoldByIndexInternal(i);
                CollisionProxy     colA     = (CollisionProxy)manifold.Body0.UserObject;
                CollisionProxy     colB     = (CollisionProxy)manifold.Body1.UserObject;

                // check if both are not null
                if (colA != null && colB != null)
                {
                    // execute colA -> colB event
                    try
                    {
                        colA.ExecuteCollision(colA, colB);
                    }
                    catch (Exception e)
                    {
                        LogError(string.Format("{0} {1}", e.Message, e.StackTrace));
                    }
                    // execute colB -> colA event
                    try
                    {
                        colB.ExecuteCollision(colB, colA);
                    }
                    catch (Exception e)
                    {
                        LogError(string.Format("{0} {1}", e.Message, e.StackTrace));
                    }
                }
            }
        }