void AXtremeJanitorCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime); if (Controller && Controller->IsLocalController()) { AUsableActor* Usable = GetUsableInView(); // Terminer le focus sur l'objet précédent if (FocusedUsableActor != Usable) { if (FocusedUsableActor) { FocusedUsableActor->OnEndFocus(); } bHasNewFocus = true; } // Assigner le nouveau focus (peut être nul ) FocusedUsableActor = Usable; // Démarrer un nouveau focus si Usable != null; if (Usable) { if (bHasNewFocus) { Usable->OnBeginFocus(); bHasNewFocus = false; // Pour débogage, vous pourrez l'oter par la suite GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, TEXT("Focus")); } } } }
void AXtremeJanitorCharacter::Use() { AUsableActor* Usable = GetUsableInView(); if (Usable) { Usable->OnUsed(this); } }
void ASCharacter::Use() { // Only allow on server. If called on client push this request to the server if (Role == ROLE_Authority) { ASUsableActor* Usable = GetUsableInView(); if (Usable) { Usable->OnUsed(this); } } else { ServerUse(); } }
void ASCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime); if (bWantsToRun && !IsSprinting()) { SetSprinting(true); } if (Controller && Controller->IsLocalController()) { ASUsableActor* Usable = GetUsableInView(); // End Focus if (FocusedUsableActor != Usable) { if (FocusedUsableActor) { FocusedUsableActor->OnEndFocus(); } bHasNewFocus = true; } // Assign new Focus FocusedUsableActor = Usable; // Start Focus. if (Usable) { if (bHasNewFocus) { Usable->OnBeginFocus(); bHasNewFocus = false; } } } }