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; }
private void OnBlockRemoved(IBlockModel block) { var view = _blockToView[block]; _rotationAnimator.StopAnimation(view); _movementAnimator.StopAnimation(view); view.Dispose(); _blockToView.Remove(block); Unsubscribe(block); }