Add extra functions to toggle bits in visualinstance and camera, same as physics. Helps with #6685
This commit is contained in:
parent
200c6cf630
commit
aff57a613b
4 changed files with 40 additions and 0 deletions
|
@ -468,6 +468,10 @@ void Camera::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("get_keep_aspect_mode"), &Camera::get_keep_aspect_mode);
|
ClassDB::bind_method(D_METHOD("get_keep_aspect_mode"), &Camera::get_keep_aspect_mode);
|
||||||
ClassDB::bind_method(D_METHOD("set_doppler_tracking", "mode"), &Camera::set_doppler_tracking);
|
ClassDB::bind_method(D_METHOD("set_doppler_tracking", "mode"), &Camera::set_doppler_tracking);
|
||||||
ClassDB::bind_method(D_METHOD("get_doppler_tracking"), &Camera::get_doppler_tracking);
|
ClassDB::bind_method(D_METHOD("get_doppler_tracking"), &Camera::get_doppler_tracking);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("set_cull_mask_bit", "layer", "enable"), &Camera::set_cull_mask_bit);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_cull_mask_bit", "layer"), &Camera::get_cull_mask_bit);
|
||||||
|
|
||||||
//ClassDB::bind_method(D_METHOD("_camera_make_current"),&Camera::_camera_make_current );
|
//ClassDB::bind_method(D_METHOD("_camera_make_current"),&Camera::_camera_make_current );
|
||||||
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "keep_aspect", PROPERTY_HINT_ENUM, "Keep Width,Keep Height"), "set_keep_aspect_mode", "get_keep_aspect_mode");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "keep_aspect", PROPERTY_HINT_ENUM, "Keep Width,Keep Height"), "set_keep_aspect_mode", "get_keep_aspect_mode");
|
||||||
|
@ -550,6 +554,20 @@ uint32_t Camera::get_cull_mask() const {
|
||||||
return layers;
|
return layers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Camera::set_cull_mask_bit(int p_layer, bool p_enable) {
|
||||||
|
ERR_FAIL_INDEX(p_layer, 32);
|
||||||
|
if (p_enable) {
|
||||||
|
set_cull_mask(layers | (1 << p_layer));
|
||||||
|
} else {
|
||||||
|
set_cull_mask(layers & (~(1 << p_layer)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Camera::get_cull_mask_bit(int p_layer) const {
|
||||||
|
ERR_FAIL_INDEX_V(p_layer, 32, false);
|
||||||
|
return (layers & (1 << p_layer));
|
||||||
|
}
|
||||||
|
|
||||||
Vector<Plane> Camera::get_frustum() const {
|
Vector<Plane> Camera::get_frustum() const {
|
||||||
|
|
||||||
ERR_FAIL_COND_V(!is_inside_world(), Vector<Plane>());
|
ERR_FAIL_COND_V(!is_inside_world(), Vector<Plane>());
|
||||||
|
|
|
@ -142,6 +142,9 @@ public:
|
||||||
void set_cull_mask(uint32_t p_layers);
|
void set_cull_mask(uint32_t p_layers);
|
||||||
uint32_t get_cull_mask() const;
|
uint32_t get_cull_mask() const;
|
||||||
|
|
||||||
|
void set_cull_mask_bit(int p_layer, bool p_enable);
|
||||||
|
bool get_cull_mask_bit(int p_layer) const;
|
||||||
|
|
||||||
virtual Vector<Plane> get_frustum() const;
|
virtual Vector<Plane> get_frustum() const;
|
||||||
|
|
||||||
void set_environment(const Ref<Environment> &p_environment);
|
void set_environment(const Ref<Environment> &p_environment);
|
||||||
|
|
|
@ -105,12 +105,28 @@ uint32_t VisualInstance::get_layer_mask() const {
|
||||||
return layers;
|
return layers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VisualInstance::set_layer_mask_bit(int p_layer, bool p_enable) {
|
||||||
|
ERR_FAIL_INDEX(p_layer, 32);
|
||||||
|
if (p_enable) {
|
||||||
|
set_layer_mask(layers | (1 << p_layer));
|
||||||
|
} else {
|
||||||
|
set_layer_mask(layers & (~(1 << p_layer)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool VisualInstance::get_layer_mask_bit(int p_layer) const {
|
||||||
|
ERR_FAIL_INDEX_V(p_layer, 32, false);
|
||||||
|
return (layers & (1 << p_layer));
|
||||||
|
}
|
||||||
|
|
||||||
void VisualInstance::_bind_methods() {
|
void VisualInstance::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_get_visual_instance_rid"), &VisualInstance::_get_visual_instance_rid);
|
ClassDB::bind_method(D_METHOD("_get_visual_instance_rid"), &VisualInstance::_get_visual_instance_rid);
|
||||||
ClassDB::bind_method(D_METHOD("set_base", "base"), &VisualInstance::set_base);
|
ClassDB::bind_method(D_METHOD("set_base", "base"), &VisualInstance::set_base);
|
||||||
ClassDB::bind_method(D_METHOD("set_layer_mask", "mask"), &VisualInstance::set_layer_mask);
|
ClassDB::bind_method(D_METHOD("set_layer_mask", "mask"), &VisualInstance::set_layer_mask);
|
||||||
ClassDB::bind_method(D_METHOD("get_layer_mask"), &VisualInstance::get_layer_mask);
|
ClassDB::bind_method(D_METHOD("get_layer_mask"), &VisualInstance::get_layer_mask);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_layer_mask_bit", "layer", "enabled"), &VisualInstance::set_layer_mask_bit);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_layer_mask_bit", "layer"), &VisualInstance::get_layer_mask_bit);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_transformed_aabb"), &VisualInstance::get_transformed_aabb);
|
ClassDB::bind_method(D_METHOD("get_transformed_aabb"), &VisualInstance::get_transformed_aabb);
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,9 @@ public:
|
||||||
void set_layer_mask(uint32_t p_mask);
|
void set_layer_mask(uint32_t p_mask);
|
||||||
uint32_t get_layer_mask() const;
|
uint32_t get_layer_mask() const;
|
||||||
|
|
||||||
|
void set_layer_mask_bit(int p_layer, bool p_enable);
|
||||||
|
bool get_layer_mask_bit(int p_layer) const;
|
||||||
|
|
||||||
VisualInstance();
|
VisualInstance();
|
||||||
~VisualInstance();
|
~VisualInstance();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue