Universe.Physics.OpenDynamicsEngine.ODEPhysicsScene.CheckDupe C# (CSharp) Method

CheckDupe() private method

private CheckDupe ( d contactGeom, int atype ) : bool
contactGeom d
atype int
return bool
        bool CheckDupe(d.ContactGeom contactGeom, int atype)
        {
            bool result = false;

            ActorTypes at = (ActorTypes) atype;
            foreach (d.ContactGeom contact in _perloopContact)
            {
                //if ((contact.g1 == contactGeom.g1 && contact.g2 == contactGeom.g2))
                //{
                // || (contact.g2 == contactGeom.g1 && contact.g1 == contactGeom.g2)
                if (at == ActorTypes.Agent)
                {
                    if (((Math.Abs(contactGeom.normal.X - contact.normal.X) < 1.026f) &&
                         (Math.Abs(contactGeom.normal.Y - contact.normal.Y) < 0.303f) &&
                         (Math.Abs(contactGeom.normal.Z - contact.normal.Z) < 0.065f)))
                    {
                        if (Math.Abs(contact.depth - contactGeom.depth) < 0.052f)
                        {
                            //contactGeom.depth *= .00005f;
                            //MainConsole.Instance.DebugFormat("[Collsion]: Depth {0}", Math.Abs(contact.depth - contactGeom.depth));
                            // MainConsole.Instance.DebugFormat("[Collision]: <{0},{1},{2}>", Math.Abs(contactGeom.normal.X - contact.normal.X), Math.Abs(contactGeom.normal.Y - contact.normal.Y), Math.Abs(contactGeom.normal.Z - contact.normal.Z));
                            result = true;
                            break;
                        }
                    }
                }
                else if (at == ActorTypes.Prim)
                {
                    //d.AABB aabb1 = new d.AABB();
                    //d.AABB aabb2 = new d.AABB();

                    //d.GeomGetAABB(contactGeom.g2, out aabb2);
                    //d.GeomGetAABB(contactGeom.g1, out aabb1);
                    //aabb1.
                    if (((Math.Abs(contactGeom.normal.X - contact.normal.X) < 1.026f) &&
                         (Math.Abs(contactGeom.normal.Y - contact.normal.Y) < 0.303f) &&
                         (Math.Abs(contactGeom.normal.Z - contact.normal.Z) < 0.065f)))
                    {
                        if (contactGeom.normal.X == contact.normal.X && contactGeom.normal.Y == contact.normal.Y &&
                            contactGeom.normal.Z == contact.normal.Z)
                        {
                            if (Math.Abs(contact.depth - contactGeom.depth) < 0.272f)
                            {
                                result = true;
                                break;
                            }
                        }
                    }
                }
            }

            return result;
        }