Fixed lights not changing after a map change event. Fixed lights blocking the thread to update the episode.
This commit is contained in:
parent
139041fd7f
commit
788427fdd5
|
@ -247,6 +247,12 @@ void LightManager::SetLightState(LightId id, const LightState& new_state) {
|
||||||
_dirty = true;
|
_dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LightManager::SetLightStateNoLock(LightId id, const LightState& new_state) {
|
||||||
|
LightState& state = const_cast<LightState&>(RetrieveLightState(id));
|
||||||
|
state = new_state;
|
||||||
|
_lights_changes[id] = state;
|
||||||
|
}
|
||||||
|
|
||||||
void LightManager::SetLightGroup(LightId id, LightGroup group) {
|
void LightManager::SetLightGroup(LightId id, LightGroup group) {
|
||||||
std::lock_guard<std::mutex> lock(_mutex);
|
std::lock_guard<std::mutex> lock(_mutex);
|
||||||
LightState& state = const_cast<LightState&>(RetrieveLightState(id));
|
LightState& state = const_cast<LightState&>(RetrieveLightState(id));
|
||||||
|
@ -317,7 +323,7 @@ void LightManager::UpdateServerLightsState(bool discard_client) {
|
||||||
void LightManager::ApplyChanges() {
|
void LightManager::ApplyChanges() {
|
||||||
std::lock_guard<std::mutex> lock(_mutex);
|
std::lock_guard<std::mutex> lock(_mutex);
|
||||||
for(const auto& it : _lights_changes) {
|
for(const auto& it : _lights_changes) {
|
||||||
SetLightState(it.first, it.second);
|
SetLightStateNoLock(it.first, it.second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,7 @@ public:
|
||||||
void SetColor(LightId id, Color color);
|
void SetColor(LightId id, Color color);
|
||||||
void SetIntensity(LightId id, float intensity);
|
void SetIntensity(LightId id, float intensity);
|
||||||
void SetLightState(LightId id, const LightState& new_state);
|
void SetLightState(LightId id, const LightState& new_state);
|
||||||
|
void SetLightStateNoLock(LightId id, const LightState& new_state);
|
||||||
void SetLightGroup(LightId id, LightGroup group);
|
void SetLightGroup(LightId id, LightGroup group);
|
||||||
|
|
||||||
void SetDayNightCycle(const bool active);
|
void SetDayNightCycle(const bool active);
|
||||||
|
|
|
@ -86,7 +86,7 @@ using namespace std::chrono_literals;
|
||||||
}
|
}
|
||||||
} while (!self->_state.compare_exchange(&prev, next));
|
} while (!self->_state.compare_exchange(&prev, next));
|
||||||
|
|
||||||
if(UpdateLights) {
|
if(UpdateLights || HasMapChanged) {
|
||||||
self->_on_light_update_callbacks.Call(next);
|
self->_on_light_update_callbacks.Call(next);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue