CyberKeyGeometry.cached constructor

CyberKeyGeometry.cached(
  1. Size size, {
  2. required double chamfer,
  3. required double edgeWidth,
  4. required double plunge,
})

The cached geometry for a key box of size (built on a miss).

Implementation

factory CyberKeyGeometry.cached(
  Size size, {
  required double chamfer,
  required double edgeWidth,
  required double plunge,
}) {
  final key = (size, chamfer, edgeWidth, plunge);
  final hit = _cache.remove(key);
  if (hit != null) return _cache[key] = hit;
  builds++;
  final g = _cache[key] = CyberKeyGeometry.build(
    size,
    chamfer: chamfer,
    edgeWidth: edgeWidth,
    plunge: plunge,
  );
  while (_cache.length > capacity) {
    _cache.remove(_cache.keys.first);
  }
  return g;
}