Skip to content

AttachingAgent

An agent that grabs objects, holds them, then places or drops them. Use for robot arms, delivery drones, or any grab-hold-drop workflow.

Namespace: Octoputs.Transfer Inherits: MonoBehaviour Implements: ICycleProvider<AgentCycle>, ITargetedCycleProvider<AgentCycle>

Overview

AttachingAgent orchestrates a complete grab-hold-drop cycle driven by events. When a grab event fires, the agent resolves an attachable through a SmartAttachableObject, runs an optional preparation process, detaches the object from its source point, and attaches it to a holding point. A separate drop event (or the same grab event as a toggle) reverses the flow, resolving a destination point through a SmartAttachmentPoint, placing the object there — or detaching in place if no destination is eligible.

Agent state machine: Idle → PreparingGrab → Grabbing → Holding → PreparingDrop → Dropping → Idle.

The agent supports conditions, filter chains, auto-repeat, and request buffering. For diagnosis when grabs/drops fail, the agent retains a ring buffer of the most recent rejection records (queryable via LastRejection, TryGetRejection).

Properties

Grab Trigger

Property Type Description
grabEvent IEvent Event that triggers the grab.
grabConditions List<Condition> All must pass for the grab to proceed.
grabFilters List<IAttachableObjectCheck> Checks a grab candidate must pass (added directly — no umbrella wrapper).

Grab

Property Type Description
grabPreparationProcess IProcess Process that runs before the object is attached to the holding point — reach/grab animations.
grabSource SmartAttachableObject Attachable(s) to grab. Defaults to Dynamic mode for a multi-GameObject source (Detector, container). Configure source selection (first/last/random) on the source itself.
instantDetachSourceAttachable bool If true, uses instant detach when grabbing from the source (skips state processes).

Holding

Property Type Description
HoldingPoint AttachmentPoint The point where the agent holds grabbed objects during transport.

Drop Trigger

Property Type Description
dropEvent IEvent Event that triggers the drop. If empty, the grab event toggles.
dropConditions List<Condition> All must pass for the drop to proceed.
dropFilters List<IAttachmentPointCheck> Checks a drop candidate point must pass (added directly — no umbrella wrapper).

Drop Destination

Property Type Description
dropPreparationProcess IProcess Process that runs before the object is released — place/release animations.
dropDestination SmartAttachmentPoint Destination point(s). Defaults to Dynamic mode for a multi-GameObject source.
dropOnZoneProcess IProcess Process that runs after the held object is placed onto an eligible destination point.
instantDetachDestinationPoints bool If true, uses instant attach/detach when dropping (skips processes).
DetachIfNoDestination bool If true, simply detaches in place when no destination is available. If false, keeps holding.
noDestinationDetachProcess IProcess Process that runs when no eligible destination is found and the object is detached in place.

Automation

Property Type Description
autoRepeat bool Automatically restart the grab-drop cycle after each completion.
bufferRequests bool Remember grab/drop events arriving during the wrong state and replay them later.

Events

Property Type Description
OnGrabStarted UnityEvent Invoked when a grab begins.
OnGrabComplete UnityEvent Invoked when the held object reaches the holding point.
OnDropStarted UnityEvent Invoked when a drop begins.
OnDropComplete UnityEvent Invoked when the held object is released.

Runtime State

Member Description
IsIdle / IsPreparingGrab / IsGrabbing / IsHolding / IsPreparingDrop / IsDropping Boolean state probes.
CurrentAttachable The object currently held (or being moved).
LastDropDestination The point most recently chosen as a drop destination.
GrabAttempts / GrabSuccesses / DropAttempts / DropSuccesses Lifetime counters.
LastRejection / LastRejectionDetail / LastRejectionTime Most recent grab/drop failure.
RejectionCount / RejectionCapacity Ring buffer of recent failure records.

See Also