Пример #1
0
        /// <inheritdoc/>
        public override IEnumerable <Pair <T> > GetOverlaps(Vector3F scale, Pose pose, ISpatialPartition <T> otherPartition, Vector3F otherScale, Pose otherPose)
        {
            UpdateInternal();
            var overlapsStatic  = StaticPartition.GetOverlaps(scale, pose, otherPartition, otherScale, otherPose);
            var overlapsDynamic = DynamicPartition.GetOverlaps(scale, pose, otherPartition, otherScale, otherPose);

#if !POOL_ENUMERABLES
            return(overlapsStatic.Concat(overlapsDynamic));
#else
            return(ConcatWork <Pair <T> > .Create(overlapsStatic, overlapsDynamic));
#endif
        }
        /// <inheritdoc/>
        public override IEnumerable <T> GetOverlaps(Ray ray)
        {
            UpdateInternal();
            var overlapsStatic  = StaticPartition.GetOverlaps(ray);
            var overlapsDynamic = DynamicPartition.GetOverlaps(ray);

#if !POOL_ENUMERABLES
            return(overlapsStatic.Concat(overlapsDynamic));
#else
            return(ConcatWork <T> .Create(overlapsStatic, overlapsDynamic));
#endif
        }
Пример #3
0
        /// <inheritdoc/>
        public override IEnumerable <Pair <T> > GetOverlaps(ISpatialPartition <T> otherPartition)
        {
            UpdateInternal();
            var overlapsStatic  = StaticPartition.GetOverlaps(otherPartition);
            var overlapsDynamic = DynamicPartition.GetOverlaps(otherPartition);

#if !POOL_ENUMERABLES
            return(overlapsStatic.Concat(overlapsDynamic));
#else
            return(ConcatWork <Pair <T> > .Create(overlapsStatic, overlapsDynamic));
#endif
        }
    /// <inheritdoc/>
    public override IEnumerable<T> GetOverlaps(Ray ray)
    {
      UpdateInternal();
      var overlapsStatic = StaticPartition.GetOverlaps(ray);
      var overlapsDynamic = DynamicPartition.GetOverlaps(ray);


      return overlapsStatic.Concat(overlapsDynamic);
#else
      return ConcatWork<T>.Create(overlapsStatic, overlapsDynamic);

    }
Пример #5
0
    /// <inheritdoc/>
    public override IEnumerable<Pair<T>> GetOverlaps(Vector3 scale, Pose pose, ISpatialPartition<T> otherPartition, Vector3 otherScale, Pose otherPose)
    {
      UpdateInternal();
      var overlapsStatic = StaticPartition.GetOverlaps(scale, pose, otherPartition, otherScale, otherPose);
      var overlapsDynamic = DynamicPartition.GetOverlaps(scale, pose, otherPartition, otherScale, otherPose);


      return overlapsStatic.Concat(overlapsDynamic);
#else
      return ConcatWork<Pair<T>>.Create(overlapsStatic, overlapsDynamic);

    }
Пример #6
0
    /// <inheritdoc/>
    public override IEnumerable<Pair<T>> GetOverlaps(ISpatialPartition<T> otherPartition)
    {
      UpdateInternal();
      var overlapsStatic = StaticPartition.GetOverlaps(otherPartition);
      var overlapsDynamic = DynamicPartition.GetOverlaps(otherPartition);


      return overlapsStatic.Concat(overlapsDynamic);
#else
      return ConcatWork<Pair<T>>.Create(overlapsStatic, overlapsDynamic);

    }
Пример #7
0
        /// <summary>
        /// Recomputes the self-overlaps.
        /// </summary>
        private void UpdateSelfOverlaps()
        {
            if (!EnableSelfOverlaps)
            {
                return;
            }

            SelfOverlaps.Clear();

            // Get intra-overlaps from static partition.
            AddSelfOverlaps(StaticPartition.GetOverlaps());

            // Get intra-overlaps from dynamic partition.
            AddSelfOverlaps(DynamicPartition.GetOverlaps());

            // Get inter-overlaps between static and dynamic partition.
            AddSelfOverlaps(StaticPartition.GetOverlaps(DynamicPartition));
        }
Пример #8
0
        private void UpdateBroadPhase()
        {
            if (_broadPhase == null)
            {
                return;
            }

            // Mark intra-overlaps of static partition.
            AddOrMarkAsUsed(StaticPartition.GetOverlaps());

            // Mark intra-overlaps of dynamic partition.
            AddOrMarkAsUsed(DynamicPartition.GetOverlaps());

            // Mark inter-overlaps between static and dynamic partition.
            AddOrMarkAsUsed(StaticPartition.GetOverlaps(DynamicPartition));

            // Remove all unused candidate pairs from broad phase.
            _broadPhase.RemoveUnused();
        }