You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-12 13:20:55 +00:00
Merge pull request #27371 from ShyRed/fixdisabled2dcollisions
Allow adding disabled shapes
This commit is contained in:
@@ -279,14 +279,14 @@ PhysicsServer::AreaSpaceOverrideMode BulletPhysicsServer::area_get_space_overrid
|
||||
return area->get_spOv_mode();
|
||||
}
|
||||
|
||||
void BulletPhysicsServer::area_add_shape(RID p_area, RID p_shape, const Transform &p_transform) {
|
||||
void BulletPhysicsServer::area_add_shape(RID p_area, RID p_shape, const Transform &p_transform, bool p_disabled) {
|
||||
AreaBullet *area = area_owner.get(p_area);
|
||||
ERR_FAIL_COND(!area);
|
||||
|
||||
ShapeBullet *shape = shape_owner.get(p_shape);
|
||||
ERR_FAIL_COND(!shape);
|
||||
|
||||
area->add_shape(shape, p_transform);
|
||||
area->add_shape(shape, p_transform, p_disabled);
|
||||
}
|
||||
|
||||
void BulletPhysicsServer::area_set_shape(RID p_area, int p_shape_idx, RID p_shape) {
|
||||
@@ -498,7 +498,7 @@ PhysicsServer::BodyMode BulletPhysicsServer::body_get_mode(RID p_body) const {
|
||||
return body->get_mode();
|
||||
}
|
||||
|
||||
void BulletPhysicsServer::body_add_shape(RID p_body, RID p_shape, const Transform &p_transform) {
|
||||
void BulletPhysicsServer::body_add_shape(RID p_body, RID p_shape, const Transform &p_transform, bool p_disabled) {
|
||||
|
||||
RigidBodyBullet *body = rigid_body_owner.get(p_body);
|
||||
ERR_FAIL_COND(!body);
|
||||
@@ -506,7 +506,7 @@ void BulletPhysicsServer::body_add_shape(RID p_body, RID p_shape, const Transfor
|
||||
ShapeBullet *shape = shape_owner.get(p_shape);
|
||||
ERR_FAIL_COND(!shape);
|
||||
|
||||
body->add_shape(shape, p_transform);
|
||||
body->add_shape(shape, p_transform, p_disabled);
|
||||
}
|
||||
|
||||
void BulletPhysicsServer::body_set_shape(RID p_body, int p_shape_idx, RID p_shape) {
|
||||
|
||||
@@ -133,7 +133,7 @@ public:
|
||||
virtual void area_set_space_override_mode(RID p_area, AreaSpaceOverrideMode p_mode);
|
||||
virtual AreaSpaceOverrideMode area_get_space_override_mode(RID p_area) const;
|
||||
|
||||
virtual void area_add_shape(RID p_area, RID p_shape, const Transform &p_transform = Transform());
|
||||
virtual void area_add_shape(RID p_area, RID p_shape, const Transform &p_transform = Transform(), bool p_disabled = false);
|
||||
virtual void area_set_shape(RID p_area, int p_shape_idx, RID p_shape);
|
||||
virtual void area_set_shape_transform(RID p_area, int p_shape_idx, const Transform &p_transform);
|
||||
virtual int area_get_shape_count(RID p_area) const;
|
||||
@@ -174,7 +174,7 @@ public:
|
||||
virtual void body_set_mode(RID p_body, BodyMode p_mode);
|
||||
virtual BodyMode body_get_mode(RID p_body) const;
|
||||
|
||||
virtual void body_add_shape(RID p_body, RID p_shape, const Transform &p_transform = Transform());
|
||||
virtual void body_add_shape(RID p_body, RID p_shape, const Transform &p_transform = Transform(), bool p_disabled = false);
|
||||
// Not supported, Please remove and add new shape
|
||||
virtual void body_set_shape(RID p_body, int p_shape_idx, RID p_shape);
|
||||
virtual void body_set_shape_transform(RID p_body, int p_shape_idx, const Transform &p_transform);
|
||||
|
||||
@@ -216,8 +216,8 @@ RigidCollisionObjectBullet::~RigidCollisionObjectBullet() {
|
||||
}
|
||||
}
|
||||
|
||||
void RigidCollisionObjectBullet::add_shape(ShapeBullet *p_shape, const Transform &p_transform) {
|
||||
shapes.push_back(ShapeWrapper(p_shape, p_transform, true));
|
||||
void RigidCollisionObjectBullet::add_shape(ShapeBullet *p_shape, const Transform &p_transform, bool p_disabled) {
|
||||
shapes.push_back(ShapeWrapper(p_shape, p_transform, !p_disabled));
|
||||
p_shape->add_owner(this);
|
||||
reload_shapes();
|
||||
}
|
||||
@@ -299,6 +299,8 @@ Transform RigidCollisionObjectBullet::get_shape_transform(int p_index) const {
|
||||
}
|
||||
|
||||
void RigidCollisionObjectBullet::set_shape_disabled(int p_index, bool p_disabled) {
|
||||
if (shapes[p_index].active != p_disabled)
|
||||
return;
|
||||
shapes.write[p_index].active = !p_disabled;
|
||||
shape_changed(p_index);
|
||||
}
|
||||
|
||||
@@ -224,7 +224,7 @@ public:
|
||||
|
||||
_FORCE_INLINE_ btCollisionShape *get_main_shape() const { return mainShape; }
|
||||
|
||||
void add_shape(ShapeBullet *p_shape, const Transform &p_transform = Transform());
|
||||
void add_shape(ShapeBullet *p_shape, const Transform &p_transform = Transform(), bool p_disabled = false);
|
||||
void set_shape(int p_index, ShapeBullet *p_shape);
|
||||
|
||||
int get_shape_count() const;
|
||||
|
||||
Reference in New Issue
Block a user