@@ -54,11 +54,11 @@ function AIParameterSettingList:init(data, vehicle, class)
5454 end
5555 --- Lastly apply the default values here.
5656 if data .default ~= nil then
57- AIParameterSettingList .setFloatValue (self , data .default )
57+ AIParameterSettingList .setFloatValue (self , data .default , nil , true )
5858 self :debug (" set to default %s" , data .default )
5959 end
6060 if data .defaultBool ~= nil then
61- AIParameterSettingList .setValue (self , data .defaultBool )
61+ AIParameterSettingList .setValue (self , data .defaultBool , true )
6262 self :debug (" set to default %s" , tostring (data .defaultBool ))
6363 end
6464
@@ -273,7 +273,7 @@ function AIParameterSettingList:loadFromXMLFile(xmlFile, key)
273273 self :debug (" loaded value: %.2f" , value )
274274 self .loadedValue = value
275275 --- Applies a small epsilon, as otherwise floating point problems might happen.
276- self :setFloatValue (value , 0.001 )
276+ self :setFloatValue (value , 0.001 , true )
277277 else
278278 self :loadFromXMLFileLegacy (xmlFile , key )
279279 end
@@ -388,11 +388,15 @@ end
388388--- @param value number
389389--- @param epsilon number | nil optional
390390--- @return boolean value is not valid and could not be set.
391- function AIParameterSettingList :setFloatValue (value , epsilon )
392- return setValueInternal (self , value , function (a , b )
391+ function AIParameterSettingList :setFloatValue (value , epsilon , noEventSend )
392+ local failed = setValueInternal (self , value , function (a , b )
393393 local epsilon = epsilon or self .data .incremental or 0.1
394394 if a == nil or b == nil then return false end
395395 return a > b - epsilon / 2 and a <= b + epsilon / 2 end )
396+ if not failed and not noEventSend then
397+ self :raiseDirtyFlag ()
398+ end
399+ return failed
396400end
397401
398402--- Gets the closest value ix and absolute difference, relative to the value searched for.
@@ -416,16 +420,21 @@ end
416420
417421--- Sets a value.
418422--- @param value number
423+ --- @param noEventSend boolean | nil
419424--- @return boolean value is not valid and could not be set.
420- function AIParameterSettingList :setValue (value )
421- return setValueInternal (self , value , function (a , b ) return a == b end )
425+ function AIParameterSettingList :setValue (value , noEventSend )
426+ local failed = setValueInternal (self , value , function (a , b ) return a == b end )
427+ if not failed and not noEventSend then
428+ self :raiseDirtyFlag ()
429+ end
430+ return failed
422431end
423432
424433function AIParameterSettingList :setDefault (noEventSend )
425434 local current = self .current
426435 --- If the setting has a function to set the default value, then call it.
427436 if self :hasCallback (self .data .setDefaultFunc ) then
428- self :getCallback (self .data .setDefaultFunc )
437+ self :getCallback (self .data .setDefaultFunc , noEventSend )
429438 self :debug (" set to default by extern function." )
430439 return
431440 end
@@ -437,9 +446,9 @@ function AIParameterSettingList:setDefault(noEventSend)
437446 local value = g_vehicleConfigurations :get (object , configName )
438447 if value then
439448 if tonumber (value ) then
440- self :setFloatValue (value )
449+ self :setFloatValue (value , noEventSend )
441450 else
442- self :setValue (value )
451+ self :setValue (value , noEventSend )
443452 end
444453 self :debug (" set to default: %s from vehicle configuration: (%s|%s)" , value , CpUtil .getName (object ), configName )
445454 return
@@ -449,12 +458,12 @@ function AIParameterSettingList:setDefault(noEventSend)
449458 end
450459 --- If default values were setup use these.
451460 if self .data .default ~= nil then
452- AIParameterSettingList .setFloatValue (self , self .data .default )
461+ AIParameterSettingList .setFloatValue (self , self .data .default , noEventSend )
453462 self :debug (" set to default %s" , self .data .default )
454463 return
455464 end
456465 if self .data .defaultBool ~= nil then
457- AIParameterSettingList .setValue (self , self .data .defaultBool )
466+ AIParameterSettingList .setValue (self , self .data .defaultBool , noEventSend )
458467 self :debug (" set to default %s" , tostring (self .data .defaultBool ))
459468 return
460469 end
524533--- Copy the value to another setting.
525534function AIParameterSettingList :copy (setting )
526535 if self .data .incremental and self .data .incremental ~= 1 then
527- self :setFloatValue (setting .values [setting .current ])
536+ self :setFloatValue (setting .values [setting .current ], nil , true )
528537 else
529- self :setValue (setting .values [setting .current ])
538+ self :setValue (setting .values [setting .current ], true )
530539 end
531540end
532541
0 commit comments