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. |
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 |
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. |
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. |