Move collision layer and mask into CollisionObject.
This commit is contained in:
parent
aa677865e3
commit
071871b787
18 changed files with 268 additions and 499 deletions
|
|
@ -100,6 +100,60 @@ void CollisionObject2D::_notification(int p_what) {
|
|||
}
|
||||
}
|
||||
|
||||
void CollisionObject2D::set_collision_layer(uint32_t p_layer) {
|
||||
collision_layer = p_layer;
|
||||
if (area) {
|
||||
PhysicsServer2D::get_singleton()->area_set_collision_layer(get_rid(), p_layer);
|
||||
} else {
|
||||
PhysicsServer2D::get_singleton()->body_set_collision_layer(get_rid(), p_layer);
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t CollisionObject2D::get_collision_layer() const {
|
||||
return collision_layer;
|
||||
}
|
||||
|
||||
void CollisionObject2D::set_collision_mask(uint32_t p_mask) {
|
||||
collision_mask = p_mask;
|
||||
if (area) {
|
||||
PhysicsServer2D::get_singleton()->area_set_collision_mask(get_rid(), p_mask);
|
||||
} else {
|
||||
PhysicsServer2D::get_singleton()->body_set_collision_mask(get_rid(), p_mask);
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t CollisionObject2D::get_collision_mask() const {
|
||||
return collision_mask;
|
||||
}
|
||||
|
||||
void CollisionObject2D::set_collision_layer_bit(int p_bit, bool p_value) {
|
||||
uint32_t collision_layer = get_collision_layer();
|
||||
if (p_value) {
|
||||
collision_layer |= 1 << p_bit;
|
||||
} else {
|
||||
collision_layer &= ~(1 << p_bit);
|
||||
}
|
||||
set_collision_layer(collision_layer);
|
||||
}
|
||||
|
||||
bool CollisionObject2D::get_collision_layer_bit(int p_bit) const {
|
||||
return get_collision_layer() & (1 << p_bit);
|
||||
}
|
||||
|
||||
void CollisionObject2D::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
} else {
|
||||
mask &= ~(1 << p_bit);
|
||||
}
|
||||
set_collision_mask(mask);
|
||||
}
|
||||
|
||||
bool CollisionObject2D::get_collision_mask_bit(int p_bit) const {
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
uint32_t CollisionObject2D::create_shape_owner(Object *p_owner) {
|
||||
ShapeData sd;
|
||||
uint32_t id;
|
||||
|
|
@ -375,7 +429,14 @@ TypedArray<String> CollisionObject2D::get_configuration_warnings() const {
|
|||
|
||||
void CollisionObject2D::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_rid"), &CollisionObject2D::get_rid);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_collision_layer", "layer"), &CollisionObject2D::set_collision_layer);
|
||||
ClassDB::bind_method(D_METHOD("get_collision_layer"), &CollisionObject2D::get_collision_layer);
|
||||
ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &CollisionObject2D::set_collision_mask);
|
||||
ClassDB::bind_method(D_METHOD("get_collision_mask"), &CollisionObject2D::get_collision_mask);
|
||||
ClassDB::bind_method(D_METHOD("set_collision_layer_bit", "bit", "value"), &CollisionObject2D::set_collision_layer_bit);
|
||||
ClassDB::bind_method(D_METHOD("get_collision_layer_bit", "bit"), &CollisionObject2D::get_collision_layer_bit);
|
||||
ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &CollisionObject2D::set_collision_mask_bit);
|
||||
ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &CollisionObject2D::get_collision_mask_bit);
|
||||
ClassDB::bind_method(D_METHOD("set_pickable", "enabled"), &CollisionObject2D::set_pickable);
|
||||
ClassDB::bind_method(D_METHOD("is_pickable"), &CollisionObject2D::is_pickable);
|
||||
ClassDB::bind_method(D_METHOD("create_shape_owner", "owner"), &CollisionObject2D::create_shape_owner);
|
||||
|
|
@ -404,9 +465,12 @@ void CollisionObject2D::_bind_methods() {
|
|||
ADD_SIGNAL(MethodInfo("mouse_entered"));
|
||||
ADD_SIGNAL(MethodInfo("mouse_exited"));
|
||||
|
||||
ADD_GROUP("Pickable", "input_");
|
||||
ADD_GROUP("Collision", "collision_");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_layer", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_layer", "get_collision_layer");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_mask", "get_collision_mask");
|
||||
|
||||
ADD_GROUP("Input", "input_");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "input_pickable"), "set_pickable", "is_pickable");
|
||||
ADD_GROUP("", "");
|
||||
}
|
||||
|
||||
CollisionObject2D::CollisionObject2D(RID p_rid, bool p_area) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue