Esempio n. 1
0
        public bool CollidesWith(ICollider other) //Check with what this is coliding with
        {
            ICollider collider = other.GetCollider();

            switch (collider)
            {
            case Segment seg:
                return(CollidesWith(seg as Segment));

            case OBB o:
                return(CollidesWith(o as OBB));

            case Sphere s:
                return(CollidesWith(s as Sphere));

            default:
                return(false);
            }
        }
        /// <summary>
        /// Devuelve si hay o no colisión entre dos nodos del grafo de escena 
        /// que tengan un collider asociado
        /// </summary>
        /// <param name="vector">vector</param>
        /// <returns>longitud del vector</returns>
        public static bool Collision(ICollider lhs, ICollider rhs)
        {
            Collider colliderL = lhs.GetCollider();
            Collider colliderR = rhs.GetCollider();

            // los dos collider son rectangulos
            if (colliderL.IsCircle == false && colliderR.IsCircle ==  false)
                return ((ColliderRect)colliderL).Intersects(((ColliderRect)colliderR));
            // TODO: interseccion entre otros colliders
            //else if (colliderL.IsCircle && colliderR.IsCircle)    // los dos son círculos
            //    return colliderL.Circle.Intersects(colliderL.Circle);
            //else if (!colliderL.IsCircle && colliderR.IsCircle)
            //    return colliderR.Circle.Intersects(colliderL.Rectangle);
            //else
            //    return colliderL.Circle.Intersects(colliderR.Rectangle);

            return false;

        }