Fixed #173 #157 When CollisionShape2D deleted, parent CollisionObject should get updated as well

This commit is contained in:
marynate 2014-03-15 13:58:53 +08:00
parent e20e3c9525
commit ad9bf69283
2 changed files with 9 additions and 2 deletions

View File

@ -39,6 +39,9 @@
void CollisionShape2D::_add_to_collision_object(Object *p_obj) { void CollisionShape2D::_add_to_collision_object(Object *p_obj) {
if (unparenting)
return;
CollisionObject2D *co = p_obj->cast_to<CollisionObject2D>(); CollisionObject2D *co = p_obj->cast_to<CollisionObject2D>();
ERR_FAIL_COND(!co); ERR_FAIL_COND(!co);
co->add_shape(shape,get_transform()); co->add_shape(shape,get_transform());
@ -189,7 +192,10 @@ void CollisionShape2D::_notification(int p_what) {
rect=rect.grow(3); rect=rect.grow(3);
} break; } break;
case NOTIFICATION_UNPARENTED: {
unparenting = true;
_update_parent();
} break;
} }
} }
@ -245,4 +251,5 @@ CollisionShape2D::CollisionShape2D() {
rect=Rect2(-Point2(10,10),Point2(20,20)); rect=Rect2(-Point2(10,10),Point2(20,20));
trigger=false; trigger=false;
unparenting = false;
} }

View File

@ -38,7 +38,7 @@ class CollisionShape2D : public Node2D {
Ref<Shape2D> shape; Ref<Shape2D> shape;
Rect2 rect; Rect2 rect;
bool trigger; bool trigger;
bool unparenting;
void _shape_changed(); void _shape_changed();
protected: protected: