How-To: Bind Your Team System (Optional)
Goal: connect the ally/enemy filter toggles to your project's team logic. The plugin has no team dependency of its own - it asks one overridable query, IsInstigatorFriendly, for every third-party event. While no hook is provided, every instigator counts as an ally, so bShowAllyDamageDealt governs all third-party events.
UCrimsonNumberPopPlayerSettings component on your PlayerController (How-To: Filter Pops Per Player) and some team system that can answer 'are these two actors friendly?'.Provide the team hook
IsInstigatorFriendly(LocalPawn, Instigator) is a BlueprintNativeEvent on the component: return true when the instigator is friendly to the local pawn. Blueprint projects override it on a component subclass; C++ projects can instead bind the IsActorFriendly delegate, which the native implementation falls back to.
Make a Blueprint child of UCrimsonNumberPopPlayerSettings, override Is Instigator Friendly, and add the subclass to your PlayerController in place of the base component.
IsInstigatorFriendly takes precedence over the IsActorFriendly delegate - the delegate is only consulted by the native implementation, so it runs when nothing overrides the event (or when the Blueprint override calls the parent function).Instigator resolves to null and the event is treated as third-party - your hook receives Instigator = nullptr, so handle that case (returning true keeps the default everyone-is-friendly behavior).bShowEnemyDamageDealt off, damage dealt by an enemy-team actor to a third party no longer pops for this player, while an ally's damage still does. The dev tools Filters tab reports which team hook is active (Blueprint override / C++ delegate / none).See also
- How-To: Filter Pops Per Player - the toggles this hook feeds.
- How-To: Test Pops with the Dev Tools - broadcast enemy-instigated test events to exercise the hook.
- API Reference -
IsInstigatorFriendlyand theFCrimsonIsActorFriendlyDelegatesignature.