Browse Source

Merge pull request #24218 from staddy/master

Disabled CollisionShape2D is not processed now
Rémi Verschelde 6 years ago
parent
commit
c7cef29b00

+ 4 - 0
servers/physics/body_sw.cpp

@@ -87,6 +87,10 @@ void BodySW::update_inertias() {
 
 			for (int i = 0; i < get_shape_count(); i++) {
 
+				if (is_shape_disabled(i)) {
+					continue;
+				}
+
 				const ShapeSW *shape = get_shape(i);
 
 				real_t area = get_shape_area(i);

+ 4 - 0
servers/physics/collision_object_sw.h

@@ -122,6 +122,10 @@ public:
 	void set_shape(int p_index, ShapeSW *p_shape);
 	void set_shape_transform(int p_index, const Transform &p_transform);
 	_FORCE_INLINE_ int get_shape_count() const { return shapes.size(); }
+	_FORCE_INLINE_ bool is_shape_disabled(int p_index) const {
+		CRASH_BAD_INDEX(p_index, shapes.size());
+		return shapes[p_index].disabled;
+	}
 	_FORCE_INLINE_ ShapeSW *get_shape(int p_index) const { return shapes[p_index].shape; }
 	_FORCE_INLINE_ const Transform &get_shape_transform(int p_index) const { return shapes[p_index].xform; }
 	_FORCE_INLINE_ const Transform &get_shape_inv_transform(int p_index) const { return shapes[p_index].xform_inv; }

+ 4 - 0
servers/physics_2d/body_2d_sw.cpp

@@ -61,6 +61,10 @@ void Body2DSW::update_inertias() {
 
 			for (int i = 0; i < get_shape_count(); i++) {
 
+				if (is_shape_disabled(i)) {
+					continue;
+				}
+
 				const Shape2DSW *shape = get_shape(i);
 
 				real_t area = get_shape_aabb(i).get_area();

+ 4 - 0
servers/physics_2d/collision_object_2d_sw.h

@@ -115,6 +115,10 @@ public:
 	void set_shape_metadata(int p_index, const Variant &p_metadata);
 
 	_FORCE_INLINE_ int get_shape_count() const { return shapes.size(); }
+	_FORCE_INLINE_ bool is_shape_disabled(int p_index) const {
+		CRASH_BAD_INDEX(p_index, shapes.size());
+		return shapes[p_index].disabled;
+	}
 	_FORCE_INLINE_ Shape2DSW *get_shape(int p_index) const {
 		CRASH_BAD_INDEX(p_index, shapes.size());
 		return shapes[p_index].shape;