CI: Fix godot regression project test
Fix crash and memory leak in `SpringBoneSimulator3D` Fix crash in `GraphEdit`
This commit is contained in:
parent
6b5b84c0c5
commit
4b9650f54e
4 changed files with 27 additions and 4 deletions
|
|
@ -607,6 +607,7 @@ void SpringBoneSimulator3D::set_radius(int p_index, float p_radius) {
|
|||
}
|
||||
|
||||
float SpringBoneSimulator3D::get_radius(int p_index) const {
|
||||
ERR_FAIL_INDEX_V(p_index, settings.size(), 0);
|
||||
return settings[p_index]->radius;
|
||||
}
|
||||
|
||||
|
|
@ -640,6 +641,7 @@ void SpringBoneSimulator3D::set_stiffness(int p_index, float p_stiffness) {
|
|||
}
|
||||
|
||||
float SpringBoneSimulator3D::get_stiffness(int p_index) const {
|
||||
ERR_FAIL_INDEX_V(p_index, settings.size(), 0);
|
||||
return settings[p_index]->stiffness;
|
||||
}
|
||||
|
||||
|
|
@ -762,8 +764,15 @@ SpringBoneSimulator3D::RotationAxis SpringBoneSimulator3D::get_rotation_axis(int
|
|||
|
||||
void SpringBoneSimulator3D::set_setting_count(int p_count) {
|
||||
ERR_FAIL_COND(p_count < 0);
|
||||
int delta = p_count - settings.size() + 1;
|
||||
|
||||
int delta = p_count - settings.size();
|
||||
if (delta < 0) {
|
||||
for (int i = delta; i < 0; i++) {
|
||||
memdelete(settings[settings.size() + i]);
|
||||
}
|
||||
}
|
||||
settings.resize(p_count);
|
||||
delta++;
|
||||
if (delta > 1) {
|
||||
for (int i = 1; i < delta; i++) {
|
||||
settings.write[p_count - i] = memnew(SpringBone3DSetting);
|
||||
|
|
@ -949,8 +958,14 @@ void SpringBoneSimulator3D::set_joint_count(int p_index, int p_count) {
|
|||
ERR_FAIL_INDEX(p_index, settings.size());
|
||||
ERR_FAIL_COND(p_count < 0);
|
||||
Vector<SpringBone3DJointSetting *> &joints = settings[p_index]->joints;
|
||||
int delta = p_count - joints.size() + 1;
|
||||
int delta = p_count - joints.size();
|
||||
if (delta < 0) {
|
||||
for (int i = delta; i < 0; i++) {
|
||||
memdelete(joints[joints.size() + i]);
|
||||
}
|
||||
}
|
||||
joints.resize(p_count);
|
||||
delta++;
|
||||
if (delta > 1) {
|
||||
for (int i = 1; i < delta; i++) {
|
||||
joints.write[p_count - i] = memnew(SpringBone3DJointSetting);
|
||||
|
|
@ -1659,3 +1674,7 @@ Quaternion SpringBoneSimulator3D::get_from_to_rotation(const Vector3 &p_from, co
|
|||
}
|
||||
return Quaternion(axis.normalized(), angle);
|
||||
}
|
||||
|
||||
SpringBoneSimulator3D::~SpringBoneSimulator3D() {
|
||||
clear_settings();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue