Add area_get_collision_layer and area_get_collision_mask

This commit is contained in:
Mansur Isaev 2022-09-23 10:06:29 +04:00
parent 15ac442247
commit efd4dc20a3
18 changed files with 128 additions and 11 deletions

View File

@ -53,6 +53,20 @@
<description> <description>
</description> </description>
</method> </method>
<method name="area_get_collision_layer" qualifiers="const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
Returns the physics layer or layers an area belongs to.
</description>
</method>
<method name="area_get_collision_mask" qualifiers="const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
Returns the physics layer or layers an area can contact with.
</description>
</method>
<method name="area_get_object_instance_id" qualifiers="const"> <method name="area_get_object_instance_id" qualifiers="const">
<return type="int" /> <return type="int" />
<param index="0" name="area" type="RID" /> <param index="0" name="area" type="RID" />

View File

@ -47,6 +47,18 @@
<description> <description>
</description> </description>
</method> </method>
<method name="_area_get_collision_layer" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
</description>
</method>
<method name="_area_get_collision_mask" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
</description>
</method>
<method name="_area_get_object_instance_id" qualifiers="virtual const"> <method name="_area_get_object_instance_id" qualifiers="virtual const">
<return type="int" /> <return type="int" />
<param index="0" name="area" type="RID" /> <param index="0" name="area" type="RID" />

View File

@ -40,6 +40,20 @@
Creates an [Area3D]. Creates an [Area3D].
</description> </description>
</method> </method>
<method name="area_get_collision_layer" qualifiers="const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
Returns the physics layer or layers an area belongs to.
</description>
</method>
<method name="area_get_collision_mask" qualifiers="const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
Returns the physics layer or layers an area can contact with.
</description>
</method>
<method name="area_get_object_instance_id" qualifiers="const"> <method name="area_get_object_instance_id" qualifiers="const">
<return type="int" /> <return type="int" />
<param index="0" name="area" type="RID" /> <param index="0" name="area" type="RID" />

View File

@ -34,6 +34,18 @@
<description> <description>
</description> </description>
</method> </method>
<method name="_area_get_collision_layer" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
</description>
</method>
<method name="_area_get_collision_mask" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
</description>
</method>
<method name="_area_get_object_instance_id" qualifiers="virtual const"> <method name="_area_get_object_instance_id" qualifiers="virtual const">
<return type="int" /> <return type="int" />
<param index="0" name="area" type="RID" /> <param index="0" name="area" type="RID" />

View File

