Added _THREAD_SAFE_CLASS_ declaration to VoxelChunk and also made job-related methods thread safe.

This commit is contained in:
Relintai 2020-10-23 19:47:04 +02:00
parent 9824738095
commit c4eb758d20
2 changed files with 14 additions and 2 deletions

View File

@ -242,6 +242,8 @@ int VoxelChunk::get_current_job_index() {
return _current_job;
}
void VoxelChunk::next_job() {
_THREAD_SAFE_METHOD_
++_current_job;
if (_current_job >= _jobs.size()) {
@ -270,6 +272,8 @@ void VoxelChunk::next_job() {
}
}
Ref<VoxelJob> VoxelChunk::get_current_job() {
_THREAD_SAFE_METHOD_
if (_current_job < 0 || _current_job >= _jobs.size()) {
return Ref<VoxelJob>();
}
@ -1021,7 +1025,10 @@ void VoxelChunk::_exit_tree() {
}
void VoxelChunk::_generation_process(const float delta) {
ERR_FAIL_INDEX(_current_job, _jobs.size());
_THREAD_SAFE_METHOD_
if (_current_job < 0 || _current_job >= _jobs.size())
return;
Ref<VoxelJob> job = _jobs[_current_job];
@ -1043,7 +1050,10 @@ void VoxelChunk::_generation_process(const float delta) {
}
}
void VoxelChunk::_generation_physics_process(const float delta) {
ERR_FAIL_INDEX(_current_job, _jobs.size());
_THREAD_SAFE_METHOD_
if (_current_job < 0 || _current_job >= _jobs.size())
return;
Ref<VoxelJob> job = _jobs[_current_job];

View File

@ -66,6 +66,8 @@ class VoxelWorld;
class VoxelChunk : public Resource {
GDCLASS(VoxelChunk, Resource);
_THREAD_SAFE_CLASS_
public:
enum {
VOXEL_CHUNK_STATE_OK = 0,