Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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));
            }
        }