Prevent setting too big or too small Collision Mask and Layer
This commit is contained in:
parent
66f696c2c1
commit
efcb097674
14 changed files with 48 additions and 16 deletions
|
@ -89,6 +89,7 @@ uint32_t CSGShape3D::get_collision_mask() const {
|
|||
}
|
||||
|
||||
void CSGShape3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -99,20 +100,23 @@ void CSGShape3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool CSGShape3D::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
void CSGShape3D::set_collision_layer_bit(int p_bit, bool p_value) {
|
||||
uint32_t mask = get_collision_layer();
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
uint32_t layer = get_collision_layer();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
layer |= 1 << p_bit;
|
||||
} else {
|
||||
mask &= ~(1 << p_bit);
|
||||
layer &= ~(1 << p_bit);
|
||||
}
|
||||
set_collision_layer(mask);
|
||||
set_collision_layer(layer);
|
||||
}
|
||||
|
||||
bool CSGShape3D::get_collision_layer_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_layer() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -152,6 +152,7 @@ uint32_t GridMap::get_collision_mask() const {
|
|||
}
|
||||
|
||||
void GridMap::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -162,20 +163,23 @@ void GridMap::set_collision_mask_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool GridMap::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
void GridMap::set_collision_layer_bit(int p_bit, bool p_value) {
|
||||
uint32_t mask = get_collision_layer();
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
uint32_t layer = get_collision_layer();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
layer |= 1 << p_bit;
|
||||
} else {
|
||||
mask &= ~(1 << p_bit);
|
||||
layer &= ~(1 << p_bit);
|
||||
}
|
||||
set_collision_layer(mask);
|
||||
set_collision_layer(layer);
|
||||
}
|
||||
|
||||
bool GridMap::get_collision_layer_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_layer() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -127,6 +127,7 @@ uint32_t CollisionObject2D::get_collision_mask() const {
|
|||
}
|
||||
|
||||
void CollisionObject2D::set_collision_layer_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
uint32_t collision_layer = get_collision_layer();
|
||||
if (p_value) {
|
||||
collision_layer |= 1 << p_bit;
|
||||
|
@ -137,10 +138,12 @@ void CollisionObject2D::set_collision_layer_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool CollisionObject2D::get_collision_layer_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_layer() & (1 << p_bit);
|
||||
}
|
||||
|
||||
void CollisionObject2D::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -151,6 +154,7 @@ void CollisionObject2D::set_collision_mask_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool CollisionObject2D::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ uint32_t RayCast2D::get_collision_mask() const {
|
|||
}
|
||||
|
||||
void RayCast2D::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -65,6 +66,7 @@ void RayCast2D::set_collision_mask_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool RayCast2D::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -1250,6 +1250,7 @@ void TileMap::set_collision_mask(uint32_t p_mask) {
|
|||
}
|
||||
|
||||
void TileMap::set_collision_layer_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
uint32_t layer = get_collision_layer();
|
||||
if (p_value) {
|
||||
layer |= 1 << p_bit;
|
||||
|
@ -1260,6 +1261,7 @@ void TileMap::set_collision_layer_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
void TileMap::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -1352,10 +1354,12 @@ uint32_t TileMap::get_collision_mask() const {
|
|||
}
|
||||
|
||||
bool TileMap::get_collision_layer_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_layer() & (1 << p_bit);
|
||||
}
|
||||
|
||||
bool TileMap::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -761,6 +761,7 @@ uint32_t ClippedCamera3D::get_collision_mask() const {
|
|||
}
|
||||
|
||||
void ClippedCamera3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -771,6 +772,7 @@ void ClippedCamera3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool ClippedCamera3D::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -110,6 +110,7 @@ uint32_t CollisionObject3D::get_collision_mask() const {
|
|||
}
|
||||
|
||||
void CollisionObject3D::set_collision_layer_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
uint32_t collision_layer = get_collision_layer();
|
||||
if (p_value) {
|
||||
collision_layer |= 1 << p_bit;
|
||||
|
@ -120,10 +121,12 @@ void CollisionObject3D::set_collision_layer_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool CollisionObject3D::get_collision_layer_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_layer() & (1 << p_bit);
|
||||
}
|
||||
|
||||
void CollisionObject3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -134,6 +137,7 @@ void CollisionObject3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool CollisionObject3D::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@ uint32_t RayCast3D::get_collision_mask() const {
|
|||
}
|
||||
|
||||
void RayCast3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -71,6 +72,7 @@ void RayCast3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool RayCast3D::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -496,6 +496,7 @@ uint32_t SoftBody3D::get_collision_layer() const {
|
|||
}
|
||||
|
||||
void SoftBody3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -506,10 +507,12 @@ void SoftBody3D::set_collision_mask_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool SoftBody3D::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
void SoftBody3D::set_collision_layer_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
uint32_t layer = get_collision_layer();
|
||||
if (p_value) {
|
||||
layer |= 1 << p_bit;
|
||||
|
@ -520,6 +523,7 @@ void SoftBody3D::set_collision_layer_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool SoftBody3D::get_collision_layer_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision layer bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_layer() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -92,6 +92,7 @@ uint32_t NavigationMesh::get_collision_mask() const {
|
|||
}
|
||||
|
||||
void NavigationMesh::set_collision_mask_bit(int p_bit, bool p_value) {
|
||||
ERR_FAIL_INDEX_MSG(p_bit, 32, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
uint32_t mask = get_collision_mask();
|
||||
if (p_value) {
|
||||
mask |= 1 << p_bit;
|
||||
|
@ -102,6 +103,7 @@ void NavigationMesh::set_collision_mask_bit(int p_bit, bool p_value) {
|
|||
}
|
||||
|
||||
bool NavigationMesh::get_collision_mask_bit(int p_bit) const {
|
||||
ERR_FAIL_INDEX_V_MSG(p_bit, 32, false, "Collision mask bit must be between 0 and 31 inclusive.");
|
||||
return get_collision_mask() & (1 << p_bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -176,11 +176,11 @@ real_t PhysicsShapeQueryParameters2D::get_margin() const {
|
|||
return margin;
|
||||
}
|
||||
|
||||
void PhysicsShapeQueryParameters2D::set_collision_mask(int p_collision_mask) {
|
||||
void PhysicsShapeQueryParameters2D::set_collision_mask(uint32_t p_collision_mask) {
|
||||
collision_mask = p_collision_mask;
|
||||
}
|
||||
|
||||
int PhysicsShapeQueryParameters2D::get_collision_mask() const {
|
||||
uint32_t PhysicsShapeQueryParameters2D::get_collision_mask() const {
|
||||
return collision_mask;
|
||||
}
|
||||
|
||||
|
|
|
@ -128,8 +128,8 @@ public:
|
|||
void set_margin(real_t p_margin);
|
||||
real_t get_margin() const;
|
||||
|
||||
void set_collision_mask(int p_collision_mask);
|
||||
int get_collision_mask() const;
|
||||
void set_collision_mask(uint32_t p_mask);
|
||||
uint32_t get_collision_mask() const;
|
||||
|
||||
void set_collide_with_bodies(bool p_enable);
|
||||
bool is_collide_with_bodies_enabled() const;
|
||||
|
|
|
@ -172,11 +172,11 @@ real_t PhysicsShapeQueryParameters3D::get_margin() const {
|
|||
return margin;
|
||||
}
|
||||
|
||||
void PhysicsShapeQueryParameters3D::set_collision_mask(int p_collision_mask) {
|
||||
void PhysicsShapeQueryParameters3D::set_collision_mask(uint32_t p_collision_mask) {
|
||||
collision_mask = p_collision_mask;
|
||||
}
|
||||
|
||||
int PhysicsShapeQueryParameters3D::get_collision_mask() const {
|
||||
uint32_t PhysicsShapeQueryParameters3D::get_collision_mask() const {
|
||||
return collision_mask;
|
||||
}
|
||||
|
||||
|
|
|
@ -125,8 +125,8 @@ public:
|
|||
void set_margin(real_t p_margin);
|
||||
real_t get_margin() const;
|
||||
|
||||
void set_collision_mask(int p_collision_mask);
|
||||
int get_collision_mask() const;
|
||||
void set_collision_mask(uint32_t p_collision_mask);
|
||||
uint32_t get_collision_mask() const;
|
||||
|
||||
void set_exclude(const Vector<RID> &p_exclude);
|
||||
Vector<RID> get_exclude() const;
|
||||
|
|
Loading…
Reference in a new issue