Purpose
A lightweight component that bridges external volume systems (weather plugins, third-party zone systems, etc.) to the WC GAS Ally World Context System without requiring class inheritance.
When to Use
- Third-party weather plugins with moving rain/storm volumes
- Custom zone systems that already have overlap logic
- Procedurally spawned context areas
- Any actor that needs to grant contexts to other actors
Properties
| Property |
Type |
Description |
ContextTag |
FGameplayTag |
The context tag applied to actors (e.g., Context.Weather.Rain) |
RequiredActorTags |
FGameplayTagContainer |
Only actors with ALL these tags receive context |
BlockedActorTags |
FGameplayTagContainer |
Actors with ANY of these tags are excluded |
bDebugLog |
bool |
Enables debug logging (non-shipping builds only) |
Blueprint API
Bridge Functions (Call from your overlap events)
| Function |
Returns |
Description |
NotifyActorEntered(AActor*) |
bool |
Register actor entering the context area. Returns true if registered, false if filtered/invalid. |
NotifyActorExited(AActor*) |
bool |
Unregister actor exiting the context area. Returns true if unregistered, false if wasn't tracked. |
Query Functions
| Function |
Returns |
Description |
IsActorTracked(AActor*) |
bool |
Check if actor is currently receiving context from this bridge |
GetTrackedActors() |
TArray<AActor*> |
Get all actors currently tracked |
GetTrackedActorCount() |
int32 |
Get count of tracked actors |
Management Functions
| Function |
Description |
ClearAllTrackedActors() |
Remove all tracked actors and their context overrides. Called automatically on EndPlay. |
SetContextTag(FGameplayTag) |
Change context tag at runtime. Warning: Does not update already-tracked actors. |
Usage Example (Blueprint)
1. Add WCGASContextBridge component to your weather/zone actor
2. Set ContextTag to "Context.Weather.Rain"
3. In your existing overlap events:
- OnBeginOverlap → Call NotifyActorEntered(OtherActor)
- OnEndOverlap → Call NotifyActorExited(OtherActor)
Usage Example (C++)
void AMyWeatherVolume::OnBeginOverlap(AActor* OtherActor)
{
if (ContextBridge)
{
ContextBridge->NotifyActorEntered(OtherActor);
}
}
void AMyWeatherVolume::OnEndOverlap(AActor* OtherActor)
{
if (ContextBridge)
{
ContextBridge->NotifyActorExited(OtherActor);
}
}