Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /* 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));
        }