mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-01-11 13:21:10 +01:00
Fixed the remaining potential crashes found by the godot test tool.
This commit is contained in:
parent
27ebad5fdd
commit
ae9f5b9bee
@ -196,7 +196,11 @@ Dictionary SpellCastInfo::to_dict() {
|
||||
dict["num_pushbacks"] = _num_pushbacks;
|
||||
dict["is_casting"] = _is_casting;
|
||||
|
||||
dict["spell_id"] = _spell->get_id();
|
||||
if (_spell.is_valid()) {
|
||||
dict["spell_id"] = _spell->get_id();
|
||||
} else {
|
||||
dict["spell_id"] = _spell_id;
|
||||
}
|
||||
|
||||
//item serialization not needed
|
||||
|
||||
|
@ -371,8 +371,9 @@ void PropInstanceMerger::debug_mesh_allocate() {
|
||||
if (_debug_mesh_instance == RID()) {
|
||||
_debug_mesh_instance = VisualServer::get_singleton()->instance_create();
|
||||
|
||||
if (get_world().is_valid())
|
||||
if (get_world().is_valid()) {
|
||||
VS::get_singleton()->instance_set_scenario(_debug_mesh_instance, get_world()->get_scenario());
|
||||
}
|
||||
|
||||
VS::get_singleton()->instance_set_base(_debug_mesh_instance, _debug_mesh_rid);
|
||||
VS::get_singleton()->instance_set_transform(_debug_mesh_instance, get_transform());
|
||||
|
@ -991,10 +991,14 @@ void Prop2DMesher::add_vertex(const Vector2 &vertex) {
|
||||
}
|
||||
|
||||
Vector2 Prop2DMesher::get_vertex(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector2());
|
||||
|
||||
return _vertices.get(idx).vertex;
|
||||
}
|
||||
|
||||
void Prop2DMesher::remove_vertex(const int idx) {
|
||||
ERR_FAIL_INDEX(idx, _vertices.size());
|
||||
|
||||
_vertices.remove(idx);
|
||||
}
|
||||
|
||||
@ -1026,6 +1030,8 @@ void Prop2DMesher::add_color(const Color &color) {
|
||||
}
|
||||
|
||||
Color Prop2DMesher::get_color(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Color());
|
||||
|
||||
return _vertices.get(idx).color;
|
||||
}
|
||||
|
||||
@ -1057,6 +1063,8 @@ void Prop2DMesher::add_uv(const Vector2 &uv) {
|
||||
}
|
||||
|
||||
Vector2 Prop2DMesher::get_uv(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector2());
|
||||
|
||||
return _vertices.get(idx).uv;
|
||||
}
|
||||
|
||||
@ -1077,10 +1085,14 @@ void Prop2DMesher::add_indices(const int index) {
|
||||
}
|
||||
|
||||
int Prop2DMesher::get_index(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _indices.size(), 0);
|
||||
|
||||
return _indices.get(idx);
|
||||
}
|
||||
|
||||
void Prop2DMesher::remove_index(const int idx) {
|
||||
ERR_FAIL_INDEX(idx, _indices.size());
|
||||
|
||||
_indices.remove(idx);
|
||||
}
|
||||
|
||||
|
@ -726,10 +726,14 @@ void TerrainMesher::add_vertex(const Vector3 &vertex) {
|
||||
}
|
||||
|
||||
Vector3 TerrainMesher::get_vertex(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector3());
|
||||
|
||||
return _vertices.get(idx).vertex;
|
||||
}
|
||||
|
||||
void TerrainMesher::remove_vertex(const int idx) {
|
||||
ERR_FAIL_INDEX(idx, _vertices.size());
|
||||
|
||||
_vertices.remove(idx);
|
||||
}
|
||||
|
||||
@ -761,6 +765,8 @@ void TerrainMesher::add_normal(const Vector3 &normal) {
|
||||
}
|
||||
|
||||
Vector3 TerrainMesher::get_normal(int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector3());
|
||||
|
||||
return _vertices.get(idx).normal;
|
||||
}
|
||||
|
||||
@ -792,6 +798,8 @@ void TerrainMesher::add_color(const Color &color) {
|
||||
}
|
||||
|
||||
Color TerrainMesher::get_color(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Color());
|
||||
|
||||
return _vertices.get(idx).color;
|
||||
}
|
||||
|
||||
@ -823,6 +831,8 @@ void TerrainMesher::add_uv(const Vector2 &uv) {
|
||||
}
|
||||
|
||||
Vector2 TerrainMesher::get_uv(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector2());
|
||||
|
||||
return _vertices.get(idx).uv;
|
||||
}
|
||||
|
||||
@ -854,6 +864,8 @@ void TerrainMesher::add_uv2(const Vector2 &uv) {
|
||||
}
|
||||
|
||||
Vector2 TerrainMesher::get_uv2(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector2());
|
||||
|
||||
return _vertices.get(idx).uv2;
|
||||
}
|
||||
|
||||
@ -874,10 +886,14 @@ void TerrainMesher::add_indices(const int index) {
|
||||
}
|
||||
|
||||
int TerrainMesher::get_index(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), 0);
|
||||
|
||||
return _indices.get(idx);
|
||||
}
|
||||
|
||||
void TerrainMesher::remove_index(const int idx) {
|
||||
ERR_FAIL_INDEX(idx, _vertices.size());
|
||||
|
||||
_indices.remove(idx);
|
||||
}
|
||||
|
||||
|
@ -533,8 +533,9 @@ void TerrainChunkDefault::debug_mesh_allocate() {
|
||||
if (_debug_mesh_instance == RID()) {
|
||||
_debug_mesh_instance = VisualServer::get_singleton()->instance_create();
|
||||
|
||||
if (get_voxel_world()->get_world().is_valid())
|
||||
if (get_voxel_world() && get_voxel_world()->get_world().is_valid()) {
|
||||
VS::get_singleton()->instance_set_scenario(_debug_mesh_instance, get_voxel_world()->get_world()->get_scenario());
|
||||
}
|
||||
|
||||
VS::get_singleton()->instance_set_base(_debug_mesh_instance, _debug_mesh_rid);
|
||||
VS::get_singleton()->instance_set_transform(_debug_mesh_instance, get_transform());
|
||||
|
@ -59,6 +59,8 @@ void TerrainJob::set_build_done(const bool val) {
|
||||
}
|
||||
|
||||
void TerrainJob::next_job() {
|
||||
ERR_FAIL_COND(!_chunk.is_valid());
|
||||
|
||||
_chunk->job_next();
|
||||
set_build_done(true);
|
||||
}
|
||||
|
@ -74,6 +74,8 @@ int TerrainPropJob::get_jobs_step_count() const {
|
||||
}
|
||||
|
||||
void TerrainPropJob::phase_physics_process() {
|
||||
ERR_FAIL_COND(!_chunk.is_valid());
|
||||
|
||||
Ref<TerrainChunkDefault> chunk = _chunk;
|
||||
|
||||
//TODO this should only update the differences
|
||||
|
@ -202,6 +202,8 @@ void TerrainTerrainJob::phase_collider() {
|
||||
}
|
||||
|
||||
void TerrainTerrainJob::phase_physics_process() {
|
||||
ERR_FAIL_COND(!_chunk.is_valid());
|
||||
|
||||
Ref<TerrainChunkDefault> chunk = _chunk;
|
||||
|
||||
if (temp_arr_collider.size() != 0) {
|
||||
|
@ -748,10 +748,14 @@ void Terrain2DMesher::add_vertex(const Vector2 &vertex) {
|
||||
}
|
||||
|
||||
Vector2 Terrain2DMesher::get_vertex(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector2());
|
||||
|
||||
return _vertices.get(idx).vertex;
|
||||
}
|
||||
|
||||
void Terrain2DMesher::remove_vertex(const int idx) {
|
||||
ERR_FAIL_INDEX(idx, _vertices.size());
|
||||
|
||||
_vertices.remove(idx);
|
||||
}
|
||||
|
||||
@ -783,6 +787,8 @@ void Terrain2DMesher::add_color(const Color &color) {
|
||||
}
|
||||
|
||||
Color Terrain2DMesher::get_color(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Color());
|
||||
|
||||
return _vertices.get(idx).color;
|
||||
}
|
||||
|
||||
@ -814,6 +820,8 @@ void Terrain2DMesher::add_uv(const Vector2 &uv) {
|
||||
}
|
||||
|
||||
Vector2 Terrain2DMesher::get_uv(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector2());
|
||||
|
||||
return _vertices.get(idx).uv;
|
||||
}
|
||||
|
||||
@ -834,10 +842,14 @@ void Terrain2DMesher::add_indices(const int index) {
|
||||
}
|
||||
|
||||
int Terrain2DMesher::get_index(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _indices.size(), 0);
|
||||
|
||||
return _indices.get(idx);
|
||||
}
|
||||
|
||||
void Terrain2DMesher::remove_index(const int idx) {
|
||||
ERR_FAIL_INDEX(idx, _indices.size());
|
||||
|
||||
_indices.remove(idx);
|
||||
}
|
||||
|
||||
|
@ -59,6 +59,8 @@ void Terrain2DJob::set_build_done(const bool val) {
|
||||
}
|
||||
|
||||
void Terrain2DJob::next_job() {
|
||||
ERR_FAIL_COND(!_chunk.is_valid());
|
||||
|
||||
_chunk->job_next();
|
||||
set_build_done(true);
|
||||
}
|
||||
|
@ -50,6 +50,8 @@ void Terrain2DProp2DJob::set_prop_mesher(const Ref<Terrain2DMesher> &mesher) {
|
||||
}
|
||||
|
||||
void Terrain2DProp2DJob::phase_physics_process() {
|
||||
ERR_FAIL_COND(!_chunk.is_valid());
|
||||
|
||||
/*
|
||||
Ref<Terrain2DChunkDefault> chunk = _chunk;
|
||||
|
||||
|
@ -199,6 +199,8 @@ void Terrain2DTerrain2DJob::phase_collider() {
|
||||
}
|
||||
|
||||
void Terrain2DTerrain2DJob::phase_physics_process() {
|
||||
ERR_FAIL_COND(!_chunk.is_valid());
|
||||
|
||||
Ref<Terrain2DChunkDefault> chunk = _chunk;
|
||||
|
||||
if (temp_arr_collider.size() != 0) {
|
||||
|
@ -568,6 +568,8 @@ bool VoxelCubePoints::is_sub_voxel_point(int x, int y, int z) {
|
||||
}
|
||||
|
||||
void VoxelCubePoints::set_point(int point, int x, int y, int z) {
|
||||
ERR_FAIL_INDEX(point, POINT_COUNT);
|
||||
|
||||
_points[point] = Vector3(x, y, z);
|
||||
}
|
||||
|
||||
|
@ -464,20 +464,27 @@ void VoxelMesherMarchingCubes::_add_chunk(Ref<VoxelChunk> p_chunk) {
|
||||
}
|
||||
|
||||
Vector3 VoxelMesherMarchingCubes::corner_id_to_vertex(int corner_id) const {
|
||||
ERR_FAIL_COND_V(corner_id < 0 || corner_id > 8, Vector3());
|
||||
ERR_FAIL_INDEX_V(corner_id, 8, Vector3());
|
||||
|
||||
return marching_cube_vertices[corner_id];
|
||||
}
|
||||
|
||||
int VoxelMesherMarchingCubes::get_regular_cell_class(int index) const {
|
||||
ERR_FAIL_INDEX_V(index, 256, 0);
|
||||
|
||||
return static_cast<int>(regularCellClass[index]);
|
||||
}
|
||||
|
||||
Ref<MarchingCubesCellData> VoxelMesherMarchingCubes::get_regular_cell_data(int index) const {
|
||||
ERR_FAIL_INDEX_V(index, 16, 0);
|
||||
|
||||
return _regular_cell_datas[index];
|
||||
}
|
||||
|
||||
int VoxelMesherMarchingCubes::get_regular_vertex_data(int index1, int index2) const {
|
||||
ERR_FAIL_INDEX_V(index1, 256, 0);
|
||||
ERR_FAIL_INDEX_V(index2, 15, 0);
|
||||
|
||||
//return static_cast<int>(regularVertexData[index1][index2]);
|
||||
return regularVertexData[index1][index2];
|
||||
}
|
||||
@ -490,30 +497,45 @@ int VoxelMesherMarchingCubes::get_regular_vertex_data(int index1, int index2) co
|
||||
//}
|
||||
|
||||
int VoxelMesherMarchingCubes::get_regular_vertex_data_first_vertex(int index1, int index2) const {
|
||||
ERR_FAIL_INDEX_V(index1, 256, 0);
|
||||
ERR_FAIL_INDEX_V(index2, 15, 0);
|
||||
|
||||
int vert1 = regularVertexData[index1][index2] & 0x000F;
|
||||
|
||||
return vert1;
|
||||
}
|
||||
|
||||
int VoxelMesherMarchingCubes::get_regular_vertex_data_second_vertex(int index1, int index2) const {
|
||||
ERR_FAIL_INDEX_V(index1, 256, 0);
|
||||
ERR_FAIL_INDEX_V(index2, 15, 0);
|
||||
|
||||
int vert2 = (regularVertexData[index1][index2] & 0x00F0) >> 4;
|
||||
|
||||
return vert2;
|
||||
}
|
||||
|
||||
Vector3 VoxelMesherMarchingCubes::get_regular_vertex_first_position(int index1, int index2) const {
|
||||
ERR_FAIL_INDEX_V(index1, 256, Vector3());
|
||||
ERR_FAIL_INDEX_V(index2, 15, Vector3());
|
||||
|
||||
int vert = regularVertexData[index1][index2] & 0x000F;
|
||||
|
||||
return marching_cube_vertices[vert];
|
||||
}
|
||||
|
||||
Vector3 VoxelMesherMarchingCubes::get_regular_vertex_second_position(int index1, int index2) const {
|
||||
ERR_FAIL_INDEX_V(index1, 256, Vector3());
|
||||
ERR_FAIL_INDEX_V(index2, 15, Vector3());
|
||||
|
||||
int vert = (regularVertexData[index1][index2] & 0x00F0) >> 4;
|
||||
|
||||
return marching_cube_vertices[vert];
|
||||
}
|
||||
|
||||
Vector3 VoxelMesherMarchingCubes::get_regular_vertex_direction(int index1, int index2) const {
|
||||
ERR_FAIL_INDEX_V(index1, 256, Vector3());
|
||||
ERR_FAIL_INDEX_V(index2, 15, Vector3());
|
||||
|
||||
int vert1 = regularVertexData[index1][index2] & 0x000F;
|
||||
int vert2 = (regularVertexData[index1][index2] & 0x00F0) >> 4;
|
||||
|
||||
|
@ -720,10 +720,14 @@ void VoxelMesher::add_vertex(const Vector3 &vertex) {
|
||||
}
|
||||
|
||||
Vector3 VoxelMesher::get_vertex(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector3());
|
||||
|
||||
return _vertices.get(idx).vertex;
|
||||
}
|
||||
|
||||
void VoxelMesher::remove_vertex(const int idx) {
|
||||
ERR_FAIL_INDEX(idx, _vertices.size());
|
||||
|
||||
_vertices.remove(idx);
|
||||
}
|
||||
|
||||
@ -755,6 +759,8 @@ void VoxelMesher::add_normal(const Vector3 &normal) {
|
||||
}
|
||||
|
||||
Vector3 VoxelMesher::get_normal(int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector3());
|
||||
|
||||
return _vertices.get(idx).normal;
|
||||
}
|
||||
|
||||
@ -786,6 +792,8 @@ void VoxelMesher::add_color(const Color &color) {
|
||||
}
|
||||
|
||||
Color VoxelMesher::get_color(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Color());
|
||||
|
||||
return _vertices.get(idx).color;
|
||||
}
|
||||
|
||||
@ -817,6 +825,8 @@ void VoxelMesher::add_uv(const Vector2 &uv) {
|
||||
}
|
||||
|
||||
Vector2 VoxelMesher::get_uv(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector2());
|
||||
|
||||
return _vertices.get(idx).uv;
|
||||
}
|
||||
|
||||
@ -848,6 +858,8 @@ void VoxelMesher::add_uv2(const Vector2 &uv) {
|
||||
}
|
||||
|
||||
Vector2 VoxelMesher::get_uv2(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), Vector2());
|
||||
|
||||
return _vertices.get(idx).uv2;
|
||||
}
|
||||
|
||||
@ -868,10 +880,14 @@ void VoxelMesher::add_indices(const int index) {
|
||||
}
|
||||
|
||||
int VoxelMesher::get_index(const int idx) const {
|
||||
ERR_FAIL_INDEX_V(idx, _vertices.size(), 0);
|
||||
|
||||
return _indices.get(idx);
|
||||
}
|
||||
|
||||
void VoxelMesher::remove_index(const int idx) {
|
||||
ERR_FAIL_INDEX(idx, _vertices.size());
|
||||
|
||||
_indices.remove(idx);
|
||||
}
|
||||
|
||||
|
@ -531,8 +531,9 @@ void VoxelChunkDefault::debug_mesh_allocate() {
|
||||
if (_debug_mesh_instance == RID()) {
|
||||
_debug_mesh_instance = VisualServer::get_singleton()->instance_create();
|
||||
|
||||
if (get_voxel_world()->get_world().is_valid())
|
||||
if (get_voxel_world() && get_voxel_world()->get_world().is_valid()) {
|
||||
VS::get_singleton()->instance_set_scenario(_debug_mesh_instance, get_voxel_world()->get_world()->get_scenario());
|
||||
}
|
||||
|
||||
VS::get_singleton()->instance_set_base(_debug_mesh_instance, _debug_mesh_rid);
|
||||
VS::get_singleton()->instance_set_transform(_debug_mesh_instance, get_transform());
|
||||
|
@ -59,6 +59,8 @@ void VoxelJob::set_build_done(const bool val) {
|
||||
}
|
||||
|
||||
void VoxelJob::next_job() {
|
||||
ERR_FAIL_COND(!_chunk.is_valid());
|
||||
|
||||
_chunk->job_next();
|
||||
set_build_done(true);
|
||||
}
|
||||
|
@ -75,6 +75,8 @@ int VoxelPropJob::get_jobs_step_count() const {
|
||||
}
|
||||
|
||||
void VoxelPropJob::phase_physics_process() {
|
||||
ERR_FAIL_COND(!_chunk.is_valid());
|
||||
|
||||
Ref<VoxelChunkDefault> chunk = _chunk;
|
||||
|
||||
//TODO this should only update the differences
|
||||
|
@ -282,6 +282,8 @@ void VoxelTerrainJob::phase_collider() {
|
||||
}
|
||||
|
||||
void VoxelTerrainJob::phase_physics_process() {
|
||||
ERR_FAIL_COND(!_chunk.is_valid());
|
||||
|
||||
Ref<VoxelChunkDefault> chunk = _chunk;
|
||||
|
||||
if (temp_arr_collider.size() != 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user