private void Start() { if (_blocks.Count == 0) { Assert.IsTrue(BlockPosition.FromVector(transform.position, out BlockPosition position), "Failed to get a BlockPosition from the EditableStructure position."); Assert.IsTrue(AddBlock(position, (MultiBlockInfo)BlockFactory.GetInfo(BlockType.Mainframe), Rotation.GetByte(BlockSides.Top, 0)), "Failed to place the Mainframe."); } }
// ReSharper disable once AnnotateCanBeNullParameter private bool GetSelectedBlock(out GameObject block, out BlockPosition position, out byte rotation) { block = null; position = null; rotation = 0; if (!Physics.Raycast(_camera.transform.position, _camera.transform.forward, out RaycastHit hit) || !BlockPosition.FromVector(hit.point + hit.normal / 2, out position)) { return(false); } rotation = Rotation.GetByte(BlockSide.FromNormal(hit.normal), _facingVariant); block = hit.transform.gameObject; return(true); }