| source |
|---|
Each world using World Broadcast requires exactly one CameraZoneRegistryService component.
- Add the
Camera Zone Registryobject from “World Broadcast Camera System - Prefabs” - The component will auto-initialize as a singleton and requires no additional configuration
Each world using World Broadcast requires exactly one CameraController component. This controller orchestrates the entire camera system.
- Add the
Camera Controllerobject from “World Broadcast Camera System - Prefabs” - Configure the required props:
localBroadcastCamera: Add theLocal - World Broadcast Camera Objectobject from “World Broadcast Camera System - Prefabs”broadcastCameraUI: Optional entity for UI overlay
- Create the zone entity:
- Add the
Static Camera Zoneobject from “World Broadcast Camera System - Prefabs”
- Add the
- Create capability entities: Find these as the “...Capability” objects in “World Broadcast Camera System - Prefabs”.
Position
Entity
:
└──
CameraPositionCapability
component
Activation
Entity
:
└──
ActivationControlCapability
component
- Wire the dependencies:
- Set
positionCapabilityEntityto your position capability object - Set
activationCapabilityEntityto your activation capability object - Configure
zoneIdto make each zone readable and easily referenced when using the Camera Controller API
- Set
- Configure positioning:
- Option A: Set
transformEntityto a dedicated camera “transform” entity - you can use anEmpty Objectby creating one withBuild > Empty Object - Option B: Enable
useSelfTransformto use the zone entity’s position
- Option A: Set
- Create the zone entity:
- Add the
Camera Trigger Zoneobject from “World Broadcast Camera System - Prefabs”
- Add the
- Create capability entities: Find these as the “...Capability” objects in “World Broadcast Camera System - Prefabs”. The Priority Calculator is also in this Asset Folder.
Position
Entity
:
└──
CameraPositionCapability
component
Priority
Entity
:
└──
PriorityCalculationCapability
component
└──
PriorityCalculatorComponent
component
(
It
doesn
't have to be a child)
Activation Entity:
└── ActivationControlCapability component
- Wire the dependencies:
- Set
positionCapabilityEntityto your position capability object - Set
priorityCapabilityEntityto your priority capability object - Set
activationCapabilityEntityto your activation capability object
- Set
- Configure behavior:
- Set
autoActivateOnPlayersto enable automatic activation - Set
minPlayersForActivationto define the activation threshold - Configure
zoneIdfor external control
- Set
// Zone Entity Configuration
StaticCameraZone
:
-
zoneId
:
"scenic_view_1"
-
zoneType
:
"static"
-
positionCapabilityEntity
:
[
Position
Entity
]
-
activationCapabilityEntity
:
[
Activation
Entity
]
// Position Entity Configuration
CameraPositionCapability
:
-
useSelfTransform
:
true
// Activation Entity Configuration
ActivationControlCapability
:
-
isActive
:
true
-
canBeControlledExternally
:
true
// Zone Entity Configuration
CameraTriggerZone
:
-
zoneId
:
"playground_zone"
-
zoneType
:
"trigger"
-
autoActivateOnPlayers
:
true
-
minPlayersForActivation
:
1
-
positionCapabilityEntity
:
[
Position
Entity
]
-
priorityCapabilityEntity
:
[
Priority
Entity
]
-
activationCapabilityEntity
:
[
Activation
Entity
]
// Priority Entity Configuration
PriorityCalculationCapability
:
-
priorityCalculatorEntity
:
[
Calculator
Entity
]
-
fallbackPriority
:
1
-
minimumPriority
:
0
// Calculator Entity Configuration (Optional)
PriorityCalculatorComponent
:
-
basePlayerPriority
:
1
-
mundanePetPriority
:
10
-
fantasticalPetPriority
:
100
// Create a dedicated camera positioning entity
Camera
Position
Entity
:
-
Position
:
(
10
,
5
,
10
)
-
Rotation
:
(
0
,
45
,
0
)
// Zone Configuration
CameraPositionCapability
:
-
transformEntity
:
[
Camera
Position
Entity
]
-
useSelfTransform
:
false
The presets will be in the folder path “World Broadcast System - Prefabs > Presets”.
This preset includes:
- A fully connected Camera Controller
- The Camera Registry
- A single Static Camera Zone with capabilities connected as child entities
To add more camera zones, duplicate the Static Camera Zone entity. Ensure each zone has a unique id, or leave the zoneId field empty to generate a unique id automatically.
This preset includes:
- A fully connected Camera Controller
- The Camera Registry
- A single Camera Trigger Zone with capabilities connected as child entities
To add more camera zones, duplicate the Camera Trigger Zone entity. Ensure each zone has a unique id, or leave the zoneId field empty to generate a unique id automatically.
Issue: “Registry service not initialized” error
- Solution: Ensure
CameraZoneRegistryServicecomponent exists in your world
Issue: Camera zones not appearing in feed
- Solution: Check that zones are registering successfully in console logs
- Debug: Enable
debugMode: trueon zone components
Issue: Priority calculation not working
- Solution: Verify
PriorityCalculatorComponentis properly connected - Check: Ensure
priorityCalculatorEntityprop is set correctly
Issue: Camera positioning errors
- Solution: Verify target entities have position/rotation components
- Alternative: Use
useSelfTransform: truefor simple positioning
Issue: Trigger zones not activating
- Solution: Check trigger volume configuration and collision layers
- Verify: Ensure
autoActivateOnPlayersis enabled - Check: Confirm
minPlayersForActivationthreshold is appropriate
Issue: External control not working
- Solution: Verify
zoneIdis set and unique across all zones - Check: Ensure
canBeControlledExternallyis enabled on activation capability
- Enable Debug Mode: Set
debugMode: trueon components for detailed logging - Check Console Logs: Look for registration and validation messages
- Verify Entity Wiring: Ensure all capability entities are properly connected
- Test Activation: Manually activate/deactivate zones to test behavior
- Monitor Registry: Check that zones appear in the registry service logs
- Validate Capabilities: Ensure capability entities have the correct components attached
Issue: Camera switching is slow or laggy
- Solution: Limit the number of active trigger zones
- Check: Verify caching is working (look for cache hit messages in logs)
Issue: High CPU usage
- Solution: Reduce frequency of priority calculations
- Alternative: Use static zones for fixed monitoring points instead of trigger zones
Issue: Memory leaks
- Solution: Ensure zones properly unregister when destroyed
- Check: Monitor registry size in debug logs

