Exemple #1
0
        public void OnCollision(DynamicScene.Manifold manifold)
        {
            var aIsNull = manifold.A.Entity == null;

            if (aIsNull || manifold.B.Entity == null)
            {
                StaticCollisionInfo info;
                info               = default(StaticCollisionInfo);
                info.Entity        = (Entity *)(aIsNull ? manifold.B.Entity : manifold.A.Entity);
                info.StaticData    = aIsNull ? manifold.A.StaticData : manifold.B.StaticData;
                info.ContactNormal = manifold.ContactNormal;
                info.ContactPoint  = manifold.GetContactPoint(0);
                info.Penetration   = manifold.Penetration;
                _f.Signals.OnCollisionStatic(info);
                var typesHash = (Int32)info.Entity->Type;
                OnCollisionInternal(info, typesHash);
            }
            else
            {
                DynamicCollisionInfo info;
                info.EntityA       = (Entity *)manifold.A.Entity;
                info.EntityB       = (Entity *)manifold.B.Entity;
                info.ContactNormal = manifold.ContactNormal;
                info.ContactPoint  = manifold.GetContactPoint(0);
                info.Penetration   = manifold.Penetration;
                _f.Signals.OnCollisionDynamic(info);
                var typesHash = (Int32)info.EntityA->Type | ((Int32)info.EntityB->Type << 16);
                OnCollisionInternal(info, typesHash);
            }
        }
Exemple #2
0
        public void OnTrigger(DynamicScene.Manifold manifold)
        {
            var aIsNull = manifold.A.Entity == null;

            if (aIsNull || manifold.B.Entity == null)
            {
                StaticCollisionInfo info;
                info            = default(StaticCollisionInfo);
                info.Entity     = (Entity *)(aIsNull ? manifold.B.Entity : manifold.A.Entity);
                info.StaticData = aIsNull ? manifold.A.StaticData : manifold.B.StaticData;
                _f.Signals.OnTriggerStatic(info);
                var typesHash = (Int32)info.Entity->Type;
                OnTriggerInternal(info, typesHash);
            }
            else
            {
                DynamicCollisionInfo info = default(DynamicCollisionInfo);
                info.EntityA = (Entity *)manifold.A.Entity;
                info.EntityB = (Entity *)manifold.B.Entity;
                _f.Signals.OnTriggerDynamic(info);
                var typesHash = (Int32)info.EntityA->Type | ((Int32)info.EntityB->Type << 16);
                OnTriggerInternal(info, typesHash);
            }
        }
Exemple #3
0
 public Boolean Filter(FrameBase frame, DynamicScene.Manifold manifold)
 {
     return(true);
 }