@ -189,7 +189,10 @@ void PhysicsServer2DExtension::_bind_methods() {
GDVIRTUAL_BIND(_area_get_transform, "area"); GDVIRTUAL_BIND(_area_get_transform, "area");
GDVIRTUAL_BIND(_area_set_collision_layer, "area", "layer"); GDVIRTUAL_BIND(_area_set_collision_layer, "area", "layer");
GDVIRTUAL_BIND(_area_get_collision_layer, "area");
GDVIRTUAL_BIND(_area_set_collision_mask, "area", "mask"); GDVIRTUAL_BIND(_area_set_collision_mask, "area", "mask");
GDVIRTUAL_BIND(_area_get_collision_mask, "area");
GDVIRTUAL_BIND(_area_set_monitorable, "area", "monitorable"); GDVIRTUAL_BIND(_area_set_monitorable, "area", "monitorable");
GDVIRTUAL_BIND(_area_set_pickable, "area", "pickable"); GDVIRTUAL_BIND(_area_set_pickable, "area", "pickable");

View File

@ -268,8 +268,11 @@ public:
EXBIND2RC(Variant, area_get_param, RID, AreaParameter) EXBIND2RC(Variant, area_get_param, RID, AreaParameter)
EXBIND1RC(Transform2D, area_get_transform, RID) EXBIND1RC(Transform2D, area_get_transform, RID)
EXBIND2(area_set_collision_mask, RID, uint32_t)
EXBIND2(area_set_collision_layer, RID, uint32_t) EXBIND2(area_set_collision_layer, RID, uint32_t)
EXBIND1RC(uint32_t, area_get_collision_layer, RID)
EXBIND2(area_set_collision_mask, RID, uint32_t)
EXBIND1RC(uint32_t, area_get_collision_mask, RID)
EXBIND2(area_set_monitorable, RID, bool) EXBIND2(area_set_monitorable, RID, bool)
EXBIND2(area_set_pickable, RID, bool) EXBIND2(area_set_pickable, RID, bool)

View File

@ -192,7 +192,10 @@ void PhysicsServer3DExtension::_bind_methods() {
GDVIRTUAL_BIND(_area_get_transform, "area"); GDVIRTUAL_BIND(_area_get_transform, "area");
GDVIRTUAL_BIND(_area_set_collision_layer, "area", "layer"); GDVIRTUAL_BIND(_area_set_collision_layer, "area", "layer");
GDVIRTUAL_BIND(_area_get_collision_layer, "area");
GDVIRTUAL_BIND(_area_set_collision_mask, "area", "mask"); GDVIRTUAL_BIND(_area_set_collision_mask, "area", "mask");
GDVIRTUAL_BIND(_area_get_collision_mask, "area");
GDVIRTUAL_BIND(_area_set_monitorable, "area", "monitorable"); GDVIRTUAL_BIND(_area_set_monitorable, "area", "monitorable");
GDVIRTUAL_BIND(_area_set_ray_pickable, "area", "enable"); GDVIRTUAL_BIND(_area_set_ray_pickable, "area", "enable");

View File

@ -271,8 +271,11 @@ public:
EXBIND2RC(Variant, area_get_param, RID, AreaParameter) EXBIND2RC(Variant, area_get_param, RID, AreaParameter)
EXBIND1RC(Transform3D, area_get_transform, RID) EXBIND1RC(Transform3D, area_get_transform, RID)
EXBIND2(area_set_collision_mask, RID, uint32_t)
EXBIND2(area_set_collision_layer, RID, uint32_t) EXBIND2(area_set_collision_layer, RID, uint32_t)
EXBIND1RC(uint32_t, area_get_collision_layer, RID)
EXBIND2(area_set_collision_mask, RID, uint32_t)
EXBIND1RC(uint32_t, area_get_collision_mask, RID)
EXBIND2(area_set_monitorable, RID, bool) EXBIND2(area_set_monitorable, RID, bool)
EXBIND2(area_set_ray_pickable, RID, bool) EXBIND2(area_set_ray_pickable, RID, bool)

View File

@ -485,6 +485,20 @@ void GodotPhysicsServer2D::area_set_monitorable(RID p_area, bool p_monitorable)
area->set_monitorable(p_monitorable); area->set_monitorable(p_monitorable);
} }
void GodotPhysicsServer2D::area_set_collision_layer(RID p_area, uint32_t p_layer) {
GodotArea2D *area = area_owner.get_or_null(p_area);
ERR_FAIL_COND(!area);
area->set_collision_layer(p_layer);
}
uint32_t GodotPhysicsServer2D::area_get_collision_layer(RID p_area) const {
GodotArea2D *area = area_owner.get_or_null(p_area);
ERR_FAIL_COND_V(!area, 0);
return area->get_collision_layer();
}
void GodotPhysicsServer2D::area_set_collision_mask(RID p_area, uint32_t p_mask) { void GodotPhysicsServer2D::area_set_collision_mask(RID p_area, uint32_t p_mask) {
GodotArea2D *area = area_owner.get_or_null(p_area); GodotArea2D *area = area_owner.get_or_null(p_area);
ERR_FAIL_COND(!area); ERR_FAIL_COND(!area);
@ -492,11 +506,11 @@ void GodotPhysicsServer2D::area_set_collision_mask(RID p_area, uint32_t p_mask)
area->set_collision_mask(p_mask); area->set_collision_mask(p_mask);
} }
void GodotPhysicsServer2D::area_set_collision_layer(RID p_area, uint32_t p_layer) { uint32_t GodotPhysicsServer2D::area_get_collision_mask(RID p_area) const {
GodotArea2D *area = area_owner.get_or_null(p_area); GodotArea2D *area = area_owner.get_or_null(p_area);
ERR_FAIL_COND(!area); ERR_FAIL_COND_V(!area, 0);
area->set_collision_layer(p_layer); return area->get_collision_mask();
} }
void GodotPhysicsServer2D::area_set_monitor_callback(RID p_area, const Callable &p_callback) { void GodotPhysicsServer2D::area_set_monitor_callback(RID p_area, const Callable &p_callback) {

View File

@ -151,8 +151,12 @@ public:
virtual Variant area_get_param(RID p_area, AreaParameter p_param) const override; virtual Variant area_get_param(RID p_area, AreaParameter p_param) const override;
virtual Transform2D area_get_transform(RID p_area) const override; virtual Transform2D area_get_transform(RID p_area) const override;
virtual void area_set_monitorable(RID p_area, bool p_monitorable) override; virtual void area_set_monitorable(RID p_area, bool p_monitorable) override;
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask) override;
virtual void area_set_collision_layer(RID p_area, uint32_t p_layer) override; virtual void area_set_collision_layer(RID p_area, uint32_t p_layer) override;
virtual uint32_t area_get_collision_layer(RID p_area) const override;
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask) override;
virtual uint32_t area_get_collision_mask(RID p_area) const override;
virtual void area_set_monitor_callback(RID p_area, const Callable &p_callback) override; virtual void area_set_monitor_callback(RID p_area, const Callable &p_callback) override;
virtual void area_set_area_monitor_callback(RID p_area, const Callable &p_callback) override; virtual void area_set_area_monitor_callback(RID p_area, const Callable &p_callback) override;

