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)); }
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(); }
public IEnumerable <PathNode2D> GetPathNodes(Vector2 position, float radius) { return(Physics2DExtensions.OverlapCircleAll(position, radius + connection_fudge_distance, node_layer) .ConvertComponent <Collider2D, PathNode2D>()); }
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)); }
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)); }