private void OnBlockAdded(IBlockModel block) { var levelPos = ComputeGhostPosition(block); var worldPos = _levelViewTransform.TransformPosition(levelPos); _rotationAnimator.StopAnimation(_ghostBlockView); _movementAnimator.StopAnimation(_ghostBlockView); _ghostBlockView?.Dispose(); _ghostBlockView = _blockViewBuilder.BuildView(block); _ghostBlockView.SetMaterial(_ghostMaterial); _ghostBlockView.Position = worldPos; _ghostBlockView.Rotation = block.Rotation; block.OnPositionChanged += UpdateGhostPositionRotation; block.OnRotationChanged += UpdateGhostPositionRotation; }