View File

@ -387,6 +387,13 @@ void GodotPhysicsServer3D::area_set_collision_layer(RID p_area, uint32_t p_layer
area->set_collision_layer(p_layer); area->set_collision_layer(p_layer);
} }
uint32_t GodotPhysicsServer3D::area_get_collision_layer(RID p_area) const {
GodotArea3D *area = area_owner.get_or_null(p_area);
ERR_FAIL_COND_V(!area, 0);
return area->get_collision_layer();
}
void GodotPhysicsServer3D::area_set_collision_mask(RID p_area, uint32_t p_mask) { void GodotPhysicsServer3D::area_set_collision_mask(RID p_area, uint32_t p_mask) {
GodotArea3D *area = area_owner.get_or_null(p_area); GodotArea3D *area = area_owner.get_or_null(p_area);
ERR_FAIL_COND(!area); ERR_FAIL_COND(!area);
@ -394,6 +401,13 @@ void GodotPhysicsServer3D::area_set_collision_mask(RID p_area, uint32_t p_mask)
area->set_collision_mask(p_mask); area->set_collision_mask(p_mask);
} }
uint32_t GodotPhysicsServer3D::area_get_collision_mask(RID p_area) const {
GodotArea3D *area = area_owner.get_or_null(p_area);
ERR_FAIL_COND_V(!area, 0);
return area->get_collision_mask();
}
void GodotPhysicsServer3D::area_set_monitorable(RID p_area, bool p_monitorable) { void GodotPhysicsServer3D::area_set_monitorable(RID p_area, bool p_monitorable) {
GodotArea3D *area = area_owner.get_or_null(p_area); GodotArea3D *area = area_owner.get_or_null(p_area);
ERR_FAIL_COND(!area); ERR_FAIL_COND(!area);

View File

@ -148,8 +148,11 @@ public:
virtual void area_set_ray_pickable(RID p_area, bool p_enable) override; virtual void area_set_ray_pickable(RID p_area, bool p_enable) override;
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask) override;
virtual void area_set_collision_layer(RID p_area, uint32_t p_layer) override; virtual void area_set_collision_layer(RID p_area, uint32_t p_layer) override;
virtual uint32_t area_get_collision_layer(RID p_area) const override;
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask) override;
virtual uint32_t area_get_collision_mask(RID p_area) const override;
virtual void area_set_monitorable(RID p_area, bool p_monitorable) override; virtual void area_set_monitorable(RID p_area, bool p_monitorable) override;

