Skip to content

API Reference

Complete type reference for current Octoputs components, operations, and ScriptableObjects. For usage context, see the Usage Guide. For hands-on walkthroughs, see Your First Drag and Drop.


Core Components

The foundation MonoBehaviours that define attachable objects, the points they attach to, and the agent that moves them.

Type Namespace Description
AttachableObject Octoputs.Core Item that can be picked up / attached to a point. Hosts the attaching / attached / detaching lifecycle processes and conditions. Page
AttachmentPoint Octoputs.Core Slot that accepts attachables (zero or one at a time). Hosts the matching attaching / holding / detaching processes. Page
AttachingAgent Octoputs.Transfer The actor that grabs, moves, and drops attachables (player hand, cursor, claw, …). Resolves a grab source and a drop destination as SmartAttachableObject / SmartAttachmentPoint. Page

Detection

Octoputs uses Jungle Core's generic Detector for object discovery — there are no longer Octoputs-specific detector classes. A Detector exposes IItemSource<GameObject> and emits filtered candidates through its filter chain. Combine it with SmartAttachableObject / SmartAttachmentPoint (Dynamic mode) and the appropriate IComponentLookupStrategy to resolve the typed component on the consumer side.

For "mirror detected items into a container", drop a DetectorToContainerRelay next to the Detector.


Targeting

Targets compute the destination position, rotation, and scale for transform operations.

Type Description
TransformTarget Follow a referenced Transform's position and rotation.
RayHitTransformTarget Target the hit point of a raycast (surface dragging).
BlendedTransformTarget Interpolate between two targets using a blend weight.
LerpedTransformTarget Lerp from current position to a destination over a duration.
ShapeTraversalTransformTarget Travel along a shape (Line, Arc, Circle, or a 3D curve via Curve Shape) at a set speed.
ShapeProjectionTransformTarget Project a 2D coordinate (mouse, joystick, screen UV) onto a Shape surface. Supports Absolute and Relative-to-Grab source modes.
SequenceTransformTarget Step through a list of targets in order.
CompositeTransformTarget Combine position from one target and rotation from another.
ConditionalTransformTransformTarget Switch between targets based on a Condition.
WaypointTransformTarget Follow a sequence of waypoint positions.

Transform Operations

A transform operation is an IProcess that drives one Transform toward a target. Compose multiple operations using ParallelTransformOperation or SequenceTransformOperation. Host them on Transformer, or wire them through AttachmentPointCommand / AttachableObjectCommand.

Type Description
DirectTransformOperation Sets position/rotation directly. Snappy, no physics.
PhysicsTransformOperation Moves via Rigidbody forces. Springy, collision-aware.
JointTransformOperation Uses a ConfigurableJoint. Rope-like, constrained movement.
Direct2DTransformOperation Direct position writes for 2D Rigidbody2D objects.
Rigidbody2DTransformOperation Physics forces for 2D Rigidbody2D objects.
ParallelTransformOperation Run multiple child transform operations on the same subject in parallel.
SequenceTransformOperation Run multiple child transform operations on the same subject in order.
BatchTransformOperation Submit a subject to the Jobs-based batch pipeline.
BatchTransformPipelineManager Manager component for coordinating batch pipeline execution. Page

Transform Modifiers

Modifiers adjust the target transform before the applier writes it. They execute in list order (top to bottom). See Tutorial: Transform Pipelines.

Constraint and Snapping

Type Description
AxisLockModifier Lock movement on specific axes.
PositionConstraintModifier Clamp position within min/max bounds.
RotationConstraintModifier Clamp rotation within angle limits.
OrbitConstraintModifier Constrain movement to an orbital path around a center point.
HeightLockModifier Lock the Y position to a fixed height.
Snap2DGridModifier Snap position to a 2D grid.
Snap3DGridModifier Snap position to a 3D grid.

Physics and Dynamics

Type Description
SpringModifier Apply spring-damper physics to position.
ElasticBandModifier Rubber-band effect that pulls back beyond a threshold.
MomentumModifier Continue movement with inertia after release.
KinematicsLimiterModifier Clamp velocity and acceleration.

Raycast and Collision

