public override Sprite GetApplicableSprite(Vector3Int position, ITilemap tilemap) { int hash = position.GetHashCode(); OctoMask mask = tilemap.GetOctoMask(position, t => t.EqualsEX(this)); if (randomize_with_position) { hash = hash.AbsorbObjectHash(tilemap.GetComponent <Transform>().GetSpacarPosition()); } return(cache.Fetch(mask) .PickACongruent(hash, t => t.GetWeight()) .IfNotNull(t => t.GetSprite())); }