View File

@ -652,7 +652,10 @@ void PhysicsServer2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("area_clear_shapes", "area"), &PhysicsServer2D::area_clear_shapes); ClassDB::bind_method(D_METHOD("area_clear_shapes", "area"), &PhysicsServer2D::area_clear_shapes);
ClassDB::bind_method(D_METHOD("area_set_collision_layer", "area", "layer"), &PhysicsServer2D::area_set_collision_layer); ClassDB::bind_method(D_METHOD("area_set_collision_layer", "area", "layer"), &PhysicsServer2D::area_set_collision_layer);
ClassDB::bind_method(D_METHOD("area_get_collision_layer", "area"), &PhysicsServer2D::area_get_collision_layer);
ClassDB::bind_method(D_METHOD("area_set_collision_mask", "area", "mask"), &PhysicsServer2D::area_set_collision_mask); ClassDB::bind_method(D_METHOD("area_set_collision_mask", "area", "mask"), &PhysicsServer2D::area_set_collision_mask);
ClassDB::bind_method(D_METHOD("area_get_collision_mask", "area"), &PhysicsServer2D::area_get_collision_mask);
ClassDB::bind_method(D_METHOD("area_set_param", "area", "param", "value"), &PhysicsServer2D::area_set_param); ClassDB::bind_method(D_METHOD("area_set_param", "area", "param", "value"), &PhysicsServer2D::area_set_param);
ClassDB::bind_method(D_METHOD("area_set_transform", "area", "transform"), &PhysicsServer2D::area_set_transform); ClassDB::bind_method(D_METHOD("area_set_transform", "area", "transform"), &PhysicsServer2D::area_set_transform);

View File

@ -332,8 +332,11 @@ public:
virtual Variant area_get_param(RID p_parea, AreaParameter p_param) const = 0; virtual Variant area_get_param(RID p_parea, AreaParameter p_param) const = 0;
virtual Transform2D area_get_transform(RID p_area) const = 0; virtual Transform2D area_get_transform(RID p_area) const = 0;
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask) = 0;
virtual void area_set_collision_layer(RID p_area, uint32_t p_layer) = 0; virtual void area_set_collision_layer(RID p_area, uint32_t p_layer) = 0;
virtual uint32_t area_get_collision_layer(RID p_area) const = 0;
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask) = 0;
virtual uint32_t area_get_collision_mask(RID p_area) const = 0;
virtual void area_set_monitorable(RID p_area, bool p_monitorable) = 0; virtual void area_set_monitorable(RID p_area, bool p_monitorable) = 0;
virtual void area_set_pickable(RID p_area, bool p_pickable) = 0; virtual void area_set_pickable(RID p_area, bool p_pickable) = 0;

View File

@ -156,8 +156,11 @@ public:
FUNC2RC(Variant, area_get_param, RID, AreaParameter); FUNC2RC(Variant, area_get_param, RID, AreaParameter);
FUNC1RC(Transform2D, area_get_transform, RID); FUNC1RC(Transform2D, area_get_transform, RID);
FUNC2(area_set_collision_mask, RID, uint32_t);
FUNC2(area_set_collision_layer, RID, uint32_t); FUNC2(area_set_collision_layer, RID, uint32_t);
FUNC1RC(uint32_t, area_get_collision_layer, RID);
FUNC2(area_set_collision_mask, RID, uint32_t);
FUNC1RC(uint32_t, area_get_collision_mask, RID);
FUNC2(area_set_monitorable, RID, bool); FUNC2(area_set_monitorable, RID, bool);
FUNC2(area_set_pickable, RID, bool); FUNC2(area_set_pickable, RID, bool);

View File

@ -720,7 +720,10 @@ void PhysicsServer3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("area_clear_shapes", "area"), &PhysicsServer3D::area_clear_shapes); ClassDB::bind_method(D_METHOD("area_clear_shapes", "area"), &PhysicsServer3D::area_clear_shapes);
ClassDB::bind_method(D_METHOD("area_set_collision_layer", "area", "layer"), &PhysicsServer3D::area_set_collision_layer); ClassDB::bind_method(D_METHOD("area_set_collision_layer", "area", "layer"), &PhysicsServer3D::area_set_collision_layer);
ClassDB::bind_method(D_METHOD("area_get_collision_layer", "area"), &PhysicsServer3D::area_get_collision_layer);
ClassDB::bind_method(D_METHOD("area_set_collision_mask", "area", "mask"), &PhysicsServer3D::area_set_collision_mask); ClassDB::bind_method(D_METHOD("area_set_collision_mask", "area", "mask"), &PhysicsServer3D::area_set_collision_mask);
ClassDB::bind_method(D_METHOD("area_get_collision_mask", "area"), &PhysicsServer3D::area_get_collision_mask);
ClassDB::bind_method(D_METHOD("area_set_param", "area", "param", "value"), &PhysicsServer3D::area_set_param); ClassDB::bind_method(D_METHOD("area_set_param", "area", "param", "value"), &PhysicsServer3D::area_set_param);
ClassDB::bind_method(D_METHOD("area_set_transform", "area", "transform"), &PhysicsServer3D::area_set_transform); ClassDB::bind_method(D_METHOD("area_set_transform", "area", "transform"), &PhysicsServer3D::area_set_transform);

View File

@ -364,8 +364,11 @@ public:
virtual Variant area_get_param(RID p_parea, AreaParameter p_param) const = 0; virtual Variant area_get_param(RID p_parea, AreaParameter p_param) const = 0;
virtual Transform3D area_get_transform(RID p_area) const = 0; virtual Transform3D area_get_transform(RID p_area) const = 0;
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask) = 0;
virtual void area_set_collision_layer(RID p_area, uint32_t p_layer) = 0; virtual void area_set_collision_layer(RID p_area, uint32_t p_layer) = 0;
virtual uint32_t area_get_collision_layer(RID p_area) const = 0;
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask) = 0;
virtual uint32_t area_get_collision_mask(RID p_area) const = 0;
virtual void area_set_monitorable(RID p_area, bool p_monitorable) = 0; virtual void area_set_monitorable(RID p_area, bool p_monitorable) = 0;

View File

@ -157,8 +157,11 @@ public:
FUNC2RC(Variant, area_get_param, RID, AreaParameter); FUNC2RC(Variant, area_get_param, RID, AreaParameter);
FUNC1RC(Transform3D, area_get_transform, RID); FUNC1RC(Transform3D, area_get_transform, RID);
FUNC2(area_set_collision_mask, RID, uint32_t);
FUNC2(area_set_collision_layer, RID, uint32_t); FUNC2(area_set_collision_layer, RID, uint32_t);
FUNC1RC(uint32_t, area_get_collision_layer, RID);
FUNC2(area_set_collision_mask, RID, uint32_t);
FUNC1RC(uint32_t, area_get_collision_mask, RID);
FUNC2(area_set_monitorable, RID, bool); FUNC2(area_set_monitorable, RID, bool);
FUNC2(area_set_ray_pickable, RID, bool); FUNC2(area_set_ray_pickable, RID, bool);