‫Olá e bem-vindo.
‫Nesta palestra, vamos refatorar nosso código para tornar nossa função de captura menor e mais
‫legível.
‫E vamos usar os parâmetros novamente.
‫Desta vez, vamos criar uma função que o recebe como parâmetro.
‫Vamos mergulhar e ver como fazer isso.
‫Portanto, geralmente é uma prática recomendada que as funções tentem caber em uma única tela.
‫Agora, no meu caso, minha tela é muito grande.
‫Mas ainda estamos aprendendo.
‫Então, na verdade, faz sentido ter funções ainda menores para tornar as coisas compreensíveis.
‫E acho que essa função de captura ficou muito longa, então acho que podemos dividi-la em unidades bastante funcionais.
‫O primeiro será o bit que faz a varredura e faz todo o cálculo dos vetores
‫inicial e final e gera o resultado do acerto e se acertamos ou não.
‫O booleano que diz se acertamos e o segundo bit está dentro da instrução if
‫que provavelmente podemos deixar como trabalho de agarrar, porque na verdade isso tem a ver com agarrar, certo?
‫Temos que acordar o corpo rígido.
‫Temos que pegar um componente que faça sentido ser um método chamado em uma função chamada grab.
‫Mas essa outra coisa é um pouco mais tangencial.
‫É mais um utilitário que precisamos extrair.
‫Então eu gostaria de desafiá-lo a criar esse utilitário, pegue uma bola ao seu alcance.
‫Isso é o que eu acho que deveria ser chamado, a coisa que descreve o que esse pedaço de código faz.
‫Então extraia todo esse código de varredura em uma nova função privada, como pensar sobre quais devem ser seus parâmetros e
‫seu valor de retorno.
‫Lembre-se, você tem duas saídas.
‫Então nós temos acertou e acertou o resultado.
‫Então você precisa pensar em tentar usar um parâmetro out para fazer isso funcionar.
‫Agora, se você quiser uma pequena dica, vou mostrar o que vou colocar no arquivo de cabeçalho em apenas
‫um segundo.
‫Se você não fizer isso, você pode pausar o vídeo agora mesmo.
‫Caso contrário, eu vou te dar a dica.
‫Então vamos pegar um ponto h e embaixo de onde temos que pegar
‫fisicamente, vamos ter um tipo de retorno booleano para nos dizer se algo tem, podemos pegar algo
‫pegar bem, vamos pegar um bola ao alcance, então precisamos dar a ela um parâmetro que será um parâmetro de
‫saída.
‫Portanto, será uma referência não constante ao resultado F hit por referência.
‫E comercial e, em seguida, chamaremos esse resultado de alt hit assim.
‫E então eu acho que isso não vai mudar nada em nossa função, então podemos torná-la constante também.
‫São alguns pontos de bônus se você já tinha pensado nisso.
‫Então vá em frente, pause, grave o vídeo e tente preencher essa função no arquivo C++.
‫OK.
‫Bem vindo de volta.
‫Então eu vou copiá-lo para o C++.
‫Vou colocá-lo abaixo do nosso componente de manipulação de física para corresponder à ordem que obtivemos no arquivo
‫de cabeçalho.
‫Vou adicionar o grabber U na frente.
‫Vou indentá-lo corretamente.
‫Vou adicionar em vez do ponto e vírgula, as chaves, e então vou mover o código
‫que temos em mãos.
‫Então, começando na linha 53 para mim, até 65.
‫Vou cortar tudo isso.
‫Vou substituí-lo por algo em apenas um segundo.
‫Vou colá-lo para conseguir pegar uma bola ao alcance.
‫E temos esse resultado de sucesso que criamos.
‫O que podemos fazer é definir isso, resultados de acerto iguais ao nosso resultado de acerto que temos aqui.
‫Podemos querer fazer isso apenas se acertarmos dois, para que possamos colocar essa instrução if atingiu assim e envolver essa
‫atribuição, os resultados de saída para os resultados da ocorrência dentro da instrução if e então podemos ir em
‫frente e no final da função, apenas return foi atingido assim agora existe uma otimização ou uma melhoria que pode ser
‫feita aqui porque estamos passando por referência para o canal de varredura e para o grab ball no
‫alcance.
‫Na verdade, não precisamos criar um novo resultado de acerto aqui e copiá-lo no resultado de acerto.
‫Isso é apenas desperdiçar memória.
‫O que podemos fazer é remover o resultado de acerto que estamos criando por dentro, pegar a bola ao alcance.
‫E, em vez disso, podemos apenas usar a referência que passamos para passar diretamente para a varredura single
‫por canal.
‫Então, na verdade, está passando essa referência para funções na varredura single por canal, onde ela
‫será preenchida.
‫Isso elimina a necessidade da instrução if, tornando essa função um pouco mais rápida e fácil de
‫ler.
‫E, de fato, acho que nem precisamos de uma variável para armazenar hits.
‫Podemos apenas ir em frente e voltar.
‫Será muito mais fácil retornar os resultados do canal Get World Suite.
‫Então, estamos apenas passando os resultados disso de volta para o alcance do alcance ou de quem
‫está ligando.
‫Então, falando de quem está ligando, agora precisamos subir em nossa garra.
‫Precisamos criar nosso resultado de acerto em algum lugar.
‫Temos que criar aqui.
‫Então, acerte o resultado, este é o que vamos preencher.
‫Vamos, então, criar uma variável brilhante que será o hit para definir isso igual a
‫você pegar uma bola ao alcance e passar o resultado do hit por referência que queremos
‫preencher.
‫E então, se acertarmos, vamos seguir em frente e executar o código de captura.
‫Coisas fantásticas.
‫Nós movemos algo nele para uma função para fazer essa função de captura caber em uma única tela.
‫E novamente usamos nossos parâmetros, desta vez criando uma função para nós mesmos que os usa a
‫sério.
‫Vejo vocês no próximo vídeo.