// Called every frame void UOpenDoor::TickComponent( float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction ) { Super::TickComponent( DeltaTime, TickType, ThisTickFunction ); // Poll the Trigger Volume if (GetTotalMassOfActorsOnPlate() > TriggerMass) { OnOpen.Broadcast(); } else { OnClose.Broadcast(); } }
// Called every frame void UOpenDoor::TickComponent( float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction ) { Super::TickComponent( DeltaTime, TickType, ThisTickFunction ); if (GetTotalMassOfActorsOnPlate() > 30.f) { OpenDoor(); LastDoorOpenTime = GetWorld()->GetTimeSeconds(); } if (GetWorld()->GetTimeSeconds() - LastDoorOpenTime > DoorCloseDelay) { CloseDoor(); } // ... }