Add a `sleeping_state_changed` signal to RigidBody and RigidBody2D classes

Closes #3911

(cherry picked from commit 6dcd1354c2)
This commit is contained in:
Bojidar Marinov 2016-04-06 17:14:38 +03:00 committed by Rémi Verschelde
parent dea6671d58
commit 63e33cfdd2
4 changed files with 12 additions and 2 deletions

View File

@ -544,7 +544,10 @@ void RigidBody2D::_direct_state_changed(Object *p_state) {
set_global_transform(state->get_transform()); set_global_transform(state->get_transform());
linear_velocity=state->get_linear_velocity(); linear_velocity=state->get_linear_velocity();
angular_velocity=state->get_angular_velocity(); angular_velocity=state->get_angular_velocity();
sleeping=state->is_sleeping(); if(sleeping!=state->is_sleeping()) {
sleeping=state->is_sleeping();
emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed);
}
if (get_script_instance()) if (get_script_instance())
get_script_instance()->call("_integrate_forces",state); get_script_instance()->call("_integrate_forces",state);
set_block_transform_notify(false); // want it back set_block_transform_notify(false); // want it back
@ -934,6 +937,7 @@ void RigidBody2D::_bind_methods() {
ADD_SIGNAL( MethodInfo("body_exit_shape",PropertyInfo(Variant::INT,"body_id"),PropertyInfo(Variant::OBJECT,"body"),PropertyInfo(Variant::INT,"body_shape"),PropertyInfo(Variant::INT,"local_shape"))); ADD_SIGNAL( MethodInfo("body_exit_shape",PropertyInfo(Variant::INT,"body_id"),PropertyInfo(Variant::OBJECT,"body"),PropertyInfo(Variant::INT,"body_shape"),PropertyInfo(Variant::INT,"local_shape")));
ADD_SIGNAL( MethodInfo("body_enter",PropertyInfo(Variant::OBJECT,"body"))); ADD_SIGNAL( MethodInfo("body_enter",PropertyInfo(Variant::OBJECT,"body")));
ADD_SIGNAL( MethodInfo("body_exit",PropertyInfo(Variant::OBJECT,"body"))); ADD_SIGNAL( MethodInfo("body_exit",PropertyInfo(Variant::OBJECT,"body")));
ADD_SIGNAL( MethodInfo("sleeping_state_changed"));
BIND_CONSTANT( MODE_STATIC ); BIND_CONSTANT( MODE_STATIC );
BIND_CONSTANT( MODE_KINEMATIC ); BIND_CONSTANT( MODE_KINEMATIC );

View File

@ -419,7 +419,10 @@ void RigidBody::_direct_state_changed(Object *p_state) {
set_global_transform(state->get_transform()); set_global_transform(state->get_transform());
linear_velocity=state->get_linear_velocity(); linear_velocity=state->get_linear_velocity();
angular_velocity=state->get_angular_velocity(); angular_velocity=state->get_angular_velocity();
sleeping=state->is_sleeping(); if(sleeping!=state->is_sleeping()) {
sleeping=state->is_sleeping();
emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed);
}
if (get_script_instance()) if (get_script_instance())
get_script_instance()->call("_integrate_forces",state); get_script_instance()->call("_integrate_forces",state);
set_ignore_transform_notification(false); set_ignore_transform_notification(false);
@ -811,6 +814,7 @@ void RigidBody::_bind_methods() {
ADD_SIGNAL( MethodInfo("body_exit_shape",PropertyInfo(Variant::INT,"body_id"),PropertyInfo(Variant::OBJECT,"body"),PropertyInfo(Variant::INT,"body_shape"),PropertyInfo(Variant::INT,"local_shape"))); ADD_SIGNAL( MethodInfo("body_exit_shape",PropertyInfo(Variant::INT,"body_id"),PropertyInfo(Variant::OBJECT,"body"),PropertyInfo(Variant::INT,"body_shape"),PropertyInfo(Variant::INT,"local_shape")));
ADD_SIGNAL( MethodInfo("body_enter",PropertyInfo(Variant::OBJECT,"body"))); ADD_SIGNAL( MethodInfo("body_enter",PropertyInfo(Variant::OBJECT,"body")));
ADD_SIGNAL( MethodInfo("body_exit",PropertyInfo(Variant::OBJECT,"body"))); ADD_SIGNAL( MethodInfo("body_exit",PropertyInfo(Variant::OBJECT,"body")));
ADD_SIGNAL( MethodInfo("sleeping_state_changed"));
BIND_CONSTANT( MODE_STATIC ); BIND_CONSTANT( MODE_STATIC );
BIND_CONSTANT( MODE_KINEMATIC ); BIND_CONSTANT( MODE_KINEMATIC );

View File

@ -48,6 +48,7 @@ SceneStringNames::SceneStringNames() {
item_rect_changed=StaticCString::create("item_rect_changed"); item_rect_changed=StaticCString::create("item_rect_changed");
size_flags_changed=StaticCString::create("size_flags_changed"); size_flags_changed=StaticCString::create("size_flags_changed");
minimum_size_changed=StaticCString::create("minimum_size_changed"); minimum_size_changed=StaticCString::create("minimum_size_changed");
sleeping_state_changed=StaticCString::create("sleeping_state_changed");
finished=StaticCString::create("finished"); finished=StaticCString::create("finished");
animation_changed=StaticCString::create("animation_changed"); animation_changed=StaticCString::create("animation_changed");

View File

@ -62,6 +62,7 @@ public:
StringName exit_tree; StringName exit_tree;
StringName size_flags_changed; StringName size_flags_changed;
StringName minimum_size_changed; StringName minimum_size_changed;
StringName sleeping_state_changed;
StringName idle; StringName idle;
StringName iteration; StringName iteration;
StringName update; StringName update;