示例#1
0
        public void Create(b2Body body, b2FixtureDef def)
        {
            m_userData    = def.userData;
            m_friction    = def.friction;
            m_restitution = def.restitution;

            m_body = body;
            Next   = null;

            m_filter = def.filter;

            m_isSensor = def.isSensor;

            m_shape = def.shape.Clone();

            // Reserve proxy space
            int childCount = m_shape.GetChildCount();

            for (int i = 0; i < childCount; ++i)
            {
                b2FixtureProxy proxy = new b2FixtureProxy();
                proxy.fixture = null;
                proxy.proxyId = b2BroadPhase.e_nullProxy;
                m_proxies.Add(proxy);
            }
            m_proxyCount = 0;

            m_density = def.density;
        }
示例#2
0
        public void Create(b2Body body, b2FixtureDef def)
        {
            UserData    = def.userData;
            Friction    = def.friction;
            Restitution = def.restitution;

            Body = body;
            Next = null;

            m_filter = def.filter;

            m_isSensor = def.isSensor;

            Shape = def.shape.Clone();

            // Reserve proxy space
            int childCount = Shape.GetChildCount();

            m_proxies = b2ArrayPool <b2FixtureProxy> .Create(childCount, true);

            for (int i = 0; i < childCount; ++i)
            {
                m_proxies[i].fixture = null;
                m_proxies[i].proxyId = b2BroadPhase.e_nullProxy;
            }
            m_proxyCount = 0;

            Density = def.density;
        }
        /// Return true if contact calculations should be performed between these two shapes.
        /// @warning for performance reasons this is only called when the AABBs begin to overlap.
        public virtual bool ShouldCollide(b2Fixture fixtureA, b2Fixture fixtureB)
        {
            b2Filter filterA = fixtureA.Filter;
            b2Filter filterB = fixtureB.Filter;

            if (filterA.groupIndex == filterB.groupIndex && filterA.groupIndex != 0)
            {
                return(filterA.groupIndex > 0);
            }

            bool collide = (filterA.maskBits & filterB.categoryBits) != 0 && (filterA.categoryBits & filterB.maskBits) != 0;

            return(collide);
        }
示例#4
0
        public virtual void SetFilterData(b2Filter filter)
        {
            m_filter = filter;

            Refilter();
        }
示例#5
0
        public virtual void SetFilterData(b2Filter filter)
        {
            m_filter = filter;

            Refilter();
        }
示例#6
0
        public void Create(b2Body body, b2FixtureDef def)
        {
            m_userData = def.userData;
            m_friction = def.friction;
            m_restitution = def.restitution;

            m_body = body;
            Next = null;

            m_filter = def.filter;

            m_isSensor = def.isSensor;

            m_shape = def.shape.Clone();

            // Reserve proxy space
            int childCount = m_shape.GetChildCount();
            for (int i = 0; i < childCount; ++i)
            {
                b2FixtureProxy proxy = new b2FixtureProxy();
                proxy.fixture = null;
                proxy.proxyId = b2BroadPhase.e_nullProxy;
                m_proxies.Add(proxy);
            }
            m_proxyCount = 0;

            m_density = def.density;
        }
示例#7
0
        public void Create(b2Body body, b2FixtureDef def)
        {
            UserData = def.userData;
            Friction = def.friction;
            Restitution = def.restitution;

            Body = body;
            Next = null;

            m_filter = def.filter;

            m_isSensor = def.isSensor;

            Shape = def.shape.Clone();

            // Reserve proxy space
            int childCount = Shape.GetChildCount();
            m_proxies = b2ArrayPool<b2FixtureProxy>.Create(childCount, true);
            for (int i = 0; i < childCount; ++i)
            {
                m_proxies[i].fixture = null;
                m_proxies[i].proxyId = b2BroadPhase.e_nullProxy;
            }
            m_proxyCount = 0;

            Density = def.density;
        }