private void UpdatePiece(Entity piece) { var wrapper = GetPieceWrapper(piece.creationIndex); piece.ReplaceInScene(wrapper.gameObject); var renderer = wrapper.Volume; var b = piece.pieceBounds; var data = new VoxelData(16, 16, 16); var red = new Color32(255, 55, 55, 255); data.Clear(); for (int i = 0; i < piece.piece.Dots.Length; i++) { var d = piece.piece.Dots[i]; var npos = d.Position + Vector3i.one * 8; // var npos = d.Position + b.Offset + Vector3i.one * 8; data.SetVoxel(npos.x, npos.y, npos.z, red); } renderer.Data = data; renderer.Data.CommitChanges(); var offset = new Vector3(-b.Offset.x, -b.Offset.y, -b.Offset.z); var colSize = new Vector3(b.Size.x + 1, b.Size.y + 1, b.Size.z + 1); var n1 = colSize - Vector3.one; var n2 = n1 * 0.5f; var n3 = n2 + offset; piece.ReplaceRotation(Vector3.zero); // wrapper.UpdateCollision(colSize, n3); }