Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions core/quad.c
Original file line number Diff line number Diff line change
Expand Up @@ -212,9 +212,8 @@ void quad_check_and_clear_drawmodes(Quad *q) {

void quad_set_width(Quad *q, float value) {
q->width = value;
if (float_isZero(q->anchorX, EPSILON_ZERO) == false) {
transform_set_physics_dirty(q->transform);
}
quad_fit_collider_to_bounding_box(q);
transform_set_physics_dirty(q->transform);
}

float quad_get_width(const Quad *q) {
Expand All @@ -223,9 +222,8 @@ float quad_get_width(const Quad *q) {

void quad_set_height(Quad *q, float value) {
q->height = value;
if (float_isZero(q->anchorY, EPSILON_ZERO) == false) {
transform_set_physics_dirty(q->transform);
}
quad_fit_collider_to_bounding_box(q);
transform_set_physics_dirty(q->transform);
}

float quad_get_height(const Quad *q) {
Expand Down Expand Up @@ -463,6 +461,14 @@ float quad_get_9slice_corner_width(const Quad *q) {
return _quad_get_flag(q, QUAD_FLAG_9SLICE) ? q->offsetV : QUAD_DEFAULT_9SLICE_CORNER_WIDTH;
}

void quad_fit_collider_to_bounding_box(const Quad *q) {
RigidBody *rb = transform_get_rigidbody(q->transform);
if (rb == NULL || rigidbody_is_collider_custom_set(rb))
return;
Box bb = { { 0.0f, 0.0f, 0.0f }, { q->width, q->height, EPSILON_COLLISION } };
rigidbody_set_collider(rb, &bb, false);
}

// MARK: - Draw modes -

void quad_drawmode_set_billboard(Quad *q, BillboardMode mode) {
Expand Down
1 change: 1 addition & 0 deletions core/quad.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ void quad_set_9slice_scale(Quad *q, float value);
float quad_get_9slice_scale(const Quad *q);
void quad_set_9slice_corner_width(Quad *q, float value);
float quad_get_9slice_corner_width(const Quad *q);
void quad_fit_collider_to_bounding_box(const Quad *q);

// MARK: - Draw modes -

Expand Down
2 changes: 2 additions & 0 deletions core/transform.c
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,8 @@ bool transform_ensure_rigidbody(Transform *t,
mesh_fit_collider_to_bounding_box((Mesh*)t->ptr);
} else if (t->type == ShapeTransform) {
shape_fit_collider_to_bounding_box((Shape*)t->ptr);
} else if (t->type == QuadTransform) {
quad_fit_collider_to_bounding_box((Quad*)t->ptr);
}
}
return isNew;
Expand Down