Branch é uma expressão de controle de fluxo de tempo que executa outras expressões e finaliza imediatamente continuando o fluxo com as expressões existentes após o Branch. Se o contexto async (como OnBegin) terminar, as expressões iniciadas pelo Branch são canceladas automaticamente caso ainda estejam ativas.
O Branch pode ser usado para tarefas paralelas que não afetam a lógica principal do jogo como animações de fundo de cenário.
Vamos criar um exemplo simples para demonstrar o uso do Branch. Usaremos uma função que rotaciona um creative_prop continuamente. Usaremos a função Sleep para manter o contexto async ativo por alguns segundos e poder visualizar a rotação iniciada pelo Branch. Quando o tempo expirar, a função OnBegin vai encerrar e a rotação irá parar automaticamente.
Em qualquer projeto UEFN, abra o Verse Explorer, clique com o botão-direito no nome do projeto e escolha a opção Add new Verse file to project.
Em Device Name coloque branch_device e clique no botão Create Empty.
Copie o código Verse abaixo para o dispositivo branch_device:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath}
branch_device := class(creative_device):
@editable
PropToRotate : creative_prop = creative_prop{}
OnBegin<override>()<suspends>:void=
branch:
RotateProp(PropToRotate)
Sleep(10.0)
Print("The RotateProp is canceled when the OnBegin completes")
RotateProp(Prop : creative_prop)<suspends>:void=
loop:
PropTransform := Prop.GetTransform()
PropLocation := PropTransform.Translation
PropRotation := PropTransform.Rotation
NewRotation := PropRotation.ApplyYaw(180.0)
Prop.MoveTo(PropLocation, NewRotation, 2.0)
A expressão branch do exemplo acima chama a função RotateProp() que irá rotacionar o creative_prop e finaliza. A função Sleep() irá esperar por 10 segundos antes da função OnBegin completar e a função RotateProp() ser cancelada.
Salve o arquivo e compile o código Verse usando a opção Verse > Build Verse Code do menu do UEFN.
Acesse o Content Drawer e adicione o dispositivo branch_device ao nível. Adicione algum Prop no nível para ser rotacionado pelo nosso dispositivo. Eu usei o Office Chair 02.
Selecione o branch_device no nível. Na aba Details adicione a referência do Prop no campo PropToRotate.
Salve o nível e clique no botão Launch Session para carregar o nível no Fortnite. Observe o Prop rotacionando. Depois de 10 segundos ele irá parar de rotacionar porque a função iniciada pelo Branch será cancelada automaticamente.