コード例 #1
0
    public void SetCollisionLayer(FixturesComponent component, Fixture fixture, int layer)
    {
        if (fixture.CollisionLayer == layer)
        {
            return;
        }

        DebugTools.Assert(component.Fixtures.ContainsKey(fixture.ID));
        fixture._collisionLayer = layer;

        if (TryComp <PhysicsComponent>(component.Owner, out var body))
        {
            _fixtures.FixtureUpdate(component, body);
        }

        _broadphaseSystem.Refilter(fixture);
    }
コード例 #2
0
    public void RemoveCollisionMask(FixturesComponent component, Fixture fixture, int mask)
    {
        if ((fixture.CollisionMask & mask) == 0x0)
        {
            return;
        }

        DebugTools.Assert(component.Fixtures.ContainsKey(fixture.ID));
        fixture._collisionMask &= ~mask;

        if (TryComp <PhysicsComponent>(component.Owner, out var body))
        {
            _fixtures.FixtureUpdate(component, body);
        }

        _broadphaseSystem.Refilter(fixture);
    }