43 call_buffers_.box.
clear();
44 call_buffers_.sphere.
clear();
45 call_buffers_.cylinder.
clear();
46 call_buffers_.cone.
clear();
47 call_buffers_.capsule_body.
clear();
48 call_buffers_.capsule_cap.
clear();
55 const bool has_bounds = !
ELEM(
57 const bool draw_bounds = has_bounds && ((ob->
dt ==
OB_BOUNDBOX) ||
61 auto add_bounds = [&](
const bool around_origin,
const char bound_type) {
65 const float4x4 object_mat{ob->object_to_world().ptr()};
77 call_buffers_.box.
append(data, select_id);
84 call_buffers_.sphere.
append(data, select_id);
92 call_buffers_.cylinder.
append(data, select_id);
100 std::swap(mat[1], mat[2]);
103 call_buffers_.cone.
append(data, select_id);
111 call_buffers_.capsule_cap.
append(data, select_id);
114 data.object_to_world_ = object_mat * mat;
115 call_buffers_.capsule_cap.
append(data, select_id);
116 mat.
z_axis().z = std::max(0.0f, size.z * 2.0f - size.x * 2.0f);
117 data.object_to_world_ = object_mat * mat;
118 call_buffers_.capsule_body.
append(data, select_id);
152 state.clipping_plane_count);
168 manager.
submit(ps_, view);
bool BKE_mball_is_basis(const Object *ob)
std::optional< blender::Bounds< blender::float3 > > BKE_object_boundbox_get(const Object *ob)
Types and defines for representing Rigid Body entities.
void GPU_framebuffer_bind(GPUFrameBuffer *framebuffer)
void submit(PassSimple &pass, View &view)
void state_set(DRWState state, int clip_plane_count=0)
void bind_ubo(const char *name, GPUUniformBuf *buffer)
void shader_set(GPUShader *shader)
void object_sync(const ObjectRef &ob_ref, Resources &res, const State &state)
Bounds(const SelectionType selection_type)
void end_sync(Resources &res, ShapeCache &shapes, const State &state)
void draw(Framebuffer &framebuffer, Manager &manager, View &view)
@ DRW_STATE_DEPTH_LESS_EQUAL
T reduce_max(const VecBase< T, Size > &a)
T midpoint(const T &a, const T &b)
MatT from_scale(const VecBase< typename MatT::base_type, ScaleDim > &scale)
T max(const T &a, const T &b)
VecBase< float, 2 > float2
VecBase< float, 3 > float3
struct RigidBodyOb * rigidbody_object
const float4 & object_wire_color(const ObjectRef &ob_ref, ThemeColorID theme_id) const
GPUUniformBuf * globals_buf
void end_sync(PassSimple::Sub &pass, gpu::Batch *shape)
void append(const InstanceDataT &data, select::ID select_id)
void select_bind(PassSimple &pass)
const ID select_id(const ObjectRef &ob_ref, uint sub_object_id=0)