DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ SaveSceneObjects()

void PluginConfigHandler::SaveSceneObjects ( SceneData scene)
inlineprotected

См. определение в файле PluginConfigScene.c строка 276

277 {
278 array<ref SceneObject> objects = scene.GetSceneObjects();
279
280 // Save Objects
281 for ( int i = 0; i < objects.Count(); ++i )
282 {
283 SceneObject obj = objects.Get(i);
284
285 string param_name;
286
287 param_name = PARAM_OBJ_NAME+"_"+i.ToString();
288
289 // Save Scene Object
290 CfgParamArray cfg_param_obj = CfgParamArray.Cast( GetParamByName(param_name, CFG_TYPE_ARRAY) );
291
292 // Obj Type Name
293 CfgParamString cfg_param_obj_type = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_TYPE, CFG_TYPE_STRING) );
294 cfg_param_obj_type.SetValue(obj.GetTypeName());
295
296 // Obj Position
297 CfgParamString cfg_param_obj_pos = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_POS, CFG_TYPE_STRING) );
298 cfg_param_obj_pos.SetValue(obj.GetPositionAsString());
299
300 // Obj Rotation
301 CfgParamFloat cfg_param_obj_rot = CfgParamFloat.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_ROT, CFG_TYPE_FLOAT) );
302 cfg_param_obj_rot.SetValue(obj.GetRotation());
303
304 // Obj Health
305 CfgParamFloat cfg_param_obj_hlt = CfgParamFloat.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_HLT, CFG_TYPE_FLOAT) );
306 cfg_param_obj_hlt.SetValue(obj.GetHealth());
307
308 // Obj Init Script
309 CfgParamString cfg_param_obj_iscr = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_ISCR, CFG_TYPE_STRING) );
310 cfg_param_obj_iscr.SetValue( EncodeInitScript(obj.GetInitScript()) );
311
312 EntityAI e_obj = obj.GetObject();
313
314 int attcount = e_obj.GetInventory().AttachmentCount();
315
316 if ( attcount > 0 )
317 {
318 string param_name_att = param_name+"_"+PARAM_OBJ_ATT;
319 CfgParamArray cfg_param_att = CfgParamArray.Cast( GetParamByName(param_name_att, CFG_TYPE_ARRAY) );
320 cfg_param_att.Clear();
321
322 for (int att = 0; att < attcount; att++)
323 {
324 EntityAI attachment = e_obj.GetInventory().GetAttachmentFromIndex(att);
325
326 CfgParamString cfg_param_att_str = new CfgParamString("");
327 cfg_param_att_str.SetValue( attachment.GetType() );
328 cfg_param_att.InsertValue( cfg_param_att_str );
329 }
330 }
331
332 array<SceneObject> linked_scene_objects = obj.GetLinkedSceneObjects();
333 if ( linked_scene_objects.Count() > 0 )
334 {
335 string param_name_lnk = param_name + "_" + PARAM_OBJ_LNK;
336 CfgParamArray cfg_param_lnk = CfgParamArray.Cast( GetParamByName( param_name_lnk, CFG_TYPE_ARRAY ) );
337 cfg_param_lnk.Clear();
338
339 for ( int lnk = 0; lnk < linked_scene_objects.Count(); lnk++ )
340 {
341 CfgParamInt cfg_param_lnk_int = new CfgParamInt("");
342
343 int index = objects.Find( linked_scene_objects.Get(lnk) );
344
345 if ( index >= 0 )
346 {
347 cfg_param_lnk_int.SetValue( index );
348 cfg_param_lnk.InsertValue( cfg_param_lnk_int );
349 }
350 }
351 }
352 }
353
354 // Save Count Of objects
355 CfgParamInt cfg_obj_count = CfgParamInt.Cast( GetParamByName(PARAM_OBJ_COUNT, CFG_TYPE_INT) );
356 cfg_obj_count.SetValue(objects.Count());
357 }
class LogManager EntityAI
const int CFG_TYPE_ARRAY
Определения CfgParam.c:5
const int CFG_TYPE_INT
Определения CfgParam.c:2
const int CFG_TYPE_STRING
Определения CfgParam.c:1
const int CFG_TYPE_FLOAT
Определения CfgParam.c:3
const string PARAM_OBJ_ISCR
Определения PluginConfigScene.c:27
const string PARAM_OBJ_LNK
Определения PluginConfigScene.c:21
string EncodeInitScript(string script)
Определения PluginConfigScene.c:133
const string PARAM_OBJ_ATT
Определения PluginConfigScene.c:20
const string PARAM_OBJ_TYPE
Определения PluginConfigScene.c:22
const string PARAM_OBJ_ROT
Определения PluginConfigScene.c:24
const string PARAM_OBJ_HLT
Определения PluginConfigScene.c:26
const string PARAM_OBJ_POS
Определения PluginConfigScene.c:23
const string PARAM_OBJ_NAME
Определения PluginConfigScene.c:19
const string PARAM_OBJ_COUNT
Определения PluginConfigScene.c:18
array< ref SceneObject > GetSceneObjects()
Определения SceneData.c:33
array< SceneObject > GetLinkedSceneObjects()
Определения SceneObject.c:324
float GetHealth()
Определения SceneObject.c:433
string GetTypeName()
Определения SceneObject.c:375
float GetRotation()
Определения SceneObject.c:490
string GetPositionAsString()
Определения SceneObject.c:472
string GetInitScript()
Определения SceneObject.c:83
EntityAI GetObject()
Определения SceneObject.c:59

Перекрестные ссылки CFG_TYPE_ARRAY, CFG_TYPE_FLOAT, CFG_TYPE_INT, CFG_TYPE_STRING, EncodeInitScript(), SceneObject::GetHealth(), SceneObject::GetInitScript(), SceneObject::GetLinkedSceneObjects(), SceneObject::GetObject(), SceneObject::GetPositionAsString(), SceneObject::GetRotation(), SceneData::GetSceneObjects(), SceneObject::GetTypeName(), PARAM_OBJ_ATT, PARAM_OBJ_COUNT, PARAM_OBJ_HLT, PARAM_OBJ_ISCR, PARAM_OBJ_LNK, PARAM_OBJ_NAME, PARAM_OBJ_POS, PARAM_OBJ_ROT и PARAM_OBJ_TYPE.

Используется в SceneDataSave().