Type Description
OcclusionRayPushModifier Push the position onto the first surface between the camera and the upstream wanted point. No-op when the path is clear, so it never fights an upstream offset that's already correct. (Renamed from RaycastOffsetModifier.)
CameraRaycast2DOffsetModifier Offset position based on a camera raycast (2D).
Advanced2DRaycastOffsetModifier Advanced 2D raycast with multiple configuration options.
BoundingOffsetFromHitNormalModifier Offset from a surface using the hit normal and object bounds.
AdvancedCollisionAvoidance Prevent objects from penetrating colliders using sweep tests.
OBBCollisionAvoidanceModifier Collision avoidance using oriented bounding boxes.
DepenetrationModifier Push objects out of overlapping geometry.
SurfaceSlideModifier Slide along surfaces instead of stopping at collisions.

Alignment and Orientation

Type Description
SurfaceNormalAlignmentModifier Align rotation to match a surface normal.
GravityAlignmentModifier Align rotation to the gravity direction.
TiltByVelocityModifier Tilt the object in the direction of movement based on speed.
LookAtModifier Rotate to face a target point or direction.

Animation and Oscillation

Type Description
OscillatorTransformModifier Add oscillating motion (bob, sway) while held.
NoiseOffsetModifier Apply Perlin noise offset for organic movement.
PendulumSwingModifier Swing like a pendulum when picked up.

Smoothing and Filtering

Type Description
SmoothPositionModifier Smooth position changes over time (damped follow).
SmoothRotationModifier Smooth rotation changes over time.
AntiJitterModifier Suppress small jittery movements below a threshold.

Specialized

Type Description
PreserveViewRelativeOrientationModifier Compensate for perspective foreshortening so the object keeps the same visual angle to the camera.
InfluenceModifier Pull toward an influence pose (e.g. BarycenterTransformDataValue over Points of Interest). Auto-activates from the influence source's own availability (ValueCount > 0) — fades in when it has a pose, out when it doesn't.
ScaleByDistanceModifier Scale the object based on distance from a reference point.
ConditionalModifier Wraps another modifier and only applies it when a Condition is true.

Transform Pivots

Pivots define where on the object the "grab point" is. Each transform operation can reference an ITransformPivot which captures the grab offset at drag start and applies it every frame before modifiers run.

Type Description
TransformOriginPivot No offset — the target position is applied directly to the transform's origin. Default.
BoundsCenterPivot Pivot from the center of a bounds value (renderers or colliders).
RaycastHitPointPivot Pivot from the exact point where the user clicked on the object.
AttachablePreferredTransformPivot Delegates to the pivot declared on the dragged AttachableObject.

Constraints

Spatial limits that keep a Transform inside a region.

Type Description
Constrainer Component that enforces position + rotation constraints each frame on a Transform (or its Rigidbody). Page
IPositionConstraint impls Bounds, sphere, plane, line, and combinator constraints. See Constraints.
IRotationConstraint impls Angle-range constraints.

Transfer

Targeted commands that execute operations against an AttachableObject or AttachmentPoint subject.

Type Namespace Description
AttachableObjectCommand Octoputs.Transfer Targets a single AttachableObject and runs a list of IAttachableObjectOperation items in parallel.
AttachmentPointCommand Octoputs.Transfer Targets a single AttachmentPoint and runs a list of IAttachmentPointOperation items in parallel.

Built-in Operations

Operation Lives On Description
AttachToPointOperation AttachmentPointCommand Attaches a configured attachable to this point.
DetachPointOperation AttachmentPointCommand Detaches whatever this point is currently holding.
TransferAttachableOperation AttachmentPointCommand Moves an attachable from one point to this one.
DetachAttachableOperation AttachableObjectCommand Detaches this attachable from wherever it is currently held.

Filtering

Filtering uses two typed leaf-check families. Where the candidate is already a known attachable or point — AttachmentPoint.attachableFilters, AttachableObject.pointFilter, AttachingAgent.grabFilters/dropFilters, TransferAttachableOperation.pointFilters — the slot holds the relevant checks directly (IAttachableObjectCheck / IAttachmentPointCheck); the picker is scoped to just those.

Where the candidate is a raw GameObject (detector filter chains, generic IGameObjectFilter slots) the same checks are run through an umbrella filter that resolves the component via a lookup strategy first:

Umbrella Resolves Inner checks
AttachableObjectFilterGroup AttachableObject IAttachableObjectCheck
AttachmentPointFilterGroup AttachmentPoint IAttachmentPointCheck

Available checks:

