private void OnBlockAdded(IBlockModel block) { var worldPos = _viewTransform.TransformPosition(block.Position); var view = _blockViewBuilder.BuildView(block); _blockToView[block] = view; view.Position = worldPos; view.Rotation = block.Rotation; Subscribe(block); }
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; }
public IEnumerable <Vector3Int> IterateBlockSections(Vector3Int position, Quaternion rotation, BlockShapeData shapeData) { var center = _levelTransform.TransformPosition(position); foreach (var seg in shapeData.Sections) { var pos = center + rotation * seg; yield return(_levelTransform.InverseTransformPosition(pos)); } }