private static bool DetectCollision(ref BoundingBox agentBB, Obstacle obst) { var objTrans = obst.Entity.Transform; objTrans.UpdateWorldMatrix(); var objWorldPos = objTrans.WorldMatrix.TranslationVector; foreach (var boundingBox in obst.BoundingBoxes) { var minVec = objWorldPos + boundingBox.Minimum; var maxVec = objWorldPos + boundingBox.Maximum; var testBB = new BoundingBox(minVec, maxVec); if (CollisionHelper.BoxContainsBox(ref testBB, ref agentBB) != ContainmentType.Disjoint) { return(true); } } return(false); }
/* This implentation is wrong * /// <summary> * /// Determines whether the current objects contains a triangle. * /// </summary> * /// <param name="vertex1">The first vertex of the triangle to test.</param> * /// <param name="vertex2">The second vertex of the triagnle to test.</param> * /// <param name="vertex3">The third vertex of the triangle to test.</param> * /// <returns>The type of containment the two objects have.</returns> * public ContainmentType Contains(ref Vector3 vertex1, ref Vector3 vertex2, ref Vector3 vertex3) * { * return Collision.BoxContainsTriangle(ref this, ref vertex1, ref vertex2, ref vertex3); * } */ /// <summary> /// Determines whether the current objects contains a <see cref="Stride.Core.Mathematics.BoundingBoxInt3"/>. /// </summary> /// <param name="box">The box to test.</param> /// <returns>The type of containment the two objects have.</returns> public ContainmentType Contains(ref BoundingBoxInt3 box) { return(CollisionHelper.BoxContainsBox(ref this, ref box)); }