This is the parent task for the COW Operator porting taskforce.
# How this works:
1) Find an operator you want to port in the linked sub-tasks below
2) Leave a comment stating what operator(s) you're working on (and/or links to patches when available)
3) Submit patches for review - tagging @sergey and @aligorith as reviewers
# Sub-tasks for each module's operators:
## Stuff you can do now:
**Major Changes Required:**
- Armature Edit Mode - T54811
- Pose Tools - T54812
- IO - T54813
- Mask - T54814
- Object - T54817
- Physics - T54818
- Render - T54819
- Paint - T54820
- Sculpt - T54821
- Sound - T54822
- Movie Clip Editor - T54823
- Image Editor - T54824
- View3D - T54829
- UV Editor
**Likely Only Minor Changes Needed:**
- Interface + Screen + Workspace + Scene + Script
- Mesh - T54815
- Node Editor - T54825
- Outliner - T54827
- Sequencer - T54828
## Postponed (Blocking/Pending Issues need resolving first)
#### Waiting for Sergey to test/check first
- Curve/Surface (`CURVE_OT_*`)
- Font (`FONT_OT_*`)
- Metaballs (`META_OT_*`)
- Lattices (`LATTICE_OT_*`)
#### Waiting for Grease Pencil branch merge
Grease Pencil module (`editors/gpencil`)
#### Should be fine without needing fixes
- Text Editor
## What to do:
Code work is tedious but rather straightforward. Here are some knowledge which will help migrating operators:
* Use D3036, D3158, and D3159 as an examples.
* To go from original object to evaluated, use DEG_get_evaluated_object().
To go from original ID to evaluated use DEG_get_evaluated_id().
Keep in mind, these functions do hash lookup based on ID, so if multiple lookups of same object is needed try to store result of this lookup.
* To go from evaluated to original object use DEG_get_original_object().
To go from evaluated to original ID use DEG_get_original_id().
These functions are cheap.
* If some operator changes interface-only data (example: scene’s 3d cursor location) apart form notifier also use DEG_id_tag_update(id, DEG_TAG_COPY_ON_WRITE).
Example commit: 6a75a1a669d