Flag never becomes true
Confirm an owner was assigned, the destination collider is a trigger, physics messages are available, and Managed Externally is not enabled accidentally.
Components
Report whether the expected object occupies one destination owned by an ObjectPlacementObjective.
PlacementTrigger reports whether one expected object occupies one destination owned by an ObjectPlacementObjective. It is a supporting component, not an Objective: it has no Objective Link, cannot advance a Chapter, and should not be treated as another ordered position.
The owning ObjectPlacementObjective usually finds or creates it at Start and calls Configure(owner, object, fallbackName). Add it manually only when the destination needs a preconfigured helper or an external placement system will control its state.
| Field | Meaning | Notes |
|---|---|---|
| Is Triggered | Read-only occupancy flag | Reset by the owning Objective |
| Managed Externally | Ignores automatic physics callbacks | External code must call SetTriggered |
| Owner | The ObjectPlacementObjective that reads this helper | Assigned by Configure |
| Accepted Object | Exact root; child colliders match | Preferred over name fallback |
| Accepted Object Name | Exact collider object name | Used only without a reference |
In automatic mode, enter and stay set the flag true and exit sets it false, but only while an owner exists, the owner is incomplete, and the collider matches. In external mode, physics messages are ignored. Call SetTriggered(true) only after the external system has accepted the placement, and false when it becomes invalid.
Configure always clears existing occupancy. If several placement objectives share a destination, each requires an available helper with the corresponding owner; a single occupancy flag cannot represent several expected objects safely.
Confirm an owner was assigned, the destination collider is a trigger, physics messages are available, and Managed Externally is not enabled accidentally.
Assign an exact Accepted Object. Name fallback compares only the collider GameObject name.
The owning Objective calls SetTriggered(false). If another external integration immediately writes true, coordinate reset order in that integration.
See ObjectPlacementObjective for the complete multi-destination lifecycle.