public Mesh GetShapeMesh(BlockShapeData shapeData) { if (!_shapes.TryGetValue(shapeData.ShapeType, out var mesh)) { var textureId = _shapeTextureProvider.GetTexture(shapeData); mesh = _meshBuilder.BuildMesh(shapeData.Sections, textureId); _shapes[shapeData.ShapeType] = mesh; } return(mesh); }
public void JoinBlock() { if (_blockStorage.Blocks.Count <= 0) { return; } var block = _blockStorage.Blocks[0]; var texture = _shapeTextureProvider.GetTexture(block.Shape); foreach (var pos in _shapeUtil.IterateBlockSections(block)) { _levelModel.AddBlock(pos, texture); } _audioController.ReportEvent(EAudioEventType.BlockJoined); _blockStorage.RemoveBlock(block); }