protected override void InternalFindNearest(IRow row) { var keyRow = EnsurePartialKeyRow(row); try { ClearBuffer(); if (keyRow != null) { // TODO: Expand this to work with multiple column searches var rangeBound = new RangeBound { Bound = keyRow[0], Inclusive = true }; var range = CreateRange(Direction, rangeBound, null); SourceFetch(false, Direction, range); } } finally { if (keyRow != null && !object.ReferenceEquals(row, keyRow)) { keyRow.Dispose(); } } }
protected override bool InternalFindKey(IRow row, bool forward) { var keyRow = EnsureKeyRow(row); try { // TODO: Expand this to work with multiple column searches var rangeBound = new RangeBound { Bound = keyRow[0], Inclusive = true }; var direction = (Direction == ScanDirection.Forward && forward || Direction == ScanDirection.Backward && !forward) ? ScanDirection.Forward : ScanDirection.Backward; var range = CreateRange(direction, rangeBound, null); var set = _db.GetRange(TableNodeColumns(), range, MaxLimit); if (set.Data.Count > 0) { ProcessFetchData(set, false, direction); return(true); } return(false); } finally { if (!object.ReferenceEquals(row, keyRow)) { keyRow.Dispose(); } } }
public List <Vector2> uniformDistance(RangeBound range, Vector2 center, float totalRotation = 0) { angles.Clear(); List <Vector2> positions = new List <Vector2>(); int n = Random.Range(range.min, range.max); float partAngles = (2 * Mathf.PI) / n; for (int i = 0; i < n; i++) { float rotation = Random.Range(-20 * Mathf.Deg2Rad, 20 * Mathf.Deg2Rad); float angle = (partAngles * i) + rotation + totalRotation; angles.Add(angle); float x = Mathf.Cos(angle) * (radius_x); float y = Mathf.Sin(angle) * (radius_y); Vector2 pos = new Vector2(x, y) * Random.Range(minBound, maxBound); positions.Add(pos + center); } return(positions); }