Beispiel #1
0
        private float GetFixedEdgeClearingRadius(Vector2 position, Vector2 direction, int layer_mask, bool include_nodes)
        {
            if (include_nodes)
            {
                layer_mask |= node_layer;
            }

            return(Physics2DExtensions.FindLargestFixedEdgeCircleFit(position, direction, max_clearing_radius, layer_mask, 0.01f, 64));
        }
Beispiel #2
0
        private void UpdatePositionInitial()
        {
            initial_press_position = current_press_position;

            world_press_target =
                Physics2DExtensions.OverlapCircleAll(initial_press_position, world_press_system.GetPressRadius(), world_press_system.GetTargetLayers())
                .Narrow(c => c.HasComponentUpward <IWorldPressTarget>())
                .Convert(c => c.gameObject)
                .FindRolling(
                    new RollingCriteria <GameObject>(RollingCriteriaTarget.Larger, g => g.GetSortingLayer().IfNotNull(l => l.GetValue())),
                    new RollingCriteria <GameObject>(RollingCriteriaTarget.Smaller, g => g.GetPlanarSize().GetMinComponent())
                    )
                .IfNotNull(z => z.GetComponentUpward <IWorldPressTarget>());

            touch_point = CreateRelativePointFromWorldPoint(GetCurrentPressPosition());
            world_press_target.IfNotNull(t => t.Touch(this));

            timer.Restart();
        }
Beispiel #3
0
 public IEnumerable <PathNode2D> GetPathNodes(Vector2 position, float radius)
 {
     return(Physics2DExtensions.OverlapCircleAll(position, radius + connection_fudge_distance, node_layer)
            .ConvertComponent <Collider2D, PathNode2D>());
 }
Beispiel #4
0
 static public IEnumerable <RaycastHit2D> CircleCastGetAllHits(this Ray2 item, float radius, float max_distance = float.PositiveInfinity, int layer_mask = IntBits.ALL_BITS)
 {
     return(Physics2DExtensions.CircleCastAll(item.origin, item.direction, radius, max_distance, layer_mask));
 }
Beispiel #5
0
 static public float FindLargestFixedEdgeCircleCast(this Ray2 item, float distance, float maximum, int layer_mask = IntBits.ALL_BITS, float margin = Mathq.DEFAULT_SOLVE_MARGIN, int max_iterations = Mathq.DEFAULT_SOLVE_MAX_NUMBER_ITERATIONS)
 {
     return(Physics2DExtensions.FindLargestFixedEdgeCircleCast(item.origin, item.direction, distance, maximum, layer_mask, margin, max_iterations));
 }