GPencil: Add operator to create new grease pencil object #108462
|
@ -203,7 +203,6 @@ class Layer : public ::GreasePencilLayer {
|
|||
* \returns true on success.
|
||||
*/
|
||||
bool insert_frame(int frame_number, const GreasePencilFrame &frame);
|
||||
bool insert_frame(int frame_number, GreasePencilFrame &&frame);
|
||||
|
||||
/**
|
||||
* Inserts the frame into the layer. If there exists a frame at \a frame_number already, it is
|
||||
|
@ -211,7 +210,6 @@ class Layer : public ::GreasePencilLayer {
|
|||
* \returns true on success.
|
||||
*/
|
||||
bool overwrite_frame(int frame_number, const GreasePencilFrame &frame);
|
||||
bool overwrite_frame(int frame_number, GreasePencilFrame &&frame);
|
||||
|
||||
/**
|
||||
* Returns the sorted (start) frame numbers of the frames of this layer.
|
||||
|
|
|
@ -409,24 +409,12 @@ bool Layer::insert_frame(int frame_number, const GreasePencilFrame &frame)
|
|||
return this->frames_for_write().add(frame_number, frame);
|
||||
}
|
||||
|
||||
bool Layer::insert_frame(int frame_number, GreasePencilFrame &&frame)
|
||||
{
|
||||
this->tag_frames_map_changed();
|
||||
return this->frames_for_write().add(frame_number, frame);
|
||||
}
|
||||
|
||||
bool Layer::overwrite_frame(int frame_number, const GreasePencilFrame &frame)
|
||||
{
|
||||
this->tag_frames_map_changed();
|
||||
return this->frames_for_write().add_overwrite(frame_number, frame);
|
||||
}
|
||||
|
||||
bool Layer::overwrite_frame(int frame_number, GreasePencilFrame &&frame)
|
||||
{
|
||||
this->tag_frames_map_changed();
|
||||
return this->frames_for_write().add_overwrite(frame_number, std::move(frame));
|
||||
}
|
||||
|
||||
Span<int> Layer::sorted_keys() const
|
||||
{
|
||||
this->runtime->sorted_keys_cache_.ensure([&](Vector<int> &r_data) {
|
||||
|
|
|
@ -250,7 +250,7 @@ void create_blank(Main &bmain, Object &object, const int frame_numer)
|
|||
grease_pencil.add_empty_drawings(1);
|
||||
filedescriptor marked this conversation as resolved
|
||||
|
||||
GreasePencilFrame frame{0, 0, BEZT_KEYTYPE_KEYFRAME};
|
||||
new_layer.insert_frame(frame_numer, std::move(frame));
|
||||
new_layer.insert_frame(frame_numer, frame);
|
||||
}
|
||||
|
||||
void create_stroke(Main &bmain, Object &object, float4x4 matrix, const int frame_numer)
|
||||
|
@ -275,22 +275,13 @@ void create_stroke(Main &bmain, Object &object, float4x4 matrix, const int frame
|
|||
|
||||
GreasePencilDrawing &drawing = *reinterpret_cast<GreasePencilDrawing *>(
|
||||
grease_pencil.drawings_for_write()[1]);
|
||||
std::array stroke_offsets{0, 175};
|
||||
std::array materials{material_index};
|
||||
std::array radii_factor{75};
|
||||
drawing.geometry.wrap() = create_drawing_data(stroke_positions,
|
||||
stroke_radii,
|
||||
stroke_opacities,
|
||||
stroke_offsets,
|
||||
materials,
|
||||
radii_factor,
|
||||
matrix);
|
||||
drawing.tag_positions_changed();
|
||||
drawing.geometry.wrap() = create_drawing_data(
|
||||
filedescriptor marked this conversation as resolved
Outdated
Hans Goudey
commented
If you like it better too, you could put these directly in the arguments like so:
If you like it better too, you could put these directly in the arguments like so:
```
drawing.geometry.wrap() = create_drawing_data(stroke_positions,
stroke_radii,
stroke_opacities,
{0, 175},
{material_index},
{75},
matrix);
```
|
||||
stroke_positions, stroke_radii, stroke_opacities, {0, 175}, {material_index}, {75}, matrix);
|
||||
|
||||
GreasePencilFrame frame_lines{0, 0, BEZT_KEYTYPE_KEYFRAME};
|
||||
GreasePencilFrame frame_color{1, 0, BEZT_KEYTYPE_KEYFRAME};
|
||||
layer_lines.insert_frame(frame_numer, std::move(frame_lines));
|
||||
layer_color.insert_frame(frame_numer, std::move(frame_color));
|
||||
layer_lines.insert_frame(frame_numer, frame_lines);
|
||||
layer_color.insert_frame(frame_numer, frame_color);
|
||||
}
|
||||
|
||||
} // namespace blender::ed::greasepencil
|
|
@ -1634,14 +1634,13 @@ static int object_grease_pencil_add_exec(bContext *C, wmOperator *op)
|
|||
break;
|
||||
}
|
||||
case GP_STROKE: {
|
||||
float radius = RNA_float_get(op->ptr, "radius");
|
||||
float scale[3];
|
||||
copy_v3_fl(scale, radius);
|
||||
const float radius = RNA_float_get(op->ptr, "radius");
|
||||
const float3 scale(radius);
|
||||
filedescriptor marked this conversation as resolved
Outdated
Hans Goudey
commented
`const float3 scale(radius);`
|
||||
|
||||
float mat[4][4];
|
||||
ED_object_new_primitive_matrix(C, object, loc, rot, scale, mat);
|
||||
float4x4 mat;
|
||||
ED_object_new_primitive_matrix(C, object, loc, rot, scale, mat.ptr());
|
||||
|
||||
filedescriptor marked this conversation as resolved
Hans Goudey
commented
This should work here:
This should work here:
```
float4x4 mat;
ED_object_new_primitive_matrix(C, object, loc, rot, scale, mat.ptr());
```
|
||||
greasepencil::create_stroke(*bmain, *object, float4x4(mat), scene->r.cfra);
|
||||
greasepencil::create_stroke(*bmain, *object, mat, scene->r.cfra);
|
||||
break;
|
||||
}
|
||||
case GP_MONKEY:
|
||||
|
|
Loading…
Reference in New Issue
int frame_numer
->const int frame_numer