Check Domain Description
AttachableTagCheck Attachable Filter by AttachmentTag with configurable match mode.
HeldStateCheck Attachable Filter by whether the object is currently attached somewhere.
EligibilityCheck Attachable Filter by whether the object's own conditions permit attachment.
AttachmentPointTagCheck Point Filter by AttachmentTag on a point.
IsHoldingCheck Point Filter by whether the point currently holds an object.
CanAttachCheck Point Filter by whether the point's conditions allow attaching a specific object.
PhaseCheck Point Filter by current lifecycle phase.
NotJustDetachedCheck Point Suppress a point after detach while the detached object stays nearby.
OnAttachedObjectCheck Point Delegates to nested IAttachableObjectChecks evaluated on the currently held object.
AttachableGameObjectFilterCheck Attachable Escape hatch: runs any IGameObjectFilter (+ optional lookup) against the attachable.
AttachmentPointGameObjectFilterCheck Point Escape hatch: runs any IGameObjectFilter (+ optional lookup) against the point.

Per Jungle convention, filter fields are always allowlists — null = all allowed. Invert at the leaf if you need negation. With no checks, a direct slot accepts everything, and an umbrella degenerates to "the component exists on the candidate". The two …GameObjectFilterCheck checks are the bridge for the niche case where a direct (check-typed) slot still needs a generic GameObject filter.


Conditions

Condition types specific to Octoputs. They extend the Jungle Condition base class.

Type Description
AttachableObjectIsDraggedCondition True when the referenced attachable is currently attached.
AttachmentPointHoldingCondition True when the point is holding any object.
AttachmentPointHoldingTaggedObjectCondition True when the point holds an object with a specific tag.
AttachmentPointPhaseCondition True when the point is in a specific lifecycle phase.
DraggableInZoneCondition True when the attachable is attached to any point.
PlacementOverlapCondition True when a candidate placement overlaps configured volumes.

GameObject Conditions

These conditions evaluate a GameObject reference rather than a specific component.

Type Description
AttachmentPointStateCondition Check the lifecycle phase of an AttachmentPoint on the GameObject.
DraggableStateCondition Check the lifecycle phase of an AttachableObject on the GameObject.
IsAttachmentPointCondition Check whether the GameObject has an AttachmentPoint component.
IsDraggableCondition Check whether the GameObject has an AttachableObject component.
IsDragRelatedCondition True when the GameObject is involved in any active drag.
CombinatoryGameObjectCondition Combines child GameObject conditions with All/Any.

Measurement

Track motion and spatial data on subjects. Measurements plug into the Measurer component (or a Setter's DataStorageSetter entry) as sub-setters.

Type Description
TargetedMeasurer Generic Jungle measurer that resolves any GameObject target and dispatches to a list of object measurements.
AttachmentPointMeasurements Octoputs measurer that resolves an AttachmentPoint target. Displayed in the picker as "Attachment Point Measurements".
AttachableMeasurements Octoputs measurer that resolves an AttachableObject target. Displayed in the picker as "Attachable Object Measurements".
Key Shared Jungle.Data ScriptableObject used as a named key for measurement data.
PositionMeasurement Tracks world position.
VelocityMeasurement Tracks velocity vector.
SpeedMeasurement Tracks scalar speed.
AccelerationMeasurement Tracks acceleration vector.
AngularVelocityMeasurement Tracks angular velocity.
DistanceTraveledMeasurement Tracks cumulative distance.
BoundsMeasurement Tracks world-space bounds.

ScriptableObjects

Shared assets used for configuration and identification across the framework.

Type Menu Path Description
AttachmentTag Create > Jungle > Octoputs > Attachment Tag Named tag for categorizing objects and points. Page
Key Create > Jungle > Data > Key Shared named key used to look up measurement data in a DataStorage.
ItemShape Create > Jungle > Octoputs > Item Shape Defines the shape footprint of an attachable for grid-based storage layouts. Page

Layout Strategies

Arrange attached objects spatially within an attachment point hierarchy. Use the Jungle Core LayoutComponent to drive them.

Type Description
GridLayoutStrategy Arrange in rows and columns.
CircularLayoutStrategy Arrange in a circle around a center.
FanLayoutStrategy Arrange in a fan/arc (cards in hand).
LinearLayoutStrategy Arrange in a line along an axis.
StackLayoutStrategy Stack vertically with configurable offset.