# `Monty.Frameworks.Environments.PositioningProcedures.PositioningProcedureFactory`
[🔗](https://github.com/d-led/ex.tbp.monty/blob/v0.1.0/packages/ex_tbp_monty_core/lib/monty/frameworks/positioning_procedures/positioning_procedure_factory.ex#L1)

Where a procedure comes from, given the object an episode is about.

Mirrors
`tbp/monty/frameworks/environments/positioning_procedures.py::PositioningProcedureFactory`.
A factory exists because the target object is only known when the episode
starts: the scene decides which semantic id is the target, and the procedure has
to be built for it.

# `create`

```elixir
@callback create(factory :: term(), target_semantic_id :: integer()) :: {module(), term()}
```

A procedure for the object with this semantic id, as `{module, state}`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
