Пример #1
0
        public TraceResult Trace(JVector origin, JVector direction, TraceOptions options)
        {
            if (direction.Length() < 0.1f)
            {
                return(null);
            }

            RaycastCallback callback = (b, n, f) =>
            {
                if ((b.IsStatic == true) && (options.HasFlag(TraceOptions.IgnoreStatic)))
                {
                    return(false);
                }
                if ((b.IsStatic == false) && (options.HasFlag(TraceOptions.IgnoreDynamic)))
                {
                    return(false);
                }
                return(true);
            };
            RigidBody body;
            JVector   normal;
            float     friction;

            if (this.CollisionSystem.Raycast(
                    origin,
                    direction,
                    callback,
                    out body,
                    out normal,
                    out friction))
            {
                return(new TraceResult(body, friction, origin + friction * direction, normal));
            }
            return(null);
        }
Пример #2
0
        public TraceResult Trace(JVector origin, JVector direction, TraceOptions options)
        {
            if (direction.Length() < 0.1f)
                return null;

            RaycastCallback callback = (b, n, f) =>
            {
                if ((b.IsStatic == true) && (options.HasFlag(TraceOptions.IgnoreStatic)))
                    return false;
                if ((b.IsStatic == false) && (options.HasFlag(TraceOptions.IgnoreDynamic)))
                    return false;
                return true;
            };
            RigidBody body;
            JVector normal;
            float friction;

            if (this.CollisionSystem.Raycast(
                origin,
                direction,
                callback,
                out body,
                out normal,
                out friction))
            {
                return new TraceResult(body, friction, origin + friction * direction, normal);
            }
            return null;
        }