Портирование кода C #. Это ссылка на глобальный объект? - PullRequest
1 голос
/ 19 апреля 2019

Я пытаюсь портировать библиотеку Aether.Physics2D с C # на Xojo.По сути это доработанная версия физического движка Farseer.В основном это сделано, но есть одна часть исходного кода, которую я не могу обработать (возможно, потому что C # не является моим основным языком).

In Dynamics / Contacts / Contact.cs есть несколько ссылок на то, что выглядит как глобальный объект Collision, но я не могу найти его определение.Например, в строке 405 , в switch:

case ContactType.Polygon:
  Collision.Collision.CollidePolygons(ref manifold, (PolygonShape)FixtureA.Shape, ref transformA, (PolygonShape)FixtureB.Shape, ref transformB);
  break;

Я уже перенес класс Collision и его CollidePolygons статический метод (определенный здесь )) но почему этот код не просто:

Collision.CollidePolygons(ref manifold, (PolygonShape)FixtureA.Shape, ref transformA, (PolygonShape)FixtureB.Shape, ref transformB);

Вместо:

Collision.Collision.CollidePolygons(ref manifold, (PolygonShape)FixtureA.Shape, ref transformA, (PolygonShape)FixtureB.Shape, ref transformB);

По сути, почему два Collision вызова?

Любая помощь очень ценится.

1 Ответ

3 голосов
/ 19 апреля 2019

Нет, это просто потому, что это класс с именем Collision в пространстве имен с именем Collision:

namespace tainicom.Aether.Physics2D.Collision
{
    public static class Collision
    {
    }
}

Если вы все равно переносите код, я настоятельно рекомендую вам исправить эту ошибку .

Вы также можете изменить код вызова с помощью директивы using:

using Collision = tainicom.Aether.Physics2D.Collision.Collision;
...
// Calling the method is simpler now
Collision.CollidePolygons(...);

Возможно, вы захотите указать псевдониму другое имя, фактически:

// TODO: Think of a better name to use :)
using CollisionClass = tainicom.Aether.Physics2D.Collision.Collision;
...
CollisionClass.CollidePolygons(...);

Таким образом, имя Collision вообще не меняет своего значения, но вам не нужно нигде использовать Collision.Collision.

...