コード例 #1
0
        public void DebugDraw()
        {
            if (_space == null)
            {
                return;
            }

            DrawString(15, 15, string.Format("Step: {0}", _space.stamp));
            DrawString(15, 50, string.Format("Bodies : {0}/{1}", _space.dynamicBodies.Count + _space.staticBodies.Count, _space.dynamicBodies.Capacity));
            DrawString(15, 80, string.Format("Arbiters: {0}/{1}", _space.arbiters.Count, _space.arbiters.Capacity));

            if (Flags.HasFlag(PhysicsDrawFlags.All) || Flags.HasFlag(PhysicsDrawFlags.BB) || Flags.HasFlag(PhysicsDrawFlags.Shapes))
            {
                _space.EachShape(DrawShape);
            }

            if (Flags.HasFlag(PhysicsDrawFlags.Joints) || Flags.HasFlag(PhysicsDrawFlags.All))
            {
                _space.EachConstraint(DrawConstraint);
            }

            var contacts = 0;

            if (Flags.HasFlag(PhysicsDrawFlags.All) || Flags.HasFlag(PhysicsDrawFlags.ContactPoints))
            {
                for (var i = 0; i < _space.arbiters.Count; i++)
                {
                    for (int j = 0; j < _space.arbiters[i].contacts.Count; j++)
                    {
                        Draw(_space.arbiters[i].contacts[j]);
                    }
                    contacts += _space.arbiters[i].contacts.Count;
                }
            }

            DrawString(15, 110, "Contact points: " + contacts);
            DrawString(15, 140, string.Format("Nodes:{1} Leaf:{0} Pairs:{2}", cp.numLeaves, cp.numNodes, cp.numPairs));

            base.Draw();
            base.Clear();
        }