BEPUphysics.Space.RayCast C# (CSharp) Метод

RayCast() публичный Метод

Tests a ray against the space.
public RayCast ( BEPUutilities.Ray ray, bool>.Func filter, RayCastResult &result ) : bool
ray BEPUutilities.Ray Ray to test.
filter bool>.Func Delegate to prune out hit candidates before performing a ray cast against them. Return true from the filter to process an entry or false to ignore the entry.
result RayCastResult Hit data of the ray, if any.
Результат bool
        public bool RayCast(Ray ray, Func<BroadPhaseEntry, bool> filter, out RayCastResult result)
        {
            return RayCast(ray, float.MaxValue, filter, out result);
        }

Same methods

Space::RayCast ( BEPUutilities.Ray ray, RayCastResult &result ) : bool
Space::RayCast ( BEPUutilities.Ray ray, float maximumLength, bool>.Func filter, IList outputRayCastResults ) : bool
Space::RayCast ( BEPUutilities.Ray ray, float maximumLength, bool>.Func filter, RayCastResult &result ) : bool
Space::RayCast ( BEPUutilities.Ray ray, float maximumLength, IList outputRayCastResults ) : bool
Space::RayCast ( BEPUutilities.Ray ray, float maximumLength, RayCastResult &result ) : bool

Usage Example

Пример #1
0
        /// <summary>
        /// Determines whether there is a cliff nearby.
        /// </summary>
        /// <param name="position">Position to look from.</param>
        /// <param name="facingDirection">Direction to check in.</param>
        /// <param name="filter">Anonymous function to filter out unwanted objects.</param>
        /// <param name="space">The space to check for a cliff in.</param>
        /// <param name="distance">The distance to check at.</param>
        /// <returns>True if a cliff was detected, false otherwise.</returns>
        public static bool FindCliff(Vector3 position, Vector3 facingDirection, Func<BroadPhaseEntry, bool> filter, Space space, float distance)
        {
            // If there is a wall before the requested distance assume there is no cliff.
            Ray forwardRay = new Ray(position, new Vector3(facingDirection.X, 0, facingDirection.Z));
            RayCastResult forwardResult = new RayCastResult();
            space.RayCast(forwardRay, filter, out forwardResult);
            if ((forwardResult.HitData.Location - position).Length() < distance)
            {
                return false;
            }

            facingDirection.Normalize();
            Ray futureDownRay = new Ray(position + new Vector3(facingDirection.X * distance, 0, facingDirection.Z * distance), Vector3.Down);
            RayCastResult result = new RayCastResult();
            space.RayCast(futureDownRay, filter, out result);

            Vector3 drop = result.HitData.Location - futureDownRay.Position;
            if (drop.Y < -6.0f)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
All Usage Examples Of BEPUphysics.Space::RayCast